wxWidgets/samples/wrapsizer/wrapsizer.cpp
Vadim Zeitlin e709239889 Use wxHAS_IMAGES_IN_RESOURCES instead of explicit platform checks.
Add a special symbol which is defined only if the icons and other images (e.g.
cursor) are in the separate resource files and don't need to be embedded as
XPMs in the main program.

This makes the checks more clear and more customizable as it's enough to
change wxHAS_IMAGES_IN_RESOURCES definition instead of changing many platform
checks.

Closes #14050.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70789 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-03-04 00:28:58 +00:00

157 lines
4.6 KiB
C++

/////////////////////////////////////////////////////////////////////////////
// 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"
#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_COMMAND_BUTTON_CLICKED,
wxCommandEventHandler(WrapSizerFrame::OnButton));
// Set sizer for the panel
m_panel->SetSizer(sizerRoot);
Show();
}