]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/sashtest/sashtest.cpp
don't crash if an item has a NULL ID
[wxWidgets.git] / samples / sashtest / sashtest.cpp
index 2ae188a8aa6b2f12a9c8fa9a6ee4849a4f5f9fed..16dd9ff1860f45154cfae81a45099f44c54d7da5 100644 (file)
@@ -40,9 +40,12 @@ 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, _T("Sash Demo"), wxPoint(0, 0), wxSize(500, 400),
+  frame = new MyFrame(NULL, wxID_ANY, _T("Sash Demo"), wxPoint(0, 0), wxSize(500, 400),
                       wxDEFAULT_FRAME_STYLE |
                       wxNO_FULL_REPAINT_ON_RESIZE |
                       wxHSCROLL | wxVSCROLL);
@@ -70,13 +73,15 @@ bool MyApp::OnInit(void)
   // 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)
@@ -106,7 +111,7 @@ MyFrame::MyFrame(wxWindow *parent, const wxWindowID id, const wxString& title, c
   win->SetOrientation(wxLAYOUT_HORIZONTAL);
   win->SetAlignment(wxLAYOUT_TOP);
   win->SetBackgroundColour(wxColour(255, 0, 0));
-  win->SetSashVisible(wxSASH_BOTTOM, TRUE);
+  win->SetSashVisible(wxSASH_BOTTOM, true);
 
   m_topWindow = win;
 
@@ -118,7 +123,7 @@ MyFrame::MyFrame(wxWindow *parent, const wxWindowID id, const wxString& title, c
   win->SetOrientation(wxLAYOUT_HORIZONTAL);
   win->SetAlignment(wxLAYOUT_BOTTOM);
   win->SetBackgroundColour(wxColour(0, 0, 255));
-  win->SetSashVisible(wxSASH_TOP, TRUE);
+  win->SetSashVisible(wxSASH_TOP, true);
 
   m_bottomWindow = win;
 
@@ -130,10 +135,10 @@ MyFrame::MyFrame(wxWindow *parent, const wxWindowID id, const wxString& title, c
   win->SetOrientation(wxLAYOUT_VERTICAL);
   win->SetAlignment(wxLAYOUT_LEFT);
   win->SetBackgroundColour(wxColour(0, 255, 0));
-  win->SetSashVisible(wxSASH_RIGHT, TRUE);
+  win->SetSashVisible(wxSASH_RIGHT, true);
   win->SetExtraBorderSize(10);
 
-  wxTextCtrl* textWindow = new wxTextCtrl(win, -1, _T(""), wxDefaultPosition, wxDefaultSize,
+  wxTextCtrl* textWindow = new wxTextCtrl(win, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize,
         wxTE_MULTILINE|wxSUNKEN_BORDER);
 //        wxTE_MULTILINE|wxNO_BORDER);
   textWindow->SetValue(_T("A help window"));
@@ -148,14 +153,14 @@ MyFrame::MyFrame(wxWindow *parent, const wxWindowID id, const wxString& title, c
   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& WXUNUSED(event))
 {
-      Close(TRUE);
+      Close(true);
 }
 
 void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
@@ -167,14 +172,16 @@ 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)
@@ -205,8 +212,11 @@ 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();
@@ -228,8 +238,10 @@ void MyFrame::OnNewWindow(wxCommandEvent& WXUNUSED(event))
       subframe->SetIcon(wxIcon(_T("sashtest_icn")));
 #endif
 
+#if wxUSE_STATUSBAR
       // Give it a status line
       subframe->CreateStatusBar();
+#endif // wxUSE_STATUSBAR
 
       // Make a menubar
       wxMenu *file_menu = new wxMenu;
@@ -264,7 +276,7 @@ void MyFrame::OnNewWindow(wxCommandEvent& WXUNUSED(event))
       // Give it scrollbars
       canvas->SetScrollbars(20, 20, 50, 50);
 
-      subframe->Show(TRUE);
+      subframe->Show(true);
 }
 
 BEGIN_EVENT_TABLE(MyCanvas, wxScrolledWindow)
@@ -273,7 +285,7 @@ END_EVENT_TABLE()
 
 // Define a constructor for my canvas
 MyCanvas::MyCanvas(wxWindow *parent, const wxPoint& pos, const wxSize& size)
-        : wxScrolledWindow(parent, -1, pos, size,
+        : wxScrolledWindow(parent, wxID_ANY, pos, size,
                            wxSUNKEN_BORDER | wxNO_FULL_REPAINT_ON_RESIZE)
 {
     SetBackgroundColour(* wxWHITE);
@@ -282,29 +294,29 @@ MyCanvas::MyCanvas(wxWindow *parent, const wxPoint& pos, const wxSize& size)
 // 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.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.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.DrawEllipse(250, 250, 100, 50);
 #if wxUSE_SPLINES
-  dc.DrawSpline(50, 200, 50, 100, 200, 10);
+    dc.DrawSpline(50, 200, 50, 100, 200, 10);
 #endif // wxUSE_SPLINES
-  dc.DrawLine(50, 230, 200, 230);
-  dc.DrawText(_T("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.DrawLine(50, 230, 200, 230);
+    dc.DrawText(_T("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
@@ -327,8 +339,10 @@ void MyCanvas::OnEvent(wxMouseEvent& 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
@@ -341,7 +355,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);
@@ -354,7 +368,7 @@ MyChild::~MyChild(void)
 
 void MyChild::OnQuit(wxCommandEvent& WXUNUSED(event))
 {
-      Close(TRUE);
+      Close(true);
 }
 
 void MyChild::OnActivate(wxActivateEvent& event)
@@ -362,4 +376,3 @@ void MyChild::OnActivate(wxActivateEvent& event)
   if (event.GetActive() && canvas)
     canvas->SetFocus();
 }
-