]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/splitter/splitter.cpp
Minor changes, just trim trailing spaces in webview code.
[wxWidgets.git] / samples / splitter / splitter.cpp
index 0b046d33cbd69f834dba6a0563956dd573de17a4..438d2cb0da9fbb3730b3e2eb9b9edf648a831c3e 100644 (file)
@@ -6,7 +6,7 @@
 // Created:     04/01/98
 // RCS-ID:      $Id$
 // Copyright:   (c) Julian Smart
 // Created:     04/01/98
 // RCS-ID:      $Id$
 // Copyright:   (c) Julian Smart
-// Licence:     wxWindows license
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 // ============================================================================
 /////////////////////////////////////////////////////////////////////////////
 
 // ============================================================================
@@ -39,7 +39,7 @@
 #include "wx/splitter.h"
 #include "wx/dcmirror.h"
 
 #include "wx/splitter.h"
 #include "wx/dcmirror.h"
 
-#ifndef __WXMSW__
+#ifndef wxHAS_IMAGES_IN_RESOURCES
     #include "../sample.xpm"
 #endif
 
     #include "../sample.xpm"
 #endif
 
@@ -60,7 +60,8 @@ enum
     SPLIT_SETPOSITION,
     SPLIT_SETMINSIZE,
     SPLIT_SETGRAVITY,
     SPLIT_SETPOSITION,
     SPLIT_SETMINSIZE,
     SPLIT_SETGRAVITY,
-    SPLIT_REPLACE
+    SPLIT_REPLACE,
+    SPLIT_INVISIBLE
 };
 
 // ----------------------------------------------------------------------------
 };
 
 // ----------------------------------------------------------------------------
@@ -99,6 +100,7 @@ public:
     void OnSetMinSize(wxCommandEvent& event);
     void OnSetGravity(wxCommandEvent& event);
     void OnReplace(wxCommandEvent &event);
     void OnSetMinSize(wxCommandEvent& event);
     void OnSetGravity(wxCommandEvent& event);
     void OnReplace(wxCommandEvent &event);
+    void OnToggleInvisible(wxCommandEvent &event);
 
     void OnQuit(wxCommandEvent& event);
 
 
     void OnQuit(wxCommandEvent& event);
 
@@ -106,6 +108,7 @@ public:
     void OnUpdateUIHorizontal(wxUpdateUIEvent& event);
     void OnUpdateUIVertical(wxUpdateUIEvent& event);
     void OnUpdateUIUnsplit(wxUpdateUIEvent& event);
     void OnUpdateUIHorizontal(wxUpdateUIEvent& event);
     void OnUpdateUIVertical(wxUpdateUIEvent& event);
     void OnUpdateUIUnsplit(wxUpdateUIEvent& event);
+    void OnUpdateUIInvisible(wxUpdateUIEvent& event);
 
 private:
     wxScrolledWindow *m_left, *m_right;
 
 private:
     wxScrolledWindow *m_left, *m_right;
@@ -187,12 +190,14 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
     EVT_MENU(SPLIT_SETMINSIZE, MyFrame::OnSetMinSize)
     EVT_MENU(SPLIT_SETGRAVITY, MyFrame::OnSetGravity)
     EVT_MENU(SPLIT_REPLACE, MyFrame::OnReplace)
     EVT_MENU(SPLIT_SETMINSIZE, MyFrame::OnSetMinSize)
     EVT_MENU(SPLIT_SETGRAVITY, MyFrame::OnSetGravity)
     EVT_MENU(SPLIT_REPLACE, MyFrame::OnReplace)
+    EVT_MENU(SPLIT_INVISIBLE, MyFrame::OnToggleInvisible)
 
     EVT_MENU(SPLIT_QUIT, MyFrame::OnQuit)
 
     EVT_UPDATE_UI(SPLIT_VERTICAL, MyFrame::OnUpdateUIVertical)
     EVT_UPDATE_UI(SPLIT_HORIZONTAL, MyFrame::OnUpdateUIHorizontal)
     EVT_UPDATE_UI(SPLIT_UNSPLIT, MyFrame::OnUpdateUIUnsplit)
 
     EVT_MENU(SPLIT_QUIT, MyFrame::OnQuit)
 
     EVT_UPDATE_UI(SPLIT_VERTICAL, MyFrame::OnUpdateUIVertical)
     EVT_UPDATE_UI(SPLIT_HORIZONTAL, MyFrame::OnUpdateUIHorizontal)
     EVT_UPDATE_UI(SPLIT_UNSPLIT, MyFrame::OnUpdateUIUnsplit)
+    EVT_UPDATE_UI(SPLIT_INVISIBLE, MyFrame::OnUpdateUIInvisible)
 END_EVENT_TABLE()
 
 // My frame constructor
 END_EVENT_TABLE()
 
 // My frame constructor
@@ -218,6 +223,9 @@ MyFrame::MyFrame()
     splitMenu->Append(SPLIT_UNSPLIT,
                       wxT("&Unsplit\tCtrl-U"),
                       wxT("Unsplit"));
     splitMenu->Append(SPLIT_UNSPLIT,
                       wxT("&Unsplit\tCtrl-U"),
                       wxT("Unsplit"));
+    splitMenu->AppendCheckItem(SPLIT_INVISIBLE,
+                      wxT("Toggle sash &invisibility\tCtrl-I"),
+                      wxT("Toggle sash invisibility"));
     splitMenu->AppendSeparator();
 
     splitMenu->AppendCheckItem(SPLIT_LIVE,
     splitMenu->AppendSeparator();
 
     splitMenu->AppendCheckItem(SPLIT_LIVE,
@@ -257,6 +265,12 @@ MyFrame::MyFrame()
     menuBar->Check(SPLIT_LIVE, true);
     m_splitter = new MySplitterWindow(this);
 
     menuBar->Check(SPLIT_LIVE, true);
     m_splitter = new MySplitterWindow(this);
 
+    // If you use non-zero gravity you must initialize the splitter with its
+    // correct initial size, otherwise it will change the sash position by a
+    // huge amount when it's resized from its initial default size to its real
+    // size when the frame lays it out. This wouldn't be necessary if default
+    // zero gravity were used (although it would do no harm neither).
+    m_splitter->SetSize(GetClientSize());
     m_splitter->SetSashGravity(1.0);
 
 #if 1
     m_splitter->SetSashGravity(1.0);
 
 #if 1
@@ -430,6 +444,12 @@ void MyFrame::OnReplace(wxCommandEvent& WXUNUSED(event) )
     }
 }
 
     }
 }
 
+void MyFrame::OnToggleInvisible(wxCommandEvent& WXUNUSED(event) )
+{
+    m_splitter->SetSashInvisible(!m_splitter->IsSashInvisible());
+    m_splitter->SizeWindows();
+}
+
 // Update UI handlers
 
 void MyFrame::OnUpdateUIHorizontal(wxUpdateUIEvent& event)
 // Update UI handlers
 
 void MyFrame::OnUpdateUIHorizontal(wxUpdateUIEvent& event)
@@ -447,6 +467,11 @@ void MyFrame::OnUpdateUIUnsplit(wxUpdateUIEvent& event)
     event.Enable( m_splitter->IsSplit() );
 }
 
     event.Enable( m_splitter->IsSplit() );
 }
 
+void MyFrame::OnUpdateUIInvisible(wxUpdateUIEvent& event)
+{
+    event.Check( m_splitter->IsSashInvisible() );
+}
+
 // ----------------------------------------------------------------------------
 // MySplitterWindow
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
 // MySplitterWindow
 // ----------------------------------------------------------------------------