From da9df1f51eddaf0a14aed8280186ce2d839a89c5 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 23 Mar 2003 17:48:42 +0000 Subject: [PATCH] added copying images to/pasting them from clipboard tests git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@19731 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- samples/image/image.cpp | 78 +++++++++++++++++++++++++++++++++-------- 1 file changed, 63 insertions(+), 15 deletions(-) diff --git a/samples/image/image.cpp b/samples/image/image.cpp index 45aedd5358..b0e8976aca 100644 --- a/samples/image/image.cpp +++ b/samples/image/image.cpp @@ -24,14 +24,19 @@ #include "wx/wfstream.h" #include "wx/quantize.h" +#if wxUSE_CLIPBOARD + #include "wx/dataobj.h" + #include "wx/clipbrd.h" +#endif // wxUSE_CLIPBOARD + #include "smile.xbm" #if !defined(__WINDOWS__) || wxUSE_XPM_IN_MSW #include "smile.xpm" #endif -#if !defined(__WXMOTIF__) -#define wxHAVE_RAW_BITMAP +#if defined(__WXMSW__) + #define wxHAVE_RAW_BITMAP #endif // derived classes @@ -122,6 +127,11 @@ public: #endif // wxHAVE_RAW_BITMAP void OnQuit( wxCommandEvent &event ); +#if wxUSE_CLIPBOARD + void OnCopy(wxCommandEvent& event); + void OnPaste(wxCommandEvent& event); +#endif // wxUSE_CLIPBOARD + MyCanvas *m_canvas; private: @@ -531,9 +541,7 @@ MyCanvas::MyCanvas( wxWindow *parent, wxWindowID id, else my_horse_ani [i] = wxBitmap( image ); } - - -#endif +#endif // wxUSE_ICO_CUR image.Destroy(); @@ -805,24 +813,36 @@ BEGIN_EVENT_TABLE(MyFrame,wxFrame) #ifdef wxHAVE_RAW_BITMAP EVT_MENU (ID_SHOWRAW, MyFrame::OnTestRawBitmap) #endif + +#if wxUSE_CLIPBOARD + EVT_MENU(wxID_COPY, MyFrame::OnCopy) + EVT_MENU(wxID_PASTE, MyFrame::OnPaste) +#endif // wxUSE_CLIPBOARD END_EVENT_TABLE() MyFrame::MyFrame() : wxFrame( (wxFrame *)NULL, -1, _T("wxImage sample"), wxPoint(20,20), wxSize(470,360) ) { - wxMenu *file_menu = new wxMenu(); - file_menu->Append( ID_NEW, _T("&Show image...\tCtrl-O")); + wxMenuBar *menu_bar = new wxMenuBar(); + + wxMenu *menuImage = new wxMenu; + menuImage->Append( ID_NEW, _T("&Show any image...\tCtrl-O")); #ifdef wxHAVE_RAW_BITMAP - file_menu->Append( ID_SHOWRAW, _T("Test &raw bitmap...\tCtrl-R")); + menuImage->Append( ID_SHOWRAW, _T("Test &raw bitmap...\tCtrl-R")); #endif - file_menu->AppendSeparator(); - file_menu->Append( ID_ABOUT, _T("&About...")); - file_menu->AppendSeparator(); - file_menu->Append( ID_QUIT, _T("E&xit\tCtrl-Q")); - - wxMenuBar *menu_bar = new wxMenuBar(); - menu_bar->Append(file_menu, _T("&File")); + menuImage->AppendSeparator(); + menuImage->Append( ID_ABOUT, _T("&About...")); + menuImage->AppendSeparator(); + menuImage->Append( ID_QUIT, _T("E&xit\tCtrl-Q")); + menu_bar->Append(menuImage, _T("&Image")); + +#if wxUSE_CLIPBOARD + wxMenu *menuClipboard = new wxMenu; + menuClipboard->Append(wxID_COPY, _T("&Copy test image\tCtrl-C")); + menuClipboard->Append(wxID_PASTE, _T("&Paste image\tCtrl-V")); + menu_bar->Append(menuClipboard, _T("&Clipboard")); +#endif // wxUSE_CLIPBOARD SetMenuBar( menu_bar ); @@ -874,6 +894,34 @@ void MyFrame::OnTestRawBitmap( wxCommandEvent &event ) #endif // wxHAVE_RAW_BITMAP +#if wxUSE_CLIPBOARD + +void MyFrame::OnCopy(wxCommandEvent& WXUNUSED(event)) +{ + wxBitmapDataObject *dobjBmp = new wxBitmapDataObject; + dobjBmp->SetBitmap(*m_canvas->my_horse_png); + + if ( !wxTheClipboard->SetData(dobjBmp) ) + { + wxLogError(_T("Failed to copy bitmap to clipboard")); + } +} + +void MyFrame::OnPaste(wxCommandEvent& WXUNUSED(event)) +{ + wxBitmapDataObject dobjBmp; + if ( !wxTheClipboard->GetData(dobjBmp) ) + { + wxLogMessage(_T("No bitmap data in the clipboard")); + } + else + { + (new MyImageFrame(this, dobjBmp.GetBitmap()))->Show(); + } +} + +#endif // wxUSE_CLIPBOARD + //----------------------------------------------------------------------------- // MyApp //----------------------------------------------------------------------------- -- 2.45.2