X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a6d7030871f1376e727902c93f5537165a305e08..789e9abb4527c87ff4503f252c925d247b2480a1:/samples/sashtest/sashtest.cpp diff --git a/samples/sashtest/sashtest.cpp b/samples/sashtest/sashtest.cpp index 1542d084eb..13b6a9df3d 100644 --- a/samples/sashtest/sashtest.cpp +++ b/samples/sashtest/sashtest.cpp @@ -5,8 +5,8 @@ // Modified by: // Created: 04/01/98 // RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license +// Copyright: (c) Julian Smart +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// // For compilers that support precompilation, includes "wx/wx.h". @@ -21,8 +21,8 @@ #include "wx/mdi.h" #endif -#include -#include +#include "wx/toolbar.h" +#include "wx/laywin.h" #include "sashtest.h" @@ -40,44 +40,46 @@ int winNumber = 1; // Initialise this in OnInit, not statically bool MyApp::OnInit(void) { + if ( !wxApp::OnInit() ) + return false; + // Create the main frame window - frame = new MyFrame(NULL, -1, "Sash Demo", wxPoint(0, 0), wxSize(500, 400), - wxDEFAULT_FRAME | wxHSCROLL | wxVSCROLL); + frame = new MyFrame(NULL, wxID_ANY, wxT("Sash Demo"), wxPoint(0, 0), wxSize(500, 400), + wxDEFAULT_FRAME_STYLE | + wxNO_FULL_REPAINT_ON_RESIZE | + wxHSCROLL | wxVSCROLL); // Give it an icon (this is ignored in MDI mode: uses resources) #ifdef __WXMSW__ - frame->SetIcon(wxIcon("sashtest_icn")); -#endif -#ifdef __X__ - frame->SetIcon(wxIcon("sashtest.xbm")); + frame->SetIcon(wxIcon(wxT("sashtest_icn"))); #endif // Make a menubar wxMenu *file_menu = new wxMenu; - file_menu->Append(SASHTEST_NEW_WINDOW, "&New window"); - file_menu->Append(SASHTEST_TOGGLE_WINDOW, "&Toggle window"); - file_menu->Append(SASHTEST_QUIT, "&Exit"); + file_menu->Append(SASHTEST_NEW_WINDOW, wxT("&New window")); + file_menu->Append(SASHTEST_TOGGLE_WINDOW, wxT("&Toggle window")); + file_menu->Append(SASHTEST_QUIT, wxT("&Exit")); wxMenu *help_menu = new wxMenu; - help_menu->Append(SASHTEST_ABOUT, "&About"); + help_menu->Append(SASHTEST_ABOUT, wxT("&About")); wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "&File"); - menu_bar->Append(help_menu, "&Help"); + menu_bar->Append(file_menu, wxT("&File")); + menu_bar->Append(help_menu, wxT("&Help")); // Associate the menu bar with the frame frame->SetMenuBar(menu_bar); +#if wxUSE_STATUSBAR frame->CreateStatusBar(); +#endif // wxUSE_STATUSBAR - frame->Show(TRUE); + frame->Show(true); - SetTopWindow(frame); - - return TRUE; + return true; } BEGIN_EVENT_TABLE(MyFrame, wxMDIParentFrame) @@ -92,80 +94,92 @@ END_EVENT_TABLE() // Define my frame constructor MyFrame::MyFrame(wxWindow *parent, const wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, - const long style): + const long style): wxMDIParentFrame(parent, id, title, pos, size, style) { // Create some dummy layout windows // A window like a toolbar - wxSashLayoutWindow* win = new wxSashLayoutWindow(this, ID_WINDOW_TOP, wxDefaultPosition, wxSize(200, 30), wxNO_BORDER|wxSW_3D); + wxSashLayoutWindow* win = + new wxSashLayoutWindow(this, ID_WINDOW_TOP, + wxDefaultPosition, wxSize(200, 30), + wxNO_BORDER | wxSW_3D | wxCLIP_CHILDREN); + win->SetDefaultSize(wxSize(1000, 30)); win->SetOrientation(wxLAYOUT_HORIZONTAL); win->SetAlignment(wxLAYOUT_TOP); - win->SetBackgroundColour(wxColour(255, 0, 0)); - win->SetSashVisible(wxSASH_BOTTOM, TRUE); + win->SetBackgroundColour(*wxRED); + win->SetSashVisible(wxSASH_BOTTOM, true); m_topWindow = win; // A window like a statusbar - win = new wxSashLayoutWindow(this, ID_WINDOW_BOTTOM, wxDefaultPosition, wxSize(200, 30), wxNO_BORDER|wxSW_3D); + win = new wxSashLayoutWindow(this, ID_WINDOW_BOTTOM, + wxDefaultPosition, wxSize(200, 30), + wxNO_BORDER | wxSW_3D | wxCLIP_CHILDREN); win->SetDefaultSize(wxSize(1000, 30)); win->SetOrientation(wxLAYOUT_HORIZONTAL); win->SetAlignment(wxLAYOUT_BOTTOM); - win->SetBackgroundColour(wxColour(0, 0, 255)); - win->SetSashVisible(wxSASH_TOP, TRUE); + win->SetBackgroundColour(*wxBLUE); + win->SetSashVisible(wxSASH_TOP, true); m_bottomWindow = win; // A window to the left of the client window - win = new wxSashLayoutWindow(this, ID_WINDOW_LEFT1, wxDefaultPosition, wxSize(200, 30), wxNO_BORDER|wxSW_3D); + win = new wxSashLayoutWindow(this, ID_WINDOW_LEFT1, + wxDefaultPosition, wxSize(200, 30), + wxNO_BORDER | wxSW_3D | wxCLIP_CHILDREN); win->SetDefaultSize(wxSize(120, 1000)); win->SetOrientation(wxLAYOUT_VERTICAL); win->SetAlignment(wxLAYOUT_LEFT); - win->SetBackgroundColour(wxColour(0, 255, 0)); - win->SetSashVisible(wxSASH_RIGHT, TRUE); + win->SetBackgroundColour(*wxGREEN); + win->SetSashVisible(wxSASH_RIGHT, true); win->SetExtraBorderSize(10); - wxTextCtrl* textWindow = new wxTextCtrl(win, -1, "", wxDefaultPosition, wxDefaultSize, + wxTextCtrl* textWindow = new wxTextCtrl(win, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE|wxSUNKEN_BORDER); // wxTE_MULTILINE|wxNO_BORDER); - textWindow->SetValue("A help window"); + textWindow->SetValue(wxT("A help window")); m_leftWindow1 = win; // Another window to the left of the client window - win = new wxSashLayoutWindow(this, ID_WINDOW_LEFT2, wxDefaultPosition, wxSize(200, 30), wxNO_BORDER|wxSW_3D); + win = new wxSashLayoutWindow(this, ID_WINDOW_LEFT2, + wxDefaultPosition, wxSize(200, 30), + wxNO_BORDER | wxSW_3D | wxCLIP_CHILDREN); win->SetDefaultSize(wxSize(120, 1000)); win->SetOrientation(wxLAYOUT_VERTICAL); win->SetAlignment(wxLAYOUT_LEFT); win->SetBackgroundColour(wxColour(0, 255, 255)); - win->SetSashVisible(wxSASH_RIGHT, TRUE); + win->SetSashVisible(wxSASH_RIGHT, true); m_leftWindow2 = win; } -void MyFrame::OnQuit(wxCommandEvent& event) +void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) { - Close(TRUE); + Close(true); } -void MyFrame::OnAbout(wxCommandEvent& event) +void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) { - (void)wxMessageBox("wxWindows 2.0 Sash Demo\nAuthor: Julian Smart (c) 1998", "About Sash Demo"); + (void)wxMessageBox(wxT("wxWidgets 2.0 Sash Demo\nAuthor: Julian Smart (c) 1998"), wxT("About Sash Demo")); } -void MyFrame::OnToggleWindow(wxCommandEvent& event) +void MyFrame::OnToggleWindow(wxCommandEvent& WXUNUSED(event)) { if (m_leftWindow1->IsShown()) { - m_leftWindow1->Show(FALSE); + m_leftWindow1->Show(false); } else { - m_leftWindow1->Show(TRUE); + m_leftWindow1->Show(true); } +#if wxUSE_MDI_ARCHITECTURE wxLayoutAlgorithm layout; layout.LayoutMDIFrame(this); +#endif // wxUSE_MDI_ARCHITECTURE } void MyFrame::OnSashDrag(wxSashEvent& event) @@ -196,52 +210,57 @@ void MyFrame::OnSashDrag(wxSashEvent& event) break; } } + +#if wxUSE_MDI_ARCHITECTURE wxLayoutAlgorithm layout; layout.LayoutMDIFrame(this); +#endif // wxUSE_MDI_ARCHITECTURE // Leaves bits of itself behind sometimes GetClientWindow()->Refresh(); } -void MyFrame::OnNewWindow(wxCommandEvent& event) +void MyFrame::OnNewWindow(wxCommandEvent& WXUNUSED(event)) { // Make another frame, containing a canvas - MyChild *subframe = new MyChild(frame, "Canvas Frame", wxPoint(10, 10), wxSize(300, 300), - wxDEFAULT_FRAME); + MyChild *subframe = new MyChild(frame, wxT("Canvas Frame"), + wxPoint(10, 10), wxSize(300, 300), + wxDEFAULT_FRAME_STYLE | + wxNO_FULL_REPAINT_ON_RESIZE); - char titleBuf[100]; - sprintf(titleBuf, "Canvas Frame %d", winNumber); - subframe->SetTitle(titleBuf); + subframe->SetTitle(wxString::Format(wxT("Canvas Frame %d"), winNumber)); winNumber ++; // Give it an icon (this is ignored in MDI mode: uses resources) #ifdef __WXMSW__ - subframe->SetIcon(wxIcon("sashtest_icn")); + subframe->SetIcon(wxIcon(wxT("sashtest_icn"))); #endif +#if wxUSE_STATUSBAR // Give it a status line subframe->CreateStatusBar(); +#endif // wxUSE_STATUSBAR // Make a menubar wxMenu *file_menu = new wxMenu; - file_menu->Append(SASHTEST_NEW_WINDOW, "&New window"); - file_menu->Append(SASHTEST_CHILD_QUIT, "&Close child"); - file_menu->Append(SASHTEST_QUIT, "&Exit"); + file_menu->Append(SASHTEST_NEW_WINDOW, wxT("&New window")); + file_menu->Append(SASHTEST_CHILD_QUIT, wxT("&Close child")); + file_menu->Append(SASHTEST_QUIT, wxT("&Exit")); wxMenu *option_menu = new wxMenu; // Dummy option - option_menu->Append(SASHTEST_REFRESH, "&Refresh picture"); + option_menu->Append(SASHTEST_REFRESH, wxT("&Refresh picture")); wxMenu *help_menu = new wxMenu; - help_menu->Append(SASHTEST_ABOUT, "&About"); + help_menu->Append(SASHTEST_ABOUT, wxT("&About")); wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "&File"); - menu_bar->Append(option_menu, "&Options"); - menu_bar->Append(help_menu, "&Help"); + menu_bar->Append(file_menu, wxT("&File")); + menu_bar->Append(option_menu, wxT("&Options")); + menu_bar->Append(help_menu, wxT("&Help")); // Associate the menu bar with the frame subframe->SetMenuBar(menu_bar); @@ -255,43 +274,47 @@ void MyFrame::OnNewWindow(wxCommandEvent& event) // Give it scrollbars canvas->SetScrollbars(20, 20, 50, 50); - subframe->Show(TRUE); + subframe->Show(true); } BEGIN_EVENT_TABLE(MyCanvas, wxScrolledWindow) - EVT_MOUSE_EVENTS(MyCanvas::OnEvent) + EVT_MOUSE_EVENTS(MyCanvas::OnEvent) END_EVENT_TABLE() // Define a constructor for my canvas -MyCanvas::MyCanvas(wxWindow *parent, const wxPoint& pos, const wxSize& size): - wxScrolledWindow(parent, -1, pos, size, wxSUNKEN_BORDER) +MyCanvas::MyCanvas(wxWindow *parent, const wxPoint& pos, const wxSize& size) + : wxScrolledWindow(parent, wxID_ANY, pos, size, + wxSUNKEN_BORDER | wxNO_FULL_REPAINT_ON_RESIZE) { + SetBackgroundColour(* wxWHITE); } // Define the repainting behaviour void MyCanvas::OnDraw(wxDC& dc) { - dc.SetFont(*wxSWISS_FONT); - dc.SetPen(*wxGREEN_PEN); - dc.DrawLine(0, 0, 200, 200); - dc.DrawLine(200, 0, 0, 200); - - dc.SetBrush(*wxCYAN_BRUSH); - dc.SetPen(*wxRED_PEN); - dc.DrawRectangle(100, 100, 100, 50); - dc.DrawRoundedRectangle(150, 150, 100, 50, 20); - - dc.DrawEllipse(250, 250, 100, 50); - dc.DrawSpline(50, 200, 50, 100, 200, 10); - dc.DrawLine(50, 230, 200, 230); - dc.DrawText("This is a test string", 50, 230); - - wxPoint points[3]; - points[0].x = 200; points[0].y = 300; - points[1].x = 100; points[1].y = 400; - points[2].x = 300; points[2].y = 400; - - dc.DrawPolygon(3, points); + dc.SetFont(*wxSWISS_FONT); + dc.SetPen(*wxGREEN_PEN); + dc.DrawLine(0, 0, 200, 200); + dc.DrawLine(200, 0, 0, 200); + + dc.SetBrush(*wxCYAN_BRUSH); + dc.SetPen(*wxRED_PEN); + dc.DrawRectangle(100, 100, 100, 50); + dc.DrawRoundedRectangle(150, 150, 100, 50, 20); + + dc.DrawEllipse(250, 250, 100, 50); +#if wxUSE_SPLINES + dc.DrawSpline(50, 200, 50, 100, 200, 10); +#endif // wxUSE_SPLINES + dc.DrawLine(50, 230, 200, 230); + dc.DrawText(wxT("This is a test string"), 50, 230); + + wxPoint points[3]; + points[0].x = 200; points[0].y = 300; + points[1].x = 100; points[1].y = 400; + points[2].x = 300; points[2].y = 400; + + dc.DrawPolygon(3, points); } // This implements a tiny doodling program! Drag the mouse using @@ -312,27 +335,12 @@ void MyCanvas::OnEvent(wxMouseEvent& event) ypos = pt.y; } -// Define the behaviour for the frame closing -// - must delete all frames except for the main one. -bool MyFrame::OnClose(void) -{ - // Must delete children - wxNode *node = my_children.First(); - while (node) - { - MyChild *child = (MyChild *)node->Data(); - wxNode *next = node->Next(); - child->OnClose(); - delete child; - node = next; - } - return TRUE; -} - -void MyFrame::OnSize(wxSizeEvent& event) +void MyFrame::OnSize(wxSizeEvent& WXUNUSED(event)) { +#if wxUSE_MDI_ARCHITECTURE wxLayoutAlgorithm layout; layout.LayoutMDIFrame(this); +#endif // wxUSE_MDI_ARCHITECTURE } // Note that SASHTEST_NEW_WINDOW and SASHTEST_ABOUT commands get passed @@ -345,7 +353,7 @@ END_EVENT_TABLE() MyChild::MyChild(wxMDIParentFrame *parent, const wxString& title, const wxPoint& pos, const wxSize& size, const long style): - wxMDIChildFrame(parent, -1, title, pos, size, style) + wxMDIChildFrame(parent, wxID_ANY, title, pos, size, style) { canvas = NULL; my_children.Append(this); @@ -358,7 +366,7 @@ MyChild::~MyChild(void) void MyChild::OnQuit(wxCommandEvent& WXUNUSED(event)) { - Close(TRUE); + Close(true); } void MyChild::OnActivate(wxActivateEvent& event) @@ -366,10 +374,3 @@ void MyChild::OnActivate(wxActivateEvent& event) if (event.GetActive() && canvas) canvas->SetFocus(); } - -bool MyChild::OnClose(void) -{ - return TRUE; -} - -