示例#1
0
void PlaybackListCtrl<PlaybackType>::OnChar(wxKeyEvent & event)
{
	const int keyCode = event.GetKeyCode();
	if ( keyCode == WXK_DELETE )
		RemovePlayback( ParentType::GetSelectedIndex() );
	else
		event.Skip();
}
示例#2
0
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);
		}
	}
}
示例#3
0
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?
		}
	}
}
示例#4
0
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);
	}
}
示例#6
0
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
	}
}
示例#8
0
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();
	}
}