aboutsummaryrefslogtreecommitdiff
path: root/src/base_tab
diff options
context:
space:
mode:
authorLoic Guegan <manzerbredes@mailbox.org>2023-01-09 10:30:17 +0100
committerLoic Guegan <manzerbredes@mailbox.org>2023-01-09 10:30:17 +0100
commite686937ce9df0ac938b5e23727b335efa53a81b7 (patch)
tree163b869fc3f11c668085a27b1255d2a59e9a72e1 /src/base_tab
parentf1a54fd165251b1f2296f5845d31198f9b0198d9 (diff)
Prompt the user before closing dirty tabs
Diffstat (limited to 'src/base_tab')
-rw-r--r--src/base_tab/BaseManageTab.cpp4
-rw-r--r--src/base_tab/BaseManageTab.hpp3
-rw-r--r--src/base_tab/BaseTab.cpp5
3 files changed, 10 insertions, 2 deletions
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<GameBase> 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<GameBase> db,
std::shared_ptr<GameListManager> glm, BaseImportTab *import_tab, BaseGameTab *games_tab);
void RefreshInformations();
void Reset(std::shared_ptr<GameBase> 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);
}