Replaced old wxSizer,

Converted two of wxGTK's standard dialogs to use them,
  Applied two fixes to wxDC code,
  Made wxRadiobox a little smaller,
  Added sizer.h to wx.h


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@3325 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling
1999-08-09 17:00:51 +00:00
parent d597fcb781
commit 3417c2cd3d
19 changed files with 303 additions and 1346 deletions

View File

@@ -54,7 +54,6 @@ bool MyApp::OnInit(void)
wxMenu *file_menu = new wxMenu;
file_menu->Append(LAYOUT_LOAD_FILE, "&Load file", "Load a text file");
file_menu->Append(LAYOUT_TEST, "&Test sizers", "Test sizer code");
file_menu->Append(LAYOUT_TEST_NEW, "&Test new sizers", "Test new sizer code");
file_menu->AppendSeparator();
@@ -172,7 +171,6 @@ MyFrame::MyFrame(wxFrame *frame, char *title, int x, int y, int w, int h):
BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_MENU(LAYOUT_LOAD_FILE, MyFrame::LoadFile)
EVT_MENU(LAYOUT_QUIT, MyFrame::Quit)
EVT_MENU(LAYOUT_TEST, MyFrame::TestSizers)
EVT_MENU(LAYOUT_TEST_NEW, MyFrame::TestNewSizers)
EVT_MENU(LAYOUT_ABOUT, MyFrame::About)
EVT_SIZE(MyFrame::OnSize)
@@ -195,12 +193,6 @@ void MyFrame::Quit(wxCommandEvent& WXUNUSED(event) )
this->Close(TRUE);
}
void MyFrame::TestSizers(wxCommandEvent& WXUNUSED(event) )
{
SizerFrame *newFrame = new SizerFrame((MyFrame *) NULL, "Sizer Test Frame", 50, 50, 500, 500);
newFrame->Show(TRUE);
}
void MyFrame::TestNewSizers(wxCommandEvent& WXUNUSED(event) )
{
NewSizerFrame *newFrame = new NewSizerFrame((MyFrame *) NULL, "Sizer Test Frame", 50, 50 );
@@ -264,103 +256,6 @@ void MyWindow::OnPaint(wxPaintEvent& WXUNUSED(event) )
frame->Draw(dc,TRUE);
}
//-----------------------------------------------------------------
// SizerFrame
//-----------------------------------------------------------------
SizerFrame::SizerFrame(wxFrame *frame, char *title, int x, int y, int w, int h):
wxFrame(frame, -1, title, wxPoint(x, y), wxSize(w, h))
{
panel = new wxPanel(this, -1, wxPoint(0, 0), wxSize(-1, -1), wxTAB_TRAVERSAL);
panel->SetBackgroundColour(wxColour(192, 192, 192));
// A sizer to fit the whole panel, plus two sizers, one
// above the other. A button is centred on the lower
// sizer; a rowcol containing 3 buttons is centred on the upper
// sizer.
wxSizer *expandSizer = new wxSizer(panel, wxSizerExpand);
expandSizer->SetName("expandSizer");
wxLayoutConstraints *c;
/////// TOP OF PANEL
///////
wxSizer *topSizer = new wxSizer(expandSizer);
topSizer->SetName("topSizer");
// Specify constraints for the top sizer
c = new wxLayoutConstraints;
c->left.SameAs (expandSizer, wxLeft);
c->top.SameAs (expandSizer, wxTop);
c->right.SameAs (expandSizer, wxRight);
c->height.PercentOf (expandSizer, wxHeight, 50);
topSizer->SetConstraints(c);
/*
* Add a row-col sizer and some buttons
*/
// Default is layout by rows, 20 columns per row, shrink to fit.
wxRowColSizer *rowCol = new wxRowColSizer(topSizer);
rowCol->SetName("rowCol");
wxButton *button = new wxButton(panel, -1, "Button 1");
rowCol->AddSizerChild(button);
button = new wxButton(panel, -1, "Button 2");
rowCol->AddSizerChild(button);
button = new wxButton(panel, -1, "Button 3");
rowCol->AddSizerChild(button);
// Centre the rowcol in the middle of the upper sizer
c = new wxLayoutConstraints;
c->centreX.SameAs (topSizer, wxCentreX);
c->centreY.SameAs (topSizer, wxCentreY);
c->width.AsIs();
c->height.AsIs();
rowCol->SetConstraints(c);
/////// BOTTOM OF PANEL
///////
wxSizer *bottomSizer = new wxSizer(expandSizer);
// Specify constraints for the bottom sizer
c = new wxLayoutConstraints;
c->left.SameAs (expandSizer, wxLeft);
c->top.PercentOf (expandSizer, wxHeight, 50);
c->right.SameAs (expandSizer, wxRight);
c->height.PercentOf (expandSizer, wxHeight, 50);
bottomSizer->SetConstraints(c);
wxButton *button2 = new wxButton(panel, -1, "Test button");
// The button should be a child of the bottom sizer
bottomSizer->AddSizerChild(button2);
// Centre the button on the sizer
c = new wxLayoutConstraints;
c->centreX.SameAs (bottomSizer, wxCentreX);
c->centreY.SameAs (bottomSizer, wxCentreY);
c->width.PercentOf (bottomSizer, wxWidth, 20);
c->height.PercentOf (bottomSizer, wxHeight, 20);
button2->SetConstraints(c);
}
BEGIN_EVENT_TABLE(SizerFrame, wxFrame)
EVT_SIZE(SizerFrame::OnSize)
END_EVENT_TABLE()
// Size the subwindows when the frame is resized
void SizerFrame::OnSize(wxSizeEvent& event)
{
wxFrame::OnSize(event);
panel->Layout();
}
//-----------------------------------------------------------------
// NewSizerFrame
//-----------------------------------------------------------------
@@ -372,7 +267,7 @@ NewSizerFrame::NewSizerFrame(wxFrame *frame, char *title, int x, int y ):
// has a text ctrl in the middle. at the bottom, we have
// two buttons which.
topsizer = new wxBox( wxVERTICAL );
wxBox *topsizer = new wxBox( wxVERTICAL );
// 1) top: create wxStaticText with minimum size equal to its default size
topsizer->Add(
@@ -425,24 +320,10 @@ NewSizerFrame::NewSizerFrame(wxFrame *frame, char *title, int x, int y ):
// don't allow frame to get smaller than what the sizers tell ye
topsizer->SetSizeHints( this );
// layout widgets
topsizer->Layout();
}
// This can later be removed if we integrate wxNewSizers
// into wxWindows
BEGIN_EVENT_TABLE(NewSizerFrame, wxFrame)
EVT_SIZE(NewSizerFrame::OnSize)
END_EVENT_TABLE()
void NewSizerFrame::OnSize(wxSizeEvent& event)
{
wxFrame::OnSize(event);
wxSize client_size( GetClientSize() );
topsizer->SetDimension( 0, 0, client_size.x, client_size.y );
SetSizer( topsizer );
SetAutoLayout( TRUE );
}