git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@53500 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			136 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			136 lines
		
	
	
		
			4.2 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"
 | 
						|
 | 
						|
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);
 |