X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/be5a51fb592f3fa2ba38ac6cd1e488d6d806058c..1296186133b677fdbaddfc1551b2b2c7321dac39:/samples/layout/layout.cpp diff --git a/samples/layout/layout.cpp b/samples/layout/layout.cpp index ad7d19a860..ed27778a83 100644 --- a/samples/layout/layout.cpp +++ b/samples/layout/layout.cpp @@ -37,10 +37,6 @@ IMPLEMENT_APP(MyApp) -MyApp::MyApp() -{ -} - bool MyApp::OnInit() { // Create the main frame window @@ -61,7 +57,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(LAYOUT_TEST_SIZER, MyFrame::TestFlexSizers) EVT_MENU(LAYOUT_TEST_NB_SIZER, MyFrame::TestNotebookSizers) - EVT_MENU(LAYOUT_TEST_GB_SIZER, MyFrame::TestGridBagSizer) + EVT_MENU(LAYOUT_TEST_GB_SIZER, MyFrame::TestGridBagSizer) END_EVENT_TABLE() // Define my frame constructor @@ -91,9 +87,10 @@ MyFrame::MyFrame() // Associate the menu bar with the frame SetMenuBar(menu_bar); +#if wxUSE_STATUSBAR CreateStatusBar(2); SetStatusText(_T("wxWidgets layout demo")); - +#endif // wxUSE_STATUSBAR // we want to get a dialog that is stretchable because it // has a text ctrl in the middle. at the bottom, we have @@ -104,74 +101,60 @@ MyFrame::MyFrame() // 1) top: create wxStaticText with minimum size equal to its default size topsizer->Add( new wxStaticText( this, wxID_ANY, _T("An explanation (wxALIGN_RIGHT).") ), - 0, // make vertically unstretchable - wxALIGN_RIGHT | // right align text - wxTOP | wxLEFT | wxRIGHT, // make border all around except wxBOTTOM - 5 ); // set border width to 5 + wxSizerFlags().Align(wxALIGN_RIGHT).Border(wxALL & ~wxBOTTOM, 5)); // 2) top: create wxTextCtrl with minimum size (100x60) topsizer->Add( new wxTextCtrl( this, wxID_ANY, _T("My text (wxEXPAND)."), wxDefaultPosition, wxSize(100,60), wxTE_MULTILINE), - 1, // make vertically stretchable - wxEXPAND | // make horizontally stretchable - wxALL, // and make border all around - 5 ); // set border width to 5 + wxSizerFlags(1).Expand().Border(wxALL, 5)); // 2.5) Gratuitous test of wxStaticBoxSizers wxBoxSizer *statsizer = new wxStaticBoxSizer( - new wxStaticBox(this, wxID_ANY, _T("A wxStaticBoxSizer")), - wxVERTICAL ); + new wxStaticBox(this, wxID_ANY, _T("A wxStaticBoxSizer")), wxVERTICAL ); statsizer->Add( new wxStaticText(this, wxID_ANY, _T("And some TEXT inside it")), - 0, - wxCENTER | - wxALL, - 30); - topsizer->Add(statsizer, 1, wxEXPAND | wxALL, 10); + wxSizerFlags().Center().Border(wxALL, 30)); + topsizer->Add( + statsizer, + wxSizerFlags(1).Expand().Border(wxALL, 10)); // 2.7) And a test of wxGridSizer wxGridSizer *gridsizer = new wxGridSizer(2, 5, 5); - gridsizer->Add(new wxStaticText(this, wxID_ANY, _T("Label")), 0, - wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); - gridsizer->Add(new wxTextCtrl(this, wxID_ANY, _T("Grid sizer demo")), 1, - wxGROW | wxALIGN_CENTER_VERTICAL); - gridsizer->Add(new wxStaticText(this, wxID_ANY, _T("Another label")), 0, - wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); - gridsizer->Add(new wxTextCtrl(this, wxID_ANY, _T("More text")), 1, - wxGROW | wxALIGN_CENTER_VERTICAL); - gridsizer->Add(new wxStaticText(this, wxID_ANY, _T("Final label")), 0, - wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); - gridsizer->Add(new wxTextCtrl(this, wxID_ANY, _T("And yet more text")), 1, - wxGROW | wxALIGN_CENTER_VERTICAL); - topsizer->Add(gridsizer, 1, wxGROW | wxALL, 10); - - + gridsizer->Add(new wxStaticText(this, wxID_ANY, _T("Label")), + wxSizerFlags().Align(wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL)); + gridsizer->Add(new wxTextCtrl(this, wxID_ANY, _T("Grid sizer demo")), + wxSizerFlags(1).Align(wxGROW | wxALIGN_CENTER_VERTICAL)); + gridsizer->Add(new wxStaticText(this, wxID_ANY, _T("Another label")), + wxSizerFlags().Align(wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL)); + gridsizer->Add(new wxTextCtrl(this, wxID_ANY, _T("More text")), + wxSizerFlags(1).Align(wxGROW | wxALIGN_CENTER_VERTICAL)); + gridsizer->Add(new wxStaticText(this, wxID_ANY, _T("Final label")), + wxSizerFlags().Align(wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL)); + gridsizer->Add(new wxTextCtrl(this, wxID_ANY, _T("And yet more text")), + wxSizerFlags().Align(wxGROW | wxALIGN_CENTER_VERTICAL)); + topsizer->Add( + gridsizer, + wxSizerFlags().Proportion(1).Expand().Border(wxALL, 10)); + + +#if wxUSE_STATLINE // 3) middle: create wxStaticLine with minimum size (3x3) topsizer->Add( new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), - 0, // make vertically unstretchable - wxEXPAND | // make horizontally stretchable - wxALL, // and make border all around - 5 ); // set border width to 5 + wxSizerFlags().Expand()); +#endif // wxUSE_STATLINE // 4) bottom: create two centred wxButtons wxBoxSizer *button_box = new wxBoxSizer( wxHORIZONTAL ); button_box->Add( new wxButton( this, wxID_ANY, _T("Two buttons in a box") ), - 0, // make horizontally unstretchable - wxALL, // make border all around - 7 ); // set border width to 7 + wxSizerFlags().Border(wxALL, 7)); button_box->Add( new wxButton( this, wxID_ANY, _T("(wxCENTER)") ), - 0, // make horizontally unstretchable - wxALL, // make border all around - 7 ); // set border width to 7 + wxSizerFlags().Border(wxALL, 7)); - topsizer->Add( - button_box, - 0, // make vertically unstretchable - wxCENTER ); // no border and centre horizontally + topsizer->Add(button_box, wxSizerFlags().Center()); // don't allow frame to get smaller than what the sizers tell it and also set // the initial size as calculated by the sizers @@ -326,8 +309,7 @@ MySizerDialog::MySizerDialog(wxWindow *parent, const wxChar *title) wxBoxSizer *topsizer = new wxBoxSizer( wxVERTICAL ); wxNotebook *notebook = new wxNotebook( this, wxID_ANY ); - wxNotebookSizer *nbs = new wxNotebookSizer( notebook ); - topsizer->Add( nbs, 1, wxGROW ); + topsizer->Add( notebook, 1, wxGROW ); wxButton *button = new wxButton( this, wxID_OK, _T("OK") ); topsizer->Add( button, 0, wxALIGN_RIGHT | wxALL, 10 ); @@ -379,7 +361,7 @@ enum { GBS_SHOW_BTN, GBS_MOVE_BTN1, GBS_MOVE_BTN2, - + GBS_MAX, }; @@ -399,11 +381,11 @@ MyGridBagSizerFrame::MyGridBagSizerFrame(const wxChar *title, int x, int y ) m_panel = p; m_gbs = new wxGridBagSizer(); - + m_gbs->Add( new wxStaticText(p, wxID_ANY, gbsDescription), POS(0,0), SPAN(1, 7), wxALIGN_CENTER | wxALL, 5); - + m_gbs->Add( TEXTCTRL("pos(1,0)"), POS(1,0) ); m_gbs->Add( TEXTCTRL("pos(1,1)"), POS(1,1) ); m_gbs->Add( TEXTCTRL("pos(2,0)"), POS(2,0) ); @@ -415,7 +397,7 @@ MyGridBagSizerFrame::MyGridBagSizerFrame(const wxChar *title, int x, int y ) m_gbs->Add( TEXTCTRL("pos(5,4)"), POS(5,4), wxDefaultSpan, wxEXPAND ); m_gbs->Add( TEXTCTRL("pos(6,5)"), POS(6,5), wxDefaultSpan, wxEXPAND ); m_gbs->Add( TEXTCTRL("pos(7,6)"), POS(7,6) ); - + //m_gbs->Add( TEXTCTRL("bad position"), POS(4,3) ); // Test for assert //m_gbs->Add( TEXTCTRL("bad position"), POS(5,3) ); // Test for assert @@ -424,28 +406,28 @@ MyGridBagSizerFrame::MyGridBagSizerFrame(const wxChar *title, int x, int y ) m_moveBtn2 = new wxButton(p, GBS_MOVE_BTN2, _T("Move this to (3,6)")); m_gbs->Add( m_moveBtn1, POS(10,2) ); m_gbs->Add( m_moveBtn2, POS(10,3) ); - + m_hideBtn = new wxButton(p, GBS_HIDE_BTN, _T("Hide this item -->")); m_gbs->Add(m_hideBtn, POS(12, 3)); m_hideTxt = new wxTextCtrl(p, wxID_ANY, _T("pos(12,4), size(150, -1)"), wxDefaultPosition, wxSize(150,-1)); m_gbs->Add( m_hideTxt, POS(12,4) ); - + m_showBtn = new wxButton(p, GBS_SHOW_BTN, _T("<-- Show it again")); m_gbs->Add(m_showBtn, POS(12, 5)); m_showBtn->Disable(); m_gbs->Add(10,10, POS(14,0)); - + m_gbs->AddGrowableRow(3); m_gbs->AddGrowableCol(2); - + p->SetSizerAndFit(m_gbs); SetClientSize(p->GetSize()); } - + void MyGridBagSizerFrame::OnHideBtn(wxCommandEvent&) { m_gbs->Hide(m_hideTxt); @@ -474,14 +456,14 @@ void MyGridBagSizerFrame::OnMoveBtn(wxCommandEvent& event) m_gbs->SetItemPosition(btn, m_lastPos); btn->SetLabel(_T("Move this to (3,6)")); } - else + else { if ( m_gbs->CheckForIntersection(wxGBPosition(3,6), wxGBSpan(1,1)) ) wxMessageBox( _T("wxGridBagSizer will not allow items to be in the same cell as\n\ another item, so this operation will fail. You will also get an assert\n\ when compiled in debug mode."), _T("Warning"), wxOK | wxICON_INFORMATION); - + if ( m_gbs->SetItemPosition(btn, wxGBPosition(3,6)) ) { m_lastPos = curPos;