diff options
Diffstat (limited to 'src/base_tab/BaseTab.cpp')
| -rw-r--r-- | src/base_tab/BaseTab.cpp | 52 |
1 files changed, 43 insertions, 9 deletions
diff --git a/src/base_tab/BaseTab.cpp b/src/base_tab/BaseTab.cpp index 78b546e..05ff907 100644 --- a/src/base_tab/BaseTab.cpp +++ b/src/base_tab/BaseTab.cpp @@ -3,34 +3,68 @@ #include <wx/filename.h> BaseTab::BaseTab(wxFrame *parent, std::string base_file) - : TabBase(parent), TabInfos(TabInfos::BASE){ + : TabBase(parent), TabInfos(TabInfos::BASE), base_file(base_file){ + + // First open the database + OpenDatabase(base_file); // Games tab - games_tab=new BaseGameTab((wxFrame *)notebook,base_file,this); + games_tab=new BaseGameTab((wxFrame *)notebook,base,this); notebook->AddPage(games_tab, "Games list",true); // true for selecting the tab // Import tab import_tab=new BaseImportTab((wxFrame *)notebook,this); notebook->AddPage(import_tab, "Import games"); // Manage tab - manage_tab=new BaseManageTab((wxFrame *)notebook); + manage_tab=new BaseManageTab((wxFrame *)notebook, base, games_tab->glm); notebook->AddPage(manage_tab, "Manage database"); - RefreshLabel(); - this->Bind(OPEN_GAME_EVENT, &BaseTab::OnNewGame, this, wxID_ANY); + // Refresh dynamic elements of the database (tab title, available db for import etc.) + Refresh(); + + // Bindings + this->Bind(OPEN_GAME_EVENT, &BaseTab::OnOpenGame, this, wxID_ANY); + this->Bind(wxEVT_BUTTON, &BaseTab::OnSave, this, ID_SAVE_BUTTON); + } -void BaseTab::OnNewGame(wxCommandEvent &event){ +void BaseTab::OnOpenGame(wxCommandEvent &event){ std::shared_ptr<Game> *g = (std::shared_ptr<Game>*)event.GetClientData(); this->game=*g; + + // Ask MainFrame to open a new game + // TODO: Simplify that is, use wxWidget main app to do it wxCommandEvent newGameEvent(NEW_GAME_EVENT, GetId()); newGameEvent.SetEventObject(this); newGameEvent.SetClientData((TabInfos*)this); ProcessEvent(newGameEvent); } -void BaseTab::ApplyPreferences() {} +void BaseTab::Refresh(){ + import_tab->RefreshImportLists(); + SetLabel(wxFileName(base->GetFilePath()).GetName()+" [DB]"); // Propagated to MainWindow tab title automatically by wxWidget +} + +void BaseTab::OpenDatabase(std::string dbpath) { + wxFileName file(dbpath); + wxString ext = file.GetExt().Lower(); + if (ext == "pgn") { + base.reset(); + base = std::shared_ptr<GameBase>(new PGNGameBase(dbpath)); + } +} + +void BaseTab::OnSave(wxCommandEvent &event) { + std::vector<std::shared_ptr<GameBase>> dummy_empty_base; + base->Save(games_tab->GetDeletedGameIds(), dummy_empty_base, games_tab->GetEditedGames()); + + // Close all opened games in this database + wxCommandEvent closeLinkedTabEvent(CLOSE_LINKED_TAB, GetId()); + closeLinkedTabEvent.SetClientData((TabInfos*)this); + ProcessEvent(closeLinkedTabEvent); -void BaseTab::RefreshLabel(){ - SetLabel("Database XX"); + // Reopen the saved database + OpenDatabase(base_file); + games_tab->Reset(base); + manage_tab->Reset(base); }
\ No newline at end of file |
