#include "BaseGameTab.hpp" #include BaseGameTab::BaseGameTab(wxFrame *parent, std::shared_ptr base) : TabBase_TabGames(parent),base(base) { glm=std::make_shared(game_list); Reset(base); this->Bind(wxEVT_BUTTON, &BaseGameTab::OnDelete, this, ID_DELETE_BUTTON); this->Bind(wxEVT_BUTTON, &BaseGameTab::OnApplyFilter, this, ID_APPLY_FILTER_BUTTON); this->Bind(wxEVT_TEXT_ENTER, &BaseGameTab::OnApplyFilter, this, ID_SEARCH_TERMS); search_terms->SetHint("e.g: Paul Morphy"); } void BaseGameTab::OnApplyFilter(wxCommandEvent &event){ wxString terms=search_terms->GetValue(); if(terms.length()>0){ glm->Filter(terms.ToStdString()); } else { glm->ClearFilter(); } } void BaseGameTab::OnDelete(wxCommandEvent &event) { for(auto i: glm->GetSelectedItems()){ deleted.push_back(glm->GetItemGameId(i)); glm->MarkItemAsDeleted(i); } } std::shared_ptr BaseGameTab::OpenGame(long gameid, long item) { if(edited.find(gameid) != edited.end()){ // TODO: Focus on the game tab and if close reopen it wxLogDebug("Already opened!"); } else { std::shared_ptr g = base->GetGame(gameid); if(g){ edited[gameid]=g; deleted.push_back(gameid); glm->MarkItemAsOpen(item); return g; } } return nullptr; } std::vector> BaseGameTab::GetEditedGames(){ std::vector> games; for(auto it = edited.begin(); it != edited.end(); it++){ games.push_back(it->second); } return(games); } void BaseGameTab::Reset(std::shared_ptr base){ glm->Clear(); edited.clear(); deleted.clear(); // Load all games (for now :) SHOW_DIALOG_BUSY("Loading database..."); this->base=base; if (base != NULL) { while (base->NextGame()) { glm->AddGame( base->GetTag("White"), base->GetTag("Black"), base->GetTag("Event"), base->GetTag("Round"), base->GetTag("Result"), base->GetTag("ECO")); } } }