]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/splitter/splitter.cpp
Fix wxListCtrl background colour bug Part I
[wxWidgets.git] / samples / splitter / splitter.cpp
index 60fa68fe6ea761f403e7ee2d01d6b1b6c920bac6..182421b6a99b7f01cab0a5274b804150fb3bd8f3 100644 (file)
@@ -41,6 +41,7 @@ enum
     SPLIT_HORIZONTAL,
     SPLIT_VERTICAL,
     SPLIT_UNSPLIT,
     SPLIT_HORIZONTAL,
     SPLIT_VERTICAL,
     SPLIT_UNSPLIT,
+    SPLIT_LIVE,
     SPLIT_SETMINSIZE
 };
 
     SPLIT_SETMINSIZE
 };
 
@@ -64,7 +65,9 @@ public:
     void SplitHorizontal(wxCommandEvent& event);
     void SplitVertical(wxCommandEvent& event);
     void Unsplit(wxCommandEvent& event);
     void SplitHorizontal(wxCommandEvent& event);
     void SplitVertical(wxCommandEvent& event);
     void Unsplit(wxCommandEvent& event);
+    void ToggleLive(wxCommandEvent& event);
     void SetMinSize(wxCommandEvent& event);
     void SetMinSize(wxCommandEvent& event);
+
     void Quit(wxCommandEvent& event);
 
     // Menu command update functions
     void Quit(wxCommandEvent& event);
 
     // Menu command update functions
@@ -134,9 +137,11 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
     EVT_MENU(SPLIT_VERTICAL, MyFrame::SplitVertical)
     EVT_MENU(SPLIT_HORIZONTAL, MyFrame::SplitHorizontal)
     EVT_MENU(SPLIT_UNSPLIT, MyFrame::Unsplit)
     EVT_MENU(SPLIT_VERTICAL, MyFrame::SplitVertical)
     EVT_MENU(SPLIT_HORIZONTAL, MyFrame::SplitHorizontal)
     EVT_MENU(SPLIT_UNSPLIT, MyFrame::Unsplit)
-    EVT_MENU(SPLIT_QUIT, MyFrame::Quit)
+    EVT_MENU(SPLIT_LIVE, MyFrame::ToggleLive)
     EVT_MENU(SPLIT_SETMINSIZE, MyFrame::SetMinSize)
 
     EVT_MENU(SPLIT_SETMINSIZE, MyFrame::SetMinSize)
 
+    EVT_MENU(SPLIT_QUIT, MyFrame::Quit)
+
     EVT_UPDATE_UI(SPLIT_VERTICAL, MyFrame::UpdateUIVertical)
     EVT_UPDATE_UI(SPLIT_HORIZONTAL, MyFrame::UpdateUIHorizontal)
     EVT_UPDATE_UI(SPLIT_UNSPLIT, MyFrame::UpdateUIUnsplit)
     EVT_UPDATE_UI(SPLIT_VERTICAL, MyFrame::UpdateUIVertical)
     EVT_UPDATE_UI(SPLIT_HORIZONTAL, MyFrame::UpdateUIHorizontal)
     EVT_UPDATE_UI(SPLIT_UNSPLIT, MyFrame::UpdateUIUnsplit)
@@ -156,6 +161,7 @@ MyFrame::MyFrame()
     fileMenu->Append(SPLIT_HORIZONTAL, _T("Split &Horizontally\tCtrl-H"), _T("Split horizontally"));
     fileMenu->Append(SPLIT_UNSPLIT, _T("&Unsplit\tCtrl-U"), _T("Unsplit"));
     fileMenu->AppendSeparator();
     fileMenu->Append(SPLIT_HORIZONTAL, _T("Split &Horizontally\tCtrl-H"), _T("Split horizontally"));
     fileMenu->Append(SPLIT_UNSPLIT, _T("&Unsplit\tCtrl-U"), _T("Unsplit"));
     fileMenu->AppendSeparator();
+    fileMenu->Append(SPLIT_LIVE, _T("&Live update"), _T("Toggle live update mode"), TRUE);
     fileMenu->Append(SPLIT_SETMINSIZE, _T("Set &min size"), _T("Set minimum pane size"));
     fileMenu->AppendSeparator();
     fileMenu->Append(SPLIT_QUIT, _T("E&xit\tAlt-X"), _T("Exit"));
     fileMenu->Append(SPLIT_SETMINSIZE, _T("Set &min size"), _T("Set minimum pane size"));
     fileMenu->AppendSeparator();
     fileMenu->Append(SPLIT_QUIT, _T("E&xit\tAlt-X"), _T("Exit"));
@@ -165,6 +171,7 @@ MyFrame::MyFrame()
 
     SetMenuBar(menuBar);
 
 
     SetMenuBar(menuBar);
 
+    menuBar->Check(SPLIT_LIVE, TRUE);
     m_splitter = new MySplitterWindow(this);
 
 #if 1
     m_splitter = new MySplitterWindow(this);
 
 #if 1
@@ -186,6 +193,7 @@ MyFrame::MyFrame()
     m_right->Show(FALSE);
     m_splitter->Initialize(m_left);
 #else
     m_right->Show(FALSE);
     m_splitter->Initialize(m_left);
 #else
+    // you can also try -100
     m_splitter->SplitVertically(m_left, m_right, 100);
 #endif
 
     m_splitter->SplitVertically(m_left, m_right, 100);
 #endif
 
@@ -210,6 +218,8 @@ void MyFrame::SplitHorizontal(wxCommandEvent& WXUNUSED(event) )
     m_left->Show(TRUE);
     m_right->Show(TRUE);
     m_splitter->SplitHorizontally( m_left, m_right );
     m_left->Show(TRUE);
     m_right->Show(TRUE);
     m_splitter->SplitHorizontally( m_left, m_right );
+
+    SetStatusText(_T("Splitter split horizontally"), 1);
 }
 
 void MyFrame::SplitVertical(wxCommandEvent& WXUNUSED(event) )
 }
 
 void MyFrame::SplitVertical(wxCommandEvent& WXUNUSED(event) )
@@ -219,6 +229,8 @@ void MyFrame::SplitVertical(wxCommandEvent& WXUNUSED(event) )
     m_left->Show(TRUE);
     m_right->Show(TRUE);
     m_splitter->SplitVertically( m_left, m_right );
     m_left->Show(TRUE);
     m_right->Show(TRUE);
     m_splitter->SplitVertically( m_left, m_right );
+
+    SetStatusText(_T("Splitter split vertically"), 1);
 }
 
 void MyFrame::Unsplit(wxCommandEvent& WXUNUSED(event) )
 }
 
 void MyFrame::Unsplit(wxCommandEvent& WXUNUSED(event) )
@@ -228,17 +240,28 @@ void MyFrame::Unsplit(wxCommandEvent& WXUNUSED(event) )
     SetStatusText(_T("No splitter"));
 }
 
     SetStatusText(_T("No splitter"));
 }
 
+void MyFrame::ToggleLive(wxCommandEvent& event )
+{
+    long style = m_splitter->GetWindowStyleFlag();
+    if ( event.IsChecked() )
+        style |= wxSP_LIVE_UPDATE;
+    else
+        style &= ~wxSP_LIVE_UPDATE;
+
+    m_splitter->SetWindowStyleFlag(style);
+}
+
 void MyFrame::SetMinSize(wxCommandEvent& WXUNUSED(event) )
 {
     wxString str;
 void MyFrame::SetMinSize(wxCommandEvent& WXUNUSED(event) )
 {
     wxString str;
-    str.Printf( _T(_T("%d")), m_splitter->GetMinimumPaneSize());
+    str.Printf( wxT("%d"), m_splitter->GetMinimumPaneSize());
     str = wxGetTextFromUser(_T("Enter minimal size for panes:"), _T(""), str, this);
     if ( str.IsEmpty() )
         return;
 
     int minsize = wxStrtol( str, (wxChar**)NULL, 10 );
     m_splitter->SetMinimumPaneSize(minsize);
     str = wxGetTextFromUser(_T("Enter minimal size for panes:"), _T(""), str, this);
     if ( str.IsEmpty() )
         return;
 
     int minsize = wxStrtol( str, (wxChar**)NULL, 10 );
     m_splitter->SetMinimumPaneSize(minsize);
-    str.Printf( _T(_T("Min pane size = %d")), minsize);
+    str.Printf( wxT("Min pane size = %d"), minsize);
     SetStatusText(str, 1);
 }
 
     SetStatusText(str, 1);
 }