]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/sashtest/sashtest.cpp
new carbon implementation (unicode support)
[wxWidgets.git] / samples / sashtest / sashtest.cpp
index 1542d084eb758bb1e8db0590a108b8996fca1b6a..e25e124b3fba4b112d2bf7719bb612e734abbfe2 100644 (file)
@@ -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 license
 /////////////////////////////////////////////////////////////////////////////
 
 // For compilers that support precompilation, includes "wx/wx.h".
@@ -21,8 +21,8 @@
 #include "wx/mdi.h"
 #endif
 
-#include <wx/toolbar.h>
-#include <wx/laywin.h>
+#include "wx/toolbar.h"
+#include "wx/laywin.h"
 
 #include "sashtest.h"
 
@@ -42,31 +42,30 @@ bool MyApp::OnInit(void)
 {
   // 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, -1, _T("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(_T("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, _T("&New window"));
+  file_menu->Append(SASHTEST_TOGGLE_WINDOW, _T("&Toggle window"));
+  file_menu->Append(SASHTEST_QUIT, _T("&Exit"));
 
   wxMenu *help_menu = new wxMenu;
-  help_menu->Append(SASHTEST_ABOUT, "&About");
+  help_menu->Append(SASHTEST_ABOUT, _T("&About"));
 
   wxMenuBar *menu_bar = new wxMenuBar;
 
-  menu_bar->Append(file_menu, "&File");
-  menu_bar->Append(help_menu, "&Help");
+  menu_bar->Append(file_menu, _T("&File"));
+  menu_bar->Append(help_menu, _T("&Help"));
 
   // Associate the menu bar with the frame
   frame->SetMenuBar(menu_bar);
@@ -92,13 +91,17 @@ 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);
@@ -108,7 +111,9 @@ MyFrame::MyFrame(wxWindow *parent, const wxWindowID id, const wxString& title, c
   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);
@@ -118,7 +123,9 @@ MyFrame::MyFrame(wxWindow *parent, const wxWindowID id, const wxString& title, c
   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);
@@ -126,15 +133,17 @@ MyFrame::MyFrame(wxWindow *parent, const wxWindowID id, const wxString& title, c
   win->SetSashVisible(wxSASH_RIGHT, TRUE);
   win->SetExtraBorderSize(10);
 
-  wxTextCtrl* textWindow = new wxTextCtrl(win, -1, "", wxDefaultPosition, wxDefaultSize,
+  wxTextCtrl* textWindow = new wxTextCtrl(win, -1, _T(""), wxDefaultPosition, wxDefaultSize,
         wxTE_MULTILINE|wxSUNKEN_BORDER);
 //        wxTE_MULTILINE|wxNO_BORDER);
-  textWindow->SetValue("A help window");
+  textWindow->SetValue(_T("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);
@@ -144,17 +153,17 @@ MyFrame::MyFrame(wxWindow *parent, const wxWindowID id, const wxString& title, c
   m_leftWindow2 = win;
 }
 
-void MyFrame::OnQuit(wxCommandEvent& event)
+void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
 {
       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(_T("wxWindows 2.0 Sash Demo\nAuthor: Julian Smart (c) 1998"), _T("About Sash Demo"));
 }
 
-void MyFrame::OnToggleWindow(wxCommandEvent& event)
+void MyFrame::OnToggleWindow(wxCommandEvent& WXUNUSED(event))
 {
     if (m_leftWindow1->IsShown())
     {
@@ -203,20 +212,20 @@ void MyFrame::OnSashDrag(wxSashEvent& event)
     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, _T("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(_T("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(_T("sashtest_icn")));
 #endif
 
       // Give it a status line
@@ -225,23 +234,23 @@ void MyFrame::OnNewWindow(wxCommandEvent& event)
       // 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, _T("&New window"));
+      file_menu->Append(SASHTEST_CHILD_QUIT, _T("&Close child"));
+      file_menu->Append(SASHTEST_QUIT, _T("&Exit"));
 
       wxMenu *option_menu = new wxMenu;
 
       // Dummy option
-      option_menu->Append(SASHTEST_REFRESH, "&Refresh picture");
+      option_menu->Append(SASHTEST_REFRESH, _T("&Refresh picture"));
 
       wxMenu *help_menu = new wxMenu;
-      help_menu->Append(SASHTEST_ABOUT, "&About");
+      help_menu->Append(SASHTEST_ABOUT, _T("&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, _T("&File"));
+      menu_bar->Append(option_menu, _T("&Options"));
+      menu_bar->Append(help_menu, _T("&Help"));
 
       // Associate the menu bar with the frame
       subframe->SetMenuBar(menu_bar);
@@ -259,13 +268,15 @@ void MyFrame::OnNewWindow(wxCommandEvent& event)
 }
 
 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, -1, pos, size,
+                           wxSUNKEN_BORDER | wxNO_FULL_REPAINT_ON_RESIZE)
 {
+    SetBackgroundColour(* wxWHITE);
 }
 
 // Define the repainting behaviour
@@ -282,9 +293,11 @@ void MyCanvas::OnDraw(wxDC& dc)
   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("This is a test string", 50, 230);
+  dc.DrawText(_T("This is a test string"), 50, 230);
 
   wxPoint points[3];
   points[0].x = 200; points[0].y = 300;
@@ -312,24 +325,7 @@ 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))
 {
     wxLayoutAlgorithm layout;
     layout.LayoutMDIFrame(this);
@@ -367,9 +363,3 @@ void MyChild::OnActivate(wxActivateEvent& event)
     canvas->SetFocus();
 }
 
-bool MyChild::OnClose(void)
-{
-  return TRUE;
-}
-
-