]>
git.saurik.com Git - wxWidgets.git/blob - samples/notebook/test.cpp
1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: wxNotebook demo
4 // Author: Julian Smart
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
12 // For compilers that support precompilation, includes "wx.h".
13 #include "wx/wxprec.h"
25 // If 1, use a dialog. Otherwise use a frame.
26 #define USE_TABBED_DIALOG 0
28 MyDialog
* dialog
= (MyDialog
*) NULL
;
29 MyFrame
* frame
= (MyFrame
*) NULL
;
33 bool MyApp::OnInit(void)
35 // Create the main window
37 dialog
= new MyDialog((wxFrame
*) NULL
, -1, (char *) "Notebook", wxPoint(-1, -1), wxSize(365, 390), wxDIALOG_MODAL
|wxDEFAULT_DIALOG_STYLE
);
41 // Quit immediately the dialog has been dismissed
44 frame
= new MyFrame((wxFrame
*) NULL
, -1, (char *) "Notebook", wxPoint(-1, -1), wxSize(365, 390), wxDEFAULT_FRAME_STYLE
);
46 // Problem with generic wxNotebook implementation whereby it doesn't size properly unless
47 // you set the size again
48 #if defined(__WIN16__)
50 frame
->GetSize(& width
, & height
);
51 frame
->SetSize(-1, -1, width
, height
);
58 void MyApp::InitTabView(wxNotebook
* notebook
, wxWindow
* window
)
60 m_okButton
= new wxButton(window
, wxID_OK
, "Close", wxPoint(-1, -1), wxSize(80, 25));
61 m_cancelButton
= new wxButton(window
, wxID_CANCEL
, "Cancel", wxPoint(-1, -1), wxSize(80, 25));
62 m_addPageButton
= new wxButton(window
, ID_ADD_PAGE
, "Add page", wxPoint(-1, -1), wxSize(80, 25));
63 m_okButton
->SetDefault();
65 wxLayoutConstraints
* c
= new wxLayoutConstraints
;
66 c
->right
.SameAs(window
, wxRight
, 4);
67 c
->bottom
.SameAs(window
, wxBottom
, 4);
70 m_addPageButton
->SetConstraints(c
);
72 c
= new wxLayoutConstraints
;
73 c
->right
.SameAs(m_addPageButton
, wxLeft
, 4);
74 c
->bottom
.SameAs(window
, wxBottom
, 4);
77 m_cancelButton
->SetConstraints(c
);
79 c
= new wxLayoutConstraints
;
80 c
->right
.SameAs(m_cancelButton
, wxLeft
, 4);
81 c
->bottom
.SameAs(window
, wxBottom
, 4);
84 m_okButton
->SetConstraints(c
);
87 wxPanel
*panel1
= new wxPanel(notebook
, -1);
88 // panel1->SetBackgroundColour(wxColour("RED"));
89 (void)new wxButton(panel1
, -1, "Press me", wxPoint(10, 10));
90 (void)new wxTextCtrl(panel1
, -1, "1234", wxPoint(10, 40), wxSize(120, 150));
92 notebook
->AddPage(panel1
, "Cat", TRUE
);
94 wxPanel
*panel2
= new wxPanel(notebook
, -1);
95 panel2
->SetBackgroundColour(wxColour("BLUE"));
97 wxString animals
[] = { "Fox", "Hare", "Rabbit", "Sabre-toothed tiger", "T Rex" };
98 (void)new wxListBox(panel2
, -1, wxPoint(5, 5), wxSize(170, 80), 5, animals
);
100 (void)new wxTextCtrl(panel2
, -1, "Some notes about the animals in this house", wxPoint(5, 100), wxSize(170, 100),
103 notebook
->AddPage(panel2
, "Dog");
104 wxPanel
*panel3
= new wxPanel(notebook
, -1);
105 panel3
->SetBackgroundColour(wxColour("WHITE"));
106 notebook
->AddPage(panel3
, "Goat");
108 wxPanel
*panel4
= new wxPanel(notebook
, -1);
109 panel4
->SetBackgroundColour(wxColour("YELLOW"));
110 notebook
->AddPage(panel4
, "Sheep");
113 BEGIN_EVENT_TABLE(MyDialog
, wxDialog
)
114 EVT_BUTTON(wxID_OK
, MyDialog::OnOK
)
115 EVT_BUTTON(wxID_CANCEL
, MyDialog::OnOK
)
118 MyDialog::MyDialog(wxWindow
* parent
, const wxWindowID id
, const wxString
& title
,
119 const wxPoint
& pos
, const wxSize
& size
, const long windowStyle
):
120 wxDialog(parent
, id
, title
, pos
, size
, windowStyle
)
125 void MyDialog::OnOK(wxCommandEvent
& WXUNUSED(event
) )
130 void MyDialog::OnCloseWindow(wxCloseEvent
& WXUNUSED(event
) )
132 EndModal(wxID_CANCEL
);
135 void MyDialog::Init(void)
137 m_notebook
= new wxNotebook(this, ID_NOTEBOOK
);
139 wxLayoutConstraints
* c
= new wxLayoutConstraints
;
140 c
->left
.SameAs(this, wxLeft
, 4);
141 c
->right
.SameAs(this, wxRight
, 4);
142 c
->top
.SameAs(this, wxTop
, 4);
143 c
->bottom
.SameAs(this, wxBottom
, 40);
145 m_notebook
->SetConstraints(c
);
147 wxGetApp().InitTabView(m_notebook
, this);
152 this->Centre(wxBOTH
);
155 BEGIN_EVENT_TABLE(MyFrame
, wxFrame
)
156 EVT_BUTTON(wxID_OK
, MyFrame::OnOK
)
157 EVT_BUTTON(wxID_CANCEL
, MyFrame::OnOK
)
158 EVT_BUTTON(ID_ADD_PAGE
, MyFrame::OnAddPage
)
159 EVT_SIZE(MyFrame::OnSize
)
162 MyFrame::MyFrame(wxFrame
* parent
, const wxWindowID id
, const wxString
& title
,
163 const wxPoint
& pos
, const wxSize
& size
, const long windowStyle
):
164 wxFrame(parent
, id
, title
, pos
, size
, windowStyle
)
166 m_panel
= (wxPanel
*) NULL
;
167 m_notebook
= (wxNotebook
*) NULL
;
171 void MyFrame::OnAddPage(wxCommandEvent
& WXUNUSED(event
))
173 wxPanel
*panel
= new wxPanel( m_notebook
, -1 );
174 (void)new wxButton( panel
, -1, "Button", wxPoint( 10,10 ), wxSize(-1,-1) );
175 m_notebook
->AddPage( panel
, "Added" );
176 m_notebook
->SetSelection( m_notebook
->GetPageCount()-1 );
179 void MyFrame::OnOK(wxCommandEvent
& WXUNUSED(event
) )
184 void MyFrame::OnCloseWindow(wxCloseEvent
& WXUNUSED(event
) )
189 void MyFrame::Init(void)
191 m_panel
= new wxPanel(this, -1, wxDefaultPosition
, wxDefaultSize
, wxTAB_TRAVERSAL
|wxCLIP_CHILDREN
);
193 // Note, omit the wxTAB_STYLE_COLOUR_INTERIOR, so we will guarantee a match
194 // with the panel background, and save a bit of time.
195 m_notebook
= new wxNotebook(m_panel
, ID_NOTEBOOK
);
197 wxLayoutConstraints
* c
= new wxLayoutConstraints
;
198 c
->left
.SameAs(m_panel
, wxLeft
, 4);
199 c
->right
.SameAs(m_panel
, wxRight
, 4);
200 c
->top
.SameAs(m_panel
, wxTop
, 4);
201 c
->bottom
.SameAs(m_panel
, wxBottom
, 40);
203 m_notebook
->SetConstraints(c
);
205 wxGetApp().InitTabView(m_notebook
, m_panel
);
207 m_panel
->SetAutoLayout(TRUE
);
211 this->Centre(wxBOTH
);
216 void MyFrame::OnSize(wxSizeEvent
& event
)
218 wxFrame::OnSize(event
);