//all messageboxes need to be modal, updater closes immeadiately when receiving the UpdateFinished event void UpdaterClass::OnDownloadEvent( wxCommandEvent& event ) { int code = event.GetInt(); if ( code != 0) customMessageBox(SL_MAIN_ICON, _("There was an error downloading for the latest version.\nPlease try again later.\nIf the problem persists, please use Help->Report Bug to report this bug."), _("Error")); else { if (!PostMinGW44( m_newexe ) ) { customMessageBox(SL_MAIN_ICON, _("Automatic update failed\n\nyou will be redirected to a web page with instructions and the download link will be opened in your browser."), _("Updater error.") ); OpenWebBrowser( _T("http://projects.springlobby.info/wiki/springlobby/Install#Windows-Binary") ); OpenWebBrowser( GetDownloadUrl( m_latest_version ) ); } if ( !UpdateExe( m_newexe , false ) ) { customMessageBox(SL_MAIN_ICON, wxFormat( _("There was an error while trying to replace the current executable version.\n Please manually copy springlobby.exe from: %s\n to: %s\n") ) % m_newexe % m_currentexe, _("Error") ); } else { bool locale_ok = UpdateLocale( m_newexe, false ); if ( locale_ok ) { customMessageBox(SL_MAIN_ICON, IdentityString( _("Update complete. \nPlease restart %s now.") ), _("Success")); } else { customMessageBox(SL_MAIN_ICON, IdentityString( _("Binary updated successfully. \nSome translation files could not be updated.\nPlease report this in #springlobby. \nPlease restart %s now.") ), _("Partial success") ); } wxRmdir( m_newexe ); } } GetGlobalEventSender( GlobalEvents::UpdateFinished ).SendEvent( 0 ); }
void Spring::OnTerminated( wxCommandEvent& event ) { wxLogDebugFunc( _T("") ); m_running = false; m_process = 0; // NOTE I'm not sure if this should be deleted or not, according to wx docs it shouldn't. m_wx_process = 0; ui().OnSpringTerminated( event.GetExtraLong() ); GetGlobalEventSender(GlobalEvents::OnSpringTerminated).SendEvent( event.GetExtraLong() ); }
//void PlasmaInterface::FetchResourceList() void FetchResourceListWorkItem::Run() { wxString data = s_soap_querytemplate_resourcelist; wxStringInputStream req ( data ); wxStringOutputStream response; wxStringOutputStream rheader; CURL *curl_handle; curl_handle = curl_easy_init(); struct curl_slist* m_pHeaders = NULL; // these header lines will overwrite/add to cURL defaults m_pHeaders = curl_slist_append(m_pHeaders, "Content-Type: text/xml;charset=UTF-8");//default is formurl-encoded with cURL-POST, that's bad for us m_pHeaders = curl_slist_append(m_pHeaders, "SOAPAction: \"http://planet-wars.eu/PlasmaServer/GetResourceList\""); m_pHeaders = curl_slist_append(m_pHeaders, "Expect:") ; curl_easy_setopt(curl_handle, CURLOPT_HTTPHEADER, m_pHeaders); curl_easy_setopt(curl_handle, CURLOPT_URL, "http://zero-k.info/ContentService.asmx" ); //curl_easy_setopt(curl_handle, CURLOPT_VERBOSE, 1L); curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, "libcurl-agent/1.0"); curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, wxcurl_stream_write); curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, (void *)&response); curl_easy_setopt(curl_handle, CURLOPT_WRITEHEADER, (void *)&rheader); curl_easy_setopt(curl_handle, CURLOPT_POST, TRUE); curl_easy_setopt(curl_handle, CURLOPT_POSTFIELDSIZE, data.Len() ); curl_easy_setopt(curl_handle, CURLOPT_READFUNCTION, wxcurl_stream_read); curl_easy_setopt(curl_handle, CURLOPT_READDATA, (void*)&req); CURLcode ret = curl_easy_perform(curl_handle); /* cleanup curl stuff */ curl_easy_cleanup(curl_handle); if ( ret != CURLE_OK ) { GetGlobalEventSender( GlobalEvents::PlasmaResourceListFailedDownload ).SendEvent( 0 ); } else { m_interface->ParseResourceListData( response.GetString() ); GetGlobalEventSender( GlobalEvents::PlasmaResourceListParsed ).SendEvent( 0 ); } }
bool SpringUnitSync::LoadUnitSyncLib( const wxString& unitsyncloc ) { LOCK_UNITSYNC; UiEvents::ScopedStatusMessage staus(_("loading unitsync"), 0); wxLogDebugFunc( _T("") ); bool ret = _LoadUnitSyncLib( unitsyncloc ); if (ret) { m_cache_path = sett().GetCachePath(); PopulateArchiveList(); GetGlobalEventSender(GlobalEvents::OnUnitsyncReloaded).SendEvent( 0 ); } return ret; }
bool SpringUnitSync::LoadUnitSyncLib( const wxString& unitsyncloc ) { LOCK_UNITSYNC; m_cache_thread = new WorkerThread(); m_cache_thread->Create(); m_cache_thread->SetPriority( WXTHREAD_MIN_PRIORITY ); m_cache_thread->Run(); UiEvents::ScopedStatusMessage staus(_("loading unitsync"), 0); wxLogDebugFunc( _T("") ); bool ret = _LoadUnitSyncLib( unitsyncloc ); if (ret) { m_cache_path = sett().GetCachePath(); PopulateArchiveList(); GetGlobalEventSender(GlobalEvents::OnUnitsyncReloaded).SendEvent( 0 ); } return ret; }
PlaybackTab<PlaybackTraits>::PlaybackTab( wxWindow* parent ) : wxScrolledWindow( parent, -1 ), m_replay_loader ( 0 ), OnUsync_reload( this, &GetGlobalEventSender( GlobalEvents::OnUnitsyncReloaded ) ) { wxLogMessage( _T( "PlaybackTab::PlaybackTab()" ) ); m_replay_loader = new LoaderType( this ); wxBoxSizer* m_main_sizer; m_main_sizer = new wxBoxSizer( wxVERTICAL ); wxBoxSizer* m_filter_sizer; m_filter_sizer = new wxBoxSizer( wxVERTICAL ); wxBoxSizer* m_replaylist_sizer; m_replaylist_sizer = new wxBoxSizer( wxVERTICAL ); m_replay_listctrl = new ListCtrlType( this ); m_replaylist_sizer->Add( m_replay_listctrl, 1, wxALL | wxEXPAND, 5 ); m_main_sizer->Add( m_replaylist_sizer, 1, wxEXPAND, 5 );; wxBoxSizer* m_info_sizer; m_info_sizer = new wxBoxSizer( wxHORIZONTAL ); m_minimap = new MapCtrl( this, 100, 0, true, true, false, false ); m_info_sizer->Add( m_minimap, 0, wxALL, 5 ); wxFlexGridSizer* m_data_sizer; m_data_sizer = new wxFlexGridSizer( 4, 2, 0, 0 ); m_map_lbl = new wxStaticText( this, wxID_ANY, _( "Map:" ), wxDefaultPosition, wxDefaultSize, 0 ); m_data_sizer->Add( m_map_lbl, 1, wxALL | wxEXPAND, 5 ); m_map_text = new wxStaticText( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); m_data_sizer->Add( m_map_text, 1, wxALL | wxEXPAND, 5 ); m_mod_lbl = new wxStaticText( this, wxID_ANY, _( "Game:" ), wxDefaultPosition, wxDefaultSize, 0 ); m_data_sizer->Add( m_mod_lbl, 1, wxALL | wxEXPAND, 5 ); m_mod_text = new wxStaticText( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); m_data_sizer->Add( m_mod_text, 1, wxALL | wxEXPAND, 5 ); m_players_lbl = new wxStaticText( this, wxID_ANY, _( "Players:" ), wxDefaultPosition, wxDefaultSize, 0 ); m_data_sizer->Add( m_players_lbl, 1, wxALL | wxEXPAND, 5 ); m_players_text = new wxStaticText( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); m_data_sizer->Add( m_players_text, 1, wxALL | wxEXPAND, 5 ); m_info_sizer->Add( m_data_sizer, 1, wxEXPAND | wxALL, 0 ); m_players = new BattleroomListCtrl( this, 0, true, false ); m_info_sizer->Add( m_players , 2, wxALL | wxEXPAND, 0 ); m_main_sizer->Add( m_info_sizer, 0, wxEXPAND, 5 ); m_filter = new PlaybackListFilter<ThisType>( this , wxID_ANY, this , wxDefaultPosition, wxSize( -1, -1 ), wxEXPAND ); m_filter_sizer->Add( m_filter, 0, wxEXPAND, 5 ); m_main_sizer->Add( m_filter_sizer, 0, wxEXPAND, 5 ); m_buttons_sep = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); m_main_sizer->Add( m_buttons_sep, 0, wxALL | wxEXPAND, 5 ); wxBoxSizer* m_buttons_sizer; m_buttons_sizer = new wxBoxSizer( wxHORIZONTAL ); #if wxUSE_TOGGLEBTN m_filter_show = new wxToggleButton( this, PLAYBACK_LIST_FILTER_BUTTON , wxT( " Filter " ), wxDefaultPosition , wxSize( -1, 28 ), 0 ); #else m_filter_show = new wxCheckBox( this, PLAYBACK_LIST_FILTER_BUTTON , wxT( " Filter " ), wxDefaultPosition , wxSize( -1, 28 ), 0 ); #endif m_buttons_sizer->Add( m_filter_show, 0, 0, 5 ); m_filter_activ = new wxCheckBox( this, PLAYBACK_LIST_FILTER_ACTIV , wxT( "Activated" ), wxDefaultPosition, wxDefaultSize, 0 ); m_buttons_sizer->Add( m_filter_activ, 1, wxALL | wxEXPAND, 5 ); m_buttons_sizer->Add( 0, 0, 1, wxEXPAND, 0 ); m_watch_btn = new wxButton( this, PLAYBACK_WATCH, PlaybackTraits::IsReplayType ? _( "Watch" ) : _( "Load" ), wxDefaultPosition, wxSize( -1, 28 ), 0 ); m_buttons_sizer->Add( m_watch_btn, 0, wxBOTTOM | wxLEFT | wxRIGHT, 5 ); m_delete_btn = new wxButton( this, PLAYBACK_DELETE, _( "Delete" ), wxDefaultPosition, wxSize( -1, 28 ), 0 ); m_buttons_sizer->Add( m_delete_btn, 0, wxBOTTOM | wxRIGHT, 5 ); m_reload_btn = new wxButton( this, PLAYBACK_RELOAD, _( "Reload list" ), wxDefaultPosition, wxSize( -1, 28 ), 0 ); m_buttons_sizer->Add( m_reload_btn, 0, wxBOTTOM | wxRIGHT, 5 ); m_main_sizer->Add( m_buttons_sizer, 0, wxEXPAND, 5 ); m_filter->Hide(); SetSizer( m_main_sizer ); ReloadList(); //none selected --> shouldn't watch/delete that Deselect(); SetScrollRate( SCROLL_RATE, SCROLL_RATE ); Layout(); }