#include "mynotebook.h" #include "xmlcopyeditor.h" #include "xmldoc.h" BEGIN_EVENT_TABLE(MyNotebook, wxAuiNotebook) EVT_LEFT_DOWN(MyNotebook::OnLeftDown) //EVT_MIDDLE_DOWN(MyNotebook::OnMiddleDown) EVT_RIGHT_DOWN(MyNotebook::OnRightDown) EVT_MENU(ID_MENU_CLOSE, MyNotebook::OnMenuClose) EVT_MENU(ID_MENU_CLOSE_ALL, MyNotebook::OnMenuCloseAll) END_EVENT_TABLE() MyNotebook::MyNotebook( wxWindow *parent, wxWindowID id, const wxPoint& position, const wxSize& size, int style) : wxAuiNotebook(parent, id, position, size, style) { rightClickPage = -1; } void MyNotebook::OnLeftDown(wxMouseEvent& event) { int page = HitTest(wxPoint(event.GetX(), event.GetY())); if (page == -1) { event.Skip(); return; } XmlDoc *doc = (XmlDoc *)GetPage(page); if (!doc) { event.Skip(); return; } SetSelection(page); doc->SetFocus(); } void MyNotebook::OnMiddleDown(wxMouseEvent& event) { int page = HitTest(wxPoint(event.GetX(), event.GetY())); if (page == -1) { event.Skip(); return; } SetSelection(page); MyFrame *frame = (MyFrame *)GetParent(); if (frame) frame->closeActiveDocument(); } void MyNotebook::OnRightDown(wxMouseEvent& event) { rightClickPage = HitTest(wxPoint(event.GetX(), event.GetY())); if (rightClickPage == -1) { event.Skip(); return; } SetSelection(rightClickPage); wxMenu contextMenu; contextMenu.Append(ID_MENU_CLOSE, _("Close")); contextMenu.Append(ID_MENU_CLOSE_ALL, _("Close all")); contextMenu.Enable(ID_MENU_CLOSE_ALL, (this->GetPageCount() > 1)); PopupMenu(&contextMenu, wxPoint(-1, -1)); } void MyNotebook::OnMenuClose(wxCommandEvent& WXUNUSED(event)) { if (rightClickPage == -1) return; MyFrame *frame = (MyFrame *)GetParent(); if (frame) frame->closeActiveDocument(); } void MyNotebook::OnMenuCloseAll(wxCommandEvent& WXUNUSED(event)) { MyFrame *frame = (MyFrame *)GetParent(); if (!frame) return; wxCommandEvent e; frame->OnCloseAll(e); }