extracted wxWrapSizer in separate files and somewhat improved it (heavily modified patch 1876663)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@53500 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
135
samples/wrapsizer/wrapsizer.cpp
Normal file
135
samples/wrapsizer/wrapsizer.cpp
Normal file
@@ -0,0 +1,135 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wrapsizer.cpp
|
||||
// Purpose: wxWidgets sample demonstrating wxWrapSizer use
|
||||
// Author: Arne Steinarson
|
||||
// Created: 21.01.2008
|
||||
// RCS-ID: $Id:$
|
||||
// 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"
|
||||
|
||||
class WrapSizerFrame : public wxFrame
|
||||
{
|
||||
public:
|
||||
WrapSizerFrame()
|
||||
: wxFrame(NULL, wxID_ANY, "wxWrapSizer Sample")
|
||||
{
|
||||
// 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, this,
|
||||
"With check-boxes");
|
||||
wxSizer * const sizerMidWrap = new wxWrapSizer(wxHORIZONTAL);
|
||||
for ( int nCheck = 0; nCheck < 6; nCheck++ )
|
||||
{
|
||||
wxCheckBox *chk = new wxCheckBox
|
||||
(
|
||||
this,
|
||||
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, this,
|
||||
"With wxSHAPED item");
|
||||
wxSizer *sizerBottomBox = new wxBoxSizer(wxHORIZONTAL);
|
||||
sizerBottom->Add(sizerBottomBox, wxSizerFlags(100).Expand());
|
||||
|
||||
sizerBottomBox->Add(new wxListBox(this, wxID_ANY,
|
||||
wxPoint(0, 0), wxSize(70, 70)),
|
||||
wxSizerFlags().Expand().Shaped());
|
||||
sizerBottomBox->AddSpacer(10);
|
||||
sizerBottomBox->Add(new wxCheckBox(this, wxID_ANY,
|
||||
"A much longer option..."),
|
||||
wxSizerFlags(100).Border());
|
||||
sizerRoot->Add(sizerBottom, wxSizerFlags(100).Expand().Border());
|
||||
|
||||
// OK Button
|
||||
sizerRoot->Add(new wxButton(this, wxID_OK),
|
||||
wxSizerFlags().Centre().DoubleBorder());
|
||||
Connect(wxID_OK, wxEVT_COMMAND_BUTTON_CLICKED,
|
||||
wxCommandEventHandler(WrapSizerFrame::OnButton));
|
||||
|
||||
// Set sizer for window
|
||||
SetSizerAndFit(sizerRoot);
|
||||
|
||||
Show();
|
||||
}
|
||||
|
||||
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(this, 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;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
class WrapSizerApp : public wxApp
|
||||
{
|
||||
public:
|
||||
WrapSizerApp() {}
|
||||
|
||||
virtual bool OnInit()
|
||||
{
|
||||
new WrapSizerFrame;
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
IMPLEMENT_APP(WrapSizerApp);
|
Reference in New Issue
Block a user