]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/mdi/mdi.cpp
Factory some of wxFilterClassFactory into a base class.
[wxWidgets.git] / samples / mdi / mdi.cpp
index 33582119bc395bf3a97f01de159778b61376195a..dc6105a5060c0c8885f731e1ce9f580b8f3f57b0 100644 (file)
@@ -72,7 +72,6 @@ BEGIN_EVENT_TABLE(MyFrame, wxMDIParentFrame)
     EVT_MENU(MDI_QUIT, MyFrame::OnQuit)
 
     EVT_CLOSE(MyFrame::OnClose)
-
     EVT_SIZE(MyFrame::OnSize)
 END_EVENT_TABLE()
 
@@ -86,6 +85,11 @@ BEGIN_EVENT_TABLE(MyChild, wxMDIChildFrame)
     EVT_MENU(MDI_CHANGE_POSITION, MyChild::OnChangePosition)
     EVT_MENU(MDI_CHANGE_SIZE, MyChild::OnChangeSize)
 
+#if wxUSE_CLIPBOARD
+    EVT_MENU(wxID_PASTE, MyChild::OnPaste)
+    EVT_UPDATE_UI(wxID_PASTE, MyChild::OnUpdatePaste)
+#endif // wxUSE_CLIPBOARD
+
     EVT_SIZE(MyChild::OnSize)
     EVT_MOVE(MyChild::OnMove)
 
@@ -179,6 +183,7 @@ MyFrame::MyFrame(wxWindow *parent,
     InitToolBar(GetToolBar());
 #endif // wxUSE_TOOLBAR
 
+#if wxUSE_ACCEL
     // Accelerators
     wxAcceleratorEntry entries[3];
     entries[0].Set(wxACCEL_CTRL, (int) 'N', MDI_NEW_WINDOW);
@@ -186,6 +191,7 @@ MyFrame::MyFrame(wxWindow *parent,
     entries[2].Set(wxACCEL_CTRL, (int) 'A', MDI_ABOUT);
     wxAcceleratorTable accel(3, entries);
     SetAcceleratorTable(accel);
+#endif // wxUSE_ACCEL
 }
 
 void MyFrame::OnClose(wxCloseEvent& event)
@@ -235,6 +241,7 @@ void MyFrame::OnNewWindow(wxCommandEvent& WXUNUSED(event) )
     subframe->SetIcon(wxIcon( mondrian_xpm ));
 #endif
 
+#if wxUSE_MENUS
     // Make a menubar
     wxMenu *file_menu = new wxMenu;
 
@@ -249,6 +256,10 @@ void MyFrame::OnNewWindow(wxCommandEvent& WXUNUSED(event) )
     option_menu->AppendSeparator();
     option_menu->Append(MDI_CHANGE_POSITION, _T("Move frame\tCtrl-M"));
     option_menu->Append(MDI_CHANGE_SIZE, _T("Resize frame\tCtrl-S"));
+#if wxUSE_CLIPBOARD
+    option_menu->AppendSeparator();
+    option_menu->Append(wxID_PASTE, _T("Copy text from clipboard\tCtrl-V"));
+#endif // wxUSE_CLIPBOARD
 
     wxMenu *help_menu = new wxMenu;
     help_menu->Append(MDI_ABOUT, _T("&About"));
@@ -261,6 +272,7 @@ void MyFrame::OnNewWindow(wxCommandEvent& WXUNUSED(event) )
 
     // Associate the menu bar with the frame
     subframe->SetMenuBar(menu_bar);
+#endif // wxUSE_MENUS
 
 #if wxUSE_STATUSBAR
     subframe->CreateStatusBar();
@@ -279,7 +291,7 @@ void MyFrame::OnNewWindow(wxCommandEvent& WXUNUSED(event) )
     subframe->Show(true);
 }
 
-void MyFrame::OnSize(wxSizeEvent& 
+void MyFrame::OnSize(wxSizeEvent&
                                   #ifdef __WXUNIVERSAL__
                                   event
                                   #else
@@ -296,7 +308,7 @@ void MyFrame::OnSize(wxSizeEvent&
     // FIXME: On wxX11, we need the MDI frame to process this
     // event, but on other platforms this should not
     // be done.
-#ifdef __WXUNIVERSAL__   
+#ifdef __WXUNIVERSAL__
     event.Skip();
 #endif
 }
@@ -318,24 +330,24 @@ void MyFrame::InitToolBar(wxToolBar* toolBar)
     int width = 24;
     int currentX = 5;
 
-    toolBar->AddTool( MDI_NEW_WINDOW, *(bitmaps[0]), wxNullBitmap, false, currentX, wxDefaultPosition.y, (wxObject *) NULL, _T("New file"));
+    toolBar->AddTool( MDI_NEW_WINDOW, *(bitmaps[0]), wxNullBitmap, false, currentX, wxDefaultCoord, (wxObject *) NULL, _T("New file"));
     currentX += width + 5;
-    toolBar->AddTool(1, *bitmaps[1], wxNullBitmap, false, currentX, wxDefaultPosition.y, (wxObject *) NULL, _T("Open file"));
+    toolBar->AddTool(1, *bitmaps[1], wxNullBitmap, false, currentX, wxDefaultCoord, (wxObject *) NULL, _T("Open file"));
     currentX += width + 5;
-    toolBar->AddTool(2, *bitmaps[2], wxNullBitmap, false, currentX, wxDefaultPosition.y, (wxObject *) NULL, _T("Save file"));
+    toolBar->AddTool(2, *bitmaps[2], wxNullBitmap, false, currentX, wxDefaultCoord, (wxObject *) NULL, _T("Save file"));
     currentX += width + 5;
     toolBar->AddSeparator();
-    toolBar->AddTool(3, *bitmaps[3], wxNullBitmap, false, currentX, wxDefaultPosition.y, (wxObject *) NULL, _T("Copy"));
+    toolBar->AddTool(3, *bitmaps[3], wxNullBitmap, false, currentX, wxDefaultCoord, (wxObject *) NULL, _T("Copy"));
     currentX += width + 5;
-    toolBar->AddTool(4, *bitmaps[4], wxNullBitmap, false, currentX, wxDefaultPosition.y, (wxObject *) NULL, _T("Cut"));
+    toolBar->AddTool(4, *bitmaps[4], wxNullBitmap, false, currentX, wxDefaultCoord, (wxObject *) NULL, _T("Cut"));
     currentX += width + 5;
-    toolBar->AddTool(5, *bitmaps[5], wxNullBitmap, false, currentX, wxDefaultPosition.y, (wxObject *) NULL, _T("Paste"));
+    toolBar->AddTool(5, *bitmaps[5], wxNullBitmap, false, currentX, wxDefaultCoord, (wxObject *) NULL, _T("Paste"));
     currentX += width + 5;
     toolBar->AddSeparator();
-    toolBar->AddTool(6, *bitmaps[6], wxNullBitmap, false, currentX, wxDefaultPosition.y, (wxObject *) NULL, _T("Print"));
+    toolBar->AddTool(6, *bitmaps[6], wxNullBitmap, false, currentX, wxDefaultCoord, (wxObject *) NULL, _T("Print"));
     currentX += width + 5;
     toolBar->AddSeparator();
-    toolBar->AddTool( MDI_ABOUT, *bitmaps[7], wxNullBitmap, true, currentX, wxDefaultPosition.y, (wxObject *) NULL, _T("Help"));
+    toolBar->AddTool( MDI_ABOUT, *bitmaps[7], wxNullBitmap, true, currentX, wxDefaultCoord, (wxObject *) NULL, _T("Help"));
 
     toolBar->Realize();
 
@@ -364,6 +376,9 @@ MyCanvas::MyCanvas(wxWindow *parent, const wxPoint& pos, const wxSize& size)
 // Define the repainting behaviour
 void MyCanvas::OnDraw(wxDC& dc)
 {
+    if ( !m_text.empty() )
+        dc.DrawText(m_text, 10, 10);
+
     dc.SetFont(*wxSWISS_FONT);
     dc.SetPen(*wxGREEN_PEN);
     dc.DrawLine(0, 0, 200, 200);
@@ -519,4 +534,22 @@ void MyChild::OnClose(wxCloseEvent& event)
     event.Skip();
 }
 
+#if wxUSE_CLIPBOARD
+
+#include "wx/clipbrd.h"
+
+void MyChild::OnPaste(wxCommandEvent& WXUNUSED(event))
+{
+    wxClipboardLocker lock;
+    wxTextDataObject data;
+    canvas->SetText(wxTheClipboard->GetData(data) ? data.GetText().c_str()
+                                                  : _T("No text on clipboard"));
+}
+
+void MyChild::OnUpdatePaste(wxUpdateUIEvent& event)
+{
+    wxClipboardLocker lock;
+    event.Enable( wxTheClipboard->IsSupported(wxDF_TEXT) );
+}
 
+#endif // wxUSE_CLIPBOARD