- SizerFrame *newFrame = new SizerFrame(NULL, "Sizer Test Frame", 50, 50, 500, 500);
- newFrame->Show(TRUE);
-}
-
-void MyFrame::About(wxCommandEvent& WXUNUSED(event) )
-{
- (void)wxMessageBox("wxWindows GUI library layout demo\n",
- "About Layout Demo", wxOK|wxCENTRE);
-}
-
-// Size the subwindows when the frame is resized
-void MyFrame::OnSize(wxSizeEvent& WXUNUSED(event) )
-{
- Layout();
-}
-
-void MyFrame::Draw(wxDC& dc, bool WXUNUSED(draw_bitmaps) )
-{
- dc.SetPen(wxGREEN_PEN);
- dc.DrawLine(0, 0, 200, 200);
- dc.DrawLine(200, 0, 0, 200);
-
- dc.SetBrush(wxCYAN_BRUSH);
- dc.SetPen(wxRED_PEN);
-
- dc.DrawRectangle(100, 100, 100, 50);
- dc.DrawRoundedRectangle(150, 150, 100, 50, 20);
-
- dc.DrawEllipse(250, 250, 100, 50);
- dc.DrawSpline(50, 200, 50, 100, 200, 10);
- dc.DrawLine(50, 230, 200, 230);
-
- dc.SetPen(wxBLACK_PEN);
- dc.DrawArc(50, 300, 100, 250, 100, 300 );
+ wxFlexGridSizer *sizerFlex;
+
+ // consttuct the first column
+ wxSizer *sizerCol1 = new wxBoxSizer(wxVERTICAL);
+ sizerCol1->Add(new wxStaticText(this, -1, _T("Ungrowable:")), 0, wxCENTER | wxTOP, 20);
+ sizerFlex = new wxFlexGridSizer(3, 3);
+ InitFlexSizer(sizerFlex);
+ sizerCol1->Add(sizerFlex, 1, wxALL | wxEXPAND, 10);
+
+ sizerCol1->Add(new wxStaticText(this, -1, _T("Growable middle column:")), 0, wxCENTER | wxTOP, 20);
+ sizerFlex = new wxFlexGridSizer(3, 3);
+ InitFlexSizer(sizerFlex);
+ sizerFlex->AddGrowableCol(1);
+ sizerCol1->Add(sizerFlex, 1, wxALL | wxEXPAND, 10);
+
+ sizerCol1->Add(new wxStaticText(this, -1, _T("Growable middle row:")), 0, wxCENTER | wxTOP, 20);
+ sizerFlex = new wxFlexGridSizer(3, 3);
+ InitFlexSizer(sizerFlex);
+ sizerFlex->AddGrowableRow(1);
+ sizerCol1->Add(sizerFlex, 1, wxALL | wxEXPAND, 10);
+
+ sizerCol1->Add(new wxStaticText(this, -1, _T("All growable columns:")), 0, wxCENTER | wxTOP, 20);
+ sizerFlex = new wxFlexGridSizer(3, 3);
+ InitFlexSizer(sizerFlex);
+ sizerFlex->AddGrowableCol(0, 1);
+ sizerFlex->AddGrowableCol(1, 2);
+ sizerFlex->AddGrowableCol(2, 3);
+ sizerCol1->Add(sizerFlex, 1, wxALL | wxEXPAND, 10);
+
+ // the second one
+ wxSizer *sizerCol2 = new wxBoxSizer(wxVERTICAL);
+ sizerCol2->Add(new wxStaticText(this, -1, _T("Growable middle row and column:")), 0, wxCENTER | wxTOP, 20);
+ sizerFlex = new wxFlexGridSizer(3, 3);
+ InitFlexSizer(sizerFlex);
+ sizerFlex->AddGrowableCol(1);
+ sizerFlex->AddGrowableRow(1);
+ sizerCol2->Add(sizerFlex, 1, wxALL | wxEXPAND, 10);
+
+ sizerCol2->Add(new wxStaticText(this, -1, _T("Same with horz flex direction")), 0, wxCENTER | wxTOP, 20);
+ sizerFlex = new wxFlexGridSizer(3, 3);
+ InitFlexSizer(sizerFlex);
+ sizerFlex->AddGrowableCol(1);
+ sizerFlex->AddGrowableRow(1);
+ sizerFlex->SetFlexibleDirection(wxHORIZONTAL);
+ sizerCol2->Add(sizerFlex, 1, wxALL | wxEXPAND, 10);
+
+ sizerCol2->Add(new wxStaticText(this, -1, _T("Same with grow mode == \"none\"")), 0, wxCENTER | wxTOP, 20);
+ sizerFlex = new wxFlexGridSizer(3, 3);
+ InitFlexSizer(sizerFlex);
+ sizerFlex->AddGrowableCol(1);
+ sizerFlex->AddGrowableRow(1);
+ sizerFlex->SetFlexibleDirection(wxHORIZONTAL);
+ sizerFlex->SetNonFlexibleGrowMode(wxFLEX_GROWMODE_NONE);
+ sizerCol2->Add(sizerFlex, 1, wxALL | wxEXPAND, 10);
+
+ sizerCol2->Add(new wxStaticText(this, -1, _T("Same with grow mode == \"all\"")), 0, wxCENTER | wxTOP, 20);
+ sizerFlex = new wxFlexGridSizer(3, 3);
+ InitFlexSizer(sizerFlex);
+ sizerFlex->AddGrowableCol(1);
+ sizerFlex->AddGrowableRow(1);
+ sizerFlex->SetFlexibleDirection(wxHORIZONTAL);
+ sizerFlex->SetNonFlexibleGrowMode(wxFLEX_GROWMODE_ALL);
+ sizerCol2->Add(sizerFlex, 1, wxALL | wxEXPAND, 10);
+
+ // add both columns to grid sizer
+ wxGridSizer *sizerTop = new wxGridSizer(2, 0, 20);
+ sizerTop->Add(sizerCol1, 1, wxEXPAND);
+ sizerTop->Add(sizerCol2, 1, wxEXPAND);
+
+ SetSizer(sizerTop);
+ sizerTop->SetSizeHints(this);