+
+
+// ----------------------------------------------------------------------------
+// WrapSizerFrame
+// ----------------------------------------------------------------------------
+
+WrapSizerFrame::WrapSizerFrame()
+ : wxFrame(NULL, wxID_ANY, "wxWrapSizer Sample")
+{
+ SetIcon(wxICON(sample));
+
+ m_panel = new wxPanel(this);
+
+ // Root sizer, vertical
+ wxSizer * const sizerRoot = new wxBoxSizer(wxVERTICAL);
+
+ // Some toolbars in a wrap sizer
+ wxSizer * const sizerTop = new wxWrapSizer( wxHORIZONTAL );
+ sizerTop->Add(MakeToolBar());
+ sizerTop->Add(20, 1);
+ sizerTop->Add(MakeToolBar());
+ sizerTop->Add(20, 1);
+ sizerTop->Add(MakeToolBar());
+ sizerRoot->Add(sizerTop, wxSizerFlags().Expand().Border());
+
+ // A number of checkboxes inside a wrap sizer
+ wxSizer *sizerMid = new wxStaticBoxSizer(wxVERTICAL, m_panel,
+ "With check-boxes");
+ wxSizer * const sizerMidWrap = new wxWrapSizer(wxHORIZONTAL);
+ for ( int nCheck = 0; nCheck < 6; nCheck++ )
+ {
+ wxCheckBox *chk = new wxCheckBox
+ (
+ m_panel,
+ wxID_ANY,
+ wxString::Format("Option %d", nCheck)
+ );
+
+ sizerMidWrap->Add(chk, wxSizerFlags().Centre().Border());
+ }
+
+ sizerMid->Add(sizerMidWrap, wxSizerFlags(100).Expand());
+ sizerRoot->Add(sizerMid, wxSizerFlags(100).Expand().Border());
+
+
+ // A shaped item inside a box sizer
+ wxSizer *sizerBottom = new wxStaticBoxSizer(wxVERTICAL, m_panel,
+ "With wxSHAPED item");
+ wxSizer *sizerBottomBox = new wxBoxSizer(wxHORIZONTAL);
+ sizerBottom->Add(sizerBottomBox, wxSizerFlags(100).Expand());
+
+ sizerBottomBox->Add(new wxListBox(m_panel, wxID_ANY,
+ wxPoint(0, 0), wxSize(70, 70)),
+ wxSizerFlags().Expand().Shaped());
+ sizerBottomBox->AddSpacer(10);
+ sizerBottomBox->Add(new wxCheckBox(m_panel, wxID_ANY,
+ "A much longer option..."),
+ wxSizerFlags(100).Border());
+ sizerRoot->Add(sizerBottom, wxSizerFlags(100).Expand().Border());
+
+ // OK Button
+ sizerRoot->Add(new wxButton(m_panel, wxID_OK),
+ wxSizerFlags().Centre().DoubleBorder());
+ Connect(wxID_OK, wxEVT_COMMAND_BUTTON_CLICKED,
+ wxCommandEventHandler(WrapSizerFrame::OnButton));
+
+ // Set sizer for the panel
+ m_panel->SetSizer(sizerRoot);
+
+ Show();
+}
+