]> git.saurik.com Git - wxWidgets.git/blob - samples/notebook/notebook.h
Implement NSMenuValidation protocol for the wxNSMenuItemTarget
[wxWidgets.git] / samples / notebook / notebook.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: samples/notebook/notebook.h
3 // Purpose: a sample demonstrating notebook usage
4 // Author: Julian Smart
5 // Modified by: Dimitri Schoolwerth
6 // Created: 25/10/98
7 // RCS-ID: $Id$
8 // Copyright: (c) 1998-2002 wxWindows team
9 // License: wxWindows license
10 /////////////////////////////////////////////////////////////////////////////
11
12 // this sample can be used to test both wxNotebook and wxListbook
13 //#define TEST_LISTBOOK
14
15 #ifdef TEST_LISTBOOK
16 #include "wx/listbook.h"
17
18 #define wxNotebook wxListbook
19 #define wxNotebookEvent wxListbookEvent
20
21 #define wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED wxEVT_COMMAND_LISTBOOK_PAGE_CHANGED
22 #define wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING wxEVT_COMMAND_LISTBOOK_PAGE_CHANGING
23 #define EVT_NOTEBOOK_PAGE_CHANGED EVT_LISTBOOK_PAGE_CHANGED
24 #define EVT_NOTEBOOK_PAGE_CHANGING EVT_LISTBOOK_PAGE_CHANGING
25
26 #undef wxNB_TOP
27 #define wxNB_TOP wxLB_TOP
28 #undef wxNB_BOTTOM
29 #define wxNB_BOTTOM wxLB_BOTTOM
30 #undef wxNB_LEFT
31 #define wxNB_LEFT wxLB_LEFT
32 #undef wxNB_RIGHT
33 #define wxNB_RIGHT wxLB_RIGHT
34 #else
35 #include "wx/notebook.h"
36 #endif
37
38 // Define a new application
39 class MyApp : public wxApp
40 {
41 public:
42 bool OnInit();
43 };
44
45 DECLARE_APP(MyApp)
46
47 //
48 class MyNotebook : public wxNotebook
49 {
50 public:
51 MyNotebook(wxWindow *parent, wxWindowID id = -1,
52 const wxPoint& pos = wxDefaultPosition,
53 const wxSize& size = wxDefaultSize, long style = 0);
54
55 void CreateInitialPages();
56
57 wxPanel *CreatePage(const wxString& pageName);
58
59 wxPanel *CreateUserCreatedPage();
60
61 int GetIconIndex() const;
62
63 private:
64 wxPanel *CreateInsertPage();
65 wxPanel *CreateRadioButtonsPage();
66 wxPanel *CreateVetoPage();
67 wxPanel *CreateBigButtonPage();
68 };
69
70 //
71 class MyFrame : public wxFrame
72 {
73 public:
74 MyFrame(const wxString& title, const wxPoint& pos = wxDefaultPosition,
75 const wxSize& size = wxDefaultSize, long style = wxDEFAULT_FRAME_STYLE|wxCLIP_CHILDREN|wxNO_FULL_REPAINT_ON_RESIZE);
76
77 virtual ~MyFrame();
78
79 // Recreates the notebook with the same pages, but with possibly
80 // a different orientation and optionally with images.
81 void ReInitNotebook();
82
83 void OnCheckOrRadioBox(wxCommandEvent& event);
84
85 void OnButtonAddPage(wxCommandEvent& event);
86 void OnButtonInsertPage(wxCommandEvent& event);
87 void OnButtonDeleteCurPage(wxCommandEvent& event);
88 void OnButtonDeleteLastPage(wxCommandEvent& event);
89 void OnButtonNextPage(wxCommandEvent& event);
90 void OnButtonExit(wxCommandEvent& event);
91
92 void OnNotebook(wxNotebookEvent& event);
93
94 void OnUpdateUIBtnDeleteCurPage(wxUpdateUIEvent& event);
95 void OnUpdateUIBtnDeleteLastPage(wxUpdateUIEvent& event);
96
97 void OnIdle(wxIdleEvent& event);
98
99 private:
100 wxLog *m_logTargetOld;
101
102
103 // Controls
104
105 wxPanel *m_panel; // Panel containing notebook and other controls
106
107 wxRadioBox *m_radioOrient;
108 wxCheckBox *m_chkShowImages;
109
110 wxButton *m_btnAddPage;
111 wxButton *m_btnInsertPage;
112 wxButton *m_btnDeleteCurPage;
113 wxButton *m_btnDeleteLastPage;
114 wxButton *m_btnNextPage;
115 wxButton *m_btnExit;
116
117 MyNotebook *m_notebook;
118
119 // Log window
120 wxTextCtrl *m_text;
121
122
123 // Sizers
124
125 // The frame's sizer. Consists of m_sizerTop and the log window
126 // at the bottom.
127 wxBoxSizer *m_sizerFrame;
128
129 // Sizer that contains the notebook and controls on the left
130 wxBoxSizer *m_sizerTop;
131
132 // Sizer for m_notebook
133 wxBookCtrlSizer *m_sizerNotebook;
134
135 wxImageList *m_imageList;
136
137 DECLARE_EVENT_TABLE()
138 };
139
140 enum ID_CONTROLS
141 {
142 ID_RADIO_ORIENT = wxID_HIGHEST,
143 ID_CHK_SHOWIMAGES,
144 ID_BTN_ADD_PAGE,
145 ID_BTN_INSERT_PAGE,
146 ID_BTN_DELETE_CUR_PAGE,
147 ID_BTN_DELETE_LAST_PAGE,
148 ID_BTN_NEXT_PAGE,
149 ID_NOTEBOOK
150 };
151
152 // notebook orientations
153 enum ORIENT
154 {
155 ORIENT_TOP,
156 ORIENT_BOTTOM,
157 ORIENT_LEFT,
158 ORIENT_RIGHT,
159 ORIENT_MAX
160 };
161
162 /*
163 Name of each notebook page.
164 Used as a label for a page, and used when cloning the notebook
165 to decide what type of page it is.
166 */
167
168 #define I_WAS_INSERTED_PAGE_NAME wxT("Inserted")
169 #define RADIOBUTTONS_PAGE_NAME wxT("Radiobuttons")
170 #define VETO_PAGE_NAME wxT("Veto")
171 #define MAXIMIZED_BUTTON_PAGE_NAME wxT("Maximized button")
172
173 // Pages that can be added by the user
174 #define INSERTED_PAGE_NAME wxT("Inserted ")
175 #define ADDED_PAGE_NAME wxT("Added ")