void Reset() { wxArrayString exts; int found=GetSelection(),num=0; if (found!=wxNOT_FOUND) if (GetStringSelection()!=GetString(found)) found=wxNOT_FOUND; if (found!=wxNOT_FOUND) { m_Data->m_Items[m_Num-1].m_String=m_Exts[found]; m_Data->m_Items[m_Num].m_String=GetStringSelection(); for (int i=0; i<(int)GetCount(); i++) { if (GetString(i)==m_Data->m_Items[m_Num].m_String) { if (exts.Index(m_Exts[i])==wxNOT_FOUND) exts.Add(m_Exts[i]); num++; } } } else { for (int i=0; i<(int)GetCount(); i++) { if (GetString(i)==m_Data->m_Items[m_Num].m_String) { if (exts.Index(m_Exts[i])==wxNOT_FOUND) exts.Add(m_Exts[i]); num++; if (m_Data->m_Items[m_Num-1].m_String==m_Exts[i]) found=i; } } } if (found==-1) { exts.clear(); m_Data->m_Mgr->GetResTemplateStrings(exts); m_ExtList->Enable(true); } else if (num==1) { exts.clear(); m_Data->m_Mgr->GetResTemplateStrings(exts); m_ExtList->Enable(false); } else m_ExtList->Enable(true); m_ExtList->Clear(); m_ExtList->Append(exts); m_ExtList->SetStringSelection(m_Data->m_Items[m_Num-1].m_String); }
void RegRichTextCtrl::OnChar( wxKeyEvent& event ) { long linePos = GetBuffer().GetVisibleLineNumber(GetCaretPosition(), true, true); wxString line = GetLineText(linePos); for (size_t i = 0; i < 15; ++i) if ( wxNOT_FOUND != line.Find(RegistersName[i]) ) { wxString str = GetStringSelection(); bool bShowEditBox = true; for (size_t k = 0; k < 15; ++k) { if ( 0 == str.Cmp(RegistersName[k]) ) { bShowEditBox = false; break; } } if (bShowEditBox) { this->SetCaretPosition(GetCaretPosition(), true); //EditRegister(RegNames[i], str); break; } } }
bool ComboBox::SetStringSelection(const wxString& s, bool select) { select = TRUE; select = m_ListBox->SetStringSelection(s, select); m_TextCtrl->SetValue(GetStringSelection()); return select; }
bool wxChoice::OS2Command( WXUINT uParam , WXWORD WXUNUSED(wId) ) { if (uParam != LN_SELECT) { // // "selection changed" is the only event we're after // return false; } int n = GetSelection(); if (n > -1) { wxCommandEvent vEvent( wxEVT_CHOICE ,m_windowId ); vEvent.SetInt(n); vEvent.SetEventObject(this); vEvent.SetString(GetStringSelection()); if (HasClientObjectData()) vEvent.SetClientObject(GetClientObject(n)); else if (HasClientUntypedData()) vEvent.SetClientData(GetClientData(n)); ProcessCommand(vEvent); } return true; } // end of wxChoice::OS2Command
wxString wxBitmapComboBox::GetValue() const { if ( GetEntry() ) return wxComboBox::GetValue(); return GetStringSelection(); }
bool wxComboBox::OSXHandleClicked( double WXUNUSED(timestampsec) ) { wxCommandEvent event(wxEVT_COMMAND_COMBOBOX_SELECTED, m_windowId ); event.SetInt(GetSelection()); event.SetEventObject(this); event.SetString(GetStringSelection()); ProcessCommand(event); return true; }
bool wxComboBox::OS2Command( WXUINT uParam, WXWORD WXUNUSED(wId) ) { long lSel = GetSelection(); wxString sValue; switch (uParam) { case CBN_LBSELECT: if (lSel > -1) { wxCommandEvent vEvent( wxEVT_COMMAND_COMBOBOX_SELECTED, GetId() ); vEvent.SetInt(lSel); vEvent.SetEventObject(this); vEvent.SetString(GetStringSelection()); ProcessCommand(vEvent); } break; case CBN_EFCHANGE: { wxCommandEvent vEvent( wxEVT_COMMAND_TEXT_UPDATED, GetId() ); if (lSel == -1L) sValue = GetValue(); else sValue = GetStringSelection(); vEvent.SetString(sValue); vEvent.SetEventObject(this); ProcessCommand(vEvent); } break; } // // There is no return value for the CBN_ notifications, so always return // false from here to pass the message to DefWindowProc() // return false; } // end of wxComboBox::OS2Command
void awxChoice::OnSelectMenuItem(wxCommandEvent& event) { if(GetSelection() == event.GetId()) return; SetSelection(event.GetId()); wxCommandEvent evt(wxEVT_COMMAND_CHOICE_SELECTED, GetId()); evt.SetInt( GetSelection() ); evt.SetString( GetStringSelection() ); evt.SetExtraLong( 1 ); // 1 stands for selection; 0 for deselection GetParent()->AddPendingEvent(evt); }
//--------------------------------------------------------- void CINFO_Messages::On_Copy(wxCommandEvent &WXUNUSED(event)) { if( GetStringSelection().IsEmpty() ) { SelectAll(); Copy(); SetSelection(GetLastPosition(), GetLastPosition()); } else { Copy(); } }
void wxControlWithItemsBase::SendSelectionChangedEvent(wxEventType eventType) { const int n = GetSelection(); if ( n == wxNOT_FOUND ) return; wxCommandEvent event(eventType, m_windowId); event.SetInt(n); event.SetEventObject(this); event.SetString(GetStringSelection()); InitCommandEventWithItems(event, n); HandleWindowEvent(event); }
void wxChoice::SendSelectionChangedEvent(wxEventType evt_type) { if (!m_hasVMT) return; if (GetSelection() == -1) return; wxCommandEvent event( evt_type, GetId() ); int n = GetSelection(); event.SetInt( n ); event.SetString( GetStringSelection() ); event.SetEventObject( this ); InitCommandEventWithItems( event, n ); HandleWindowEvent( event ); }
wxInt32 wxChoice::MacControlHit(WXEVENTHANDLERREF WXUNUSED(handler) , WXEVENTREF WXUNUSED(event) ) { wxCommandEvent event(wxEVT_COMMAND_CHOICE_SELECTED, m_windowId ); int n = GetSelection(); // actually n should be made sure by the os to be a valid selection, but ... if ( n > -1 ) { event.SetInt( n ); event.SetString(GetStringSelection()); event.SetEventObject(this); if ( HasClientObjectData() ) event.SetClientObject( GetClientObject(n) ); else if ( HasClientUntypedData() ) event.SetClientData( GetClientData(n) ); ProcessCommand(event); } return noErr ; }
bool wxChoice::OSXHandleClicked( double WXUNUSED(timestampsec) ) { wxCommandEvent event( wxEVT_COMMAND_CHOICE_SELECTED, m_windowId ); // actually n should be made sure by the os to be a valid selection, but ... int n = GetSelection(); if ( n > -1 ) { event.SetInt( n ); event.SetString( GetStringSelection() ); event.SetEventObject( this ); if ( HasClientObjectData() ) event.SetClientObject( GetClientObject( n ) ); else if ( HasClientUntypedData() ) event.SetClientData( GetClientData( n ) ); ProcessCommand( event ); } return true ; }
bool wxChoice::MSWCommand(WXUINT param, WXWORD WXUNUSED(id)) { if ( param != CBN_SELCHANGE) { // "selection changed" is the only event we're after return false; } int n = GetSelection(); if (n > -1) { wxCommandEvent event(wxEVT_COMMAND_CHOICE_SELECTED, m_windowId); event.SetInt(n); event.SetEventObject(this); event.SetString(GetStringSelection()); if ( HasClientObjectData() ) event.SetClientObject( GetClientObject(n) ); else if ( HasClientUntypedData() ) event.SetClientData( GetClientData(n) ); ProcessCommand(event); } return true; }
// TODO: this code require full information about editabel register in dialog // TODO: to make editable all registers which is output void RegRichTextCtrl::OnLeftDClick(wxMouseEvent& event) { wxClientDC dc(this); PrepareDC(dc); dc.SetFont(GetFont()); long position = 0; GetBuffer().HitTest(dc, event.GetLogicalPosition(dc), position); long linePos = GetBuffer().GetVisibleLineNumber(position, true, true); wxString line = GetLineText(linePos); const size_t szRegNames = 15; for (size_t i = 0; i < szRegNames; ++i) if (line.Find(RegistersName[i]) != wxNOT_FOUND) { wxString str = GetStringSelection(); bool bShowEditBox = true; for (size_t k = 0; k < szRegNames; ++k) { if ( 0 == str.Cmp(RegistersName[k]) ) { bShowEditBox = false; break; } } if (bShowEditBox) { EditRegister(RegistersName[i], str); break; } } }
void ComboBox::Clear() { m_ListBox->Clear(); m_TextCtrl->SetValue(GetStringSelection()); }
void ComboBox::Set(const wxArrayString& items, void **clientData) { m_ListBox->Set(items, clientData); m_TextCtrl->SetValue(GetStringSelection()); }
bool wxComboBox::MSWCommand(WXUINT param, WXWORD id) { int sel = -1; wxString value; switch ( param ) { case CBN_DROPDOWN: // remember the last selection, just as wxChoice does m_lastAcceptedSelection = GetCurrentSelection(); { wxCommandEvent event(wxEVT_COMBOBOX_DROPDOWN, GetId()); event.SetEventObject(this); ProcessCommand(event); } break; case CBN_CLOSEUP: // Do the same thing as in wxChoice but using different event type. if ( m_pendingSelection != wxID_NONE ) { SendSelectionChangedEvent(wxEVT_COMBOBOX); m_pendingSelection = wxID_NONE; } { wxCommandEvent event(wxEVT_COMBOBOX_CLOSEUP, GetId()); event.SetEventObject(this); ProcessCommand(event); } break; case CBN_SELENDOK: #ifndef __SMARTPHONE__ // we need to reset this to prevent the selection from being undone // by wxChoice, see wxChoice::MSWCommand() and comments there m_lastAcceptedSelection = wxID_NONE; #endif // set these variables so that they could be also fixed in // CBN_EDITCHANGE below sel = GetSelection(); value = GetStringSelection(); // this string is going to become the new combobox value soon but // we need it to be done right now, otherwise the event handler // could get a wrong value when it calls our GetValue() ::SetWindowText(GetHwnd(), value.t_str()); SendSelectionChangedEvent(wxEVT_COMBOBOX); // fall through: for compatibility with wxGTK, also send the text // update event when the selection changes (this also seems more // logical as the text does change) case CBN_EDITCHANGE: if ( m_allowTextEvents ) { wxCommandEvent event(wxEVT_TEXT, GetId()); // if sel != -1, value was already initialized above if ( sel == -1 ) { value = wxGetWindowText(GetHwnd()); } event.SetString(value); InitCommandEventWithItems(event, sel); ProcessCommand(event); } break; default: return wxChoice::MSWCommand(param, id); } // skip wxChoice version as it would generate its own events for // CBN_SELENDOK and also interfere with our handling of CBN_DROPDOWN return true; }
wxString wxComboBox::GetValue() const { return HasFlag(wxCB_READONLY) ? GetStringSelection() : wxTextEntry::GetValue(); }
bool wxChoice::MSWCommand(WXUINT param, WXWORD WXUNUSED(id)) { /* The native control provides a great variety in the events it sends in the different selection scenarios (undoubtedly for greater amusement of the programmers using it). For the reference, here are the cases when the final selection is accepted (things are quite interesting when it is cancelled too): A. Selecting with just the arrows without opening the dropdown: 1. CBN_SELENDOK 2. CBN_SELCHANGE B. Opening dropdown with F4 and selecting with arrows: 1. CBN_DROPDOWN 2. many CBN_SELCHANGE while changing selection in the list 3. CBN_SELENDOK 4. CBN_CLOSEUP C. Selecting with the mouse: 1. CBN_DROPDOWN -- no intermediate CBN_SELCHANGEs -- 2. CBN_SELENDOK 3. CBN_CLOSEUP 4. CBN_SELCHANGE Admire the different order of messages in all of those cases, it must surely have taken a lot of effort to Microsoft developers to achieve such originality. */ switch ( param ) { case CBN_DROPDOWN: // we use this value both because we don't want to track selection // using CB_GETCURSEL while the dropdown is opened and because we // need to reset the selection back to it if it's eventually // cancelled by user m_lastAcceptedSelection = GetCurrentSelection(); break; case CBN_CLOSEUP: // if the selection was accepted by the user, it should have been // reset to wxID_NONE by CBN_SELENDOK, otherwise the selection was // cancelled and we must restore the old one if ( m_lastAcceptedSelection != wxID_NONE ) { SetSelection(m_lastAcceptedSelection); m_lastAcceptedSelection = wxID_NONE; } break; case CBN_SELENDOK: // reset it to prevent CBN_CLOSEUP from undoing the selection (it's // ok to reset it now as GetCurrentSelection() will now return the // same thing anyhow) m_lastAcceptedSelection = wxID_NONE; { const int n = GetSelection(); wxCommandEvent event(wxEVT_COMMAND_CHOICE_SELECTED, m_windowId); event.SetInt(n); event.SetEventObject(this); if ( n > -1 ) { event.SetString(GetStringSelection()); InitCommandEventWithItems(event, n); } ProcessCommand(event); } break; // don't handle CBN_SELENDCANCEL: just leave m_lastAcceptedSelection // valid and the selection will be undone in CBN_CLOSEUP above // don't handle CBN_SELCHANGE neither, we don't want to generate events // while the dropdown is opened -- but do add it if we ever need this default: return false; } return true; }
void ComboBox::SetFirstItem(const wxString &s) { m_ListBox->SetFirstItem(s); m_TextCtrl->SetValue(GetStringSelection()); }
void ComboBox::Append(const wxString &item) { m_ListBox->Append(item); m_TextCtrl->SetValue(GetStringSelection()); }
void BFTimeCtrl::TextCtrl::UpdateBuffer() { strBuffer_ = GetStringSelection(); }
void ComboBox::Set(int n, const wxString* items, void **clientData) { m_ListBox->Set(n, items, clientData); m_TextCtrl->SetValue(GetStringSelection()); }
void ComboBox::Select(int n) { m_ListBox->Select(n); m_TextCtrl->SetValue(GetStringSelection()); }
void CConfigMain::CreateGUIControls() { InitializeGUILists(); // Create the notebook and pages Notebook = new wxNotebook(this, ID_NOTEBOOK); wxPanel* const GeneralPage = new wxPanel(Notebook, ID_GENERALPAGE); wxPanel* const DisplayPage = new wxPanel(Notebook, ID_DISPLAYPAGE); wxPanel* const AudioPage = new wxPanel(Notebook, ID_AUDIOPAGE); wxPanel* const GamecubePage = new wxPanel(Notebook, ID_GAMECUBEPAGE); wxPanel* const WiiPage = new wxPanel(Notebook, ID_WIIPAGE); PathsPage = new wxPanel(Notebook, ID_PATHSPAGE); Notebook->AddPage(GeneralPage, _("General")); Notebook->AddPage(DisplayPage, _("Interface")); Notebook->AddPage(AudioPage, _("Audio")); Notebook->AddPage(GamecubePage, _("GameCube")); Notebook->AddPage(WiiPage, _("Wii")); Notebook->AddPage(PathsPage, _("Paths")); // General page // Core Settings - Basic CPUThread = new wxCheckBox(GeneralPage, ID_CPUTHREAD, _("Enable Dual Core (speedup)")); SkipIdle = new wxCheckBox(GeneralPage, ID_IDLESKIP, _("Enable Idle Skipping (speedup)")); EnableCheats = new wxCheckBox(GeneralPage, ID_ENABLECHEATS, _("Enable Cheats")); // Framelimit Framelimit = new wxChoice(GeneralPage, ID_FRAMELIMIT, wxDefaultPosition, wxDefaultSize, arrayStringFor_Framelimit); // Core Settings - Advanced CPUEngine = new wxRadioBox(GeneralPage, ID_CPUENGINE, _("CPU Emulator Engine"), wxDefaultPosition, wxDefaultSize, arrayStringFor_CPUEngine, 0, wxRA_SPECIFY_ROWS); _NTSCJ = new wxCheckBox(GeneralPage, ID_NTSCJ, _("Force Console as NTSC-J")); // Populate the General settings wxBoxSizer* sFramelimit = new wxBoxSizer(wxHORIZONTAL); sFramelimit->Add(TEXT_BOX(GeneralPage, _("Framelimit:")), 0, wxALIGN_CENTER_VERTICAL | wxLEFT | wxRIGHT | wxBOTTOM, 5); sFramelimit->Add(Framelimit, 0, wxLEFT | wxRIGHT | wxBOTTOM | wxEXPAND, 5); wxStaticBoxSizer* const sbBasic = new wxStaticBoxSizer(wxVERTICAL, GeneralPage, _("Basic Settings")); sbBasic->Add(CPUThread, 0, wxALL, 5); sbBasic->Add(SkipIdle, 0, wxALL, 5); sbBasic->Add(EnableCheats, 0, wxALL, 5); sbBasic->Add(sFramelimit); wxStaticBoxSizer* const sbAdvanced = new wxStaticBoxSizer(wxVERTICAL, GeneralPage, _("Advanced Settings")); sbAdvanced->Add(CPUEngine, 0, wxALL, 5); sbAdvanced->Add(_NTSCJ, 0, wxALL, 5); wxBoxSizer* const sGeneralPage = new wxBoxSizer(wxVERTICAL); sGeneralPage->Add(sbBasic, 0, wxEXPAND | wxALL, 5); sGeneralPage->Add(sbAdvanced, 0, wxEXPAND | wxALL, 5); GeneralPage->SetSizer(sGeneralPage); // Interface Language InterfaceLang = new wxChoice(DisplayPage, ID_INTERFACE_LANG, wxDefaultPosition, wxDefaultSize, arrayStringFor_InterfaceLang); // Hotkey configuration HotkeyConfig = new wxButton(DisplayPage, ID_HOTKEY_CONFIG, _("Hotkeys"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT); // Interface settings ConfirmStop = new wxCheckBox(DisplayPage, ID_INTERFACE_CONFIRMSTOP, _("Confirm on Stop")); UsePanicHandlers = new wxCheckBox(DisplayPage, ID_INTERFACE_USEPANICHANDLERS, _("Use Panic Handlers")); OnScreenDisplayMessages = new wxCheckBox(DisplayPage, ID_INTERFACE_ONSCREENDISPLAYMESSAGES, _("On-Screen Display Messages")); wxBoxSizer* sInterface = new wxBoxSizer(wxHORIZONTAL); sInterface->Add(TEXT_BOX(DisplayPage, _("Language:")), 0, wxALIGN_CENTER_VERTICAL | wxALL, 5); sInterface->Add(InterfaceLang, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5); sInterface->AddStretchSpacer(); sInterface->Add(HotkeyConfig, 0, wxALIGN_RIGHT | wxALL, 5); // theme selection auto const theme_selection = new wxChoice(DisplayPage, wxID_ANY); CFileSearch::XStringVector theme_dirs; theme_dirs.push_back(File::GetUserPath(D_THEMES_IDX)); theme_dirs.push_back(File::GetSysDirectory() + THEMES_DIR); CFileSearch cfs(CFileSearch::XStringVector(1, "*"), theme_dirs); auto const& sv = cfs.GetFileNames(); std::for_each(sv.begin(), sv.end(), [theme_selection](const std::string& filename) { std::string name, ext; SplitPath(filename, nullptr, &name, &ext); name += ext; auto const wxname = StrToWxStr(name); if (-1 == theme_selection->FindString(wxname)) theme_selection->Append(wxname); }); theme_selection->SetStringSelection(StrToWxStr(SConfig::GetInstance().m_LocalCoreStartupParameter.theme_name)); // std::function = avoid error on msvc theme_selection->Bind(wxEVT_CHOICE, std::function<void(wxEvent&)>([theme_selection](wxEvent&) { SConfig::GetInstance().m_LocalCoreStartupParameter.theme_name = WxStrToStr(theme_selection->GetStringSelection()); main_frame->InitBitmaps(); main_frame->UpdateGameList(); })); auto const scInterface = new wxBoxSizer(wxHORIZONTAL); scInterface->Add(TEXT_BOX(DisplayPage, _("Theme:")), 0, wxALIGN_CENTER_VERTICAL | wxALL, 5); scInterface->Add(theme_selection, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5); scInterface->AddStretchSpacer(); sbInterface = new wxStaticBoxSizer(wxVERTICAL, DisplayPage, _("Interface Settings")); sbInterface->Add(ConfirmStop, 0, wxALL, 5); sbInterface->Add(UsePanicHandlers, 0, wxALL, 5); sbInterface->Add(OnScreenDisplayMessages, 0, wxALL, 5); sbInterface->Add(scInterface, 0, wxEXPAND | wxALL, 5); sbInterface->Add(sInterface, 0, wxEXPAND | wxALL, 5); sDisplayPage = new wxBoxSizer(wxVERTICAL); sDisplayPage->Add(sbInterface, 0, wxEXPAND | wxALL, 5); DisplayPage->SetSizer(sDisplayPage); // Audio page DSPEngine = new wxRadioBox(AudioPage, ID_DSPENGINE, _("DSP Emulator Engine"), wxDefaultPosition, wxDefaultSize, arrayStringFor_DSPEngine, 0, wxRA_SPECIFY_ROWS); DSPThread = new wxCheckBox(AudioPage, ID_DSPTHREAD, _("DSPLLE on Separate Thread")); DumpAudio = new wxCheckBox(AudioPage, ID_DUMP_AUDIO, _("Dump Audio")); DPL2Decoder = new wxCheckBox(AudioPage, ID_DPL2DECODER, _("Dolby Pro Logic II decoder")); VolumeSlider = new wxSlider(AudioPage, ID_VOLUME, 0, 1, 100, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL|wxSL_INVERSE); VolumeText = new wxStaticText(AudioPage, wxID_ANY, ""); BackendSelection = new wxChoice(AudioPage, ID_BACKEND, wxDefaultPosition, wxDefaultSize, wxArrayBackends, 0, wxDefaultValidator, wxEmptyString); Latency = new wxSpinCtrl(AudioPage, ID_LATENCY, "", wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 30); Latency->Bind(wxEVT_SPINCTRL, &CConfigMain::AudioSettingsChanged, this); if (Core::GetState() != Core::CORE_UNINITIALIZED) { Latency->Disable(); BackendSelection->Disable(); DPL2Decoder->Disable(); } // Create sizer and add items to dialog wxStaticBoxSizer *sbAudioSettings = new wxStaticBoxSizer(wxVERTICAL, AudioPage, _("Sound Settings")); sbAudioSettings->Add(DSPEngine, 0, wxALL | wxEXPAND, 5); sbAudioSettings->Add(DSPThread, 0, wxALL, 5); sbAudioSettings->Add(DumpAudio, 0, wxALL, 5); sbAudioSettings->Add(DPL2Decoder, 0, wxALL, 5); wxStaticBoxSizer *sbVolume = new wxStaticBoxSizer(wxVERTICAL, AudioPage, _("Volume")); sbVolume->Add(VolumeSlider, 1, wxLEFT|wxRIGHT, 13); sbVolume->Add(VolumeText, 0, wxALIGN_CENTER|wxALL, 5); wxGridBagSizer *sBackend = new wxGridBagSizer(); sBackend->Add(TEXT_BOX(AudioPage, _("Audio Backend:")), wxGBPosition(0, 0), wxDefaultSpan, wxALIGN_CENTER_VERTICAL|wxALL, 5); sBackend->Add(BackendSelection, wxGBPosition(0, 1), wxDefaultSpan, wxALL, 5); sBackend->Add(TEXT_BOX(AudioPage, _("Latency:")), wxGBPosition(1, 0), wxDefaultSpan, wxALIGN_CENTER_VERTICAL|wxALL, 5); sBackend->Add(Latency, wxGBPosition(1, 1), wxDefaultSpan, wxALL, 5); wxStaticBoxSizer *sbBackend = new wxStaticBoxSizer(wxHORIZONTAL, AudioPage, _("Backend Settings")); sbBackend->Add(sBackend, 0, wxEXPAND); wxBoxSizer *sAudio = new wxBoxSizer(wxHORIZONTAL); sAudio->Add(sbAudioSettings, 1, wxEXPAND|wxALL, 5); sAudio->Add(sbVolume, 0, wxEXPAND|wxALL, 5); sAudioPage = new wxBoxSizer(wxVERTICAL); sAudioPage->Add(sAudio, 0, wxALL|wxEXPAND); sAudioPage->Add(sbBackend, 0, wxALL|wxEXPAND, 5); AudioPage->SetSizerAndFit(sAudioPage); // GameCube page // IPL settings GCSystemLang = new wxChoice(GamecubePage, ID_GC_SRAM_LNG, wxDefaultPosition, wxDefaultSize, arrayStringFor_GCSystemLang); GCAlwaysHLE_BS2 = new wxCheckBox(GamecubePage, ID_GC_ALWAYS_HLE_BS2, _("Skip BIOS")); // Device settings // EXI Devices wxStaticText* GCEXIDeviceText[3]; GCEXIDeviceText[0] = TEXT_BOX(GamecubePage, _("Slot A")); GCEXIDeviceText[1] = TEXT_BOX(GamecubePage, _("Slot B")); GCEXIDeviceText[2] = TEXT_BOX(GamecubePage, "SP1"); GCEXIDevice[0] = new wxChoice(GamecubePage, ID_GC_EXIDEVICE_SLOTA); GCEXIDevice[1] = new wxChoice(GamecubePage, ID_GC_EXIDEVICE_SLOTB); GCEXIDevice[2] = new wxChoice(GamecubePage, ID_GC_EXIDEVICE_SP1); GCMemcardPath[0] = new wxButton(GamecubePage, ID_GC_EXIDEVICE_SLOTA_PATH, "...", wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT); GCMemcardPath[1] = new wxButton(GamecubePage, ID_GC_EXIDEVICE_SLOTB_PATH, "...", wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT); //SI Devices wxStaticText* GCSIDeviceText[4]; GCSIDeviceText[0] = TEXT_BOX(GamecubePage, _("Port 1")); GCSIDeviceText[1] = TEXT_BOX(GamecubePage, _("Port 2")); GCSIDeviceText[2] = TEXT_BOX(GamecubePage, _("Port 3")); GCSIDeviceText[3] = TEXT_BOX(GamecubePage, _("Port 4")); GCSIDevice[0] = new wxChoice(GamecubePage, ID_GC_SIDEVICE0); GCSIDevice[1] = new wxChoice(GamecubePage, ID_GC_SIDEVICE1); GCSIDevice[2] = new wxChoice(GamecubePage, ID_GC_SIDEVICE2); GCSIDevice[3] = new wxChoice(GamecubePage, ID_GC_SIDEVICE3); // Populate the GameCube page sGamecubeIPLSettings = new wxGridBagSizer(); sGamecubeIPLSettings->Add(GCAlwaysHLE_BS2, wxGBPosition(0, 0), wxGBSpan(1, 2), wxALL, 5); sGamecubeIPLSettings->Add(TEXT_BOX(GamecubePage, _("System Language:")), wxGBPosition(1, 0), wxDefaultSpan, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT|wxBOTTOM, 5); sGamecubeIPLSettings->Add(GCSystemLang, wxGBPosition(1, 1), wxDefaultSpan, wxLEFT|wxRIGHT|wxBOTTOM, 5); sbGamecubeIPLSettings = new wxStaticBoxSizer(wxVERTICAL, GamecubePage, _("IPL Settings")); sbGamecubeIPLSettings->Add(sGamecubeIPLSettings); wxStaticBoxSizer *sbGamecubeDeviceSettings = new wxStaticBoxSizer(wxVERTICAL, GamecubePage, _("Device Settings")); wxGridBagSizer* sbGamecubeEXIDevSettings = new wxGridBagSizer(10, 10); for (int i = 0; i < 3; ++i) { sbGamecubeEXIDevSettings->Add(GCEXIDeviceText[i], wxGBPosition(i, 0), wxDefaultSpan, wxALIGN_CENTER_VERTICAL); sbGamecubeEXIDevSettings->Add(GCEXIDevice[i], wxGBPosition(i, 1), wxGBSpan(1, (i < 2)?1:2), wxALIGN_CENTER_VERTICAL); if (i < 2) sbGamecubeEXIDevSettings->Add(GCMemcardPath[i], wxGBPosition(i, 2), wxDefaultSpan, wxALIGN_CENTER_VERTICAL); if (NetPlay::IsNetPlayRunning()) GCEXIDevice[i]->Disable(); } sbGamecubeDeviceSettings->Add(sbGamecubeEXIDevSettings, 0, wxALL, 5); wxFlexGridSizer* sbGamecubeDevSettings = new wxFlexGridSizer(2, 10, 10); for (int i = 0; i < 4; ++i) { sbGamecubeDevSettings->Add(GCSIDeviceText[i], 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT|wxBOTTOM, 0); sbGamecubeDevSettings->Add(GCSIDevice[i], 1, wxEXPAND|wxLEFT|wxRIGHT|wxBOTTOM, 0); if (NetPlay::IsNetPlayRunning() || Movie::IsRecordingInput() || Movie::IsPlayingInput()) { GCSIDevice[i]->Disable(); } } sbGamecubeDeviceSettings->Add(sbGamecubeDevSettings, 0, wxALL, 5); sGamecubePage = new wxBoxSizer(wxVERTICAL); sGamecubePage->Add(sbGamecubeIPLSettings, 0, wxEXPAND|wxALL, 5); sGamecubePage->Add(sbGamecubeDeviceSettings, 0, wxEXPAND|wxALL, 5); GamecubePage->SetSizer(sGamecubePage); // Wii page // Misc Settings WiiScreenSaver = new wxCheckBox(WiiPage, ID_WII_IPL_SSV, _("Enable Screen Saver")); WiiEuRGB60 = new wxCheckBox(WiiPage, ID_WII_IPL_E60, _("Use EuRGB60 Mode (PAL60)")); WiiAspectRatio = new wxChoice(WiiPage, ID_WII_IPL_AR, wxDefaultPosition, wxDefaultSize, arrayStringFor_WiiAspectRatio); WiiSystemLang = new wxChoice(WiiPage, ID_WII_IPL_LNG, wxDefaultPosition, wxDefaultSize, arrayStringFor_WiiSystemLang); // Device Settings WiiSDCard = new wxCheckBox(WiiPage, ID_WII_SD_CARD, _("Insert SD Card")); WiiKeyboard = new wxCheckBox(WiiPage, ID_WII_KEYBOARD, _("Connect USB Keyboard")); // Populate the Wii Page sWiiIPLSettings = new wxGridBagSizer(); sWiiIPLSettings->Add(WiiScreenSaver, wxGBPosition(0, 0), wxGBSpan(1, 2), wxALL, 5); sWiiIPLSettings->Add(WiiEuRGB60, wxGBPosition(1, 0), wxGBSpan(1, 2), wxALL, 5); sWiiIPLSettings->Add(TEXT_BOX(WiiPage, _("Aspect Ratio:")), wxGBPosition(2, 0), wxDefaultSpan, wxALIGN_CENTER_VERTICAL|wxALL, 5); sWiiIPLSettings->Add(WiiAspectRatio, wxGBPosition(2, 1), wxDefaultSpan, wxALL, 5); sWiiIPLSettings->Add(TEXT_BOX(WiiPage, _("System Language:")), wxGBPosition(3, 0), wxDefaultSpan, wxALIGN_CENTER_VERTICAL|wxALL, 5); sWiiIPLSettings->Add(WiiSystemLang, wxGBPosition(3, 1), wxDefaultSpan, wxALL, 5); sbWiiIPLSettings = new wxStaticBoxSizer(wxVERTICAL, WiiPage, _("Misc Settings")); sbWiiIPLSettings->Add(sWiiIPLSettings); sbWiiDeviceSettings = new wxStaticBoxSizer(wxVERTICAL, WiiPage, _("Device Settings")); sbWiiDeviceSettings->Add(WiiSDCard, 0, wxALL, 5); sbWiiDeviceSettings->Add(WiiKeyboard, 0, wxALL, 5); sWiiPage = new wxBoxSizer(wxVERTICAL); sWiiPage->Add(sbWiiIPLSettings, 0, wxEXPAND|wxALL, 5); sWiiPage->Add(sbWiiDeviceSettings, 0, wxEXPAND|wxALL, 5); WiiPage->SetSizer(sWiiPage); // Paths page ISOPaths = new wxListBox(PathsPage, ID_ISOPATHS, wxDefaultPosition, wxDefaultSize, arrayStringFor_ISOPaths, wxLB_SINGLE); RecursiveISOPath = new wxCheckBox(PathsPage, ID_RECURSIVEISOPATH, _("Search Subfolders")); AddISOPath = new wxButton(PathsPage, ID_ADDISOPATH, _("Add...")); RemoveISOPath = new wxButton(PathsPage, ID_REMOVEISOPATH, _("Remove")); RemoveISOPath->Enable(false); DefaultISO = new wxFilePickerCtrl(PathsPage, ID_DEFAULTISO, wxEmptyString, _("Choose a default ISO:"), _("All GC/Wii images (gcm, iso, wbfs, ciso, gcz)") + wxString::Format("|*.gcm;*.iso;*.wbfs;*.ciso;*.gcz|%s", wxGetTranslation(wxALL_FILES)), wxDefaultPosition, wxDefaultSize, wxFLP_USE_TEXTCTRL|wxFLP_OPEN); DVDRoot = new wxDirPickerCtrl(PathsPage, ID_DVDROOT, wxEmptyString, _("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("|*.img|%s", wxGetTranslation(wxALL_FILES)), wxDefaultPosition, wxDefaultSize, wxFLP_USE_TEXTCTRL|wxFLP_OPEN); NANDRoot = new wxDirPickerCtrl(PathsPage, ID_NANDROOT, wxEmptyString, _("Choose a NAND root directory:"), wxDefaultPosition, wxDefaultSize, wxDIRP_USE_TEXTCTRL); // Populate the settings wxBoxSizer* sISOButtons = new wxBoxSizer(wxHORIZONTAL); sISOButtons->Add(RecursiveISOPath, 0, wxALL|wxALIGN_CENTER, 0); sISOButtons->AddStretchSpacer(); sISOButtons->Add(AddISOPath, 0, wxALL, 0); sISOButtons->Add(RemoveISOPath, 0, wxALL, 0); sbISOPaths = new wxStaticBoxSizer(wxVERTICAL, PathsPage, _("ISO Directories")); sbISOPaths->Add(ISOPaths, 1, wxEXPAND|wxALL, 0); sbISOPaths->Add(sISOButtons, 0, wxEXPAND|wxALL, 5); sOtherPaths = new wxGridBagSizer(); sOtherPaths->Add(TEXT_BOX(PathsPage, _("Default ISO:")), wxGBPosition(0, 0), wxDefaultSpan, wxALIGN_CENTER_VERTICAL|wxALL, 5); sOtherPaths->Add(DefaultISO, wxGBPosition(0, 1), wxDefaultSpan, wxEXPAND|wxALL, 5); sOtherPaths->Add(TEXT_BOX(PathsPage, _("DVD Root:")), wxGBPosition(1, 0), wxDefaultSpan, wxALIGN_CENTER_VERTICAL|wxALL, 5); sOtherPaths->Add(DVDRoot, wxGBPosition(1, 1), wxDefaultSpan, wxEXPAND|wxALL, 5); sOtherPaths->Add(TEXT_BOX(PathsPage, _("Apploader:")), wxGBPosition(2, 0), wxDefaultSpan, wxALIGN_CENTER_VERTICAL|wxALL, 5); sOtherPaths->Add(ApploaderPath, wxGBPosition(2, 1), wxDefaultSpan, wxEXPAND|wxALL, 5); sOtherPaths->Add(TEXT_BOX(PathsPage, _("Wii NAND Root:")), wxGBPosition(3, 0), wxDefaultSpan, wxALIGN_CENTER_VERTICAL|wxALL, 5); sOtherPaths->Add(NANDRoot, wxGBPosition(3, 1), wxDefaultSpan, wxEXPAND|wxALL, 5); sOtherPaths->AddGrowableCol(1); // Populate the Paths page sPathsPage = new wxBoxSizer(wxVERTICAL); sPathsPage->Add(sbISOPaths, 1, wxEXPAND|wxALL, 5); sPathsPage->Add(sOtherPaths, 0, wxEXPAND|wxALL, 5); PathsPage->SetSizer(sPathsPage); wxBoxSizer* sMain = new wxBoxSizer(wxVERTICAL); sMain->Add(Notebook, 1, wxEXPAND|wxALL, 5); sMain->Add(CreateButtonSizer(wxOK), 0, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5); InitializeGUIValues(); InitializeGUITooltips(); UpdateGUI(); SetSizerAndFit(sMain); Center(); SetFocus(); }
void ComboBox::OnChange(wxCommandEvent &) { m_TextCtrl->SetValue(GetStringSelection()); }
void ComboBox::Append(const wxString& item, wxClientData *clientData) { m_ListBox->Append(item, clientData); m_TextCtrl->SetValue(GetStringSelection()); }