]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/docvwmdi/docview.cpp
revisions contributed by Utensil Candel
[wxWidgets.git] / samples / docvwmdi / docview.cpp
index dad7ffd133ea721473a107ed83db55ed48bb8a4d..db49e8b5db59b0fba48097bd204f7eeb667deea7 100644 (file)
@@ -5,16 +5,12 @@
 // 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
 /////////////////////////////////////////////////////////////////////////////
 
-#ifdef __GNUG__
-// #pragma implementation "docview.h"
-#endif
-
 /*
- * Purpose:  Document/view architecture demo for wxWindows class library - MDI
+ * Purpose:  Document/view architecture demo for wxWidgets class library - MDI
  */
 
 
 #error You must set wxUSE_DOC_VIEW_ARCHITECTURE to 1 in setup.h!
 #endif
 
+#if !wxUSE_MDI_ARCHITECTURE
+#error You must set wxUSE_MDI_ARCHITECTURE to 1 in setup.h!
+#endif
+
 #include "docview.h"
 #include "doc.h"
 #include "view.h"
@@ -52,55 +52,59 @@ bool MyApp::OnInit(void)
   m_docManager = new wxDocManager;
 
   //// Create a template relating drawing documents to their views
-  (void) new wxDocTemplate((wxDocManager *) m_docManager, "Drawing", "*.drw", "", "drw", "Drawing Doc", "Drawing View",
+  (void) new wxDocTemplate((wxDocManager *) m_docManager, _T("Drawing"), _T("*.drw"), _T(""), _T("drw"), _T("Drawing Doc"), _T("Drawing View"),
           CLASSINFO(DrawingDocument), CLASSINFO(DrawingView));
 
   //// Create a template relating text documents to their views
-  (void) new wxDocTemplate(m_docManager, "Text", "*.txt", "", "txt", "Text Doc", "Text View",
+  (void) new wxDocTemplate(m_docManager, _T("Text"), _T("*.txt"), _T(""), _T("txt"), _T("Text Doc"), _T("Text View"),
           CLASSINFO(TextEditDocument), CLASSINFO(TextEditView));
 
   //// Create the main frame window
-  frame = new MyFrame((wxDocManager *) m_docManager, (wxFrame *) NULL, (const wxString) "DocView Demo", wxPoint(0, 0), wxSize(500, 400), wxDEFAULT_FRAME_STYLE);
+  frame = new MyFrame((wxDocManager *) m_docManager, (wxFrame *) NULL,
+                      _T("DocView Demo"), wxPoint(0, 0), wxSize(500, 400),
+                      wxDEFAULT_FRAME_STYLE | wxNO_FULL_REPAINT_ON_RESIZE);
 
   //// Give it an icon (this is ignored in MDI mode: uses resources)
 #ifdef __WXMSW__
-  frame->SetIcon(wxIcon("doc"));
-#endif
-#ifdef __X__
-  frame->SetIcon(wxIcon("doc.xbm"));
+  frame->SetIcon(wxIcon(_T("doc")));
 #endif
 
   //// Make a menubar
   wxMenu *file_menu = new wxMenu;
   wxMenu *edit_menu = (wxMenu *) NULL;
 
-  file_menu->Append(wxID_NEW, "&New...");
-  file_menu->Append(wxID_OPEN, "&Open...");
+  file_menu->Append(wxID_NEW, _T("&New...\tCtrl-N"));
+  file_menu->Append(wxID_OPEN, _T("&Open...\tCtrl-X"));
 
   file_menu->AppendSeparator();
-  file_menu->Append(wxID_EXIT, "E&xit");
+  file_menu->Append(wxID_EXIT, _T("E&xit\tAlt-X"));
   
   // A nice touch: a history of files visited. Use this menu.
   m_docManager->FileHistoryUseMenu(file_menu);
 
   wxMenu *help_menu = new wxMenu;
-  help_menu->Append(DOCVIEW_ABOUT, "&About");
+  help_menu->Append(DOCVIEW_ABOUT, _T("&About\tF1"));
 
   wxMenuBar *menu_bar = new wxMenuBar;
 
-  menu_bar->Append(file_menu, "&File");
+  menu_bar->Append(file_menu, _T("&File"));
   if (edit_menu)
-    menu_bar->Append(edit_menu, "&Edit");
-  menu_bar->Append(help_menu, "&Help");
+    menu_bar->Append(edit_menu, _T("&Edit"));
+  menu_bar->Append(help_menu, _T("&Help"));
 
+#ifdef __WXMAC__
+  wxMenuBar::MacSetCommonMenuBar(menu_bar);
+#endif //def __WXMAC__
   //// Associate the menu bar with the frame
   frame->SetMenuBar(menu_bar);
 
   frame->Centre(wxBOTH);
-  frame->Show(TRUE);
+#ifndef __WXMAC__
+  frame->Show(true);
+#endif //ndef __WXMAC__
 
   SetTopWindow(frame);
-  return TRUE;
+  return true;
 }
 
 int MyApp::OnExit(void)
@@ -117,58 +121,61 @@ int MyApp::OnExit(void)
 wxMDIChildFrame *MyApp::CreateChildFrame(wxDocument *doc, wxView *view, bool isCanvas)
 {
   //// Make a child frame
-  wxDocMDIChildFrame *subframe = new wxDocMDIChildFrame(doc, view, GetMainFrame(), -1, "Child Frame",
-        wxPoint(10, 10), wxSize(300, 300), wxDEFAULT_FRAME_STYLE);
+  wxDocMDIChildFrame *subframe =
+      new wxDocMDIChildFrame(doc, view, GetMainFrame(), wxID_ANY, _T("Child Frame"),
+                             wxPoint(10, 10), wxSize(300, 300),
+                             wxDEFAULT_FRAME_STYLE |
+                             wxNO_FULL_REPAINT_ON_RESIZE);
 
 #ifdef __WXMSW__
-  subframe->SetIcon(wxString(isCanvas ? "chart" : "notepad"));
+  subframe->SetIcon(wxString(isCanvas ? _T("chart") : _T("notepad")));
 #endif
 #ifdef __X__
-  subframe->SetIcon(wxIcon("doc.xbm"));
+  subframe->SetIcon(wxIcon(_T("doc.xbm")));
 #endif
 
   //// Make a menubar
   wxMenu *file_menu = new wxMenu;
 
-  file_menu->Append(wxID_NEW, "&New...");
-  file_menu->Append(wxID_OPEN, "&Open...");
-  file_menu->Append(wxID_CLOSE, "&Close");
-  file_menu->Append(wxID_SAVE, "&Save");
-  file_menu->Append(wxID_SAVEAS, "Save &As...");
+  file_menu->Append(wxID_NEW, _T("&New..."));
+  file_menu->Append(wxID_OPEN, _T("&Open..."));
+  file_menu->Append(wxID_CLOSE, _T("&Close"));
+  file_menu->Append(wxID_SAVE, _T("&Save"));
+  file_menu->Append(wxID_SAVEAS, _T("Save &As..."));
 
   if (isCanvas)
   {
     file_menu->AppendSeparator();
-    file_menu->Append(wxID_PRINT, "&Print...");
-    file_menu->Append(wxID_PRINT_SETUP, "Print &Setup...");
-    file_menu->Append(wxID_PREVIEW, "Print Pre&view");
+    file_menu->Append(wxID_PRINT, _T("&Print..."));
+    file_menu->Append(wxID_PRINT_SETUP, _T("Print &Setup..."));
+    file_menu->Append(wxID_PREVIEW, _T("Print Pre&view"));
   }
 
   file_menu->AppendSeparator();
-  file_menu->Append(wxID_EXIT, "E&xit");
+  file_menu->Append(wxID_EXIT, _T("E&xit"));
 
   wxMenu *edit_menu = (wxMenu *) NULL;
 
   if (isCanvas)
   {
     edit_menu = new wxMenu;
-    edit_menu->Append(wxID_UNDO, "&Undo");
-    edit_menu->Append(wxID_REDO, "&Redo");
+    edit_menu->Append(wxID_UNDO, _T("&Undo"));
+    edit_menu->Append(wxID_REDO, _T("&Redo"));
     edit_menu->AppendSeparator();
-    edit_menu->Append(DOCVIEW_CUT, "&Cut last segment");
+    edit_menu->Append(DOCVIEW_CUT, _T("&Cut last segment"));
 
     doc->GetCommandProcessor()->SetEditMenu(edit_menu);
   }
 
   wxMenu *help_menu = new wxMenu;
-  help_menu->Append(DOCVIEW_ABOUT, "&About");
+  help_menu->Append(DOCVIEW_ABOUT, _T("&About"));
 
   wxMenuBar *menu_bar = new wxMenuBar;
 
-  menu_bar->Append(file_menu, "&File");
+  menu_bar->Append(file_menu, _T("&File"));
   if (isCanvas)
-    menu_bar->Append(edit_menu, "&Edit");
-  menu_bar->Append(help_menu, "&Help");
+    menu_bar->Append(edit_menu, _T("&Edit"));
+  menu_bar->Append(help_menu, _T("&Help"));
 
   //// Associate the menu bar with the frame
   subframe->SetMenuBar(menu_bar);
@@ -187,19 +194,19 @@ END_EVENT_TABLE()
 
 MyFrame::MyFrame(wxDocManager *manager, wxFrame *frame, const wxString& title,
     const wxPoint& pos, const wxSize& size, long type):
-  wxDocMDIParentFrame(manager, frame, -1, title, pos, size, type, "myFrame")
+  wxDocMDIParentFrame(manager, frame, wxID_ANY, title, pos, size, type, _T("myFrame"))
 {
   editMenu = (wxMenu *) NULL;
 }
 
 void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event) )
 {
-    (void)wxMessageBox("DocView Demo\nAuthor: Julian Smart julian.smart@ukonline.co.uk\nUsage: docview.exe", "About DocView");
+    (void)wxMessageBox(_T("DocView Demo\nAuthor: Julian Smart\nUsage: docview.exe"), _T("About DocView"));
 }
 
 // Creates a canvas. Called from view.cpp when a new drawing
 // view is created.
-MyCanvas *MyFrame::CreateCanvas(wxView *view, wxFrame *parent)
+MyCanvas *MyFrame::CreateCanvas(wxView *view, wxMDIChildFrame *parent)
 {
   int width, height;
   parent->GetClientSize(&width, &height);