Update several of the translations.

Update pot file to reflect recent changes in strings in the code.
Make the Host_GetKeyState routine thread safe on linux.
Clean up config main, and migrate the plugin selection to the display tab.


git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6994 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
Glenn Rice 2011-01-30 22:02:47 +00:00
parent 274f84b294
commit 216cf0fd6a
27 changed files with 13052 additions and 12055 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -176,7 +176,8 @@ EVT_BUTTON(ID_GRAPHIC_CONFIG, CConfigMain::OnConfig)
END_EVENT_TABLE() END_EVENT_TABLE()
CConfigMain::CConfigMain(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& position, const wxSize& size, long style) CConfigMain::CConfigMain(wxWindow* parent, wxWindowID id, const wxString& title,
const wxPoint& position, const wxSize& size, long style)
: wxDialog(parent, id, title, position, size, style) : wxDialog(parent, id, title, position, size, style)
{ {
// Control refreshing of the ISOs list // Control refreshing of the ISOs list
@ -223,20 +224,23 @@ void CConfigMain::UpdateGUI()
LockThreads->Disable(); LockThreads->Disable();
DSPThread->Disable(); DSPThread->Disable();
// Disable stuff on DisplayPage // Disable stuff on DisplayPage
FullscreenResolution->Disable(); FullscreenResolution->Disable();
RenderToMain->Disable(); RenderToMain->Disable();
ProgressiveScan->Disable(); ProgressiveScan->Disable();
NTSCJ->Disable(); NTSCJ->Disable();
#if defined _WIN32 || defined __linux__
// Disable graphics plugin selection
GraphicSelection->Disable();
#endif
// Disable stuff on AudioPage // Disable stuff on AudioPage
DSPEngine->Disable(); DSPEngine->Disable();
// Disable stuff on GamecubePage // Disable stuff on GamecubePage
GCSystemLang->Disable(); GCSystemLang->Disable();
// Disable stuff on WiiPage // Disable stuff on WiiPage
WiiSensBarPos->Disable(); WiiSensBarPos->Disable();
WiiSensBarSens->Disable(); WiiSensBarSens->Disable();
@ -246,15 +250,8 @@ void CConfigMain::UpdateGUI()
WiiAspectRatio->Disable(); WiiAspectRatio->Disable();
WiiSystemLang->Disable(); WiiSystemLang->Disable();
// Disable stuff on PathsPage // Disable stuff on PathsPage
PathsPage->Disable(); PathsPage->Disable();
#if defined _WIN32 || defined __linux__
// Disable stuff on PluginsPage
GraphicSelection->Disable();
#endif
} }
} }
@ -379,7 +376,8 @@ void CConfigMain::InitializeGUIValues()
UsePanicHandlers->SetValue(startup_params.bUsePanicHandlers); UsePanicHandlers->SetValue(startup_params.bUsePanicHandlers);
Theme->SetSelection(startup_params.iTheme); Theme->SetSelection(startup_params.iTheme);
// need redesign // need redesign
for (unsigned int i = 0; i < sizeof(langIds) / sizeof(wxLanguage); i++) { for (unsigned int i = 0; i < sizeof(langIds) / sizeof(wxLanguage); i++)
{
if (langIds[i] == SConfig::GetInstance().m_InterfaceLanguage) if (langIds[i] == SConfig::GetInstance().m_InterfaceLanguage)
{ {
InterfaceLang->SetSelection(i); InterfaceLang->SetSelection(i);
@ -494,13 +492,12 @@ void CConfigMain::CreateGUIControls()
// Create the notebook and pages // Create the notebook and pages
Notebook = new wxNotebook(this, ID_NOTEBOOK, wxDefaultPosition, wxDefaultSize); Notebook = new wxNotebook(this, ID_NOTEBOOK, wxDefaultPosition, wxDefaultSize);
GeneralPage = new wxPanel(Notebook, ID_GENERALPAGE, wxDefaultPosition, wxDefaultSize); wxPanel *GeneralPage = new wxPanel(Notebook, ID_GENERALPAGE, wxDefaultPosition, wxDefaultSize);
DisplayPage = new wxPanel(Notebook, ID_DISPLAYPAGE, wxDefaultPosition, wxDefaultSize); wxPanel *DisplayPage = new wxPanel(Notebook, ID_DISPLAYPAGE, wxDefaultPosition, wxDefaultSize);
AudioPage = new wxPanel(Notebook, ID_AUDIOPAGE, wxDefaultPosition, wxDefaultSize); wxPanel *AudioPage = new wxPanel(Notebook, ID_AUDIOPAGE, wxDefaultPosition, wxDefaultSize);
GamecubePage = new wxPanel(Notebook, ID_GAMECUBEPAGE, wxDefaultPosition, wxDefaultSize); wxPanel *GamecubePage = new wxPanel(Notebook, ID_GAMECUBEPAGE, wxDefaultPosition, wxDefaultSize);
WiiPage = new wxPanel(Notebook, ID_WIIPAGE, wxDefaultPosition, wxDefaultSize); wxPanel *WiiPage = new wxPanel(Notebook, ID_WIIPAGE, wxDefaultPosition, wxDefaultSize);
PathsPage = new wxPanel(Notebook, ID_PATHSPAGE, wxDefaultPosition, wxDefaultSize); PathsPage = new wxPanel(Notebook, ID_PATHSPAGE, wxDefaultPosition, wxDefaultSize);
PluginsPage = new wxPanel(Notebook, ID_PLUGINPAGE, wxDefaultPosition, wxDefaultSize);
Notebook->AddPage(GeneralPage, _("General")); Notebook->AddPage(GeneralPage, _("General"));
Notebook->AddPage(DisplayPage, _("Display")); Notebook->AddPage(DisplayPage, _("Display"));
@ -508,26 +505,33 @@ void CConfigMain::CreateGUIControls()
Notebook->AddPage(GamecubePage, _("Gamecube")); Notebook->AddPage(GamecubePage, _("Gamecube"));
Notebook->AddPage(WiiPage, _("Wii")); Notebook->AddPage(WiiPage, _("Wii"));
Notebook->AddPage(PathsPage, _("Paths")); Notebook->AddPage(PathsPage, _("Paths"));
#if defined _WIN32 || defined __linux__
Notebook->AddPage(PluginsPage, _("Plugins"));
#endif
// General page // General page
// Core Settings - Basic // Core Settings - Basic
sbBasic = new wxStaticBoxSizer(wxVERTICAL, GeneralPage, _("Basic Settings")); wxStaticBoxSizer *sbBasic =
CPUThread = new wxCheckBox(GeneralPage, ID_CPUTHREAD, _("Enable Dual Core (speedup)"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator); new wxStaticBoxSizer(wxVERTICAL, GeneralPage, _("Basic Settings"));
SkipIdle = new wxCheckBox(GeneralPage, ID_IDLESKIP, _("Enable Idle Skipping (speedup)"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator); CPUThread = new wxCheckBox(GeneralPage, ID_CPUTHREAD, _("Enable Dual Core (speedup)"),
EnableCheats = new wxCheckBox(GeneralPage, ID_ENABLECHEATS, _("Enable Cheats"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator); wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
SkipIdle = new wxCheckBox(GeneralPage, ID_IDLESKIP, _("Enable Idle Skipping (speedup)"),
wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
EnableCheats = new wxCheckBox(GeneralPage, ID_ENABLECHEATS, _("Enable Cheats"),
wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
// Framelimit // Framelimit
Framelimit = new wxChoice(GeneralPage, ID_FRAMELIMIT, wxDefaultPosition, wxDefaultSize, arrayStringFor_Framelimit, 0, wxDefaultValidator); Framelimit = new wxChoice(GeneralPage, ID_FRAMELIMIT, wxDefaultPosition, wxDefaultSize,
UseFPSForLimiting = new wxCheckBox(GeneralPage, ID_FRAMELIMIT_USEFPSFORLIMITING, _("Use FPS For Limiting"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator); arrayStringFor_Framelimit, 0, wxDefaultValidator);
UseFPSForLimiting = new wxCheckBox(GeneralPage, ID_FRAMELIMIT_USEFPSFORLIMITING,
_("Use FPS For Limiting"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
// Core Settings - Advanced // Core Settings - Advanced
sbAdvanced = new wxStaticBoxSizer(wxVERTICAL, GeneralPage, _("Advanced Settings")); wxStaticBoxSizer *sbAdvanced =
AlwaysHLE_BS2 = new wxCheckBox(GeneralPage, ID_ALWAYS_HLE_BS2, _("Skip GC BIOS"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator); new wxStaticBoxSizer(wxVERTICAL, GeneralPage, _("Advanced Settings"));
CPUEngine = new wxRadioBox(GeneralPage, ID_CPUENGINE, _("CPU Emulator Engine"), wxDefaultPosition, wxDefaultSize, arrayStringFor_CPUEngine, 0, wxRA_SPECIFY_ROWS); AlwaysHLE_BS2 = new wxCheckBox(GeneralPage, ID_ALWAYS_HLE_BS2, _("Skip GC BIOS"),
LockThreads = new wxCheckBox(GeneralPage, ID_LOCKTHREADS, _("Lock threads to cores"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator); wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
DSPThread = new wxCheckBox(GeneralPage, ID_DSPTHREAD, _("DSPLLE on thread"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator); CPUEngine = new wxRadioBox(GeneralPage, ID_CPUENGINE, _("CPU Emulator Engine"),
wxDefaultPosition, wxDefaultSize, arrayStringFor_CPUEngine, 0, wxRA_SPECIFY_ROWS);
LockThreads = new wxCheckBox(GeneralPage, ID_LOCKTHREADS, _("Lock threads to cores"),
wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
DSPThread = new wxCheckBox(GeneralPage, ID_DSPTHREAD, _("DSPLLE on thread"),
wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
// Populate the General settings // Populate the General settings
sbBasic->Add(CPUThread, 0, wxALL, 5); sbBasic->Add(CPUThread, 0, wxALL, 5);
@ -544,7 +548,7 @@ void CConfigMain::CreateGUIControls()
sbAdvanced->Add(LockThreads, 0, wxALL, 5); sbAdvanced->Add(LockThreads, 0, wxALL, 5);
sbAdvanced->Add(DSPThread, 0, wxALL, 5); sbAdvanced->Add(DSPThread, 0, wxALL, 5);
sGeneralPage = new wxBoxSizer(wxVERTICAL); wxBoxSizer *sGeneralPage = new wxBoxSizer(wxVERTICAL);
sGeneralPage->Add(sbBasic, 0, wxEXPAND | wxALL, 5); sGeneralPage->Add(sbBasic, 0, wxEXPAND | wxALL, 5);
sGeneralPage->Add(sbAdvanced, 0, wxEXPAND | wxALL, 5); sGeneralPage->Add(sbAdvanced, 0, wxEXPAND | wxALL, 5);
GeneralPage->SetSizer(sGeneralPage); GeneralPage->SetSizer(sGeneralPage);
@ -552,29 +556,52 @@ void CConfigMain::CreateGUIControls()
// General display settings // General display settings
sbDisplay = new wxStaticBoxSizer(wxVERTICAL, DisplayPage, _("Emulator Display Settings")); sbDisplay = new wxStaticBoxSizer(wxVERTICAL, DisplayPage, _("Emulator Display Settings"));
FullscreenResolution = new wxChoice(DisplayPage, ID_DISPLAY_FULLSCREENRES, wxDefaultPosition, wxDefaultSize, arrayStringFor_FullscreenResolution, 0, wxDefaultValidator, arrayStringFor_FullscreenResolution[0]); FullscreenResolution = new wxChoice(DisplayPage, ID_DISPLAY_FULLSCREENRES,
WindowWidth = new wxSpinCtrl(DisplayPage, ID_DISPLAY_WINDOWWIDTH, wxEmptyString, wxDefaultPosition, wxSize(70, -1)); wxDefaultPosition, wxDefaultSize, arrayStringFor_FullscreenResolution,
0, wxDefaultValidator, arrayStringFor_FullscreenResolution[0]);
WindowWidth = new wxSpinCtrl(DisplayPage, ID_DISPLAY_WINDOWWIDTH, wxEmptyString,
wxDefaultPosition, wxSize(70, -1));
WindowWidth->SetRange(0,3280); WindowWidth->SetRange(0,3280);
WindowHeight = new wxSpinCtrl(DisplayPage, ID_DISPLAY_WINDOWHEIGHT, wxEmptyString, wxDefaultPosition, wxSize(70, -1)); WindowHeight = new wxSpinCtrl(DisplayPage, ID_DISPLAY_WINDOWHEIGHT,
wxEmptyString, wxDefaultPosition, wxSize(70, -1));
WindowHeight->SetRange(0,2048); WindowHeight->SetRange(0,2048);
WindowAutoSize = new wxCheckBox(DisplayPage, ID_DISPLAY_AUTOSIZE, _("Auto"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator); WindowAutoSize = new wxCheckBox(DisplayPage, ID_DISPLAY_AUTOSIZE, _("Auto"),
Fullscreen = new wxCheckBox(DisplayPage, ID_DISPLAY_FULLSCREEN, _("Start Renderer in Fullscreen"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator); wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
Fullscreen = new wxCheckBox(DisplayPage, ID_DISPLAY_FULLSCREEN,
_("Start Renderer in Fullscreen"), wxDefaultPosition, wxDefaultSize,
0, wxDefaultValidator);
HideCursor = new wxCheckBox(DisplayPage, ID_DISPLAY_HIDECURSOR, _("Hide Mouse Cursor")); HideCursor = new wxCheckBox(DisplayPage, ID_DISPLAY_HIDECURSOR, _("Hide Mouse Cursor"));
RenderToMain = new wxCheckBox(DisplayPage, ID_DISPLAY_RENDERTOMAIN, _("Render to Main Window"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator); RenderToMain = new wxCheckBox(DisplayPage, ID_DISPLAY_RENDERTOMAIN,
ProgressiveScan = new wxCheckBox(DisplayPage, ID_DISPLAY_PROGSCAN, _("Enable Progressive Scan"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator); _("Render to Main Window"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
NTSCJ = new wxCheckBox(DisplayPage, ID_DISPLAY_NTSCJ, _("Set Console as NTSC-J"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator); ProgressiveScan = new wxCheckBox(DisplayPage, ID_DISPLAY_PROGSCAN,
_("Enable Progressive Scan"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
NTSCJ = new wxCheckBox(DisplayPage, ID_DISPLAY_NTSCJ, _("Set Console as NTSC-J"),
wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
#if defined _WIN32 || defined __linux__
// GFX Plugin Selection
GraphicSelection = new wxChoice(DisplayPage, ID_GRAPHIC_CB,
wxDefaultPosition, wxDefaultSize, 0, NULL, 0, wxDefaultValidator);
GraphicConfig = new wxButton(DisplayPage, ID_GRAPHIC_CONFIG, _("Config..."),
wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
#endif
// Interface Language // Interface Language
InterfaceLang = new wxChoice(DisplayPage, ID_INTERFACE_LANG, wxDefaultPosition, wxDefaultSize, arrayStringFor_InterfaceLang, 0, wxDefaultValidator); // TODO : Do these really belong to the display page?
InterfaceLang = new wxChoice(DisplayPage, ID_INTERFACE_LANG, wxDefaultPosition,
wxDefaultSize, arrayStringFor_InterfaceLang, 0, wxDefaultValidator);
// Hotkey configuration // Hotkey configuration
// TODO : doesn't really belong to the display page, heh. HotkeyConfig = new wxButton(DisplayPage, ID_HOTKEY_CONFIG, _("Hotkeys"),
HotkeyConfig = new wxButton(DisplayPage, ID_HOTKEY_CONFIG, _("Hotkeys"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator); wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator);
// Themes - this should really be a wxChoice... // Themes - this should really be a wxChoice...
Theme = new wxRadioBox(DisplayPage, ID_INTERFACE_THEME, _("Theme"), wxDefaultPosition, wxDefaultSize, arrayStringFor_Themes, 1, wxRA_SPECIFY_ROWS); Theme = new wxRadioBox(DisplayPage, ID_INTERFACE_THEME, _("Theme"),
wxDefaultPosition, wxDefaultSize, arrayStringFor_Themes, 1, wxRA_SPECIFY_ROWS);
// Interface settings // Interface settings
sbInterface = new wxStaticBoxSizer(wxVERTICAL, DisplayPage, _("Interface Settings")); sbInterface = new wxStaticBoxSizer(wxVERTICAL, DisplayPage, _("Interface Settings"));
ConfirmStop = new wxCheckBox(DisplayPage, ID_INTERFACE_CONFIRMSTOP, _("Confirm On Stop"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator); ConfirmStop = new wxCheckBox(DisplayPage, ID_INTERFACE_CONFIRMSTOP, _("Confirm On Stop"),
UsePanicHandlers = new wxCheckBox(DisplayPage, ID_INTERFACE_USEPANICHANDLERS, _("Use Panic Handlers"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator); wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
UsePanicHandlers = new wxCheckBox(DisplayPage, ID_INTERFACE_USEPANICHANDLERS,
_("Use Panic Handlers"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
// Populate the Display page // Populate the Display page
wxBoxSizer* sDisplayRes = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer* sDisplayRes = new wxBoxSizer(wxHORIZONTAL);
@ -595,6 +622,13 @@ void CConfigMain::CreateGUIControls()
sbDisplay->Add(ProgressiveScan, 0, wxEXPAND | wxALL, 5); sbDisplay->Add(ProgressiveScan, 0, wxEXPAND | wxALL, 5);
sbDisplay->Add(NTSCJ, 0, wxEXPAND | wxALL, 5); sbDisplay->Add(NTSCJ, 0, wxEXPAND | wxALL, 5);
#if defined _WIN32 || defined __linux__
wxStaticBoxSizer *sbGraphicsPlugin =
new wxStaticBoxSizer(wxHORIZONTAL, DisplayPage, _("Graphics Plugin"));
sbGraphicsPlugin->Add(GraphicSelection, 1, wxEXPAND|wxALL, 5);
sbGraphicsPlugin->Add(GraphicConfig, 0, wxALL, 5);
#endif
sbInterface->Add(ConfirmStop, 0, wxALL, 5); sbInterface->Add(ConfirmStop, 0, wxALL, 5);
sbInterface->Add(UsePanicHandlers, 0, wxALL, 5); sbInterface->Add(UsePanicHandlers, 0, wxALL, 5);
sbInterface->Add(Theme, 0, wxEXPAND | wxALL, 5); sbInterface->Add(Theme, 0, wxEXPAND | wxALL, 5);
@ -607,18 +641,28 @@ void CConfigMain::CreateGUIControls()
sDisplayPage = new wxBoxSizer(wxVERTICAL); sDisplayPage = new wxBoxSizer(wxVERTICAL);
sDisplayPage->Add(sbDisplay, 0, wxEXPAND | wxALL, 5); sDisplayPage->Add(sbDisplay, 0, wxEXPAND | wxALL, 5);
#if defined _WIN32 || defined __linux__
sDisplayPage->Add(sbGraphicsPlugin, 0, wxEXPAND | wxALL, 5);
#endif
sDisplayPage->Add(sbInterface, 0, wxEXPAND | wxALL, 5); sDisplayPage->Add(sbInterface, 0, wxEXPAND | wxALL, 5);
DisplayPage->SetSizer(sDisplayPage); DisplayPage->SetSizer(sDisplayPage);
// Audio page // Audio page
DSPEngine = new wxRadioBox(AudioPage, ID_DSPENGINE, _("DSP Emulator Engine"), wxDefaultPosition, wxDefaultSize, arrayStringFor_DSPEngine, 0, wxRA_SPECIFY_ROWS); DSPEngine = new wxRadioBox(AudioPage, ID_DSPENGINE, _("DSP Emulator Engine"),
EnableDTKMusic = new wxCheckBox(AudioPage, ID_ENABLE_DTK_MUSIC, _("Enable DTK Music"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator); wxDefaultPosition, wxDefaultSize, arrayStringFor_DSPEngine, 0, wxRA_SPECIFY_ROWS);
EnableThrottle = new wxCheckBox(AudioPage, ID_ENABLE_THROTTLE, _("Enable Audio Throttle"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator); EnableDTKMusic = new wxCheckBox(AudioPage, ID_ENABLE_DTK_MUSIC, _("Enable DTK Music"),
VolumeSlider = new wxSlider(AudioPage, ID_VOLUME, 0, 1, 100, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL|wxSL_INVERSE); wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
VolumeText = new wxStaticText(AudioPage, wxID_ANY, wxT(""), wxDefaultPosition, wxDefaultSize, 0); EnableThrottle = new wxCheckBox(AudioPage, ID_ENABLE_THROTTLE, _("Enable Audio Throttle"),
BackendSelection = new wxChoice(AudioPage, ID_BACKEND, wxDefaultPosition, wxDefaultSize, wxArrayBackends, 0, wxDefaultValidator, wxEmptyString); wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
FrequencySelection = new wxChoice(AudioPage, ID_FREQUENCY, wxDefaultPosition, wxDefaultSize, wxArrayRates, 0, wxDefaultValidator, wxEmptyString); VolumeSlider = new wxSlider(AudioPage, ID_VOLUME, 0, 1, 100,
wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL|wxSL_INVERSE);
VolumeText = new wxStaticText(AudioPage, wxID_ANY, wxT(""),
wxDefaultPosition, wxDefaultSize, 0);
BackendSelection = new wxChoice(AudioPage, ID_BACKEND, wxDefaultPosition,
wxDefaultSize, wxArrayBackends, 0, wxDefaultValidator, wxEmptyString);
FrequencySelection = new wxChoice(AudioPage, ID_FREQUENCY, wxDefaultPosition,
wxDefaultSize, wxArrayRates, 0, wxDefaultValidator, wxEmptyString);
FrequencySelection->Append(_("48,000 Hz")); FrequencySelection->Append(_("48,000 Hz"));
FrequencySelection->Append(_("32,000 Hz")); FrequencySelection->Append(_("32,000 Hz"));
@ -656,10 +700,12 @@ void CConfigMain::CreateGUIControls()
// Gamecube page // Gamecube page
// IPL settings // IPL settings
sbGamecubeIPLSettings = new wxStaticBoxSizer(wxVERTICAL, GamecubePage, _("IPL Settings")); sbGamecubeIPLSettings = new wxStaticBoxSizer(wxVERTICAL, GamecubePage, _("IPL Settings"));
GCSystemLang = new wxChoice(GamecubePage, ID_GC_SRAM_LNG, wxDefaultPosition, wxDefaultSize, arrayStringFor_GCSystemLang, 0, wxDefaultValidator); GCSystemLang = new wxChoice(GamecubePage, ID_GC_SRAM_LNG, wxDefaultPosition,
wxDefaultSize, arrayStringFor_GCSystemLang, 0, wxDefaultValidator);
// Device settings // Device settings
// EXI Devices // EXI Devices
wxStaticBoxSizer *sbGamecubeDeviceSettings = new wxStaticBoxSizer(wxVERTICAL, GamecubePage, _("Device Settings")); wxStaticBoxSizer *sbGamecubeDeviceSettings =
new wxStaticBoxSizer(wxVERTICAL, GamecubePage, _("Device Settings"));
wxStaticText* GCEXIDeviceText[3]; wxStaticText* GCEXIDeviceText[3];
GCEXIDeviceText[0] = TEXT_BOX(GamecubePage, _("Slot A")); GCEXIDeviceText[0] = TEXT_BOX(GamecubePage, _("Slot A"));
GCEXIDeviceText[1] = TEXT_BOX(GamecubePage, _("Slot B")); GCEXIDeviceText[1] = TEXT_BOX(GamecubePage, _("Slot B"));
@ -672,11 +718,16 @@ void CConfigMain::CreateGUIControls()
static const int numSlotDevices = sizeof(SlotDevices)/sizeof(wxString); static const int numSlotDevices = sizeof(SlotDevices)/sizeof(wxString);
const wxString SP1Devices[] = { _(DEV_NONE_STR), _(DEV_DUMMY_STR), _(EXIDEV_BBA_STR), _(EXIDEV_AM_BB_STR) }; const wxString SP1Devices[] = { _(DEV_NONE_STR), _(DEV_DUMMY_STR), _(EXIDEV_BBA_STR), _(EXIDEV_AM_BB_STR) };
static const int numSP1Devices = sizeof(SP1Devices)/sizeof(wxString); static const int numSP1Devices = sizeof(SP1Devices)/sizeof(wxString);
GCEXIDevice[0] = new wxChoice(GamecubePage, ID_GC_EXIDEVICE_SLOTA, wxDefaultPosition, wxDefaultSize, numSlotDevices, SlotDevices, 0, wxDefaultValidator); GCEXIDevice[0] = new wxChoice(GamecubePage, ID_GC_EXIDEVICE_SLOTA, wxDefaultPosition,
GCEXIDevice[1] = new wxChoice(GamecubePage, ID_GC_EXIDEVICE_SLOTB, wxDefaultPosition, wxDefaultSize, numSlotDevices, SlotDevices, 0, wxDefaultValidator); wxDefaultSize, numSlotDevices, SlotDevices, 0, wxDefaultValidator);
GCEXIDevice[2] = new wxChoice(GamecubePage, ID_GC_EXIDEVICE_SP1, wxDefaultPosition, wxDefaultSize, numSP1Devices, SP1Devices, 0, wxDefaultValidator); GCEXIDevice[1] = new wxChoice(GamecubePage, ID_GC_EXIDEVICE_SLOTB, wxDefaultPosition,
GCMemcardPath[0] = new wxButton(GamecubePage, ID_GC_EXIDEVICE_SLOTA_PATH, wxT("..."), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator); wxDefaultSize, numSlotDevices, SlotDevices, 0, wxDefaultValidator);
GCMemcardPath[1] = new wxButton(GamecubePage, ID_GC_EXIDEVICE_SLOTB_PATH, wxT("..."), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator); GCEXIDevice[2] = new wxChoice(GamecubePage, ID_GC_EXIDEVICE_SP1, wxDefaultPosition,
wxDefaultSize, numSP1Devices, SP1Devices, 0, wxDefaultValidator);
GCMemcardPath[0] = new wxButton(GamecubePage, ID_GC_EXIDEVICE_SLOTA_PATH, wxT("..."),
wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator);
GCMemcardPath[1] = new wxButton(GamecubePage, ID_GC_EXIDEVICE_SLOTB_PATH, wxT("..."),
wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator);
// Can't move this one without making the 4 const's etc. above class members/fields, // Can't move this one without making the 4 const's etc. above class members/fields,
// TODO : lies, wxArrayString + wxChoice->Create. // TODO : lies, wxArrayString + wxChoice->Create.
@ -723,10 +774,14 @@ void CConfigMain::CreateGUIControls()
// SIDEV_AM_BB_STR must be last! // SIDEV_AM_BB_STR must be last!
const wxString SIDevices[] = {_(DEV_NONE_STR),_(SIDEV_STDCONT_STR),_(SIDEV_GBA_STR),_(SIDEV_AM_BB_STR)}; const wxString SIDevices[] = {_(DEV_NONE_STR),_(SIDEV_STDCONT_STR),_(SIDEV_GBA_STR),_(SIDEV_AM_BB_STR)};
static const int numSIDevices = sizeof(SIDevices)/sizeof(wxString); static const int numSIDevices = sizeof(SIDevices)/sizeof(wxString);
GCSIDevice[0] = new wxChoice(GamecubePage, ID_GC_SIDEVICE0, wxDefaultPosition, wxDefaultSize, numSIDevices, SIDevices, 0, wxDefaultValidator); GCSIDevice[0] = new wxChoice(GamecubePage, ID_GC_SIDEVICE0, wxDefaultPosition,
GCSIDevice[1] = new wxChoice(GamecubePage, ID_GC_SIDEVICE1, wxDefaultPosition, wxDefaultSize, numSIDevices - 1, SIDevices, 0, wxDefaultValidator); wxDefaultSize, numSIDevices, SIDevices, 0, wxDefaultValidator);
GCSIDevice[2] = new wxChoice(GamecubePage, ID_GC_SIDEVICE2, wxDefaultPosition, wxDefaultSize, numSIDevices - 1, SIDevices, 0, wxDefaultValidator); GCSIDevice[1] = new wxChoice(GamecubePage, ID_GC_SIDEVICE1, wxDefaultPosition,
GCSIDevice[3] = new wxChoice(GamecubePage, ID_GC_SIDEVICE3, wxDefaultPosition, wxDefaultSize, numSIDevices - 1, SIDevices, 0, wxDefaultValidator); wxDefaultSize, numSIDevices - 1, SIDevices, 0, wxDefaultValidator);
GCSIDevice[2] = new wxChoice(GamecubePage, ID_GC_SIDEVICE2, wxDefaultPosition,
wxDefaultSize, numSIDevices - 1, SIDevices, 0, wxDefaultValidator);
GCSIDevice[3] = new wxChoice(GamecubePage, ID_GC_SIDEVICE3, wxDefaultPosition,
wxDefaultSize, numSIDevices - 1, SIDevices, 0, wxDefaultValidator);
// Can't move this one without making the 2 const's etc. above class members/fields. // Can't move this one without making the 2 const's etc. above class members/fields.
for (int i = 0; i < 4; ++i) for (int i = 0; i < 4; ++i)
{ {
@ -779,21 +834,30 @@ void CConfigMain::CreateGUIControls()
// Wii page // Wii page
// Wiimote Settings // Wiimote Settings
sbWiimoteSettings = new wxStaticBoxSizer(wxHORIZONTAL, WiiPage, _("Wiimote Settings")); sbWiimoteSettings = new wxStaticBoxSizer(wxHORIZONTAL, WiiPage, _("Wiimote Settings"));
WiiSensBarPos = new wxChoice(WiiPage, ID_WII_BT_BAR, wxDefaultPosition, wxDefaultSize, arrayStringFor_WiiSensBarPos, 0, wxDefaultValidator); WiiSensBarPos = new wxChoice(WiiPage, ID_WII_BT_BAR, wxDefaultPosition,
wxDefaultSize, arrayStringFor_WiiSensBarPos, 0, wxDefaultValidator);
WiiSensBarSens = new wxSlider(WiiPage, ID_WII_BT_SENS, 0, 0, 4); WiiSensBarSens = new wxSlider(WiiPage, ID_WII_BT_SENS, 0, 0, 4);
WiimoteMotor = new wxCheckBox(WiiPage, ID_WII_BT_MOT, _("Wiimote Motor"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator); WiimoteMotor = new wxCheckBox(WiiPage, ID_WII_BT_MOT, _("Wiimote Motor"),
wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
// Misc Settings // Misc Settings
sbWiiIPLSettings = new wxStaticBoxSizer(wxVERTICAL, WiiPage, _("Misc Settings")); sbWiiIPLSettings = new wxStaticBoxSizer(wxVERTICAL, WiiPage, _("Misc Settings"));
WiiScreenSaver = new wxCheckBox(WiiPage, ID_WII_IPL_SSV, _("Enable Screen Saver (burn-in reduction)"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator); WiiScreenSaver = new wxCheckBox(WiiPage, ID_WII_IPL_SSV,
WiiEuRGB60 = new wxCheckBox(WiiPage, ID_WII_IPL_E60, _("Use EuRGB60 Mode (PAL60)"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator); _("Enable Screen Saver (burn-in reduction)"),
WiiAspectRatio = new wxChoice(WiiPage, ID_WII_IPL_AR, wxDefaultPosition, wxDefaultSize, arrayStringFor_WiiAspectRatio, 0, wxDefaultValidator); wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
WiiSystemLang = new wxChoice(WiiPage, ID_WII_IPL_LNG, wxDefaultPosition, wxDefaultSize, arrayStringFor_WiiSystemLang, 0, wxDefaultValidator); WiiEuRGB60 = new wxCheckBox(WiiPage, ID_WII_IPL_E60, _("Use EuRGB60 Mode (PAL60)"),
wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
WiiAspectRatio = new wxChoice(WiiPage, ID_WII_IPL_AR, wxDefaultPosition,
wxDefaultSize, arrayStringFor_WiiAspectRatio, 0, wxDefaultValidator);
WiiSystemLang = new wxChoice(WiiPage, ID_WII_IPL_LNG, wxDefaultPosition,
wxDefaultSize, arrayStringFor_WiiSystemLang, 0, wxDefaultValidator);
// Device Settings // Device Settings
sbWiiDeviceSettings = new wxStaticBoxSizer(wxVERTICAL, WiiPage, _("Device Settings")); sbWiiDeviceSettings = new wxStaticBoxSizer(wxVERTICAL, WiiPage, _("Device Settings"));
WiiSDCard = new wxCheckBox(WiiPage, ID_WII_SD_CARD, _("Insert SD Card"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator); WiiSDCard = new wxCheckBox(WiiPage, ID_WII_SD_CARD, _("Insert SD Card"),
WiiKeyboard = new wxCheckBox(WiiPage, ID_WII_KEYBOARD, _("Connect USB Keyboard"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator); wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
WiiKeyboard = new wxCheckBox(WiiPage, ID_WII_KEYBOARD, _("Connect USB Keyboard"),
wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
// Populate the Wii Page // Populate the Wii Page
sWiimoteSettings = new wxGridBagSizer(); sWiimoteSettings = new wxGridBagSizer();
@ -829,17 +893,25 @@ void CConfigMain::CreateGUIControls()
// Paths page // Paths page
sbISOPaths = new wxStaticBoxSizer(wxVERTICAL, PathsPage, _("ISO Directories")); sbISOPaths = new wxStaticBoxSizer(wxVERTICAL, PathsPage, _("ISO Directories"));
ISOPaths = new wxListBox(PathsPage, ID_ISOPATHS, wxDefaultPosition, wxDefaultSize, arrayStringFor_ISOPaths, wxLB_SINGLE, wxDefaultValidator); ISOPaths = new wxListBox(PathsPage, ID_ISOPATHS, wxDefaultPosition,
RecursiveISOPath = new wxCheckBox(PathsPage, ID_RECURSIVEISOPATH, _("Search Subfolders"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator); wxDefaultSize, arrayStringFor_ISOPaths, wxLB_SINGLE, wxDefaultValidator);
AddISOPath = new wxButton(PathsPage, ID_ADDISOPATH, _("Add..."), wxDefaultPosition, wxDefaultSize, 0); RecursiveISOPath = new wxCheckBox(PathsPage, ID_RECURSIVEISOPATH, _("Search Subfolders"),
RemoveISOPath = new wxButton(PathsPage, ID_REMOVEISOPATH, _("Remove"), wxDefaultPosition, wxDefaultSize, 0); wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
AddISOPath = new wxButton(PathsPage, ID_ADDISOPATH, _("Add..."),
wxDefaultPosition, wxDefaultSize, 0);
RemoveISOPath = new wxButton(PathsPage, ID_REMOVEISOPATH, _("Remove"),
wxDefaultPosition, wxDefaultSize, 0);
RemoveISOPath->Enable(false); RemoveISOPath->Enable(false);
DefaultISO = new wxFilePickerCtrl(PathsPage, ID_DEFAULTISO, wxEmptyString, _("Choose a default ISO:"), DefaultISO = new wxFilePickerCtrl(PathsPage, ID_DEFAULTISO, wxEmptyString,
_("All GC/Wii images (gcm, iso, ciso, gcz)") + wxString::Format(wxT("|*.gcm;*.iso;*.ciso;*.gcz|%s"), wxGetTranslation(wxALL_FILES)), _("Choose a default ISO:"),
_("All GC/Wii images (gcm, iso, ciso, gcz)") + wxString::Format(wxT("|*.gcm;*.iso;*.ciso;*.gcz|%s"),
wxGetTranslation(wxALL_FILES)),
wxDefaultPosition, wxDefaultSize, wxFLP_USE_TEXTCTRL|wxFLP_OPEN); wxDefaultPosition, wxDefaultSize, wxFLP_USE_TEXTCTRL|wxFLP_OPEN);
DVDRoot = new wxDirPickerCtrl(PathsPage, ID_DVDROOT, wxEmptyString, _("Choose a DVD root directory:"), wxDefaultPosition, wxDefaultSize, wxDIRP_USE_TEXTCTRL); DVDRoot = new wxDirPickerCtrl(PathsPage, ID_DVDROOT, wxEmptyString,
ApploaderPath = new wxFilePickerCtrl(PathsPage, ID_APPLOADERPATH, wxEmptyString, _("Choose file to use as apploader: (applies to discs constructed from directories only)"), _("Choose a DVD root directory:"), wxDefaultPosition, wxDefaultSize, wxDIRP_USE_TEXTCTRL);
ApploaderPath = new wxFilePickerCtrl(PathsPage, ID_APPLOADERPATH, wxEmptyString,
_("Choose file to use as apploader: (applies to discs constructed from directories only)"),
_("apploader (.img)") + wxString::Format(wxT("|*.img|%s"), wxGetTranslation(wxALL_FILES)), _("apploader (.img)") + wxString::Format(wxT("|*.img|%s"), wxGetTranslation(wxALL_FILES)),
wxDefaultPosition, wxDefaultSize, wxFLP_USE_TEXTCTRL|wxFLP_OPEN); wxDefaultPosition, wxDefaultSize, wxFLP_USE_TEXTCTRL|wxFLP_OPEN);
@ -870,25 +942,6 @@ void CConfigMain::CreateGUIControls()
sPathsPage->Add(sOtherPaths, 0, wxEXPAND|wxALL, 5); sPathsPage->Add(sOtherPaths, 0, wxEXPAND|wxALL, 5);
PathsPage->SetSizer(sPathsPage); PathsPage->SetSizer(sPathsPage);
#if defined _WIN32 || defined __linux__
// Plugins page
sbGraphicsPlugin = new wxStaticBoxSizer(wxHORIZONTAL, PluginsPage, _("Graphics"));
GraphicSelection = new wxChoice(PluginsPage, ID_GRAPHIC_CB, wxDefaultPosition, wxDefaultSize, 0, NULL, 0, wxDefaultValidator);
GraphicConfig = new wxButton(PluginsPage, ID_GRAPHIC_CONFIG, _("Config..."), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
// Populate the settings
sbGraphicsPlugin->Add(GraphicSelection, 1, wxEXPAND|wxALL, 5);
sbGraphicsPlugin->Add(GraphicConfig, 0, wxALL, 5);
// Populate the Plugins page
sPluginsPage = new wxBoxSizer(wxVERTICAL);
sPluginsPage->Add(sbGraphicsPlugin, 0, wxEXPAND|wxALL, 5);
PluginsPage->SetSizer(sPluginsPage);
#endif
m_Ok = new wxButton(this, wxID_OK); m_Ok = new wxButton(this, wxID_OK);
wxBoxSizer* sButtons = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer* sButtons = new wxBoxSizer(wxHORIZONTAL);

View File

@ -146,16 +146,7 @@ public:
private: private:
wxNotebook* Notebook; wxNotebook* Notebook;
wxPanel* GeneralPage;
wxPanel* GamecubePage;
wxPanel* DisplayPage;
wxPanel* AudioPage;
wxPanel* WiiPage;
wxPanel* PathsPage; wxPanel* PathsPage;
wxPanel* PluginsPage;
wxBoxSizer* sGeneralPage; // General Settings
wxStaticBoxSizer* sbBasic, *sbAdvanced; // Basic and Advanced sections
// Basic // Basic
wxCheckBox* CPUThread; wxCheckBox* CPUThread;
@ -253,9 +244,6 @@ private:
wxDirPickerCtrl* DVDRoot; wxDirPickerCtrl* DVDRoot;
wxFilePickerCtrl* ApploaderPath; wxFilePickerCtrl* ApploaderPath;
wxBoxSizer* sPluginsPage; // Plugins settings
wxStaticBoxSizer* sbGraphicsPlugin, *sbDSPPlugin; // Graphics, DSP sections
// Graphics // Graphics
wxChoice* GraphicSelection; wxChoice* GraphicSelection;
wxButton* GraphicConfig; wxButton* GraphicConfig;

View File

@ -349,6 +349,7 @@ CFrame::CFrame(wxFrame* parent,
#ifdef __WXGTK__ #ifdef __WXGTK__
panic_event.Init(); panic_event.Init();
keystate_event.Init();
#endif #endif
if (ShowLogWindow) SConfig::GetInstance().m_InterfaceLogWindow = true; if (ShowLogWindow) SConfig::GetInstance().m_InterfaceLogWindow = true;
@ -492,6 +493,7 @@ CFrame::~CFrame()
#ifdef __WXGTK__ #ifdef __WXGTK__
panic_event.Shutdown(); panic_event.Shutdown();
keystate_event.Shutdown();
#endif #endif
delete m_Mgr; delete m_Mgr;
@ -662,6 +664,10 @@ void CFrame::OnHostMessage(wxCommandEvent& event)
_("Warning"), event.GetInt() ? wxYES_NO : wxOK, this)); _("Warning"), event.GetInt() ? wxYES_NO : wxOK, this));
panic_event.Set(); panic_event.Set();
break; break;
case IDM_KEYSTATE:
bKeyStateResult = wxGetKeyState(wxKeyCode(event.GetInt()));
keystate_event.Set();
break;
#endif #endif
case WM_USER_STOP: case WM_USER_STOP:

View File

@ -136,6 +136,8 @@ class CFrame : public CRenderFrame
#ifdef __WXGTK__ #ifdef __WXGTK__
Common::Event panic_event; Common::Event panic_event;
bool bPanicResult; bool bPanicResult;
Common::Event keystate_event;
bool bKeyStateResult;
#endif #endif
#if defined(HAVE_XRANDR) && HAVE_XRANDR #if defined(HAVE_XRANDR) && HAVE_XRANDR

View File

@ -238,6 +238,7 @@ enum
IDM_UPDATETITLE, IDM_UPDATETITLE,
IDM_UPDATEBREAKPOINTS, IDM_UPDATEBREAKPOINTS,
IDM_PANIC, IDM_PANIC,
IDM_KEYSTATE,
IDM_HOST_MESSAGE, IDM_HOST_MESSAGE,
IDM_MPANEL, ID_STATUSBAR, IDM_MPANEL, ID_STATUSBAR,

View File

@ -568,6 +568,12 @@ bool Host_GetKeyState(int keycode)
{ {
#ifdef _WIN32 #ifdef _WIN32
return GetAsyncKeyState(keycode); return GetAsyncKeyState(keycode);
#elif defined __WXGTK__
wxCommandEvent event(wxEVT_HOST_COMMAND, IDM_KEYSTATE);
event.SetInt(keycode);
main_frame->GetEventHandler()->AddPendingEvent(event);
main_frame->keystate_event.Wait();
return main_frame->bKeyStateResult;
#else #else
return wxGetKeyState(wxKeyCode(keycode)); return wxGetKeyState(wxKeyCode(keycode));
#endif #endif

View File

@ -33,7 +33,7 @@
#undef MEMCARD_MANAGER_STYLE #undef MEMCARD_MANAGER_STYLE
#define MEMCARD_MANAGER_STYLE wxCAPTION | wxSYSTEM_MENU | wxDIALOG_NO_PARENT | wxCLOSE_BOX | wxRESIZE_BORDER | wxMAXIMIZE_BOX #define MEMCARD_MANAGER_STYLE wxCAPTION | wxSYSTEM_MENU | wxDIALOG_NO_PARENT | wxCLOSE_BOX | wxRESIZE_BORDER | wxMAXIMIZE_BOX
#define MEMCARDMAN_TITLE "Memory Card Manager WARNING-Make backups before using, should be fixed but could mangle stuff!" #define MEMCARDMAN_TITLE _trans("Memory Card Manager WARNING-Make backups before using, should be fixed but could mangle stuff!")
#define E_SAVEFAILED "File write failed" #define E_SAVEFAILED "File write failed"
#define E_UNK "Unknown error" #define E_UNK "Unknown error"
@ -43,7 +43,7 @@ class CMemcardManager : public wxDialog
{ {
public: public:
CMemcardManager(wxWindow *parent, wxWindowID id = wxID_ANY, const wxString& title = wxT(MEMCARDMAN_TITLE), CMemcardManager(wxWindow *parent, wxWindowID id = wxID_ANY, const wxString& title = wxGetTranslation(wxT(MEMCARDMAN_TITLE)),
const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = MEMCARD_MANAGER_STYLE); const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = MEMCARD_MANAGER_STYLE);
virtual ~CMemcardManager(); virtual ~CMemcardManager();