Esempio n. 1
0
/****** Closes the main window ******/
void main_menu::closeEvent(QCloseEvent* event)
{
	//Close the core
	if(main_menu::gbe_plus != NULL) 
	{
		main_menu::gbe_plus->shutdown();
		main_menu::gbe_plus->core_emu::~core_emu();
	}

	//Save .ini options
	config::gb_type = settings->sys_type->currentIndex();
	config::use_cheats = (settings->cheats->isChecked()) ? true : false;
	config::mute = (settings->sound_on->isChecked()) ? false : true;
	config::volume = settings->volume->value();
	config::use_opengl = (settings->ogl->isChecked()) ? true : false;
	config::use_haptics = (settings->rumble_on->isChecked()) ? true : false;
	
	switch(settings->freq->currentIndex())
	{
		case 0: config::sample_rate = 48000.0; break;
		case 1: config::sample_rate = 44100.0; break;
		case 2: config::sample_rate = 22050.0; break;
		case 3: config::sample_rate = 11025.0; break;
	}

	save_ini_file();

	//Close SDL
	SDL_Quit();

	//Exit the application
	exit(0);
}
Esempio n. 2
0
void preset_user_interface(UniversalInterface& ui, stdx::fun_ref<void(UniversalInterface&)> target
                         , char const* defaultFile, char const* activeFilePath, ui::UniversalInterface::InteractionParam<char const*> activeFileChange
                         , char const* groupName, UniqueElementIdentifier id)
{
	if (!id.value) id = UEI(preset_user_interface);

	if (auto presetGroup = ui::Group(ui, id))
	{
		uintptr_t controlIdentifier = 0;

		ui.addText(controlIdentifier++, (groupName) ? groupName : "Preset", "", nullptr);

		auto&& loadPreset = [&](char const* file)
		{
			try
			{
				activeFilePath = defaultFile = nullptr; // warning: everything may change
				if (activeFileChange) activeFileChange->updateValue(file);
				load_ini_file(file, target);
			}
			catch(...) { stdx::prompt(appx::exception_string().c_str(), "Error applying preset"); }
		};
		if (activeFilePath)
		{
			auto hiddenIdentifier = controlIdentifier++;
			if (activeFilePath[0]) ui.addHidden(hiddenIdentifier, "active", activeFilePath, loadPreset);
		}
		ui.addButton(controlIdentifier++, (activeFilePath && activeFilePath[0] && defaultFile && defaultFile[0]) ? defaultFile : "load", [&]()
		{
			auto mf = stdx::prompt_file_compat(defaultFile, "Ini files=*.ini|All files=*.*", stdx::dialog::open, true);
			for (auto&&f : mf) loadPreset(f.c_str());
		});
		

		ui.addButton(controlIdentifier++, "save", [&]()
		{
			auto mf = stdx::prompt_file_compat(defaultFile, "Ini files=*.ini|All files=*.*", stdx::dialog::save);
			for (auto&&f : mf)
			{
				try
				{
					activeFilePath = defaultFile = nullptr; // warning: everything may change
					if (activeFileChange) activeFileChange->updateValue(f.c_str());
					save_ini_file(f.c_str(), target);
				}
				catch(...) { stdx::prompt(appx::exception_string().c_str(), "Error saving preset"); }
			}
		});
	}
}
Esempio n. 3
0
/*********************************************************************************
  *函数名称:int param_load(void)
  *功能描述:将ini文件参数加载进来,如果为空则创建文件,如果没有某一个参数,则添加该参数
  *输	入: none
  *输	出: none
  *返 回 值:  0:成功读取,大于0:读取时发现需要更新,-1:表示失败
  *---------------------------------------------------------------------------------
  * @修改人		修改时间   	修改内容
  * 白养民		2015-06-08	创建
*********************************************************************************/
int param_load(void)
{
	int		i,i_sect;
	const char *file =DF_PARAM_INI_FILE;
	char read_val[BUF_SIZE]={0};
	char buf[MAX_FILE_SIZE]={0};
	int age;
	int file_size;
	int ret_val = 0;
	long temp_val;
	
	memset(buf,0,sizeof(buf));
	load_ini_file(file,buf,&file_size);
	
	for( i_sect = 0; i_sect < sizeof( tbl_ini_lookup ) / sizeof( struct _st_tbl_ini_lookup ); i_sect++ )
	{
		for( i = 0; i < tbl_ini_lookup[i_sect].param_size / sizeof( st_tbl_id_lookup ); i++ )
		{
			//printf("%s\n",tbl_id_lookup[i].id);
			memset(read_val,0,sizeof(read_val));
			ret_val += read_profile_write_buf(tbl_ini_lookup[i_sect].section, tbl_ini_lookup[i_sect].param[i].id,read_val, 
				BUF_SIZE,tbl_ini_lookup[i_sect].param[i].default_val,buf);
			if(tbl_ini_lookup[i_sect].param[i].type <= TYPE_DWORD)
			{
				temp_val = atoi(read_val);
				memcpy(tbl_ini_lookup[i_sect].param[i].val,(uint8_t *)&(temp_val),tbl_ini_lookup[i_sect].param[i].type);
			}
			else if(tbl_ini_lookup[i_sect].param[i].type != TYPE_CAN)
			{
				memcpy(tbl_ini_lookup[i_sect].param[i].val,(uint8_t *)(read_val),tbl_ini_lookup[i_sect].param[i].type);
			}
			else
			{
				Ascii_To_Hex(tbl_ini_lookup[i_sect].param[i].val,read_val,8);
			}
		}
	}
	if(ret_val)
	{
		save_ini_file(file,buf);
		printf("****************存储数据更新!***********************\n");
	}
	return ret_val;
}
Esempio n. 4
0
/*********************************************************************************
  *函数名称:int param_save_ex(char * section)
  *功能描述:将所有当前参数保存
  *输	入: section	:ini文件参数对应的的section
  *输	出: none
  *返 回 值:  0:成功,非0:表示失败, -1 表示打开文件失败
  *---------------------------------------------------------------------------------
  * @修改人		修改时间   	修改内容
  * 白养民		2015-06-08	创建
*********************************************************************************/
int param_save_ex(char * section)
{
	int		i,i_sect;
	const char *file =DF_PARAM_INI_FILE;
	char write_val[BUF_SIZE]={0};
	char buf[MAX_FILE_SIZE]={0};
	int age;
	int file_size;
	int ret_val = 0;
	long temp_val;
	u32		ul_data;
	
	if(load_ini_file(file,buf,&file_size))
		return -1;

	for( i_sect = 0; i_sect < sizeof( tbl_ini_lookup ) / sizeof( struct _st_tbl_ini_lookup ); i_sect++ )
	{
		if((strlen(section) == 0)||(strncmp(section,tbl_ini_lookup[i_sect].section,strlen(tbl_ini_lookup[i_sect].section)) == 0))
		{
			for( i = 0; i < tbl_ini_lookup[i_sect].param_size / sizeof( st_tbl_id_lookup ); i++ )
			{
				memset(write_val,0,sizeof(write_val));
				switch(tbl_ini_lookup[i_sect].param[i].type)
				{
					case TYPE_BYTE:
					{
						ul_data=*(uint8_t *)tbl_ini_lookup[i_sect].param[i].val;
					}
					case TYPE_WORD:
					{
						ul_data=*(uint16_t *)tbl_ini_lookup[i_sect].param[i].val;
					}
					case TYPE_DWORD:
					{
						ul_data=*(uint32_t *)tbl_ini_lookup[i_sect].param[i].val;
						sprintf(write_val,"%d",ul_data);
						break;
					}
					case TYPE_CAN:
					{
						Hex_To_Ascii(write_val, tbl_ini_lookup[i_sect].param[i].val, 8);
						break;
					}
					/*
					case TYPE_STR:
					{
						memset(buffer,0,sizeof(buffer));
						memcpy(buffer,tbl_id_lookup[i].val,32);
						rt_kprintf("\"%s\";",buffer);
						break;
					}
					*/
					default :
					{
						memcpy(write_val,tbl_ini_lookup[i_sect].param[i].val,tbl_ini_lookup[i_sect].param[i].type);
						break;
					}
				}
				write_profile_string_buf(tbl_ini_lookup[i_sect].section,tbl_ini_lookup[i_sect].param[i].id,write_val,buf);
			}
		}
	}
	return save_ini_file(file,buf);
}