]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/notebook/notebook.h
GetClientAreaOrigin should be public
[wxWidgets.git] / samples / notebook / notebook.h
index 2fdd3f1a341ca01caea8c9ca49b3fcaeb1e8b9cb..c79f79f980e2f120ddc41ef87ab638d26d715a79 100644 (file)
 /////////////////////////////////////////////////////////////////////////////
-// Name:        notebook.h
-// Purpose:     wxNotebook demo
+// Name:        samples/notebook/notebook.h
+// Purpose:     a sample demonstrating notebook usage
 // Author:      Julian Smart
-// Modified by:
+// Modified by: Dimitri Schoolwerth
 // Created:     25/10/98
 // RCS-ID:      $Id$
-// Copyright:   (c)
-// Licence:     wxWindows licence
+// Copyright:   (c) 1998-2002 wxWidgets team
+// License:     wxWindows license
 /////////////////////////////////////////////////////////////////////////////
 
-#include "wx/notebook.h"
+// this sample can be used to test both wxNotebook and wxListbook
+//#define TEST_LISTBOOK
+
+#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
+#else
+    #include "wx/notebook.h"
+#endif
 
 // Define a new application
-class MyApp: public wxApp
+class MyApp : public wxApp
 {
 public:
     bool OnInit();
-    void InitTabView(wxNotebook* notebook, wxWindow* window);
-
-    wxButton*   m_okButton;
-    wxButton*   m_cancelButton;
-    wxButton*   m_addPageButton, *m_insertPageButton;
-    wxButton*   m_nextPageButton;
 };
 
 DECLARE_APP(MyApp)
 
-#if USE_TABBED_DIALOG
-
-class MyDialog: public wxDialog
+//
+class MyNotebook : public wxNotebook
 {
 public:
-    MyDialog(wxWindow* parent, const wxWindowID id, const wxString& title,
-        const wxPoint& pos, const wxSize& size, const long windowStyle = wxDEFAULT_DIALOG_STYLE);
+    MyNotebook(wxWindow *parent, wxWindowID id = wxID_ANY,
+        const wxPoint& pos = wxDefaultPosition,
+        const wxSize& size = wxDefaultSize, long style = 0);
 
-    void OnOK(wxCommandEvent& event);
-    void OnCloseWindow(wxCloseEvent& event);
-    void Init();
+    void CreateInitialPages();
 
-protected:
-    wxNotebook* m_notebook;
+    wxPanel *CreatePage(const wxString& pageName);
 
-    DECLARE_EVENT_TABLE()
-};
+    wxPanel *CreateUserCreatedPage();
+
+    int GetIconIndex() const;
 
-#else // USE_TABBED_DIALOG
+private:
+    wxPanel *CreateInsertPage();
+    wxPanel *CreateRadioButtonsPage();
+    wxPanel *CreateVetoPage();
+    wxPanel *CreateBigButtonPage();
+};
 
-class MyFrame: public wxFrame
+//
+class MyFrame : public wxFrame
 {
 public:
-    MyFrame(wxFrame* parent, const wxWindowID id, const wxString& title,
-        const wxPoint& pos, const wxSize& size, const long windowStyle = wxDEFAULT_FRAME_STYLE);
-
-    void OnOK(wxCommandEvent& event);
-    void OnCloseWindow(wxCloseEvent& event);
-    void OnAddPage(wxCommandEvent& event);
-    void OnInsertPage(wxCommandEvent& event);
-    void OnNextPage(wxCommandEvent& event);
-    void OnDeletePage(wxCommandEvent& event);
+    MyFrame(const wxString& title, const wxPoint& pos = wxDefaultPosition,
+        const wxSize& size = wxDefaultSize, long style = wxDEFAULT_FRAME_STYLE|wxCLIP_CHILDREN|wxNO_FULL_REPAINT_ON_RESIZE);
+
+    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 OnNotebook(wxNotebookEvent& event);
+
+    void OnUpdateUIBtnDeleteCurPage(wxUpdateUIEvent& event);
+    void OnUpdateUIBtnDeleteLastPage(wxUpdateUIEvent& event);
+
     void OnIdle(wxIdleEvent& event);
 
-    void Init();
+private:
+    wxLog *m_logTargetOld;
+
 
-protected:
-    wxNotebook*     m_notebook;
-    wxPanel*        m_panel; // Panel containing notebook and OK/Cancel/Help
+    // Controls
+
+    wxPanel *m_panel; // Panel containing notebook and other controls
+
+    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;
+
+    // Log window
+    wxTextCtrl *m_text;
+
+
+    // 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;
+
+    // Sizer for m_notebook
+    wxBookCtrlSizer *m_sizerNotebook;
+
+    wxImageList *m_imageList;
 
     DECLARE_EVENT_TABLE()
 };
 
-#endif // USE_TABBED_DIALOG
-
-// File ids
-#define TEST_ABOUT          2
-
-// Tab ids
-#define TEST_TAB_DOG        1
-#define TEST_TAB_CAT        2
-#define TEST_TAB_GOAT       3
-#define TEST_TAB_GUINEAPIG  4
-#define TEST_TAB_ANTEATER   5
-#define TEST_TAB_HUMMINGBIRD 6
-#define TEST_TAB_SHEEP      7
-#define TEST_TAB_COW        8
-#define TEST_TAB_HORSE      9
-#define TEST_TAB_PIG        10
-#define TEST_TAB_OSTRICH    11
-#define TEST_TAB_AARDVARK   12
-
-#define ID_NOTEBOOK         1000
-#define ID_ADD_PAGE         1200
-#define ID_DELETE_PAGE      1201
-#define ID_NEXT_PAGE        1202
-#define ID_INSERT_PAGE      1203
+enum ID_CONTROLS
+{
+    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
+};
+
+// 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.
+*/
+
+#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 ")