]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/layout/layout.cpp
no real changes; just cosmetic
[wxWidgets.git] / samples / layout / layout.cpp
index a8d61512311d318ad45d579f0e4bb53145c089c2..08192688a84572d9d1b691f2c6e0777d07e4cee8 100644 (file)
@@ -30,6 +30,7 @@
 #include "wx/statline.h"
 #include "wx/notebook.h"
 #include "wx/spinctrl.h"
+#include "wx/wrapsizer.h"
 
 #include "layout.h"
 
@@ -41,6 +42,9 @@ IMPLEMENT_APP(MyApp)
 
 bool MyApp::OnInit()
 {
+  if ( !wxApp::OnInit() )
+      return false;
+
   // Create the main frame window
   MyFrame *frame = new MyFrame;
 
@@ -63,12 +67,13 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
   EVT_MENU(LAYOUT_TEST_GB_SIZER, MyFrame::TestGridBagSizer)
   EVT_MENU(LAYOUT_TEST_SET_MINIMAL, MyFrame::TestSetMinimal)
   EVT_MENU(LAYOUT_TEST_NESTED, MyFrame::TestNested)
+  EVT_MENU(LAYOUT_TEST_WRAP, MyFrame::TestWrap)
 END_EVENT_TABLE()
 
 // Define my frame constructor
 MyFrame::MyFrame()
        : wxFrame(NULL, wxID_ANY, _T("wxWidgets Layout Demo"),
-                 wxDefaultPosition, wxDefaultSize,
+                 wxPoint(30,30), wxDefaultSize,
                  wxDEFAULT_FRAME_STYLE | wxNO_FULL_REPAINT_ON_RESIZE)
 {
   // Make a menubar
@@ -80,6 +85,7 @@ MyFrame::MyFrame()
   file_menu->Append(LAYOUT_TEST_GB_SIZER, _T("Test &gridbag sizer...\tF4"));
   file_menu->Append(LAYOUT_TEST_SET_MINIMAL, _T("Test Set&ItemMinSize...\tF5"));
   file_menu->Append(LAYOUT_TEST_NESTED, _T("Test nested sizer in a wxPanel...\tF6"));
+  file_menu->Append(LAYOUT_TEST_WRAP, _T("Test wrap sizers...\tF7"));
 
   file_menu->AppendSeparator();
   file_menu->Append(LAYOUT_QUIT, _T("E&xit"), _T("Quit program"));
@@ -112,6 +118,12 @@ MyFrame::MyFrame()
   topsizer->Add(
     new wxStaticText( p, wxID_ANY, _T("An explanation (wxALIGN_RIGHT).") ),
     wxSizerFlags().Align(wxALIGN_RIGHT).Border(wxALL & ~wxBOTTOM, 5));
+  topsizer->Add(
+    new wxStaticText( p, wxID_ANY, _T("An explanation (wxALIGN_LEFT).") ),
+    wxSizerFlags().Align(wxALIGN_LEFT).Border(wxALL & ~wxBOTTOM, 5));
+  topsizer->Add(
+    new wxStaticText( p, wxID_ANY, _T("An explanation (wxALIGN_CENTRE_HORIZONTAL).") ),
+    wxSizerFlags().Align(wxALIGN_CENTRE_HORIZONTAL).Border(wxALL & ~wxBOTTOM, 5));
 
   // 2) top: create wxTextCtrl with minimum size (100x60)
   topsizer->Add(
@@ -123,7 +135,7 @@ MyFrame::MyFrame()
     new wxStaticBox(p, wxID_ANY, _T("A wxStaticBoxSizer")), wxVERTICAL );
   statsizer->Add(
     new wxStaticText(p, wxID_ANY, _T("And some TEXT inside it")),
-    wxSizerFlags().Center().Border(wxALL, 30));
+    wxSizerFlags().Border(wxALL, 30));
   topsizer->Add(
     statsizer,
     wxSizerFlags(1).Expand().Border(wxALL, 10));
@@ -208,6 +220,12 @@ void MyFrame::TestNested(wxCommandEvent& WXUNUSED(event) )
     newFrame->Show(true);
 }
 
+void MyFrame::TestWrap(wxCommandEvent& WXUNUSED(event) )
+{
+    MyWrapSizerFrame *newFrame = new MyWrapSizerFrame(_T("Wrap Sizer Test Frame"), 50, 50);
+    newFrame->Show(true);
+}
+
 
 void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event) )
 {
@@ -303,7 +321,7 @@ void MyFlexSizerFrame::InitFlexSizer(wxFlexGridSizer *sizer, wxWindow* parent)
     }
 }
 
-MyFlexSizerFrame::MyFlexSizerFrame(const wxChar *title, int x, int y )
+MyFlexSizerFrame::MyFlexSizerFrame(const wxString &title, int x, int y )
             : wxFrame(NULL, wxID_ANY, title, wxPoint(x, y) )
 {
     wxFlexGridSizer *sizerFlex;
@@ -384,7 +402,7 @@ MyFlexSizerFrame::MyFlexSizerFrame(const wxChar *title, int x, int y )
 // MySizerDialog
 // ----------------------------------------------------------------------------
 
-MySizerDialog::MySizerDialog(wxWindow *parent, const wxChar *title)
+MySizerDialog::MySizerDialog(wxWindow *parent, const wxString &title)
              : wxDialog(parent, wxID_ANY, wxString(title))
 {
     // Begin with first hierarchy: a notebook at the top and
@@ -415,12 +433,10 @@ MySizerDialog::MySizerDialog(wxWindow *parent, const wxChar *title)
     wxButton *button2 = new wxButton( panel, wxID_ANY, _T("Hallo") );
     panelsizer->Add( button2, 0, wxALIGN_RIGHT | wxLEFT|wxRIGHT|wxBOTTOM, 30 );
 
-    panel->SetAutoLayout( true );
     panel->SetSizer( panelsizer );
 
     // Tell dialog to use sizer
-    SetSizer( topsizer );
-    topsizer->SetSizeHints( this );
+    SetSizerAndFit( topsizer );
 }
 
 // ----------------------------------------------------------------------------
@@ -458,7 +474,7 @@ BEGIN_EVENT_TABLE(MyGridBagSizerFrame, wxFrame)
 END_EVENT_TABLE()
 
 
-MyGridBagSizerFrame::MyGridBagSizerFrame(const wxChar *title, int x, int y )
+MyGridBagSizerFrame::MyGridBagSizerFrame(const wxString &title, int x, int y )
     : wxFrame( NULL, wxID_ANY, title, wxPoint(x, y) )
 {
     wxPanel* p = new wxPanel(this, wxID_ANY);
@@ -572,7 +588,7 @@ BEGIN_EVENT_TABLE(MySimpleSizerFrame, wxFrame)
     EVT_MENU( ID_SET_BIG, MySimpleSizerFrame::OnSetBigSize)
 END_EVENT_TABLE()
 
-MySimpleSizerFrame::MySimpleSizerFrame(const wxChar *title, int x, int y )
+MySimpleSizerFrame::MySimpleSizerFrame(const wxString &title, int x, int y )
     : wxFrame( NULL, wxID_ANY, title, wxPoint(x, y) )
 {
     wxMenu *menu = new wxMenu;
@@ -618,7 +634,7 @@ void MySimpleSizerFrame::OnSetBigSize( wxCommandEvent& WXUNUSED(event))
 // ----------------------------------------------------------------------------
 
 
-MyNestedSizerFrame::MyNestedSizerFrame(const wxChar *title, int x, int y )
+MyNestedSizerFrame::MyNestedSizerFrame(const wxString &title, int x, int y )
     : wxFrame( NULL, wxID_ANY, title, wxPoint(x, y) )
 {
     wxMenu *menu = new wxMenu;
@@ -651,10 +667,62 @@ MyNestedSizerFrame::MyNestedSizerFrame(const wxChar *title, int x, int y )
     m_target = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 80, wxDefaultCoord ) );
     main_sizer->Add( m_target, 1, wxALL|wxGROW, 5 );
 
-    SetSizer( main_sizer);
+    SetSizerAndFit( main_sizer);
+}
 
-    Layout();
-    GetSizer()->Fit( this );
-    GetSizer()->SetSizeHints( this );
+
+// ----------------------------------------------------------------------------
+// MyWrapSizerFrame
+// ----------------------------------------------------------------------------
+
+
+MyWrapSizerFrame::MyWrapSizerFrame(const wxString &title, int x, int y )
+    : wxFrame( NULL, wxID_ANY, title, wxPoint(x, y), wxSize(200,-1) )
+{
+    wxMenu *menu = new wxMenu;
+
+    menu->Append(wxID_ABOUT, "Do nothing");
+
+    wxMenuBar *menu_bar = new wxMenuBar;
+    menu_bar->Append(menu, "&File");
+
+    SetMenuBar( menu_bar );
+
+    wxBoxSizer *root = new wxBoxSizer( wxVERTICAL );
+
+#if 0
+    wxSizer *row = new wxWrapSizer;
+    int i;
+    for (i = 0; i < 4; i++)
+       row->Add( new wxButton( this, -1, "Hello" ), 0, wxALL, 10 );
+    root->Add( row, 0, wxGROW );
+    row = new wxWrapSizer;
+    for (i = 0; i < 4; i++)
+       row->Add( new wxButton( this, -1, "Hello" ) );
+    root->Add( row, 0, wxGROW );
+#else
+    // A number of checkboxes inside a wrap sizer 
+    wxSizer *ps_mid = new wxStaticBoxSizer( wxVERTICAL, this, "Wrapping check-boxes" );
+    wxSizer *ps_mid_wrap = new wxWrapSizer(wxHORIZONTAL);
+    ps_mid->Add( ps_mid_wrap, 100, wxEXPAND );
+    for( int ix=0; ix<6; ix++ )
+            ps_mid_wrap->Add( new wxCheckBox(this,wxID_ANY,wxString::Format("Option %d",ix+1)), 0, wxALIGN_CENTRE|wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+    root->Add( ps_mid, 0, wxEXPAND | wxALL, 5 );
+
+    // A shaped item inside a box sizer
+    wxSizer *ps_bottom = new wxStaticBoxSizer( wxVERTICAL, this, "With wxSHAPED item" );
+    wxSizer *ps_bottom_box = new wxBoxSizer(wxHORIZONTAL);
+    ps_bottom->Add( ps_bottom_box, 100, wxEXPAND );
+    ps_bottom_box->Add( new wxListBox(this,wxID_ANY,wxPoint(0,0),wxSize(70,70)), 0, wxEXPAND|wxSHAPED );
+    ps_bottom_box->Add( 10,10 );
+    ps_bottom_box->Add( new wxCheckBox(this,wxID_ANY,"A much longer option..."), 100, 0, 5 );
+    
+    root->Add( ps_bottom, 1, wxEXPAND | wxALL, 5 );
+#endif
+        
+    // Set sizer for window
+    SetSizerAndFit( root );
 }