]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/notebook/notebook.h
Don't crash when creating wxStaticBox in wxGTK.
[wxWidgets.git] / samples / notebook / notebook.h
index a503874494a05234cfdd666d047d8fec400a6c12..416e31918cdc4bc12e25535387bf4d47eafb224f 100644 (file)
@@ -6,33 +6,21 @@
 // Created:     25/10/98
 // RCS-ID:      $Id$
 // Copyright:   (c) 1998-2002 wxWidgets team
-// License:     wxWindows license
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-// this sample can be used to test both wxNotebook and wxListbook
-//#define TEST_LISTBOOK
+#include "wx/choicebk.h"
+#include "wx/listbook.h"
+#include "wx/treebook.h"
+#include "wx/notebook.h"
+#include "wx/simplebook.h"
+#include "wx/toolbook.h"
+#include "wx/aui/auibook.h"
 
-#ifdef TEST_LISTBOOK
-    #include "wx/listbook.h"
-
-    #define wxNotebook wxListbook
-    #define wxNotebookEvent wxListbookEvent
-
-    #define wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED wxEVT_COMMAND_LISTBOOK_PAGE_CHANGED
-    #define wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING wxEVT_COMMAND_LISTBOOK_PAGE_CHANGING
-    #define EVT_NOTEBOOK_PAGE_CHANGED EVT_LISTBOOK_PAGE_CHANGED
-    #define EVT_NOTEBOOK_PAGE_CHANGING EVT_LISTBOOK_PAGE_CHANGING
-
-    #undef wxNB_TOP
-    #define wxNB_TOP wxLB_TOP
-    #undef wxNB_BOTTOM
-    #define wxNB_BOTTOM wxLB_BOTTOM
-    #undef wxNB_LEFT
-    #define wxNB_LEFT wxLB_LEFT
-    #undef wxNB_RIGHT
-    #define wxNB_RIGHT wxLB_RIGHT
+#if wxUSE_LOG && !defined( __SMARTPHONE__ )
+    #define USE_LOG 1
 #else
-    #include "wx/notebook.h"
+    #define USE_LOG 0
 #endif
 
 // Define a new application
@@ -44,131 +32,170 @@ public:
 
 DECLARE_APP(MyApp)
 
-//
-class MyNotebook : public wxNotebook
-{
-public:
-    MyNotebook(wxWindow *parent, wxWindowID id = wxID_ANY,
-        const wxPoint& pos = wxDefaultPosition,
-        const wxSize& size = wxDefaultSize, long style = 0);
-
-    void CreateInitialPages();
-
-    wxPanel *CreatePage(const wxString& pageName);
-
-    wxPanel *CreateUserCreatedPage();
-
-    int GetIconIndex() const;
 
-private:
-    wxPanel *CreateInsertPage();
-    wxPanel *CreateRadioButtonsPage();
-    wxPanel *CreateVetoPage();
-    wxPanel *CreateBigButtonPage();
-};
-
-//
 class MyFrame : public wxFrame
 {
 public:
-    MyFrame(const wxString& title, const wxPoint& pos = wxDefaultPosition,
-        const wxSize& size = wxDefaultSize, long style = wxDEFAULT_FRAME_STYLE|wxCLIP_CHILDREN|wxNO_FULL_REPAINT_ON_RESIZE);
-
+    MyFrame();
     virtual ~MyFrame();
 
-    // Recreates the notebook with the same pages, but with possibly
-    // a different orientation and optionally with images.
-    void ReInitNotebook();
-
-    void OnCheckOrRadioBox(wxCommandEvent& event);
-
-    void OnButtonAddPage(wxCommandEvent& event);
-    void OnButtonInsertPage(wxCommandEvent& event);
-    void OnButtonDeleteCurPage(wxCommandEvent& event);
-    void OnButtonDeleteLastPage(wxCommandEvent& event);
-    void OnButtonNextPage(wxCommandEvent& event);
-    void OnButtonExit(wxCommandEvent& event);
+    void OnType(wxCommandEvent& event);
+    void OnOrient(wxCommandEvent& event);
+    void OnShowImages(wxCommandEvent& event);
+    void OnStyle(wxCommandEvent& event);
+    void OnExit(wxCommandEvent& event);
+
+    void OnAddPage(wxCommandEvent& event);
+    void OnAddPageNoSelect(wxCommandEvent& event);
+    void OnInsertPage(wxCommandEvent& event);
+    void OnDeleteCurPage(wxCommandEvent& event);
+    void OnDeleteLastPage(wxCommandEvent& event);
+    void OnNextPage(wxCommandEvent& event);
+    void OnChangeSelection(wxCommandEvent &event);
+    void OnSetSelection(wxCommandEvent &event);
+    void OnGetPageSize(wxCommandEvent &event);
+    void OnSetPageSize(wxCommandEvent &event);
+
+    void OnAddSubPage(wxCommandEvent& event);
+    void OnAddPageBefore(wxCommandEvent& event);
+
+#if wxUSE_HELP
+    void OnContextHelp(wxCommandEvent& event);
+#endif // wxUSE_HELP
+
+    void OnHitTest(wxCommandEvent& event);
+
+    void OnBookCtrl(wxBookCtrlBaseEvent& event);
+#if wxUSE_NOTEBOOK
+    void OnNotebook(wxNotebookEvent& event) { OnBookCtrl(event); }
+#endif
+#if wxUSE_CHOICEBOOK
+    void OnChoicebook(wxChoicebookEvent& event) { OnBookCtrl(event); }
+#endif
+#if wxUSE_LISTBOOK
+    void OnListbook(wxListbookEvent& event) { OnBookCtrl(event); }
+#endif
+#if wxUSE_TREEBOOK
+    void OnTreebook(wxTreebookEvent& event) { OnBookCtrl(event); }
+#endif
+#if wxUSE_TOOLBOOK
+    void OnToolbook(wxToolbookEvent& event) { OnBookCtrl(event); }
+#endif
+#if wxUSE_AUI
+    void OnAuiNotebook(wxAuiNotebookEvent& event) { OnBookCtrl(event); }
+#endif
 
-    void OnNotebook(wxNotebookEvent& event);
+    void OnIdle(wxIdleEvent& event);
 
-    void OnUpdateUIBtnDeleteCurPage(wxUpdateUIEvent& event);
-    void OnUpdateUIBtnDeleteLastPage(wxUpdateUIEvent& event);
+#if wxUSE_TREEBOOK
+    void OnUpdateTreeMenu(wxUpdateUIEvent& event);
+#endif // wxUSE_TREEBOOK
 
-    void OnIdle(wxIdleEvent& event);
+    wxBookCtrlBase *GetCurrentBook() const { return m_bookCtrl; }
 
 private:
     wxLog *m_logTargetOld;
 
+    void RecreateBook();
+    wxPanel *CreateNewPage() const;
+    void AddFlagStrIfFlagPresent(wxString & flagStr, long flags, long flag, const wxChar * flagName) const;
+
+    // Sample setup
+    enum BookType
+    {
+        Type_Notebook,
+        Type_Listbook,
+        Type_Choicebook,
+        Type_Treebook,
+        Type_Toolbook,
+        Type_AuiNotebook,
+        Type_Simplebook,
+        Type_Max
+    } m_type;
+    int m_orient;
+    bool m_chkShowImages;
+    bool m_fixedWidth;
+    bool m_multi;
+    bool m_noPageTheme;
+    bool m_buttonBar;
+    bool m_horzLayout;
 
     // Controls
 
     wxPanel *m_panel; // Panel containing notebook and other controls
+    wxBookCtrlBase *m_bookCtrl;
 
-    wxRadioBox *m_radioOrient;
-    wxCheckBox *m_chkShowImages,
-               *m_chkMultiLine;
-
-    wxButton *m_btnAddPage;
-    wxButton *m_btnInsertPage;
-    wxButton *m_btnDeleteCurPage;
-    wxButton *m_btnDeleteLastPage;
-    wxButton *m_btnNextPage;
-    wxButton *m_btnExit;
-
-    MyNotebook *m_notebook;
-
+#if USE_LOG
     // Log window
     wxTextCtrl *m_text;
+#endif // USE_LOG
 
-
-    // Sizers
-
-    // The frame's sizer. Consists of m_sizerTop and the log window
-    // at the bottom.
     wxBoxSizer *m_sizerFrame;
 
-    // Sizer that contains the notebook and controls on the left
-    wxBoxSizer *m_sizerTop;
-
     wxImageList *m_imageList;
 
     DECLARE_EVENT_TABLE()
 };
 
-enum ID_CONTROLS
+enum ID_COMMANDS
 {
-    ID_RADIO_ORIENT = wxID_HIGHEST,
-    ID_CHK_SHOWIMAGES,
-    ID_CHK_MULTILINE,
-    ID_BTN_ADD_PAGE,
-    ID_BTN_INSERT_PAGE,
-    ID_BTN_DELETE_CUR_PAGE,
-    ID_BTN_DELETE_LAST_PAGE,
-    ID_BTN_NEXT_PAGE,
-    ID_NOTEBOOK
+    // these should be in the same order as Type_XXX elements above
+    ID_BOOK_NOTEBOOK = wxID_HIGHEST,
+    ID_BOOK_LISTBOOK,
+    ID_BOOK_CHOICEBOOK,
+    ID_BOOK_TREEBOOK,
+    ID_BOOK_TOOLBOOK,
+    ID_BOOK_AUINOTEBOOK,
+    ID_BOOK_SIMPLEBOOK,
+    ID_BOOK_MAX,
+
+    ID_ORIENT_DEFAULT,
+    ID_ORIENT_TOP,
+    ID_ORIENT_BOTTOM,
+    ID_ORIENT_LEFT,
+    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,
+    ID_DELETE_CUR_PAGE,
+    ID_DELETE_LAST_PAGE,
+    ID_NEXT_PAGE,
+    ID_ADD_PAGE_BEFORE,
+    ID_ADD_SUB_PAGE,
+    ID_CHANGE_SELECTION,
+    ID_SET_SELECTION,
+    ID_GET_PAGE_SIZE,
+    ID_SET_PAGE_SIZE,
+
+#if wxUSE_HELP
+    ID_CONTEXT_HELP,
+#endif // wxUSE_HELP
+    ID_HITTEST
 };
 
-// notebook orientations
-enum ORIENT
-{
-    ORIENT_TOP,
-    ORIENT_BOTTOM,
-    ORIENT_LEFT,
-    ORIENT_RIGHT,
-    ORIENT_MAX
-};
 
 /*
-Name of each notebook page.
-Used as a label for a page, and used when cloning the notebook
-to decide what type of page it is.
+    Name of each notebook page.
+    Used as a label for a page, and used when cloning the notebook
+    to decide what type of page it is.
 */
 
-#define I_WAS_INSERTED_PAGE_NAME  wxT("Inserted")
-#define RADIOBUTTONS_PAGE_NAME wxT("Radiobuttons")
-#define VETO_PAGE_NAME wxT("Veto")
-#define MAXIMIZED_BUTTON_PAGE_NAME wxT("Maximized button")
+#define I_WAS_INSERTED_PAGE_NAME        wxT("Inserted")
+#define RADIOBUTTONS_PAGE_NAME          wxT("Radiobuttons")
+#define VETO_PAGE_NAME                  wxT("Veto")
+#define MAXIMIZED_BUTTON_PAGE_NAME      wxT("Maximized button")
 
 // Pages that can be added by the user
-#define INSERTED_PAGE_NAME wxT("Inserted ")
-#define ADDED_PAGE_NAME wxT("Added ")
+#define INSERTED_PAGE_NAME              wxT("Inserted ")
+#define ADDED_PAGE_NAME                 wxT("Added ")
+#define ADDED_PAGE_NAME_BEFORE          wxT(" Inserted before ")
+#define ADDED_SUB_PAGE_NAME             wxT(" Inserted sub-page ")
+
+