| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- /////////////////////////////////////////////////////////////////////////////
- // Name: wrapsizer.cpp
- // Purpose: wxWidgets sample demonstrating wxWrapSizer use
- // Author: Arne Steinarson
- // Created: 21.01.2008
- // Copyright: (c) Arne Steinarson
- // Licence: wxWindows licence
- /////////////////////////////////////////////////////////////////////////////
- #include "wx/wxprec.h"
- #ifdef __BORLANDC__
- #pragma hdrstop
- #endif
- #ifndef WX_PRECOMP
- #include "wx/wx.h"
- #endif
- #include "wx/log.h"
- #include "wx/wrapsizer.h"
- #include "wx/artprov.h"
- #ifndef wxHAS_IMAGES_IN_RESOURCES
- #include "../sample.xpm"
- #endif
- // ----------------------------------------------------------------------------
- // definitions
- // ----------------------------------------------------------------------------
- class WrapSizerFrame : public wxFrame
- {
- public:
- WrapSizerFrame();
- private:
- void OnButton(wxCommandEvent& WXUNUSED(event))
- {
- Close();
- }
- void AddToolBarButton(wxToolBar *tb,
- const wxString& label,
- const wxString& artid)
- {
- wxBitmap
- bm = wxArtProvider::GetBitmap(artid, wxART_TOOLBAR, wxSize(16, 16));
- tb->AddTool(wxID_ANY, label, bm);
- }
- wxToolBar *MakeToolBar()
- {
- wxToolBar *tb = new wxToolBar(m_panel, wxID_ANY,
- wxDefaultPosition, wxDefaultSize,
- wxTB_NODIVIDER);
- AddToolBarButton(tb, "Help", wxART_HELP_BOOK);
- tb->AddSeparator( );
- AddToolBarButton(tb, "Open", wxART_FILE_OPEN);
- tb->AddSeparator( );
- AddToolBarButton(tb, "Up", wxART_GO_DIR_UP);
- AddToolBarButton(tb, "Execute", wxART_EXECUTABLE_FILE);
- tb->Realize( );
- return tb;
- }
- wxPanel *m_panel;
- };
- class WrapSizerApp : public wxApp
- {
- public:
- WrapSizerApp() {}
- virtual bool OnInit()
- {
- new WrapSizerFrame;
- return true;
- }
- };
- IMPLEMENT_APP(WrapSizerApp);
- // ----------------------------------------------------------------------------
- // 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_BUTTON,
- wxCommandEventHandler(WrapSizerFrame::OnButton));
- // Set sizer for the panel
- m_panel->SetSizer(sizerRoot);
- Show();
- }
|