bool Springsettings::OnInit() { wxSetEnv( _T("UBUNTU_MENUPROXY"), _T("0") ); //this triggers the Cli Parser amongst other stuff if (!wxApp::OnInit()) return false; SetAppName(_T("SpringSettings")); const wxString configdir = TowxString(SlPaths::GetConfigfileDir()); if ( !wxDirExists(configdir) ) wxMkdir(configdir); if (!m_crash_handle_disable) { #if wxUSE_ON_FATAL_EXCEPTION wxHandleFatalExceptions( true ); #endif #if defined(__WXMSW__) && defined(ENABLE_DEBUG_REPORT) //this undocumented function acts as a workaround for the dysfunctional // wxUSE_ON_FATAL_EXCEPTION on msw when mingw is used (or any other non SEH-capable compiler ) SetUnhandledExceptionFilter(filter); #endif } //initialize all loggers //TODO non-constant parameters wxLogChain* logchain = 0; wxLogWindow* loggerwin = InitializeLoggingTargets( 0, m_log_console, m_log_file_path, m_log_window_show, m_log_verbosity, logchain ); //this needs to called _before_ mainwindow instance is created #ifdef __WXMSW__ wxString path = wxPathOnly( wxStandardPaths::Get().GetExecutablePath() ) + wxFileName::GetPathSeparator() + _T("locale"); #else #if defined(LOCALE_INSTALL_DIR) wxString path ( _T(LOCALE_INSTALL_DIR) ); #else // use a dummy name here, we're only interested in the base path wxString path = wxStandardPaths::Get().GetLocalizedResourcesDir(_T("noneWH"),wxStandardPaths::ResourceCat_Messages); path = path.Left( path.First(_T("noneWH") ) ); #endif #endif m_translationhelper = new wxTranslationHelper( GetAppName().Lower(), path ); SetSettingsStandAlone( true ); // configure unitsync paths before trying to load SlPaths::ReconfigureUnitsync(); //unitsync first load, NEEDS to be blocking LSL::usync().ReloadUnitSyncLib(); settings_frame* frame = new settings_frame(NULL,GetAppName()); SetTopWindow(frame); frame->Show(); if ( loggerwin ) { // we got a logwindow, lets set proper parent win loggerwin->GetFrame()->SetParent( frame ); } return true; }
void SpringLobbyApp::CacheAndSettingsSetup() { SetSettingsStandAlone( false ); const wxString userConfigDir = GetConfigfileDir(); if ( sett().IsFirstRun() && !wxDirExists( userConfigDir ) ) { wxMkdir( userConfigDir ); } if ( (sett().GetCacheVersion() < CACHE_VERSION) && !sett().IsFirstRun() ) { sett().SetMapCachingThreadProgress( 0 ); // reset map cache thread sett().SetModCachingThreadProgress( 0 ); // reset mod cache thread if ( wxDirExists( sett().GetCachePath() ) ) { wxLogWarning( _T("erasing old cache ver %d (app cache ver %d)"), sett().GetCacheVersion(), CACHE_VERSION ); wxString file = wxFindFirstFile( sett().GetCachePath() + wxFILE_SEP_PATH + _T("*") ); while ( !file.empty() ) { wxRemoveFile( file ); file = wxFindNextFile(); } } } if ( !sett().IsFirstRun() ) { int settversion = sett().GetSettingsVersion(); if ( settversion < 3 ) { sett().ConvertOldSpringDirsOptions(); } if ( settversion < 4 ) { if ( sett().GetTorrentPort() == DEFSETT_SPRING_PORT ) sett().SetTorrentPort( DEFSETT_SPRING_PORT + 1 ); } if ( settversion < 5 ) { wxArrayString list = sett().GetServers(); int count = list.GetCount(); wxArrayString wordlist = sett().GetHighlightedWords(); for ( int i= 0; i < count; i++ ) { wxString nick = sett().GetServerAccountNick( list[i] ); if ( wordlist.Index( nick ) == -1 ) { wordlist.Add( nick ); } } sett().SetHighlightedWords( wordlist ); } if ( settversion < 6 ) { sett().ConvertOldServerSettings(); } if ( settversion < 7 ) { sett().AddChannelJoin( _T("springlobby"), _T("") ); } if ( settversion < 8 ) { sett().DeleteServer( _T("Backup server") ); sett().SetServer( _T("Backup server 1"), _T("springbackup1.servegame.com"), 8200 ); sett().SetServer( _T("Backup server 2"), _T("springbackup2.servegame.org"), 8200 ); sett().SetServer( _T("Test server"), _T("taspringmaster.servegame.com"), 8300 ); } if ( settversion < 10 ) { sett().ConvertOldColorSettings(); } if ( settversion < 11 ) { if( IsUACenabled() ) { usync().ReloadUnitSyncLib(); if ( usync().IsLoaded() ) usync().SetSpringDataPath(_T("")); // UAC is on, fix the spring data path } } if ( settversion < 12 ) { sett().ConvertOldChannelSettings(); } if ( settversion < 13 ) { sett().ConvertOldHiglightSettings(); } if ( settversion < 15 ) { sett().TranslateSavedColumWidths(); } if ( settversion < 21 ) { sett().RemoveLayouts(); } if ( settversion < 18 ) { //new downloader was introduced sett().ClearTorrentListToResume(); } if( settversion < 19 ) { //the dummy column hack was removed on win sett().NukeColumnWidths(); } if ( settversion < 22 ) { if ( m_translationhelper ) { // add locale's language code to autojoin if ( m_translationhelper->GetLocale() ) { wxString localecode = m_translationhelper->GetLocale()->GetCanonicalName(); if ( localecode.Find(_T("_")) != -1 ) localecode = localecode.BeforeFirst(_T('_')); if ( localecode == _T("en") ) // we'll skip en for now, maybe in the future we'll reactivate it sett().AddChannelJoin( localecode, _T("") ); } } } if ( settversion < 23 ) { sett().ConvertLists(); sett().AddKnownMatchmakerCPU(6667); } } if ( sett().ShouldAddDefaultServerSettings() || ( sett().GetSettingsVersion() < 14 && sett().GetServers().Count() < 2 ) ) sett().SetDefaultServerSettings(); if ( sett().ShouldAddDefaultChannelSettings() ) { sett().AddChannelJoin( _T("main"), _T("") ); sett().AddChannelJoin( _T("newbies"), _T("") ); if ( m_translationhelper ) { if ( m_translationhelper->GetLocale() ) { wxString localecode = m_translationhelper->GetLocale()->GetCanonicalName(); if ( localecode.Find(_T("_")) != -1 ) localecode = localecode.BeforeFirst(_T('_')); sett().AddChannelJoin( localecode, _T("") ); // add locale's language code to autojoin } } } if ( sett().ShouldAddDefaultGroupSettings() ) { sett().AddGroup( _("Default") ); sett().AddGroup( _("Ignore PM") ); useractions().ChangeAction( _("Ignore PM"), UserActions::ActIgnorePM ); sett().AddGroup( _("Ignore chat") ); useractions().ChangeAction( _("Ignore chat"), UserActions::ActIgnoreChat ); sett().AddGroup( _("Battle Autokick") ); useractions().ChangeAction( _("Battle Autokick"), UserActions::ActAutokick ); sett().AddGroup( _("Friends") ); useractions().ChangeAction( _("Friends"), UserActions::ActNotifBattle ); useractions().ChangeAction( _("Friends"), UserActions::ActHighlight ); useractions().ChangeAction( _("Friends"), UserActions::ActNotifLogin ); useractions().SetGroupColor( _("Friends"), wxColour( 0, 0, 255 ) ); } }