From 418b2e7f600551062af6beb81cd105287d9ce59a Mon Sep 17 00:00:00 2001 From: Loic Guegan Date: Sat, 24 Dec 2022 14:01:39 +0100 Subject: [PATCH] Improve page management --- src/MainWindow.cpp | 26 +++++++++++++++++++++++--- src/MainWindow.hpp | 3 ++- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index 8b6e0fe..9ab8d00 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -33,7 +33,7 @@ MainWindow::MainWindow() menu_game->Append(3, "New from FEN", "Create new game using FEN"); // Game base menu - menu_db->Append(5, "New", "Create new database"); + menu_db->Append(5, "Open", "Open a database"); // Engine menu menu_engine->Append(6, "New", "Create a new engine configuration"); @@ -53,6 +53,16 @@ MainWindow::MainWindow() // Add new game tab by default NewGame(std::shared_ptr(new Game())); + + // Temporary TO REMOVE JUST FOR TESTS: + //BaseTab *bt = new BaseTab((wxFrame *)notebook, "/home/loic/Downloads/PGN.pgn"); + //this->AddPage(bt,bt); +} + +void MainWindow::AddPage(wxWindow* window, TabInfos* infos){ + window->SetClientData(infos); + notebook->AddPage(window, window->GetLabel()); + notebook->SetSelection(notebook->GetPageIndex(window)); } void MainWindow::OnCloseTabEvent(wxCommandEvent &event) { @@ -86,6 +96,7 @@ void MainWindow::OnMenuItemClick(wxCommandEvent &event) { } else if (id == 5) { OpenFile(); } else if (id == 6) { + CloseTabLinkedTo(1); NewEngine(); } } @@ -161,6 +172,16 @@ void MainWindow::OnClose(wxCloseEvent &e) { e.Skip(); } +void MainWindow::CloseTabLinkedTo(long id){ + for(int i=0;iGetPageCount();i++){ + wxWindow *page=notebook->GetPage(i); + TabInfos* infos=(TabInfos*)page->GetClientData(); + if(infos->is_linked && infos->linked_id==id){ + notebook->DeletePage(i); + } + } +} + void MainWindow::OpenFile() { wxFileDialog openFileDialog(this, _("Open file"), "", "", "PGN files (*.pgn)|*.pgn", @@ -217,7 +238,6 @@ void MainWindow::OnRefreshTabTitle(wxCommandEvent &event) { TabInfos* MainWindow::NewGame(std::shared_ptr game) { GameTab *gt = new GameTab((wxFrame *)notebook, game); - notebook->AddPage(gt, gt->GetLabel()); - notebook->SetSelection(notebook->GetPageIndex(gt)); + this->AddPage(gt,gt); return(gt); } diff --git a/src/MainWindow.hpp b/src/MainWindow.hpp index d809736..1562a9d 100644 --- a/src/MainWindow.hpp +++ b/src/MainWindow.hpp @@ -29,7 +29,8 @@ class MainWindow : public MainFrame { void OnCloseTabEvent(wxCommandEvent &event); void OnRefreshEngineList(wxCommandEvent &event); void OnMenuItemClick(wxCommandEvent &event); - + void AddPage(wxWindow* window, TabInfos* infos); + void CloseTabLinkedTo(long id); public: MainWindow(); void ApplyPreferences();