void FindResultsTab::OnPageClosing(wxBookCtrlEvent& e) { e.Skip(); if(m_searchInProgress) { ::wxMessageBox(_("Can not close the search tab while a search is in progress"), "CodeLite", wxICON_WARNING | wxOK | wxCENTER); e.Veto(); return; } }
void MainBook::OnPageClosing(wxBookCtrlEvent& e) { e.Skip(); LEditor* editor = dynamic_cast<LEditor*>(m_book->GetPage(e.GetSelection())); if(editor) { if(AskUserToSave(editor)) { SendCmdEvent(wxEVT_EDITOR_CLOSING, (IEditor*)editor); } else { e.Veto(); } } else { // Unknown type, ask the plugins - maybe they know about this type wxNotifyEvent closeEvent(wxEVT_NOTIFY_PAGE_CLOSING); closeEvent.SetClientData(m_book->GetPage(e.GetSelection())); EventNotifier::Get()->ProcessEvent(closeEvent); if(!closeEvent.IsAllowed()) { e.Veto(); } } }
void clMultiBook::OnEventProxy(wxBookCtrlEvent& event) { if(event.GetEventObject() == this) { // Avoid loops event.Skip(); return; } int selection = event.GetSelection(); int oldSelection = event.GetOldSelection(); Notebook* book = dynamic_cast<Notebook*>(event.GetEventObject()); if(!book) { clWARNING() << "clMultiBook::OnEventProxy no notebook event object!"; return; } // Convert the event wxBookCtrlEvent proxyEvent(event.GetEventType()); proxyEvent.SetEventObject(this); proxyEvent.SetSelection(wxNOT_FOUND); proxyEvent.SetOldSelection(wxNOT_FOUND); if(selection != wxNOT_FOUND) { proxyEvent.SetSelection(BookIndexToGlobalIndex(book, selection)); } if(oldSelection != wxNOT_FOUND) { proxyEvent.SetOldSelection(BookIndexToGlobalIndex(book, oldSelection)); } // Process the event if((event.GetEventType() == wxEVT_BOOK_TAB_CONTEXT_MENU) || (event.GetEventType() == wxEVT_BOOK_PAGE_CHANGED)) { // Use ProcessEvent GetEventHandler()->ProcessEvent(proxyEvent); } else if((event.GetEventType() == wxEVT_BOOK_PAGE_CLOSING) || (event.GetEventType() == wxEVT_BOOK_PAGE_CHANGING)) { // Handle with ProcessEvent with Veto option GetEventHandler()->ProcessEvent(proxyEvent); if(!proxyEvent.IsAllowed()) { event.Veto(); } } else { // Handle with AddPendingEvent GetEventHandler()->AddPendingEvent(proxyEvent); if(event.GetEventType() == wxEVT_BOOK_PAGE_CLOSED) { // A page was closed CallAfter(&clMultiBook::UpdateView); } } }
void ErdPanel::OnPageClosing(wxBookCtrlEvent& event) { wxMessageBox(wxT("Event Veto")); event.Veto(); }