X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/92c0c17272f3cf7c8e54c17e1799d3813dbb459c..21b2dde583e83d3ad455c20fa8db717037b5f548:/samples/layout/layout.cpp diff --git a/samples/layout/layout.cpp b/samples/layout/layout.cpp index a732022995..606813fc27 100644 --- a/samples/layout/layout.cpp +++ b/samples/layout/layout.cpp @@ -41,6 +41,9 @@ IMPLEMENT_APP(MyApp) bool MyApp::OnInit() { + if ( !wxApp::OnInit() ) + return false; + // Create the main frame window MyFrame *frame = new MyFrame; @@ -62,6 +65,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(LAYOUT_TEST_NB_SIZER, MyFrame::TestNotebookSizers) EVT_MENU(LAYOUT_TEST_GB_SIZER, MyFrame::TestGridBagSizer) EVT_MENU(LAYOUT_TEST_SET_MINIMAL, MyFrame::TestSetMinimal) + EVT_MENU(LAYOUT_TEST_NESTED, MyFrame::TestNested) END_EVENT_TABLE() // Define my frame constructor @@ -78,6 +82,7 @@ MyFrame::MyFrame() file_menu->Append(LAYOUT_TEST_NB_SIZER, _T("Test ¬ebook sizers...\tF3")); file_menu->Append(LAYOUT_TEST_GB_SIZER, _T("Test &gridbag sizer...\tF4")); file_menu->Append(LAYOUT_TEST_SET_MINIMAL, _T("Test Set&ItemMinSize...\tF5")); + file_menu->Append(LAYOUT_TEST_NESTED, _T("Test nested sizer in a wxPanel...\tF6")); file_menu->AppendSeparator(); file_menu->Append(LAYOUT_QUIT, _T("E&xit"), _T("Quit program")); @@ -98,8 +103,8 @@ MyFrame::MyFrame() SetStatusText(_T("wxWidgets layout demo")); #endif // wxUSE_STATUSBAR - wxPanel* p = new wxPanel(this, -1); - + wxPanel* p = new wxPanel(this, wxID_ANY); + // we want to get a dialog that is stretchable because it // has a text ctrl in the middle. at the bottom, we have // two buttons which. @@ -165,7 +170,7 @@ MyFrame::MyFrame() topsizer->Add(button_box, wxSizerFlags().Center()); p->SetSizer( topsizer ); - + // don't allow frame to get smaller than what the sizers tell it and also set // the initial size as calculated by the sizers topsizer->SetSizeHints( this ); @@ -200,6 +205,12 @@ void MyFrame::TestSetMinimal(wxCommandEvent& WXUNUSED(event) ) newFrame->Show(true); } +void MyFrame::TestNested(wxCommandEvent& WXUNUSED(event) ) +{ + MyNestedSizerFrame *newFrame = new MyNestedSizerFrame(_T("Nested Sizer Test Frame"), 50, 50); + newFrame->Show(true); +} + void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event) ) { @@ -299,7 +310,7 @@ MyFlexSizerFrame::MyFlexSizerFrame(const wxChar *title, int x, int y ) : wxFrame(NULL, wxID_ANY, title, wxPoint(x, y) ) { wxFlexGridSizer *sizerFlex; - wxPanel* p = new wxPanel(this, -1); + wxPanel* p = new wxPanel(this, wxID_ANY); // consttuct the first column wxSizer *sizerCol1 = new wxBoxSizer(wxVERTICAL); @@ -400,9 +411,9 @@ MySizerDialog::MySizerDialog(wxWindow *parent, const wxChar *title) wxSizer *panelsizer = new wxBoxSizer( wxVERTICAL ); - wxTextCtrl *text = new wxTextCtrl( panel, wxID_ANY, _T("TextLine 1."), wxDefaultPosition, wxSize(250,-1) ); + wxTextCtrl *text = new wxTextCtrl( panel, wxID_ANY, _T("TextLine 1."), wxDefaultPosition, wxSize(250,wxDefaultCoord) ); panelsizer->Add( text, 0, wxGROW|wxALL, 30 ); - text = new wxTextCtrl( panel, wxID_ANY, _T("TextLine 2."), wxDefaultPosition, wxSize(250,-1) ); + text = new wxTextCtrl( panel, wxID_ANY, _T("TextLine 2."), wxDefaultPosition, wxSize(250,wxDefaultCoord) ); panelsizer->Add( text, 0, wxGROW|wxALL, 30 ); wxButton *button2 = new wxButton( panel, wxID_ANY, _T("Hallo") ); panelsizer->Add( button2, 0, wxALIGN_RIGHT | wxLEFT|wxRIGHT|wxBOTTOM, 30 ); @@ -486,8 +497,8 @@ MyGridBagSizerFrame::MyGridBagSizerFrame(const wxChar *title, int x, int y ) 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_hideTxt = new wxTextCtrl(p, wxID_ANY, _T("pos(12,4), size(150, wxDefaultCoord)"), + wxDefaultPosition, wxSize(150,wxDefaultCoord)); m_gbs->Add( m_hideTxt, POS(12,4) ); m_showBtn = new wxButton(p, GBS_SHOW_BTN, _T("<-- Show it again")); @@ -568,9 +579,10 @@ MySimpleSizerFrame::MySimpleSizerFrame(const wxChar *title, int x, int y ) : wxFrame( NULL, wxID_ANY, title, wxPoint(x, y) ) { wxMenu *menu = new wxMenu; + menu->Append(ID_SET_SMALL, _T("Make text control small\tF4")); menu->Append(ID_SET_BIG, _T("Make text control big\tF5")); - + wxMenuBar *menu_bar = new wxMenuBar; menu_bar->Append(menu, _T("&File")); @@ -578,25 +590,25 @@ MySimpleSizerFrame::MySimpleSizerFrame(const wxChar *title, int x, int y ) wxBoxSizer *main_sizer = new wxBoxSizer( wxHORIZONTAL ); - m_target = new wxTextCtrl( this, -1, wxEmptyString, wxDefaultPosition, wxSize( 80, -1 ) ); + m_target = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 80, wxDefaultCoord ) ); main_sizer->Add( m_target, 1, wxALL, 5 ); - - main_sizer->Add( new wxStaticText( this, -1, wxT("Set alternating sizes using F4 and F5") ), 0, wxALL, 5 ); - + + main_sizer->Add( new wxStaticText( this, wxID_ANY, wxT("Set alternating sizes using F4 and F5") ), 0, wxALL, 5 ); + SetSizer( main_sizer); - + Layout(); GetSizer()->Fit( this ); } -void MySimpleSizerFrame::OnSetSmallSize( wxCommandEvent &event) +void MySimpleSizerFrame::OnSetSmallSize( wxCommandEvent& WXUNUSED(event)) { GetSizer()->SetItemMinSize( m_target, 40, -1 ); Layout(); GetSizer()->Fit( this ); } -void MySimpleSizerFrame::OnSetBigSize( wxCommandEvent &event) +void MySimpleSizerFrame::OnSetBigSize( wxCommandEvent& WXUNUSED(event)) { GetSizer()->SetItemMinSize( m_target, 140, -1 ); Layout(); @@ -604,3 +616,48 @@ void MySimpleSizerFrame::OnSetBigSize( wxCommandEvent &event) } +// ---------------------------------------------------------------------------- +// MyNestedSizerFrame +// ---------------------------------------------------------------------------- + + +MyNestedSizerFrame::MyNestedSizerFrame(const wxChar *title, int x, int y ) + : wxFrame( NULL, wxID_ANY, title, wxPoint(x, y) ) +{ + wxMenu *menu = new wxMenu; + + menu->Append(wxID_ABOUT, _T("Do nothing")); + + wxMenuBar *menu_bar = new wxMenuBar; + menu_bar->Append(menu, _T("&File")); + + SetMenuBar( menu_bar ); + + wxBoxSizer *main_sizer = new wxBoxSizer( wxVERTICAL ); + + main_sizer->Add( new wxStaticText( this, -1, wxT("Hello outside") ), 0, wxALIGN_CENTER ); + main_sizer->Add( new wxStaticText( this, -1, wxT("Hello outside") ), 0, wxALIGN_CENTER ); + main_sizer->Add( new wxStaticText( this, -1, wxT("Hello outside") ), 0, wxALIGN_CENTER ); + main_sizer->Add( new wxStaticText( this, -1, wxT("Hello outside") ), 0, wxALIGN_CENTER ); + + wxPanel *panel = new wxPanel( this, -1, wxDefaultPosition, wxDefaultSize, + wxTAB_TRAVERSAL | wxSUNKEN_BORDER ); + main_sizer->Add( panel, 0, wxALIGN_CENTER ); + wxBoxSizer *panel_sizer = new wxBoxSizer( wxVERTICAL ); + panel->SetSizer( panel_sizer ); + panel_sizer->Add( new wxStaticText( panel, -1, wxT("Hello inside") ) ); + panel_sizer->Add( new wxStaticText( panel, -1, wxT("Hello inside") ) ); + panel_sizer->Add( new wxStaticText( panel, -1, wxT("Hello inside") ) ); + + main_sizer->Add( new wxStaticText( this, -1, wxT("Hello outside") ), 0, wxALIGN_CENTER ); + + m_target = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 80, wxDefaultCoord ) ); + main_sizer->Add( m_target, 1, wxALL|wxGROW, 5 ); + + SetSizer( main_sizer); + + Layout(); + GetSizer()->Fit( this ); + GetSizer()->SetSizeHints( this ); +} +