void PlaybackTab::UpdateList() { const auto& replays = replaylist().GetPlaybacksMap(); for (auto i = replays.begin(); i != replays.end(); ++i) { UpdatePlayback(i->second); } m_replay_dataview->Refresh(); }
void PlaybackTab::AddAllPlaybacks(wxCommandEvent& /*unused*/) { assert(wxThread::IsMain()); const auto& replays = replaylist().GetPlaybacksMap(); for (auto i = replays.begin(); i != replays.end(); ++i) { AddPlayback(i->second, false); } m_replay_dataview->Resort(); }
void PlaybackDataView::DeletePlayback() { const StoredGame* storedGame = GetSelectedItem(); if (storedGame == nullptr) { return; } try { const int m_sel_replay_id = storedGame->id; if (!replaylist().DeletePlayback(m_sel_replay_id)) { wxString pn(storedGame->battle.GetPlayBackFilePath()); customMessageBoxModal(SL_MAIN_ICON, _("Could not delete Replay: ") + pn, _("Error")); } else { RemovePlayback(*storedGame); } } catch (std::runtime_error&) { //Do nothing } }
void PlaybackTab::OnWatch(wxCommandEvent& /*unused*/) { const StoredGame* storedGame = m_replay_dataview->GetSelectedItem(); if (storedGame == nullptr) { Deselected(); return; } const int m_sel_replay_id = storedGame->id; wxString type = m_isreplay ? _("replay") : _("savegame"); wxLogMessage(_T( "Watching %s %d " ), type.c_str(), m_sel_replay_id); StoredGame& rep = replaylist().GetPlaybackById(m_sel_replay_id); if (ui().NeedsDownload(&rep.battle)) { return; } rep.battle.GetMe().SetNick(STD_STRING(cfg().ReadString("/Spring/DefaultName"))); rep.battle.StartSpring(); }
void PlaybackTab::OnSelect(wxDataViewEvent& event) { const StoredGame* storedGame = m_replay_dataview->GetSelectedItem(); if (storedGame == nullptr) { Deselect(); } else { try { m_watch_btn->Enable(true); m_delete_btn->Enable(true); //this might seem a bit backwards, but it's currently the only way that doesn't involve casting away constness int m_sel_replay_id = storedGame->id; StoredGame& rep = replaylist().GetPlaybackById(m_sel_replay_id); m_players_text->SetLabel(wxEmptyString); m_map_text->SetLabel(TowxString(rep.battle.GetHostMapName())); m_mod_text->SetLabel(TowxString(rep.battle.GetHostGameName())); m_minimap->SetBattle(&(rep.battle)); m_minimap->UpdateMinimap(); m_players->Clear(); m_players->SetBattle((IBattle*)&rep.battle); for (size_t i = 0; i < rep.battle.GetNumUsers(); ++i) { try { User& usr = rep.battle.GetUser(i); m_players->AddUser(usr); } catch (...) { } } } catch (...) { Deselect(); } event.Skip(); } }