X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/20b35a6916b9b54af4bbfe4227393c08cd9a2724..dd779a9e66c640907048ab02cb4a853ae45ea94c:/samples/layout/layout.cpp diff --git a/samples/layout/layout.cpp b/samples/layout/layout.cpp index 348054ffd9..1ee69f89e5 100644 --- a/samples/layout/layout.cpp +++ b/samples/layout/layout.cpp @@ -24,10 +24,6 @@ #include "wx/wx.h" #endif -#if !wxUSE_CONSTRAINTS -#error You must set wxUSE_CONSTRAINTS to 1 in setup.h! -#endif - #include "wx/sizer.h" #include "wx/gbsizer.h" #include "wx/statline.h" @@ -50,9 +46,9 @@ bool MyApp::OnInit() // Create the main frame window MyFrame *frame = new MyFrame; - frame->Show(TRUE); + frame->Show(true); - return TRUE; + return true; } // ---------------------------------------------------------------------------- @@ -63,7 +59,6 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(LAYOUT_ABOUT, MyFrame::OnAbout) EVT_MENU(LAYOUT_QUIT, MyFrame::OnQuit) - EVT_MENU(LAYOUT_TEST_CONSTRAINTS, MyFrame::TestConstraints) EVT_MENU(LAYOUT_TEST_SIZER, MyFrame::TestFlexSizers) EVT_MENU(LAYOUT_TEST_NB_SIZER, MyFrame::TestNotebookSizers) EVT_MENU(LAYOUT_TEST_GB_SIZER, MyFrame::TestGridBagSizer) @@ -71,14 +66,13 @@ END_EVENT_TABLE() // Define my frame constructor MyFrame::MyFrame() - : wxFrame(NULL, -1, _T("wxWindows Layout Demo"), + : wxFrame(NULL, wxID_ANY, _T("wxWidgets Layout Demo"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_STYLE | wxNO_FULL_REPAINT_ON_RESIZE) { // Make a menubar wxMenu *file_menu = new wxMenu; - file_menu->Append(LAYOUT_TEST_CONSTRAINTS, _T("Test &constraints")); file_menu->Append(LAYOUT_TEST_SIZER, _T("Test wx&FlexSizer")); file_menu->Append(LAYOUT_TEST_NB_SIZER, _T("&Test notebook sizers")); file_menu->Append(LAYOUT_TEST_GB_SIZER, _T("Test &gridbag sizer")); @@ -97,9 +91,10 @@ MyFrame::MyFrame() // Associate the menu bar with the frame SetMenuBar(menu_bar); +#if wxUSE_STATUSBAR CreateStatusBar(2); - SetStatusText(_T("wxWindows layout demo")); - + SetStatusText(_T("wxWidgets layout demo")); +#endif // wxUSE_STATUSBAR // we want to get a dialog that is stretchable because it // has a text ctrl in the middle. at the bottom, we have @@ -109,7 +104,7 @@ MyFrame::MyFrame() // 1) top: create wxStaticText with minimum size equal to its default size topsizer->Add( - new wxStaticText( this, -1, _T("An explanation (wxALIGN_RIGHT).") ), + new wxStaticText( this, wxID_ANY, _T("An explanation (wxALIGN_RIGHT).") ), 0, // make vertically unstretchable wxALIGN_RIGHT | // right align text wxTOP | wxLEFT | wxRIGHT, // make border all around except wxBOTTOM @@ -117,7 +112,7 @@ MyFrame::MyFrame() // 2) top: create wxTextCtrl with minimum size (100x60) topsizer->Add( - new wxTextCtrl( this, -1, _T("My text (wxEXPAND)."), wxDefaultPosition, wxSize(100,60), wxTE_MULTILINE), + new wxTextCtrl( this, wxID_ANY, _T("My text (wxEXPAND)."), wxDefaultPosition, wxSize(100,60), wxTE_MULTILINE), 1, // make vertically stretchable wxEXPAND | // make horizontally stretchable wxALL, // and make border all around @@ -125,10 +120,10 @@ MyFrame::MyFrame() // 2.5) Gratuitous test of wxStaticBoxSizers wxBoxSizer *statsizer = new wxStaticBoxSizer( - new wxStaticBox(this, -1, _T("A wxStaticBoxSizer")), + new wxStaticBox(this, wxID_ANY, _T("A wxStaticBoxSizer")), wxVERTICAL ); statsizer->Add( - new wxStaticText(this, -1, _T("And some TEXT inside it")), + new wxStaticText(this, wxID_ANY, _T("And some TEXT inside it")), 0, wxCENTER | wxALL, @@ -137,24 +132,24 @@ MyFrame::MyFrame() // 2.7) And a test of wxGridSizer wxGridSizer *gridsizer = new wxGridSizer(2, 5, 5); - gridsizer->Add(new wxStaticText(this, -1, _T("Label")), 0, + gridsizer->Add(new wxStaticText(this, wxID_ANY, _T("Label")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); - gridsizer->Add(new wxTextCtrl(this, -1, _T("Grid sizer demo")), 1, + gridsizer->Add(new wxTextCtrl(this, wxID_ANY, _T("Grid sizer demo")), 1, wxGROW | wxALIGN_CENTER_VERTICAL); - gridsizer->Add(new wxStaticText(this, -1, _T("Another label")), 0, + gridsizer->Add(new wxStaticText(this, wxID_ANY, _T("Another label")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); - gridsizer->Add(new wxTextCtrl(this, -1, _T("More text")), 1, + gridsizer->Add(new wxTextCtrl(this, wxID_ANY, _T("More text")), 1, wxGROW | wxALIGN_CENTER_VERTICAL); - gridsizer->Add(new wxStaticText(this, -1, _T("Final label")), 0, + gridsizer->Add(new wxStaticText(this, wxID_ANY, _T("Final label")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); - gridsizer->Add(new wxTextCtrl(this, -1, _T("And yet more text")), 1, + gridsizer->Add(new wxTextCtrl(this, wxID_ANY, _T("And yet more text")), 1, wxGROW | wxALIGN_CENTER_VERTICAL); topsizer->Add(gridsizer, 1, wxGROW | wxALL, 10); // 3) middle: create wxStaticLine with minimum size (3x3) topsizer->Add( - new wxStaticLine( this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), + new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, // make vertically unstretchable wxEXPAND | // make horizontally stretchable wxALL, // and make border all around @@ -164,12 +159,12 @@ MyFrame::MyFrame() // 4) bottom: create two centred wxButtons wxBoxSizer *button_box = new wxBoxSizer( wxHORIZONTAL ); button_box->Add( - new wxButton( this, -1, _T("Two buttons in a box") ), + new wxButton( this, wxID_ANY, _T("Two buttons in a box") ), 0, // make horizontally unstretchable wxALL, // make border all around 7 ); // set border width to 7 button_box->Add( - new wxButton( this, -1, _T("(wxCENTER)") ), + new wxButton( this, wxID_ANY, _T("(wxCENTER)") ), 0, // make horizontally unstretchable wxALL, // make border all around 7 ); // set border width to 7 @@ -188,20 +183,13 @@ MyFrame::MyFrame() void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event) ) { - Close(TRUE); -} - -void MyFrame::TestConstraints(wxCommandEvent& WXUNUSED(event) ) -{ - MyConstraintsFrame * - newFrame = new MyConstraintsFrame(_T("Constraints Test Frame"), 100, 100); - newFrame->Show(TRUE); + Close(true); } void MyFrame::TestFlexSizers(wxCommandEvent& WXUNUSED(event) ) { MyFlexSizerFrame *newFrame = new MyFlexSizerFrame(_T("Flex Sizer Test Frame"), 50, 50); - newFrame->Show(TRUE); + newFrame->Show(true); } void MyFrame::TestNotebookSizers(wxCommandEvent& WXUNUSED(event) ) @@ -214,7 +202,7 @@ void MyFrame::TestNotebookSizers(wxCommandEvent& WXUNUSED(event) ) void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event) ) { - (void)wxMessageBox(_T("wxWindows GUI library layout demo\n"), + (void)wxMessageBox(_T("wxWidgets GUI library layout demo\n"), _T("About Layout Demo"), wxOK|wxICON_INFORMATION); } @@ -222,100 +210,10 @@ void MyFrame::TestGridBagSizer(wxCommandEvent& WXUNUSED(event) ) { MyGridBagSizerFrame *newFrame = new MyGridBagSizerFrame(_T("wxGridBagSizer Test Frame"), 50, 50); - newFrame->Show(TRUE); + newFrame->Show(true); } -// ---------------------------------------------------------------------------- -// MyConstraintsFrame -// ---------------------------------------------------------------------------- - -MyConstraintsFrame::MyConstraintsFrame(const wxChar *title, int x, int y) - : wxFrame(NULL, -1, title, wxPoint(x, y) ) -{ - // Make a panel - wxPanel *panel = new wxPanel(this); - - // Create some panel items - wxButton *btn1 = new wxButton(panel, -1, _T("A button (1)")) ; - - wxLayoutConstraints *b1 = new wxLayoutConstraints; - b1->centreX.SameAs (panel, wxCentreX); - b1->top.SameAs (panel, wxTop, 5); - b1->width.PercentOf (panel, wxWidth, 80); - b1->height.AsIs (); - btn1->SetConstraints(b1); - - wxListBox *list = new wxListBox(panel, -1, - wxPoint(-1, -1), wxSize(200, 100)); - list->Append(_T("Apple")); - list->Append(_T("Pear")); - list->Append(_T("Orange")); - list->Append(_T("Banana")); - list->Append(_T("Fruit")); - - wxLayoutConstraints *b2 = new wxLayoutConstraints; - b2->top.Below (btn1, 5); - b2->left.SameAs (panel, wxLeft, 5); - b2->width.PercentOf (panel, wxWidth, 40); - b2->bottom.SameAs (panel, wxBottom, 5); - list->SetConstraints(b2); - - wxTextCtrl *mtext = new wxTextCtrl(panel, -1, - _T("This frame is laid out using\n" - "constraints, but the preferred\n" - "layout mechanism now are sizers."), - wxDefaultPosition, - wxDefaultSize, - wxTE_MULTILINE); - - wxLayoutConstraints *b3 = new wxLayoutConstraints; - b3->top.Below (btn1, 5); - b3->left.RightOf (list, 5); - b3->right.SameAs (panel, wxRight, 5); - b3->bottom.SameAs (panel, wxBottom, 5); - mtext->SetConstraints(b3); - - wxTextCtrl *canvas = new wxTextCtrl(this, -1, _T("yet another window")); - - // Make a text window - wxTextCtrl *text_window = new wxTextCtrl(this, -1, _T(""), - wxDefaultPosition, - wxDefaultSize, - wxTE_MULTILINE); - - // Set constraints for panel subwindow - wxLayoutConstraints *c1 = new wxLayoutConstraints; - - c1->left.SameAs (this, wxLeft); - c1->top.SameAs (this, wxTop); - c1->right.PercentOf (this, wxWidth, 50); - c1->height.PercentOf (this, wxHeight, 50); - - panel->SetConstraints(c1); - - // Set constraints for canvas subwindow - wxLayoutConstraints *c2 = new wxLayoutConstraints; - - c2->left.SameAs (panel, wxRight); - c2->top.SameAs (this, wxTop); - c2->right.SameAs (this, wxRight); - c2->height.PercentOf (this, wxHeight, 50); - - canvas->SetConstraints(c2); - - // Set constraints for text subwindow - wxLayoutConstraints *c3 = new wxLayoutConstraints; - c3->left.SameAs (this, wxLeft); - c3->top.Below (panel); - c3->right.SameAs (this, wxRight); - c3->bottom.SameAs (this, wxBottom); - - text_window->SetConstraints(c3); - - SetAutoLayout(TRUE); -} - // ---------------------------------------------------------------------------- // MyFlexSizerFrame // ---------------------------------------------------------------------------- @@ -329,7 +227,7 @@ void MyFlexSizerFrame::InitFlexSizer(wxFlexGridSizer *sizer) sizer->Add(new wxStaticText ( this, - -1, + wxID_ANY, wxString::Format(_T("(%d, %d)"), i + 1, j + 1), wxDefaultPosition, wxDefaultSize, @@ -341,30 +239,30 @@ void MyFlexSizerFrame::InitFlexSizer(wxFlexGridSizer *sizer) } MyFlexSizerFrame::MyFlexSizerFrame(const wxChar *title, int x, int y ) - : wxFrame(NULL, -1, title, wxPoint(x, y) ) + : wxFrame(NULL, wxID_ANY, title, wxPoint(x, y) ) { wxFlexGridSizer *sizerFlex; // consttuct the first column wxSizer *sizerCol1 = new wxBoxSizer(wxVERTICAL); - sizerCol1->Add(new wxStaticText(this, -1, _T("Ungrowable:")), 0, wxCENTER | wxTOP, 20); + sizerCol1->Add(new wxStaticText(this, wxID_ANY, _T("Ungrowable:")), 0, wxCENTER | wxTOP, 20); sizerFlex = new wxFlexGridSizer(3, 3); InitFlexSizer(sizerFlex); sizerCol1->Add(sizerFlex, 1, wxALL | wxEXPAND, 10); - sizerCol1->Add(new wxStaticText(this, -1, _T("Growable middle column:")), 0, wxCENTER | wxTOP, 20); + sizerCol1->Add(new wxStaticText(this, wxID_ANY, _T("Growable middle column:")), 0, wxCENTER | wxTOP, 20); sizerFlex = new wxFlexGridSizer(3, 3); InitFlexSizer(sizerFlex); sizerFlex->AddGrowableCol(1); sizerCol1->Add(sizerFlex, 1, wxALL | wxEXPAND, 10); - sizerCol1->Add(new wxStaticText(this, -1, _T("Growable middle row:")), 0, wxCENTER | wxTOP, 20); + sizerCol1->Add(new wxStaticText(this, wxID_ANY, _T("Growable middle row:")), 0, wxCENTER | wxTOP, 20); sizerFlex = new wxFlexGridSizer(3, 3); InitFlexSizer(sizerFlex); sizerFlex->AddGrowableRow(1); sizerCol1->Add(sizerFlex, 1, wxALL | wxEXPAND, 10); - sizerCol1->Add(new wxStaticText(this, -1, _T("All growable columns:")), 0, wxCENTER | wxTOP, 20); + sizerCol1->Add(new wxStaticText(this, wxID_ANY, _T("All growable columns:")), 0, wxCENTER | wxTOP, 20); sizerFlex = new wxFlexGridSizer(3, 3); InitFlexSizer(sizerFlex); sizerFlex->AddGrowableCol(0, 1); @@ -374,14 +272,14 @@ MyFlexSizerFrame::MyFlexSizerFrame(const wxChar *title, int x, int y ) // the second one wxSizer *sizerCol2 = new wxBoxSizer(wxVERTICAL); - sizerCol2->Add(new wxStaticText(this, -1, _T("Growable middle row and column:")), 0, wxCENTER | wxTOP, 20); + sizerCol2->Add(new wxStaticText(this, wxID_ANY, _T("Growable middle row and column:")), 0, wxCENTER | wxTOP, 20); sizerFlex = new wxFlexGridSizer(3, 3); InitFlexSizer(sizerFlex); sizerFlex->AddGrowableCol(1); sizerFlex->AddGrowableRow(1); sizerCol2->Add(sizerFlex, 1, wxALL | wxEXPAND, 10); - sizerCol2->Add(new wxStaticText(this, -1, _T("Same with horz flex direction")), 0, wxCENTER | wxTOP, 20); + sizerCol2->Add(new wxStaticText(this, wxID_ANY, _T("Same with horz flex direction")), 0, wxCENTER | wxTOP, 20); sizerFlex = new wxFlexGridSizer(3, 3); InitFlexSizer(sizerFlex); sizerFlex->AddGrowableCol(1); @@ -389,7 +287,7 @@ MyFlexSizerFrame::MyFlexSizerFrame(const wxChar *title, int x, int y ) sizerFlex->SetFlexibleDirection(wxHORIZONTAL); sizerCol2->Add(sizerFlex, 1, wxALL | wxEXPAND, 10); - sizerCol2->Add(new wxStaticText(this, -1, _T("Same with grow mode == \"none\"")), 0, wxCENTER | wxTOP, 20); + sizerCol2->Add(new wxStaticText(this, wxID_ANY, _T("Same with grow mode == \"none\"")), 0, wxCENTER | wxTOP, 20); sizerFlex = new wxFlexGridSizer(3, 3); InitFlexSizer(sizerFlex); sizerFlex->AddGrowableCol(1); @@ -398,7 +296,7 @@ MyFlexSizerFrame::MyFlexSizerFrame(const wxChar *title, int x, int y ) sizerFlex->SetNonFlexibleGrowMode(wxFLEX_GROWMODE_NONE); sizerCol2->Add(sizerFlex, 1, wxALL | wxEXPAND, 10); - sizerCol2->Add(new wxStaticText(this, -1, _T("Same with grow mode == \"all\"")), 0, wxCENTER | wxTOP, 20); + sizerCol2->Add(new wxStaticText(this, wxID_ANY, _T("Same with grow mode == \"all\"")), 0, wxCENTER | wxTOP, 20); sizerFlex = new wxFlexGridSizer(3, 3); InitFlexSizer(sizerFlex); sizerFlex->AddGrowableCol(1); @@ -421,38 +319,37 @@ MyFlexSizerFrame::MyFlexSizerFrame(const wxChar *title, int x, int y ) // ---------------------------------------------------------------------------- MySizerDialog::MySizerDialog(wxWindow *parent, const wxChar *title) - : wxDialog(parent, -1, wxString(title)) + : wxDialog(parent, wxID_ANY, wxString(title)) { // Begin with first hierarchy: a notebook at the top and // and OK button at the bottom. wxBoxSizer *topsizer = new wxBoxSizer( wxVERTICAL ); - wxNotebook *notebook = new wxNotebook( this, -1 ); - wxNotebookSizer *nbs = new wxNotebookSizer( notebook ); - topsizer->Add( nbs, 1, wxGROW ); + wxNotebook *notebook = new wxNotebook( this, wxID_ANY ); + topsizer->Add( notebook, 1, wxGROW ); wxButton *button = new wxButton( this, wxID_OK, _T("OK") ); topsizer->Add( button, 0, wxALIGN_RIGHT | wxALL, 10 ); // First page: one big text ctrl - wxTextCtrl *multi = new wxTextCtrl( notebook, -1, _T("TextCtrl."), wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE ); + wxTextCtrl *multi = new wxTextCtrl( notebook, wxID_ANY, _T("TextCtrl."), wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE ); notebook->AddPage( multi, _T("Page One") ); // Second page: a text ctrl and a button - wxPanel *panel = new wxPanel( notebook, -1 ); + wxPanel *panel = new wxPanel( notebook, wxID_ANY ); notebook->AddPage( panel, _T("Page Two") ); wxSizer *panelsizer = new wxBoxSizer( wxVERTICAL ); - wxTextCtrl *text = new wxTextCtrl( panel, -1, _T("TextLine 1."), wxDefaultPosition, wxSize(250,-1) ); + wxTextCtrl *text = new wxTextCtrl( panel, wxID_ANY, _T("TextLine 1."), wxDefaultPosition, wxSize(250,-1) ); panelsizer->Add( text, 0, wxGROW|wxALL, 30 ); - text = new wxTextCtrl( panel, -1, _T("TextLine 2."), wxDefaultPosition, wxSize(250,-1) ); + text = new wxTextCtrl( panel, wxID_ANY, _T("TextLine 2."), wxDefaultPosition, wxSize(250,-1) ); panelsizer->Add( text, 0, wxGROW|wxALL, 30 ); - wxButton *button2 = new wxButton( panel, -1, _T("Hallo") ); + wxButton *button2 = new wxButton( panel, wxID_ANY, _T("Hallo") ); panelsizer->Add( button2, 0, wxALIGN_RIGHT | wxLEFT|wxRIGHT|wxBOTTOM, 30 ); - panel->SetAutoLayout( TRUE ); + panel->SetAutoLayout( true ); panel->SetSizer( panelsizer ); // Tell dialog to use sizer @@ -465,16 +362,15 @@ MySizerDialog::MySizerDialog(wxWindow *parent, const wxChar *title) // ---------------------------------------------------------------------------- // some simple macros to help make the sample code below more clear -#define TEXTCTRL(text) new wxTextCtrl(p, -1, wxT(text)) -#define MLTEXTCTRL(text) new wxTextCtrl(p, -1, wxT(text), wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE) +#define TEXTCTRL(text) new wxTextCtrl(p, wxID_ANY, _T(text)) +#define MLTEXTCTRL(text) new wxTextCtrl(p, wxID_ANY, _T(text), wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE) #define POS(r, c) wxGBPosition(r,c) #define SPAN(r, c) wxGBSpan(r,c) -wxChar* gbsDescription =wxT("\ -The wxGridBagSizer is similar to the wxFlexGridSizer except the \ -items are explicitly posisioned in a virtual 'cell' in the \n\ -layout grid, and column or row spanning is allowed. For example, \ -this static text is positioned at (0,0) and it spans 9 columns."); +wxChar* gbsDescription =_T("\ +The wxGridBagSizer is similar to the wxFlexGridSizer except the items are explicitly positioned\n\ +in a virtual cell of the layout grid, and column or row spanning is allowed. For example, this\n\ +static text is positioned at (0,0) and it spans 7 columns."); // Some IDs @@ -497,16 +393,16 @@ END_EVENT_TABLE() MyGridBagSizerFrame::MyGridBagSizerFrame(const wxChar *title, int x, int y ) - : wxFrame( NULL, -1, title, wxPoint(x, y) ) + : wxFrame( NULL, wxID_ANY, title, wxPoint(x, y) ) { - wxPanel* p = new wxPanel(this, -1); + wxPanel* p = new wxPanel(this, wxID_ANY); m_panel = p; m_gbs = new wxGridBagSizer(); - m_gbs->Add( new wxStaticText(p, -1, gbsDescription), - POS(0,0), SPAN(1, 9), - wxALIGN_CENTER | wxALL, 5); + m_gbs->Add( new wxStaticText(p, wxID_ANY, gbsDescription), + POS(0,0), SPAN(1, 7), + wxALIGN_CENTER | wxALL, 5); m_gbs->Add( TEXTCTRL("pos(1,0)"), POS(1,0) ); m_gbs->Add( TEXTCTRL("pos(1,1)"), POS(1,1) ); @@ -519,26 +415,24 @@ MyGridBagSizerFrame::MyGridBagSizerFrame(const wxChar *title, int x, int y ) m_gbs->Add( TEXTCTRL("pos(5,4)"), POS(5,4), wxDefaultSpan, wxEXPAND ); m_gbs->Add( TEXTCTRL("pos(6,5)"), POS(6,5), wxDefaultSpan, wxEXPAND ); m_gbs->Add( TEXTCTRL("pos(7,6)"), POS(7,6) ); - m_gbs->Add( TEXTCTRL("pos(8,7)"), POS(8,7) ); - m_gbs->Add( TEXTCTRL("pos(9,8)"), POS(9,8) ); - + //m_gbs->Add( TEXTCTRL("bad position"), POS(4,3) ); // Test for assert //m_gbs->Add( TEXTCTRL("bad position"), POS(5,3) ); // Test for assert - m_moveBtn1 = new wxButton(p, GBS_MOVE_BTN1, wxT("Move this to (3,6)")); - m_moveBtn2 = new wxButton(p, GBS_MOVE_BTN2, wxT("Move this to (3,6)")); + m_moveBtn1 = new wxButton(p, GBS_MOVE_BTN1, _T("Move this to (3,6)")); + m_moveBtn2 = new wxButton(p, GBS_MOVE_BTN2, _T("Move this to (3,6)")); m_gbs->Add( m_moveBtn1, POS(10,2) ); m_gbs->Add( m_moveBtn2, POS(10,3) ); - m_hideBtn = new wxButton(p, GBS_HIDE_BTN, wxT("Hide this item -->")); + m_hideBtn = new wxButton(p, GBS_HIDE_BTN, _T("Hide this item -->")); m_gbs->Add(m_hideBtn, POS(12, 3)); - m_hideTxt = new wxTextCtrl(p, -1, wxT("pos(12,4), size(250, -1)"), - wxDefaultPosition, wxSize(250,-1)); + m_hideTxt = new wxTextCtrl(p, wxID_ANY, _T("pos(12,4), size(150, -1)"), + wxDefaultPosition, wxSize(150,-1)); m_gbs->Add( m_hideTxt, POS(12,4) ); - m_showBtn = new wxButton(p, GBS_SHOW_BTN, wxT("<-- Show it again")); + m_showBtn = new wxButton(p, GBS_SHOW_BTN, _T("<-- Show it again")); m_gbs->Add(m_showBtn, POS(12, 5)); m_showBtn->Disable(); @@ -578,12 +472,21 @@ void MyGridBagSizerFrame::OnMoveBtn(wxCommandEvent& event) if (curPos == wxGBPosition(3,6)) { m_gbs->SetItemPosition(btn, m_lastPos); - btn->SetLabel(wxT("Move this to (3,6)")); + btn->SetLabel(_T("Move this to (3,6)")); } - else if ( m_gbs->SetItemPosition(btn, wxGBPosition(3,6)) ) + else { - m_lastPos = curPos; - btn->SetLabel(wxT("Move it back")); + if ( m_gbs->CheckForIntersection(wxGBPosition(3,6), wxGBSpan(1,1)) ) + wxMessageBox( +_T("wxGridBagSizer will not allow items to be in the same cell as\n\ +another item, so this operation will fail. You will also get an assert\n\ +when compiled in debug mode."), _T("Warning"), wxOK | wxICON_INFORMATION); + + if ( m_gbs->SetItemPosition(btn, wxGBPosition(3,6)) ) + { + m_lastPos = curPos; + btn->SetLabel(_T("Move it back")); + } } m_gbs->Layout(); }