void MapTabbook::OnNotebookPageClose(wxAuiNotebookEvent& evt) { EditorTab* editorTab = GetTab(evt.GetInt()); MapTab* mapTab = dynamic_cast<MapTab*>(editorTab); if(mapTab && mapTab->IsUniqueReference() && mapTab->GetMap()) { if(mapTab->GetEditor()->IsLive()) { if(mapTab->GetMap()->hasChanged()) { SetFocusedTab(evt.GetInt()); if(gui.root->DoQuerySave(false)) { gui.RefreshPalettes(nullptr, false); gui.UpdateMenus(); } else { evt.Veto(); } } else { gui.RefreshPalettes(nullptr, false); gui.UpdateMenus(); } } return; } LiveLogTab* lt = dynamic_cast<LiveLogTab*>(editorTab); if(lt && lt->IsConnected()) { evt.Veto(); } }
bool GUI::CloseAllEditors() { for(int i = 0; i < tabbook->GetTabCount(); ++i) { MapTab* mapTab = dynamic_cast<MapTab*>(tabbook->GetTab(i)); if(mapTab) { if(mapTab->IsUniqueReference() && mapTab->GetMap() && mapTab->GetMap()->hasChanged()) { tabbook->SetFocusedTab(i); if(!root->DoQuerySave(false)) { return false; } else { RefreshPalettes(); tabbook->DeleteTab(i--); } } else { tabbook->DeleteTab(i--); } } } if(root) root->UpdateMenubar(); return true; }