From e686937ce9df0ac938b5e23727b335efa53a81b7 Mon Sep 17 00:00:00 2001 From: Loic Guegan Date: Mon, 9 Jan 2023 10:30:17 +0100 Subject: Prompt the user before closing dirty tabs --- src/base_tab/BaseManageTab.cpp | 4 ++++ src/base_tab/BaseManageTab.hpp | 3 +++ src/base_tab/BaseTab.cpp | 5 +++-- 3 files changed, 10 insertions(+), 2 deletions(-) (limited to 'src/base_tab') diff --git a/src/base_tab/BaseManageTab.cpp b/src/base_tab/BaseManageTab.cpp index c9ea29b..84641af 100644 --- a/src/base_tab/BaseManageTab.cpp +++ b/src/base_tab/BaseManageTab.cpp @@ -6,6 +6,7 @@ BaseManageTab::BaseManageTab(wxFrame *parent, std::shared_ptr db, std: TabBase_TabManage(parent), glm(glm), base(db), import_tab(import_tab), games_tab(games_tab) { RefreshInformations(); + has_pending_events=false; } void BaseManageTab::RefreshInformations(){ @@ -22,6 +23,7 @@ void BaseManageTab::RefreshInformations(){ int nedited=games_tab->edited.size(); int ndeleted=games_tab->deleted.size()-nedited; if((ngames+nselect+ndb+nedited+ndeleted) >0){ + has_pending_events=true; ADD_INFO("\n---------- Pending operations ----------"); ADD_INFO("Imports:"); ADD_INFO(" -> "+std::to_string(ngames+nselect)+" game(s)"); @@ -29,6 +31,8 @@ void BaseManageTab::RefreshInformations(){ ADD_INFO("Others:"); ADD_INFO(" -> "+std::to_string(nedited)+" edited game(s)"); ADD_INFO(" -> "+std::to_string(ndeleted)+" deleted game(s)"); + } else { + has_pending_events=false; } } diff --git a/src/base_tab/BaseManageTab.hpp b/src/base_tab/BaseManageTab.hpp index 863754c..92f80d0 100644 --- a/src/base_tab/BaseManageTab.hpp +++ b/src/base_tab/BaseManageTab.hpp @@ -16,9 +16,12 @@ class BaseManageTab : public TabBase_TabManage { BaseImportTab *import_tab; BaseGameTab *games_tab; + bool has_pending_events; + public: BaseManageTab(wxFrame *parent, std::shared_ptr db, std::shared_ptr glm, BaseImportTab *import_tab, BaseGameTab *games_tab); void RefreshInformations(); void Reset(std::shared_ptr db); + bool HasPendingEvents(){return(has_pending_events);}; }; \ No newline at end of file diff --git a/src/base_tab/BaseTab.cpp b/src/base_tab/BaseTab.cpp index 8434840..1342c49 100644 --- a/src/base_tab/BaseTab.cpp +++ b/src/base_tab/BaseTab.cpp @@ -25,8 +25,9 @@ BaseTab::BaseTab(wxFrame *parent, std::string base_file) // Bindings this->Bind(wxEVT_BUTTON, &BaseTab::OnSave, this, ID_SAVE_BUTTON); this->Bind(wxEVT_LIST_ITEM_ACTIVATED, &BaseTab::OnOpenGame, this, ID_TABGAMES_GAME_LIST); - Bind(REFRESH_MANAGE_TAB,[tab=manage_tab](wxCommandEvent &e){ - tab->RefreshInformations(); + Bind(REFRESH_MANAGE_TAB,[p=this](wxCommandEvent &e){ + p->manage_tab->RefreshInformations(); + p->is_dirty=p->manage_tab->HasPendingEvents(); // Refresh tab dirty flag },wxID_ANY); } -- cgit v1.2.3