]> git.saurik.com Git - wxWidgets.git/commitdiff
Show wx{Note,Tool}book-specific styles in the notebook sample too.
authorVadim Zeitlin <vadim@wxwidgets.org>
Mon, 14 Mar 2011 11:55:05 +0000 (11:55 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Mon, 14 Mar 2011 11:55:05 +0000 (11:55 +0000)
Demonstrate the use of styles such as wxNB_FIXEDWIDTH or wxTBK_HORZ_LAYOUT
specific to particular controls and not only the ones common to all of them.

Closes #13036.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67192 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

samples/notebook/notebook.cpp
samples/notebook/notebook.h

index 5387775761c22527e5636bdcb7ff85652cedfb01..b56dbaeb9f50f83834a9530c0d67ad58cf5deddd 100644 (file)
@@ -227,7 +227,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
     EVT_MENU_RANGE(ID_BOOK_NOTEBOOK, ID_BOOK_MAX, MyFrame::OnType)
     EVT_MENU_RANGE(ID_ORIENT_DEFAULT, ID_ORIENT_MAX, MyFrame::OnOrient)
     EVT_MENU(ID_SHOW_IMAGES, MyFrame::OnShowImages)
-    EVT_MENU(ID_MULTI, MyFrame::OnMulti)
+    EVT_MENU_RANGE(ID_FIXEDWIDTH, ID_HORZ_LAYOUT, MyFrame::OnStyle)
     EVT_MENU(wxID_EXIT, MyFrame::OnExit)
 
     // Operations menu
@@ -299,7 +299,11 @@ MyFrame::MyFrame()
 
     m_orient = ID_ORIENT_DEFAULT;
     m_chkShowImages = true;
+    m_fixedWidth = false;
     m_multi = false;
+    m_noPageTheme = false;
+    m_buttonBar = false;
+    m_horzLayout = false;
 
     SetIcon(wxICON(sample));
 
@@ -330,6 +334,17 @@ MyFrame::MyFrame()
     menuOrient->AppendRadioItem(ID_ORIENT_LEFT,    wxT("&Left\tAlt-3"));
     menuOrient->AppendRadioItem(ID_ORIENT_RIGHT,   wxT("&Right\tAlt-4"));
 
+    wxMenu *menuStyle = new wxMenu;
+#if wxUSE_NOTEBOOK
+    menuStyle->AppendCheckItem(ID_FIXEDWIDTH, wxT("&Fixed Width (wxNotebook)"));
+    menuStyle->AppendCheckItem(ID_MULTI, wxT("&Multiple lines (wxNotebook)"));
+    menuStyle->AppendCheckItem(ID_NOPAGETHEME, wxT("&No Page Theme (wxNotebook)"));
+#endif
+#if wxUSE_TOOLBOOK
+    menuStyle->AppendCheckItem(ID_BUTTONBAR, wxT("&Button Bar (wxToolbook)"));
+    menuStyle->AppendCheckItem(ID_HORZ_LAYOUT, wxT("&Horizontal layout (wxToolbook)"));
+#endif
+
     wxMenu *menuPageOperations = new wxMenu;
     menuPageOperations->Append(ID_ADD_PAGE, wxT("&Add page\tAlt-A"));
     menuPageOperations->Append(ID_ADD_PAGE_NO_SELECT, wxT("&Add page (don't select)\tAlt-B"));
@@ -356,11 +371,10 @@ MyFrame::MyFrame()
     menuFile->Append(wxID_ANY, wxT("&Type"), menuType, wxT("Type of control"));
     menuFile->Append(wxID_ANY, wxT("&Orientation"), menuOrient, wxT("Orientation of control"));
     menuFile->AppendCheckItem(ID_SHOW_IMAGES, wxT("&Show images\tAlt-S"));
-    menuFile->AppendCheckItem(ID_MULTI, wxT("&Multiple lines\tAlt-M"));
+    menuFile->Append(wxID_ANY, wxT("&Style"), menuStyle, wxT("Style of control"));
     menuFile->AppendSeparator();
     menuFile->Append(wxID_EXIT, wxT("E&xit"), wxT("Quits the application"));
     menuFile->Check(ID_SHOW_IMAGES, m_chkShowImages);
-    menuFile->Check(ID_MULTI, m_multi);
 
     wxMenuBar *menuBar = new wxMenuBar;
     menuBar->Append(menuFile, wxT("&File"));
@@ -502,8 +516,20 @@ void MyFrame::RecreateBook()
             flags = wxBK_DEFAULT;
     }
 
+#if wxUSE_NOTEBOOK
+    if ( m_fixedWidth && m_type == Type_Notebook )
+        flags |= wxNB_FIXEDWIDTH;
     if ( m_multi && m_type == Type_Notebook )
         flags |= wxNB_MULTILINE;
+    if ( m_noPageTheme && m_type == Type_Notebook )
+        flags |= wxNB_NOPAGETHEME;
+#endif
+#if wxUSE_TOOLBOOK
+    if ( m_buttonBar && m_type == Type_Toolbook )
+        flags |= wxTBK_BUTTONBAR;
+    if ( m_horzLayout && m_type == Type_Toolbook )
+        flags |= wxTBK_HORZ_LAYOUT;
+#endif
 
     wxBookCtrlBase *oldBook = m_bookCtrl;
 
@@ -677,12 +703,21 @@ void MyFrame::OnShowImages(wxCommandEvent& event)
     m_sizerFrame->Layout();
 }
 
-void MyFrame::OnMulti(wxCommandEvent& event)
+void MyFrame::OnStyle(wxCommandEvent& event)
 {
-    m_multi = event.IsChecked();
+    bool checked = event.IsChecked();
+    switch (event.GetId())
+    {
+        case ID_FIXEDWIDTH:  m_fixedWidth = checked;  break;
+        case ID_MULTI:       m_multi = checked;       break;
+        case ID_NOPAGETHEME: m_noPageTheme = checked; break;
+        case ID_BUTTONBAR:   m_buttonBar = checked;   break;
+        case ID_HORZ_LAYOUT: m_horzLayout = checked;  break;
+        default: break; // avoid compiler warning
+    }
+
     RecreateBook();
     m_sizerFrame->Layout();
-    wxLogMessage(wxT("Multiline setting works only in wxNotebook."));
 }
 
 void MyFrame::OnExit(wxCommandEvent& WXUNUSED(event))
index e92a039bc42451d46cf7471c5460c09e10daf694..4646e8766a52dae6f0aba3b40ffdb502af26b244 100644 (file)
@@ -40,7 +40,7 @@ public:
     void OnType(wxCommandEvent& event);
     void OnOrient(wxCommandEvent& event);
     void OnShowImages(wxCommandEvent& event);
-    void OnMulti(wxCommandEvent& event);
+    void OnStyle(wxCommandEvent& event);
     void OnExit(wxCommandEvent& event);
 
     void OnAddPage(wxCommandEvent& event);
@@ -106,7 +106,11 @@ private:
     } m_type;
     int m_orient;
     bool m_chkShowImages;
+    bool m_fixedWidth;
     bool m_multi;
+    bool m_noPageTheme;
+    bool m_buttonBar;
+    bool m_horzLayout;
 
     // Controls
 
@@ -142,7 +146,11 @@ enum ID_COMMANDS
     ID_ORIENT_RIGHT,
     ID_ORIENT_MAX,
     ID_SHOW_IMAGES,
+    ID_FIXEDWIDTH,
     ID_MULTI,
+    ID_NOPAGETHEME,
+    ID_BUTTONBAR,
+    ID_HORZ_LAYOUT,
     ID_ADD_PAGE,
     ID_ADD_PAGE_NO_SELECT,
     ID_INSERT_PAGE,