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);
 |