X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/028003016290b62becb31873c38a202d6e61eec4..10434f3c24ae2faf228b6b6c6b6cb6de0c26213d:/samples/notebook/test.cpp diff --git a/samples/notebook/test.cpp b/samples/notebook/test.cpp index f86b14b797..e140f42cc5 100644 --- a/samples/notebook/test.cpp +++ b/samples/notebook/test.cpp @@ -6,28 +6,29 @@ // Created: 26/10/98 // RCS-ID: $Id$ // Copyright: (c) -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" #ifdef __BORLANDC__ -#pragma hdrstop + #pragma hdrstop #endif #ifndef WX_PRECOMP -#include "wx/wx.h" + #include "wx/wx.h" #endif -#include "wx/tab.h" #include "test.h" // If 1, use a dialog. Otherwise use a frame. #define USE_TABBED_DIALOG 0 - +#if USE_TABBED_DIALOG MyDialog* dialog = (MyDialog *) NULL; +#else // !USE_TABBED_DIALOG MyFrame* frame = (MyFrame *) NULL; +#endif // USE_TABBED_DIALOG IMPLEMENT_APP(MyApp) @@ -42,20 +43,25 @@ bool MyApp::OnInit(void) // Quit immediately the dialog has been dismissed return FALSE; #else - frame = new MyFrame((wxFrame*) NULL, -1, (char *) "Notebook", wxPoint(-1, -1), wxSize(365, 390), wxDEFAULT_FRAME_STYLE); + frame = new MyFrame((wxFrame*) NULL, -1, "Notebook", wxPoint(-1, -1), wxSize(365, 390) ); + + // Problem with generic wxNotebook implementation whereby it doesn't size properly unless + // you set the size again +#if defined(__WIN16__) + int width, height; + frame->GetSize(& width, & height); + frame->SetSize(-1, -1, width, height); +#endif return TRUE; #endif } -void MyApp::InitTabView(wxNotebook* notebook, wxWindow* window) +void MyApp::InitTabView(wxNotebook* notebook, wxPanel* window) { - int dialogWidth = 365; - int dialogHeight = 390; - m_okButton = new wxButton(window, wxID_OK, "Close", wxPoint(-1, -1), wxSize(80, 25)); - m_cancelButton = new wxButton(window, wxID_CANCEL, "Cancel", wxPoint(-1, -1), wxSize(80, 25)); - m_helpButton = new wxButton(window, wxID_HELP, "Help", wxPoint(-1, -1), wxSize(80, 25)); + m_cancelButton = new wxButton(window, ID_DELETE_PAGE, "Delete page", wxPoint(-1, -1), wxSize(80, 25)); + m_addPageButton = new wxButton(window, ID_ADD_PAGE, "Add page", wxPoint(-1, -1), wxSize(80, 25)); m_okButton->SetDefault(); wxLayoutConstraints* c = new wxLayoutConstraints; @@ -63,10 +69,10 @@ void MyApp::InitTabView(wxNotebook* notebook, wxWindow* window) c->bottom.SameAs(window, wxBottom, 4); c->height.AsIs(); c->width.AsIs(); - m_helpButton->SetConstraints(c); + m_addPageButton->SetConstraints(c); c = new wxLayoutConstraints; - c->right.SameAs(m_helpButton, wxLeft, 4); + c->right.SameAs(m_addPageButton, wxLeft, 4); c->bottom.SameAs(window, wxBottom, 4); c->height.AsIs(); c->width.AsIs(); @@ -84,17 +90,34 @@ void MyApp::InitTabView(wxNotebook* notebook, wxWindow* window) // panel1->SetBackgroundColour(wxColour("RED")); (void)new wxButton(panel1, -1, "Press me", wxPoint(10, 10)); (void)new wxTextCtrl(panel1, -1, "1234", wxPoint(10, 40), wxSize(120, 150)); - - notebook->AddPage(panel1, "Cat"); + + notebook->AddPage(panel1, "Cat", TRUE); wxPanel *panel2 = new wxPanel(notebook, -1); + panel2->SetAutoLayout(TRUE); panel2->SetBackgroundColour(wxColour("BLUE")); wxString animals[] = { "Fox", "Hare", "Rabbit", "Sabre-toothed tiger", "T Rex" }; - (void)new wxListBox(panel2, -1, wxPoint(5, 5), wxSize(170, 80), 5, animals); + wxRadioBox *radiobox = new wxRadioBox(panel2, -1, "Choose one", + wxDefaultPosition, wxDefaultSize, 5, animals); - (void)new wxTextCtrl(panel2, -1, "Some notes about the animals in this house", wxPoint(5, 100), wxSize(170, 100), - wxTE_MULTILINE); + c = new wxLayoutConstraints; + c->left.SameAs(panel2, wxLeft, 4); + c->top.SameAs(panel2, wxTop, 4); + c->height.PercentOf(panel2, wxHeight, 50); + c->right.SameAs(panel2, wxRight, 4); + radiobox->SetConstraints(c); + + wxRadioBox *radiobox2 = new wxRadioBox(panel2, -1, "Choose one", + wxDefaultPosition, wxDefaultSize, + 5, animals, + 2, wxRA_SPECIFY_ROWS); + c = new wxLayoutConstraints; + c->left.SameAs(radiobox, wxLeft); + c->height.AsIs(); + c->top.Below(radiobox, 4); + c->right.SameAs(radiobox, wxRight); + radiobox2->SetConstraints(c); notebook->AddPage(panel2, "Dog"); @@ -105,8 +128,17 @@ void MyApp::InitTabView(wxNotebook* notebook, wxWindow* window) wxPanel *panel4 = new wxPanel(notebook, -1); panel4->SetBackgroundColour(wxColour("YELLOW")); notebook->AddPage(panel4, "Sheep"); + + wxPanel *panel5 = new wxPanel(notebook, -1); + panel5->SetBackgroundColour(wxColour("MAGENTA")); + (void)new wxStaticText(panel5, -1, "This page has been inserted, not added", wxPoint(10, 10) ); + notebook->InsertPage(0, panel5, "Sheep"); + + notebook->SetSelection(2); } +#if USE_TABBED_DIALOG + BEGIN_EVENT_TABLE(MyDialog, wxDialog) EVT_BUTTON(wxID_OK, MyDialog::OnOK) EVT_BUTTON(wxID_CANCEL, MyDialog::OnOK) @@ -131,9 +163,6 @@ void MyDialog::OnCloseWindow(wxCloseEvent& WXUNUSED(event) ) void MyDialog::Init(void) { - int dialogWidth = 365; - int dialogHeight = 390; - m_notebook = new wxNotebook(this, ID_NOTEBOOK); wxLayoutConstraints* c = new wxLayoutConstraints; @@ -149,13 +178,16 @@ void MyDialog::Init(void) SetAutoLayout(TRUE); Layout(); - this->Centre(wxBOTH); + Centre(wxBOTH); } +#else // USE_TABBED_DIALOG + BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_BUTTON(wxID_OK, MyFrame::OnOK) - EVT_BUTTON(wxID_CANCEL, MyFrame::OnOK) - EVT_SIZE(MyFrame::OnSize) + EVT_BUTTON(ID_DELETE_PAGE, MyFrame::OnDeletePage) + EVT_BUTTON(ID_ADD_PAGE, MyFrame::OnAddPage) + EVT_IDLE(MyFrame::OnIdle) END_EVENT_TABLE() MyFrame::MyFrame(wxFrame* parent, const wxWindowID id, const wxString& title, @@ -167,28 +199,45 @@ MyFrame::MyFrame(wxFrame* parent, const wxWindowID id, const wxString& title, Init(); } +void MyFrame::OnAddPage(wxCommandEvent& WXUNUSED(event)) +{ + wxPanel *panel = new wxPanel( m_notebook, -1 ); + (void)new wxButton( panel, -1, "Button", wxPoint( 10,10 ), wxSize(-1,-1) ); + m_notebook->AddPage( panel, "Added" ); +// m_notebook->SetSelection( m_notebook->GetPageCount()-1 ); +} + +void MyFrame::OnDeletePage(wxCommandEvent& WXUNUSED(event)) +{ + m_notebook->DeletePage( m_notebook->GetPageCount()-1 ); +} + void MyFrame::OnOK(wxCommandEvent& WXUNUSED(event) ) { - this->Destroy(); + Destroy(); } void MyFrame::OnCloseWindow(wxCloseEvent& WXUNUSED(event) ) { - this->Destroy(); + Destroy(); } void MyFrame::Init(void) { - int dialogWidth = 365; - int dialogHeight = 390; - m_panel = new wxPanel(this, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL|wxCLIP_CHILDREN); + wxLayoutConstraints* c = new wxLayoutConstraints; + c->left.SameAs(this, wxLeft); + c->right.SameAs(this, wxRight); + c->top.SameAs(this, wxTop); + c->bottom.SameAs(this, wxBottom); + m_panel->SetConstraints(c); + // Note, omit the wxTAB_STYLE_COLOUR_INTERIOR, so we will guarantee a match // with the panel background, and save a bit of time. m_notebook = new wxNotebook(m_panel, ID_NOTEBOOK); - wxLayoutConstraints* c = new wxLayoutConstraints; + c = new wxLayoutConstraints; c->left.SameAs(m_panel, wxLeft, 4); c->right.SameAs(m_panel, wxRight, 4); c->top.SameAs(m_panel, wxTop, 4); @@ -199,17 +248,30 @@ void MyFrame::Init(void) wxGetApp().InitTabView(m_notebook, m_panel); m_panel->SetAutoLayout(TRUE); + SetAutoLayout(TRUE); - m_panel->Layout(); - - this->Centre(wxBOTH); + Centre(wxBOTH); Show(TRUE); } -void MyFrame::OnSize(wxSizeEvent& event) +void MyFrame::OnIdle(wxIdleEvent& WXUNUSED(event)) { - wxFrame::OnSize(event); - m_panel->Layout(); + static int s_nPages = -1; + static int s_nSel = -1; + + int nPages = m_notebook->GetPageCount(); + int nSel = m_notebook->GetSelection(); + if ( nPages != s_nPages || nSel != s_nSel ) + { + s_nPages = nPages; + s_nSel = nSel; + + wxString title; + title.Printf("Notebook (%d pages, selection: %d)", nPages, nSel); + + SetTitle(title); + } } +#endif // USE_TABBED_DIALOG