]> git.saurik.com Git - wxWidgets.git/blob - samples/notebook/notebook.h
fixed notebook sample page creation for wxGTK (patch 581280)
[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 #include "wx/notebook.h"
13
14 // Define a new application
15 class MyApp : public wxApp
16 {
17 public:
18 bool OnInit();
19 };
20
21 DECLARE_APP(MyApp)
22
23 //
24 class MyNotebook : public wxNotebook
25 {
26 public:
27 MyNotebook(wxWindow *parent, wxWindowID id = -1,
28 const wxPoint& pos = wxDefaultPosition,
29 const wxSize& size = wxDefaultSize, long style = 0);
30
31 void CreateInitialPages();
32
33 wxPanel *CreatePage(const wxString& pageName);
34
35 wxPanel *CreateUserCreatedPage();
36
37 int GetIconIndex() const;
38
39 private:
40 wxPanel *CreateInsertPage();
41 wxPanel *CreateRadioButtonsPage();
42 wxPanel *CreateVetoPage();
43 wxPanel *CreateBigButtonPage();
44 };
45
46 //
47 class MyFrame : public wxFrame
48 {
49 public:
50 MyFrame(const wxString& title, const wxPoint& pos = wxDefaultPosition,
51 const wxSize& size = wxDefaultSize, long style = wxDEFAULT_FRAME_STYLE);
52
53 virtual ~MyFrame();
54
55 // Recreates the notebook with the same pages, but with possibly
56 // a different orientation and optionally with images.
57 void ReInitNotebook();
58
59 void OnCheckOrRadioBox(wxCommandEvent& event);
60
61 void OnButtonAddPage(wxCommandEvent& event);
62 void OnButtonInsertPage(wxCommandEvent& event);
63 void OnButtonDeletePage(wxCommandEvent& event);
64 void OnButtonNextPage(wxCommandEvent& event);
65
66 void OnButtonExit(wxCommandEvent& event);
67
68 void OnNotebook(wxNotebookEvent& event);
69
70 void OnIdle(wxIdleEvent& event);
71
72
73 private:
74 wxLog *m_logTargetOld;
75
76
77 // Controls
78
79 wxPanel *m_panel; // Panel containing notebook and other controls
80
81 wxRadioBox *m_radioOrient;
82 wxCheckBox *m_chkShowImages;
83
84 wxButton *m_btnAddPage;
85 wxButton *m_btnInsertPage;
86 wxButton *m_btnDeletePage;
87 wxButton *m_btnNextPage;
88 wxButton *m_btnExit;
89
90 MyNotebook *m_notebook;
91
92 // Log window
93 wxTextCtrl *m_text;
94
95
96 // Sizers
97
98 // The frame's sizer. Consists of m_sizerTop and the log window
99 // at the bottom.
100 wxBoxSizer *m_sizerFrame;
101
102 // Sizer that contains the notebook and controls on the left
103 wxBoxSizer *m_sizerTop;
104
105 // Sizer for m_notebook
106 wxNotebookSizer *m_sizerNotebook;
107
108 wxImageList *m_imageList;
109
110 DECLARE_EVENT_TABLE()
111 };
112
113 enum ID_CONTROLS
114 {
115 ID_RADIO_ORIENT = wxID_HIGHEST,
116 ID_CHK_SHOWIMAGES,
117 ID_BTN_ADD_PAGE,
118 ID_BTN_INSERT_PAGE,
119 ID_BTN_DELETE_PAGE,
120 ID_BTN_NEXT_PAGE,
121 ID_NOTEBOOK
122 };
123
124 // notebook orientations
125 enum ORIENT
126 {
127 ORIENT_TOP,
128 ORIENT_BOTTOM,
129 ORIENT_LEFT,
130 ORIENT_RIGHT,
131 ORIENT_MAX
132 };
133
134 /*
135 Name of each notebook page.
136 Used as a label for a page, and used when cloning the notebook
137 to decide what type of page it is.
138 */
139
140 #define I_WAS_INSERTED_PAGE_NAME wxT("Inserted")
141 #define RADIOBUTTONS_PAGE_NAME wxT("Radiobuttons")
142 #define VETO_PAGE_NAME wxT("Veto")
143 #define MAXIMIZED_BUTTON_PAGE_NAME wxT("Maximized button")
144
145 // Pages that can be added by the user
146 #define INSERTED_PAGE_NAME wxT("Inserted ")
147 #define ADDED_PAGE_NAME wxT("Added ")