Added wxNewSizer and wxBorderNewSizer with sample

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@3319 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling
1999-08-08 16:45:57 +00:00
parent 29672bf006
commit c62ac5b6e4
6 changed files with 290 additions and 59 deletions

View File

@@ -25,6 +25,8 @@
#endif
#include <ctype.h>
#include "wx/sizer.h"
#include "layout.h"
// Declare two frames
@@ -52,6 +54,7 @@ bool MyApp::OnInit(void)
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();
file_menu->Append(LAYOUT_QUIT, "E&xit", "Quit program");
@@ -152,6 +155,10 @@ bool MyApp::OnInit(void)
return TRUE;
}
//-----------------------------------------------------------------
// MyFrame
//-----------------------------------------------------------------
// Define my frame constructor
MyFrame::MyFrame(wxFrame *frame, char *title, int x, int y, int w, int h):
wxFrame(frame, -1, title, wxPoint(x, y), wxSize(w, h))
@@ -165,6 +172,7 @@ 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)
END_EVENT_TABLE()
@@ -188,7 +196,13 @@ void MyFrame::Quit(wxCommandEvent& WXUNUSED(event) )
void MyFrame::TestSizers(wxCommandEvent& WXUNUSED(event) )
{
SizerFrame *newFrame = new SizerFrame((MyFrame *) NULL, (char *) "Sizer Test Frame", 50, 50, 500, 500);
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 );
newFrame->Show(TRUE);
}
@@ -224,6 +238,10 @@ void MyFrame::Draw(wxDC& dc, bool WXUNUSED(draw_bitmaps) )
dc.DrawArc(50, 300, 100, 250, 100, 300 );
}
//-----------------------------------------------------------------
// MyWindow
//-----------------------------------------------------------------
BEGIN_EVENT_TABLE(MyWindow, wxWindow)
EVT_PAINT(MyWindow::OnPaint)
END_EVENT_TABLE()
@@ -245,6 +263,9 @@ 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))
@@ -339,3 +360,43 @@ void SizerFrame::OnSize(wxSizeEvent& event)
panel->Layout();
}
//-----------------------------------------------------------------
// NewSizerFrame
//-----------------------------------------------------------------
NewSizerFrame::NewSizerFrame(wxFrame *frame, char *title, int x, int y ):
wxFrame(frame, -1, title, wxPoint(x, y) )
{
// no extra options means border all around
topsizer = new wxBorderNewSizer();
// make border 20 pixels wide
topsizer->Add( new wxButton( this, -1, "Hello" ), 20 );
// set frame to minimum size
topsizer->Fit( this );
// 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 );
}