2 * Copyright (C) Volition, Inc. 1999. All rights reserved.
4 * All source code herein is the property of Volition, Inc. You may not sell
5 * or otherwise commercially exploit the source or things you created based on
12 #include "launchersetup.h"
13 #include "osregistry.h"
15 #include "wx/valnum.h"
18 wxBEGIN_EVENT_TABLE(LauncherSetup, wxDialog)
19 EVT_BUTTON(wxID_OK, LauncherSetup::onOk)
20 EVT_CHECKBOX(ID_CB_MSAA, LauncherSetup::onToggleMSAA)
24 LauncherSetup::LauncherSetup( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
26 this->SetSizeHints( wxSize(370, -1), wxDefaultSize );
29 wxNotebook *nbook = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
33 initTab_Joystick(nbook);
35 initTab_Network(nbook);
38 wxBoxSizer* bSizer = new wxBoxSizer( wxVERTICAL );
39 bSizer->Add( nbook, 0, wxALL|wxEXPAND, 5 );
42 wxStdDialogButtonSizer* sdbSizer = new wxStdDialogButtonSizer();
43 sdbSizer->AddButton( new wxButton(this, wxID_OK) );
44 sdbSizer->AddButton( new wxButton(this, wxID_CANCEL) );
47 bSizer->Add( sdbSizer, 0, wxALL|wxEXPAND, 5 );
50 this->SetSizer( bSizer );
55 this->Centre( wxBOTH );
58 LauncherSetup::~LauncherSetup()
62 void LauncherSetup::initTab_Video(wxNotebook *parent)
64 unsigned int checked = 0;
66 wxPanel* panel = new wxPanel( parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
68 wxBoxSizer* bSizer = new wxBoxSizer( wxVERTICAL );
72 wxStaticBoxSizer* sbSizer = new wxStaticBoxSizer( new wxStaticBox( panel, wxID_ANY, wxT("Renderer") ), wxVERTICAL );
74 m_Video_Renderer = new wxComboBox( panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, wxCB_DROPDOWN|wxCB_READONLY );
75 sbSizer->Add( m_Video_Renderer, 1, wxALL|wxEXPAND, 5 );
77 bSizer->Add( sbSizer, 0, wxALL|wxEXPAND, 5 );
79 m_Video_Renderer->Append( wxT("OpenGL") );
80 m_Video_Renderer->SetSelection( 0 );
83 m_Video_Fullscreen = new wxCheckBox( panel, wxID_ANY, wxT("Fullscreen"), wxDefaultPosition, wxDefaultSize, 0 );
84 bSizer->Add( m_Video_Fullscreen, 0, wxALL, 5 );
86 checked = os_config_read_uint("Video", "Fullscreen", 1);
88 m_Video_Fullscreen->SetValue( (checked == 1) );
91 m_Video_ShowFPS = new wxCheckBox( panel, wxID_ANY, wxT("Show FPS"), wxDefaultPosition, wxDefaultSize, 0 );
92 bSizer->Add( m_Video_ShowFPS, 0, wxALL, 5 );
94 checked = os_config_read_uint("Video", "ShowFPS", 0);
96 m_Video_ShowFPS->SetValue( (checked == 1) );
99 wxBoxSizer* bSizer_aa = new wxBoxSizer( wxHORIZONTAL );
101 m_Video_MSAA = new wxCheckBox( panel, ID_CB_MSAA, wxT("Anti-Alias"), wxDefaultPosition, wxDefaultSize, 0 );
102 bSizer_aa->Add( m_Video_MSAA, 0, wxALIGN_CENTER_VERTICAL, 5 );
104 const wxString msaa_samples[] = { wxT("2x"), wxT("4x"), wxT("8x"), wxT("16x") };
105 const int num_msaa_samples = sizeof( msaa_samples ) / sizeof( wxString );
106 m_Video_MSAASamples = new wxChoice( panel, wxID_ANY, wxDefaultPosition, wxDefaultSize, num_msaa_samples, msaa_samples, 0 );
107 bSizer_aa->Add( m_Video_MSAASamples, 0, wxLEFT, 15 );
109 bSizer->Add( bSizer_aa, 0, wxALL, 5 );
111 checked = os_config_read_uint("Video", "AntiAlias", 0);
114 m_Video_MSAA->SetValue(true);
117 m_Video_MSAASamples->SetSelection(0);
118 } else if (checked < 8) {
119 m_Video_MSAASamples->SetSelection(1);
120 } else if (checked < 16) {
121 m_Video_MSAASamples->SetSelection(2);
123 m_Video_MSAASamples->SetSelection(3);
126 m_Video_MSAA->SetValue(false);
127 m_Video_MSAASamples->SetSelection(wxNOT_FOUND);
128 m_Video_MSAASamples->Disable();
132 panel->SetSizer( bSizer );
135 bSizer->Fit( panel );
137 parent->AddPage( panel, wxT("Video"), true );
140 void LauncherSetup::saveTab_Video()
143 unsigned int msaa = 0;
145 value = m_Video_Renderer->GetValue();
147 os_config_write_string("Video", "Renderer", value.c_str());
149 if ( m_Video_MSAA->IsChecked() ) {
150 int sel = m_Video_MSAASamples->GetSelection();
152 if ( (sel >= 0) && (sel < 4) ) {
157 os_config_write_uint("Video", "AntiAlias", msaa);
159 os_config_write_uint("Video", "Fullscreen", m_Video_Fullscreen->IsChecked() ? 1 : 0);
160 os_config_write_uint("Video", "ShowFPS", m_Video_ShowFPS->IsChecked() ? 1 : 0);
163 void LauncherSetup::initTab_Audio(wxNotebook *parent)
165 unsigned int checked = 0;
166 ALint ver_major = 0, ver_minor = 0;
167 const ALCchar *ptr = NULL;
168 const char *conf_ptr = NULL;
169 bool audio_enabled = false;
171 alcGetIntegerv(NULL, ALC_MAJOR_VERSION, 1, &ver_major);
172 alcGetIntegerv(NULL, ALC_MINOR_VERSION, 1, &ver_minor);
174 if ( (ver_major >= 1) && (ver_minor >= 1) ) {
175 audio_enabled = true;
178 wxPanel* panel = new wxPanel( parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
180 wxBoxSizer* bSizer = new wxBoxSizer( wxVERTICAL );
184 wxStaticBoxSizer* sbSizer_playback = new wxStaticBoxSizer( new wxStaticBox( panel, wxID_ANY, wxT("Playback Device") ), wxVERTICAL );
186 m_Audio_PlaybackDevice = new wxComboBox( panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, wxCB_DROPDOWN|wxCB_READONLY );
187 sbSizer_playback->Add( m_Audio_PlaybackDevice, 0, wxALL|wxEXPAND, 5 );
189 bSizer->Add( sbSizer_playback, 0, wxALL|wxEXPAND, 5 );
191 m_Audio_PlaybackDevice->Append("<Default>");
192 m_Audio_PlaybackDevice->SetSelection(0);
194 conf_ptr = os_config_read_string("Audio", "PlaybackDevice", NULL);
197 if ( alcIsExtensionPresent(NULL, "ALC_ENUMERATE_ALL_EXT") != AL_FALSE ) {
198 ptr = alcGetString(NULL, ALC_ALL_DEVICES_SPECIFIER);
200 ptr = alcGetString(NULL, ALC_DEVICE_SPECIFIER);
205 m_Audio_PlaybackDevice->Append(ptr);
207 if ( conf_ptr && !SDL_strcasecmp(conf_ptr, ptr) ) {
208 unsigned int sel = m_Audio_PlaybackDevice->GetCount() - 1;
210 m_Audio_PlaybackDevice->SetSelection(sel);
215 ptr += strlen(ptr) + 1;
221 wxStaticBoxSizer* sbSizer_capture = new wxStaticBoxSizer( new wxStaticBox( panel, wxID_ANY, wxT("Capture Device") ), wxVERTICAL );
223 m_Audio_CaptureDevice = new wxComboBox( panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, wxCB_DROPDOWN|wxCB_READONLY );
224 sbSizer_capture->Add( m_Audio_CaptureDevice, 0, wxALL|wxEXPAND, 5 );
226 bSizer->Add( sbSizer_capture, 0, wxALL|wxEXPAND, 5 );
228 m_Audio_CaptureDevice->Append("<Default>");
229 m_Audio_CaptureDevice->SetSelection(0);
231 conf_ptr = os_config_read_string("Audio", "CaptureDevice", NULL);
234 ptr = alcGetString(NULL, ALC_CAPTURE_DEVICE_SPECIFIER);
238 m_Audio_CaptureDevice->Append(ptr);
240 if ( conf_ptr && !SDL_strcasecmp(conf_ptr, ptr) ) {
241 unsigned int sel = m_Audio_CaptureDevice->GetCount() - 1;
243 m_Audio_CaptureDevice->SetSelection(sel);
248 ptr += strlen(ptr) + 1;
254 m_Audio_EFX = new wxCheckBox( panel, wxID_ANY, wxT("EFX / EAX Reverb"), wxDefaultPosition, wxDefaultSize, 0 );
255 bSizer->Add( m_Audio_EFX, 0, wxALL, 5 );
257 checked = os_config_read_uint("Audio", "EFX", 0);
259 m_Audio_EFX->SetValue( (checked == 1) );
263 m_Audio_LauncherSounds = new wxCheckBox( panel, wxID_ANY, wxT("Enable Launcher Sounds"), wxDefaultPosition, wxDefaultSize, 0 );
264 bSizer->Add( m_Audio_LauncherSounds, 0, wxALL, 5 );
266 checked = os_config_read_uint("Audio", "LauncherSoundEnabled", 1);
268 m_Audio_LauncherSounds->SetValue( (checked == 1) );
272 panel->SetSizer( bSizer );
275 bSizer->Fit( panel );
277 parent->AddPage( panel, wxT("Audio"), false );
280 void LauncherSetup::saveTab_Audio()
284 value = m_Audio_PlaybackDevice->GetValue();
286 if ( value.IsSameAs( wxT("<Default>") ) ) {
287 os_config_write_string("Audio", "PlaybackDevice", "");
289 os_config_write_string("Audio", "PlaybackDevice", value.c_str());
292 value = m_Audio_CaptureDevice->GetValue();
294 if ( value.IsSameAs( wxT("<Default>") ) ) {
295 os_config_write_string("Audio", "CaptureDevice", "");
297 os_config_write_string("Audio", "CaptureDevice", value.c_str());
300 os_config_write_uint("Audio", "EFX", m_Audio_EFX->IsChecked() ? 1 : 0);
302 os_config_write_uint("Audio", "LauncherSoundEnabled", m_Audio_LauncherSounds->IsChecked() ? 1 : 0);
304 Launcher* parent = (Launcher*)GetParent();
305 parent->SndEnable( m_Audio_LauncherSounds->IsChecked() );
309 void LauncherSetup::initTab_Joystick(wxNotebook *parent)
311 unsigned int checked = 0;
312 const char *conf_ptr = NULL;
313 bool joystick_enabled = false;
315 if ( !SDL_InitSubSystem(SDL_INIT_JOYSTICK) ) {
316 joystick_enabled = true;
319 wxPanel* panel = new wxPanel( parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
321 wxBoxSizer* bSizer = new wxBoxSizer( wxVERTICAL );
323 wxStaticBoxSizer* sbSizer = new wxStaticBoxSizer( new wxStaticBox( panel, wxID_ANY, wxT("Joystick") ), wxVERTICAL );
326 // 'current joystick'
327 m_Joystick_Device = new wxComboBox( panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 );
328 sbSizer->Add( m_Joystick_Device, 0, wxALL|wxEXPAND, 5 );
330 m_Joystick_Device->Append( wxT("<Default>") );
331 m_Joystick_Device->SetSelection( 0 );
333 conf_ptr = os_config_read_string("Controls", "CurrentJoystick", NULL);
335 if (joystick_enabled) {
336 int num_sticks = SDL_NumJoysticks();
338 for (int i = 0; i < num_sticks; i++) {
339 const char *jname = SDL_JoystickNameForIndex(i);
342 m_Joystick_Device->Append(jname);
344 if ( conf_ptr && !SDL_strcasecmp(conf_ptr, jname) ) {
345 unsigned int sel = m_Joystick_Device->GetCount() - 1;
347 m_Joystick_Device->SetSelection(sel);
354 SDL_QuitSubSystem(SDL_INIT_JOYSTICK);
357 bSizer->Add( sbSizer, 0, wxALL|wxEXPAND, 5 );
360 m_Joystick_FF = new wxCheckBox( panel, wxID_ANY, wxT("Enable Force Feedback"), wxDefaultPosition, wxDefaultSize, 0 );
361 bSizer->Add( m_Joystick_FF, 0, wxALL|wxEXPAND, 5 );
363 checked = os_config_read_uint("Controls", "EnableJoystickFF", 0);
365 m_Joystick_FF->SetValue( (checked == 1) );
368 m_Joystick_Directional = new wxCheckBox( panel, wxID_ANY, wxT("Enable directional hit effect (Force Feedback)"), wxDefaultPosition, wxDefaultSize, 0 );
369 bSizer->Add( m_Joystick_Directional, 0, wxALL|wxEXPAND, 5 );
371 checked = os_config_read_uint("Controls", "EnableHitEffect", 0);
373 m_Joystick_Directional->SetValue( (checked == 1) );
376 panel->SetSizer( bSizer );
379 bSizer->Fit( panel );
381 parent->AddPage( panel, wxT("Joystick"), false );
384 void LauncherSetup::saveTab_Joystick()
388 value = m_Joystick_Device->GetValue();
390 if ( value.IsSameAs( wxT("<Default>") ) ) {
391 os_config_write_string("Controls", "CurrentJoystick", "");
393 os_config_write_string("Controls", "CurrentJoystick", value.c_str());
396 os_config_write_uint("Controls", "EnableJoystickFF", m_Joystick_FF->IsChecked() ? 1 : 0);
397 os_config_write_uint("Controls", "EnableHitEffect", m_Joystick_Directional->IsChecked() ? 1 : 0);
400 void LauncherSetup::initTab_Speed(wxNotebook *parent)
402 unsigned int detail_lvl = 0;
404 wxPanel* panel = new wxPanel( parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
406 wxBoxSizer* bSizer = new wxBoxSizer( wxVERTICAL );
409 wxStaticBoxSizer* sbSizer = new wxStaticBoxSizer( new wxStaticBox( panel, wxID_ANY, wxT("Default Detail Level") ), wxVERTICAL );
411 m_Speed_DefaultDetail = new wxComboBox( panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, wxCB_DROPDOWN );
412 sbSizer->Add( m_Speed_DefaultDetail, 0, wxALL|wxEXPAND, 5 );
414 m_Speed_DefaultDetail->Append( wxT("Low") );
415 m_Speed_DefaultDetail->Append( wxT("Medium") );
416 m_Speed_DefaultDetail->Append( wxT("High") );
417 m_Speed_DefaultDetail->Append( wxT("Very High") );
419 detail_lvl = os_config_read_uint(NULL, "ComputerSpeed", 2);
421 if (detail_lvl > 3) {
425 m_Speed_DefaultDetail->SetSelection(detail_lvl);
428 bSizer->Add( sbSizer, 0, wxALL|wxEXPAND, 5 );
430 panel->SetSizer( bSizer );
433 bSizer->Fit( panel );
435 parent->AddPage( panel, wxT("Speed"), false );
438 void LauncherSetup::saveTab_Speed()
442 sel = m_Speed_DefaultDetail->GetSelection();
444 if ( (sel < 0) || (sel > 3) ) {
448 os_config_write_uint(NULL, "ComputerSpeed", sel);
451 void LauncherSetup::initTab_Network(wxNotebook* parent)
453 const char *conf_ptr = NULL;
454 unsigned int val = 0;
456 wxPanel* panel = new wxPanel( parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
458 wxBoxSizer* bSizer = new wxBoxSizer( wxVERTICAL );
461 const wxString conn_types[] = { wxT("None"), wxT("Dialup Networking"), wxT("LAN/Direct Connection") };
462 const int num_conn_types = sizeof( conn_types ) / sizeof( wxString );
463 m_Network_Connection = new wxRadioBox( panel, wxID_ANY, wxT("Internet Connection"), wxDefaultPosition, wxDefaultSize, num_conn_types, conn_types, 1, wxRA_SPECIFY_COLS );
464 bSizer->Add( m_Network_Connection, 0, wxALL|wxEXPAND, 5 );
466 conf_ptr = os_config_read_string("Network", "NetworkConnection", NULL);
470 if ( !SDL_strcasecmp(conf_ptr, "dialup") ) {
472 } else if ( !SDL_strcasecmp(conf_ptr, "lan") ) {
477 m_Network_Connection->SetSelection(val);
479 // 'connection speed'
480 const wxString speed_types[] = { wxT("None Specified"), wxT("Slower than 56K Modem"), wxT("56K Modem"), wxT("Single Channel ISDN"), wxT("Dual Channel ISDN, Cable Modems"), wxT("T1, ADSL, T3, etc.") };
481 const int num_speed_types = sizeof( speed_types ) / sizeof( wxString );
482 m_Network_Speed = new wxRadioBox( panel, wxID_ANY, wxT("Connection Speed"), wxDefaultPosition, wxDefaultSize, num_speed_types, speed_types, 1, wxRA_SPECIFY_COLS );
483 bSizer->Add( m_Network_Speed, 0, wxALL|wxEXPAND, 5 );
485 conf_ptr = os_config_read_string("Network", "ConnectionSpeed", NULL);
489 if ( !SDL_strcasecmp(conf_ptr, "Slow") ) {
491 } else if ( !SDL_strcasecmp(conf_ptr, "56K") ) {
493 } else if ( !SDL_strcasecmp(conf_ptr, "ISDN") ) {
495 } else if ( !SDL_strcasecmp(conf_ptr, "Cable") ) {
497 } else if ( !SDL_strcasecmp(conf_ptr, "Fast") ) {
502 m_Network_Speed->SetSelection(val);
504 wxStaticBoxSizer* sbSizer = new wxStaticBoxSizer( new wxStaticBox( panel, wxID_ANY, wxT("Misc") ), wxVERTICAL );
506 wxFlexGridSizer* fgSizer_port = new wxFlexGridSizer( 0, 2, 0, 0 );
507 fgSizer_port->SetFlexibleDirection( wxBOTH );
508 fgSizer_port->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
511 wxStaticText* txt_port = new wxStaticText( panel, wxID_ANY, wxT("Force local port"), wxDefaultPosition, wxDefaultSize, 0 );
512 txt_port->Wrap( -1 );
513 fgSizer_port->Add( txt_port, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
515 m_Network_Port = new wxTextCtrl( panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
516 fgSizer_port->Add( m_Network_Port, 0, wxALL|wxEXPAND, 5 );
519 wxIntegerValidator<unsigned short> vald( &m_port_validate );
520 vald.SetStyle(wxNUM_VAL_ZERO_AS_BLANK);
522 m_Network_Port->SetValidator(vald);
524 sbSizer->Add( fgSizer_port, 1, wxEXPAND, 5 );
526 val = os_config_read_uint("Network", "ForcePort", 0);
529 wxString sval = wxString::Format( wxT("%u"), val );
531 m_Network_Port->SetValue(sval);
535 bSizer->Add( sbSizer, 0, wxALL|wxEXPAND, 5 );
537 panel->SetSizer( bSizer );
540 bSizer->Fit( panel );
542 parent->AddPage( panel, wxT("Network"), false );
545 void LauncherSetup::saveTab_Network()
547 const char *conn_types[] = { "none", "dialup", "lan" };
548 const char *conn_speed[] = { "none", "Slow", "56K", "ISDN", "Cable", "Fast" };
552 sel = m_Network_Connection->GetSelection();
554 if ( (sel < 0) || (sel > 2) ) {
558 os_config_write_string("Network", "NetworkConnection", conn_types[sel]);
560 sel = m_Network_Speed->GetSelection();
562 if ( (sel < 0) || (sel > 5) ) {
566 os_config_write_string("Network", "ConnectionSpeed", conn_speed[sel]);
568 if ( !m_Network_Port->GetValue().IsEmpty() ) {
569 m_Network_Port->GetValue().ToLong(&port);
570 wxASSERT( port <= USHRT_MAX );
573 os_config_write_uint("Network", "ForcePort", (unsigned int)port);
576 void LauncherSetup::initTab_PXO(wxNotebook *parent)
578 const char *conf_ptr = NULL;
579 unsigned int val = 0;
581 wxPanel* panel = new wxPanel( parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
583 wxBoxSizer* bSizer = new wxBoxSizer( wxVERTICAL );
586 wxStaticBoxSizer* sbSizer1 = new wxStaticBoxSizer( new wxStaticBox( panel, wxID_ANY, wxT("PXO Account") ), wxVERTICAL );
588 wxBoxSizer*bSizer3 = new wxBoxSizer( wxVERTICAL );
590 wxFlexGridSizer* fgSizer2 = new wxFlexGridSizer( 0, 2, 0, 0 );
591 fgSizer2->SetFlexibleDirection( wxBOTH );
592 fgSizer2->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
595 wxStaticText* m_staticText3 = new wxStaticText( panel, wxID_ANY, wxT("Login"), wxDefaultPosition, wxDefaultSize, 0 );
596 m_staticText3->Wrap( -1 );
597 fgSizer2->Add( m_staticText3, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
599 m_PXO_Login = new wxTextCtrl( panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
600 m_PXO_Login->SetMaxLength( 31 );
602 fgSizer2->Add( m_PXO_Login, 0, wxALL|wxEXPAND, 5 );
604 conf_ptr = os_config_read_string("PXO", "Login", NULL);
607 m_PXO_Login->SetValue(conf_ptr);
611 wxStaticText* m_staticText4 = new wxStaticText( panel, wxID_ANY, wxT("Password"), wxDefaultPosition, wxDefaultSize, 0 );
612 m_staticText4->Wrap( -1 );
613 fgSizer2->Add( m_staticText4, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
615 m_PXO_Password = new wxTextCtrl( panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
616 m_PXO_Password->SetMaxLength( 16 );
618 fgSizer2->Add( m_PXO_Password, 0, wxALL|wxEXPAND, 5 );
619 bSizer3->Add( fgSizer2, 1, wxEXPAND, 5 );
621 conf_ptr = os_config_read_string("PXO", "Password", NULL);
624 m_PXO_Password->SetValue(conf_ptr);
628 wxBoxSizer* bSizer4 = new wxBoxSizer( wxHORIZONTAL );
630 m_SkipVerify = new wxCheckBox( panel, wxID_ANY, wxT("Skip version check"), wxDefaultPosition, wxDefaultSize, 0 );
631 bSizer4->Add( m_SkipVerify, 0, wxALL, 5 );
633 val = os_config_read_uint("PXO", "SkipVerify", 0);
635 m_SkipVerify->SetValue( val ? true : false );
637 m_PXOBanners = new wxCheckBox( panel, wxID_ANY, wxT("PXO Banners"), wxDefaultPosition, wxDefaultSize, 0 );
638 bSizer4->Add( m_PXOBanners, 0, wxALL, 5 );
640 val = os_config_read_uint("PXO", "PXOBanners", 1);
642 m_PXOBanners->SetValue( val ? true : false );
644 bSizer3->Add( bSizer4, 0, wxALL|wxEXPAND, 5 );
645 sbSizer1->Add( bSizer3, 0, wxALL|wxEXPAND, 5 );
648 bSizer->Add( sbSizer1, 0, wxALL|wxEXPAND, 5 );
650 panel->SetSizer( bSizer );
653 bSizer->Fit( panel );
655 parent->AddPage( panel, wxT("PXO"), false );
658 void LauncherSetup::saveTab_PXO()
661 unsigned int val = 0;
663 value = m_PXO_Login->GetValue();
665 os_config_write_string("PXO", "Login", value.c_str());
667 value = m_PXO_Password->GetValue();
669 os_config_write_string("PXO", "Password", value.c_str());
671 val = m_SkipVerify->GetValue() ? 1 : 0;
673 os_config_write_uint("PXO", "SkipVerify", val);
675 val = m_PXOBanners->GetValue() ? 1 : 0;
677 os_config_write_uint("PXO", "PXOBanners", val);
680 void LauncherSetup::save_settings()
682 const char *ptr = NULL;
685 ptr = os_config_read_string(NULL, "Language", NULL);
688 os_config_write_string(NULL, "Language", ptr);
690 os_config_write_string(NULL, "Language", "");
693 ptr = os_config_read_string(NULL, "LastPlayer", NULL);
696 os_config_write_string(NULL, "LastPlayer", ptr);
698 os_config_write_string(NULL, "LastPlayer", "");
701 ptr = os_config_read_string(NULL, "ExtrasPath", NULL);
704 os_config_write_string(NULL, "ExtrasPath", ptr);
706 os_config_write_string(NULL, "ExtrasPath", "");
709 os_config_write_uint(NULL, "StraightToSetup", 0);
719 // 'Controls' section
729 void LauncherSetup::onOk(wxCommandEvent& WXUNUSED(event))
731 if ( Validate() && TransferDataFromWindow() ) {
737 SetReturnCode(wxID_OK);
743 void LauncherSetup::onToggleMSAA(wxCommandEvent& event)
745 if ( event.IsChecked() ) {
746 m_Video_MSAASamples->Enable();
748 if (m_Video_MSAASamples->GetSelection() == wxNOT_FOUND) {
749 m_Video_MSAASamples->SetSelection(0);
752 m_Video_MSAASamples->Disable();