X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/14b4c0ff125b7bd175916f465e76a359b4fda706..7d8e5b8f04d24aa8c732d4e1fc3cb162a77beed5:/samples/splitter/splitter.cpp diff --git a/samples/splitter/splitter.cpp b/samples/splitter/splitter.cpp index 8d069c279d..af93ae1ac8 100644 --- a/samples/splitter/splitter.cpp +++ b/samples/splitter/splitter.cpp @@ -46,14 +46,15 @@ // ID for the menu commands enum { - SPLIT_QUIT, + SPLIT_QUIT = 1, SPLIT_HORIZONTAL, SPLIT_VERTICAL, SPLIT_UNSPLIT, SPLIT_LIVE, SPLIT_SETPOSITION, SPLIT_SETMINSIZE, - SPLIT_SETGRAVITY + SPLIT_SETGRAVITY, + SPLIT_REPLACE }; // ---------------------------------------------------------------------------- @@ -74,7 +75,7 @@ class MyFrame: public wxFrame { public: MyFrame(); - virtual ~MyFrame(){}; + virtual ~MyFrame(); // Menu commands void SplitHorizontal(wxCommandEvent& event); @@ -84,6 +85,7 @@ public: void SetPosition(wxCommandEvent& event); void SetMinSize(wxCommandEvent& event); void SetGravity(wxCommandEvent& event); + void Replace(wxCommandEvent &event); void Quit(wxCommandEvent& event); @@ -96,6 +98,7 @@ private: wxScrolledWindow *m_left, *m_right; wxSplitterWindow* m_splitter; + wxWindow *m_replacewindow; DECLARE_EVENT_TABLE() DECLARE_NO_COPY_CLASS(MyFrame) @@ -145,6 +148,9 @@ IMPLEMENT_APP(MyApp) bool MyApp::OnInit() { + if ( !wxApp::OnInit() ) + return false; + // create and show the main frame MyFrame* frame = new MyFrame; @@ -165,6 +171,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(SPLIT_SETPOSITION, MyFrame::SetPosition) EVT_MENU(SPLIT_SETMINSIZE, MyFrame::SetMinSize) EVT_MENU(SPLIT_SETGRAVITY, MyFrame::SetGravity) + EVT_MENU(SPLIT_REPLACE, MyFrame::Replace) EVT_MENU(SPLIT_QUIT, MyFrame::Quit) @@ -210,6 +217,11 @@ MyFrame::MyFrame() _T("Set gravity of sash")); splitMenu->AppendSeparator(); + splitMenu->Append(SPLIT_REPLACE, + _T("&Replace right window"), + _T("Replace right window")); + splitMenu->AppendSeparator(); + splitMenu->Append(SPLIT_QUIT, _T("E&xit\tAlt-X"), _T("Exit")); wxMenuBar *menuBar = new wxMenuBar; @@ -248,6 +260,16 @@ MyFrame::MyFrame() #if wxUSE_STATUSBAR SetStatusText(_T("Min pane size = 0"), 1); #endif // wxUSE_STATUSBAR + + m_replacewindow = (wxWindow *)0; +} + +MyFrame::~MyFrame() +{ + if (m_replacewindow) { + m_replacewindow->Destroy(); + m_replacewindow = (wxWindow *)0; + } } // menu command handlers @@ -354,6 +376,21 @@ void MyFrame::SetGravity(wxCommandEvent& WXUNUSED(event) ) #endif // wxUSE_STATUSBAR } +void MyFrame::Replace(wxCommandEvent& WXUNUSED(event) ) +{ + if (m_replacewindow == 0) { + m_replacewindow = m_splitter->GetWindow2(); + m_splitter->ReplaceWindow(m_replacewindow, new wxPanel(m_splitter, wxID_ANY)); + m_replacewindow->Hide(); + } else { + wxWindow *empty = m_splitter->GetWindow2(); + m_splitter->ReplaceWindow(empty, m_replacewindow); + m_replacewindow->Show(); + m_replacewindow = 0; + empty->Destroy(); + } +} + // Update UI handlers void MyFrame::UpdateUIHorizontal(wxUpdateUIEvent& event)