void PlaybackListCtrl<PlaybackType>::OnChar(wxKeyEvent & event) { const int keyCode = event.GetKeyCode(); if ( keyCode == WXK_DELETE ) RemovePlayback( ParentType::GetSelectedIndex() ); else event.Skip(); }
void SavegameList::LoadPlaybacks(const std::vector<std::string>& filenames) { m_replays.clear(); const size_t size = filenames.size(); for (size_t i = 0; i < size; ++i) { const std::string fn = filenames[i]; StoredGame& rep_ref = AddPlayback(i); if (!GetSavegameInfos(fn, rep_ref)) { RemovePlayback(rep_ref.id); } } }
void ReplayList::LoadPlaybacks(const std::vector<std::string> &filenames ) { std::string datadir; m_replays.clear(); const size_t size = filenames.size(); for ( size_t i = 0; i < size; ++i) { const wxString wfilename = TowxString(filenames[i]); PlaybackType& playback = AddPlayback(i); if (!GetReplayInfos(wfilename, playback)) { //wxLogError(_T("Couldn't open replay %s"), wfilename.c_str() ); //FIXME, see https://github.com/springlobby/springlobby/issues/186 RemovePlayback(i); //FIXME: stupid logic: always add but remove on fail, why not add on success only? } } }
void PlaybackTab<PlaybackTraits>::UpdatePlayback( const PlaybackType& replay ) { if ( m_filter->GetActiv() && !m_filter->FilterPlayback( replay ) ) { RemovePlayback( replay ); return; } int index = m_replay_listctrl->GetIndexFromData( &replay ); if ( index != -1 ) m_replay_listctrl->RefreshItem( index ); else AddPlayback( replay ); }
void PlaybackTab::UpdatePlayback(const StoredGame& replay) { if (m_filter->GetActiv() && !m_filter->FilterPlayback(replay)) { RemovePlayback(replay); return; } bool contains = m_replay_dataview->ContainsItem(replay); if (contains) { m_replay_dataview->RefreshItem(replay); } else { AddPlayback(replay); } }
void ReplayList::LoadPlaybacks( const wxArrayString& filenames ) { m_fails = 0; m_replays.clear(); size_t size = filenames.GetCount(); for ( size_t i = 0; i < size; ++i) { Replay& rep_ref = AddPlayback( i ); // don't touch this reference, since elements inside this data structure are filled using pointers, adding & not fecthing the new addresses would screw up references when rep gets destroyed if ( !GetReplayInfos( filenames[i] , rep_ref ) ) { RemovePlayback( rep_ref.id ); m_fails++; } } }
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<PlaybackTraits>::OnDelete( wxCommandEvent& /*unused*/ ) { int sel_index = m_replay_listctrl->GetSelectedIndex(); if ( sel_index >= 0 ) { try { const PlaybackType& rep = *m_replay_listctrl->GetSelectedData(); int m_sel_replay_id = rep.id; int index = m_replay_listctrl->GetIndexFromData( &rep ); wxLogMessage( _T( "Deleting replay %d " ), m_sel_replay_id ); wxString fn = rep.Filename; if ( !playbacklist<ListType>().DeletePlayback( m_sel_replay_id ) ) customMessageBoxNoModal( SL_MAIN_ICON, _( "Could not delete Replay: " ) + fn, _( "Error" ) ); else { RemovePlayback( index ); // Deselect is called in there too } } catch ( std::runtime_error ) { return; } } else { Deselected(); } }