aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLoic Guegan <manzerbredes@mailbox.org>2022-12-24 14:01:39 +0100
committerLoic Guegan <manzerbredes@mailbox.org>2022-12-24 14:01:39 +0100
commit418b2e7f600551062af6beb81cd105287d9ce59a (patch)
treef837d4151dd209d81fbeebc3455278c101fd413e /src
parent2d9730e216976103daea64a8df047d5f0dffd5f7 (diff)
Improve page management
Diffstat (limited to 'src')
-rw-r--r--src/MainWindow.cpp26
-rw-r--r--src/MainWindow.hpp3
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<Game>(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;i<notebook->GetPageCount();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> 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();