]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/clipboard/clipboard.cpp
Create a wrapper file for X11/XKBlib.h header.
[wxWidgets.git] / samples / clipboard / clipboard.cpp
index 3a39b222188f67fb39de1fa9993c608c49d41d95..1dc3a4216c3584c2adb43bad6c8fbeba2244cf69 100644 (file)
@@ -1,15 +1,15 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        clipboard.cpp
-// Purpose:     clipbaord wxWidgets sample
+// Purpose:     clipboard wxWidgets sample
 // Author:      Robert Roebling
-// RCS-ID:      $Id: minimal.cpp 53461 2008-05-05 23:30:33Z VZ $
+// RCS-ID:      $Id$
 // Copyright:   (c) Robert Roebling
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 // For compilers that support precompilation, includes "wx/wx.h".
 #include "wx/wxprec.h"
+
 #ifdef __BORLANDC__
     #pragma hdrstop
 #endif
 
 #include "wx/clipbrd.h"
 
-#if !defined(__WXMSW__) && !defined(__WXPM__)
+#ifndef wxHAS_IMAGES_IN_RESOURCES
     #include "../sample.xpm"
 #endif
 
+
+#define USE_ASYNCHRONOUS_CLIPBOARD_REQUEST  0
+
 class MyApp : public wxApp
 {
 public:
     virtual bool OnInit();
 };
 
+#if USE_ASYNCHRONOUS_CLIPBOARD_REQUEST
 enum AsyncRequestState
 {
    Idle,
    Waiting,
    Finished
 };
+#endif
 
 class MyFrame : public wxFrame
 {
@@ -48,12 +53,16 @@ public:
     void OnAbout(wxCommandEvent&event);
     void OnWriteClipboardContents(wxCommandEvent&event);
     void OnUpdateUI(wxUpdateUIEvent&event);
+#if USE_ASYNCHRONOUS_CLIPBOARD_REQUEST
     void OnClipboardChange(wxClipboardEvent&event);
+#endif
 
 private:
     wxTextCtrl        *m_textctrl;
+#if USE_ASYNCHRONOUS_CLIPBOARD_REQUEST
     AsyncRequestState  m_request;
     bool               m_clipboardSupportsText;
+#endif
 
     DECLARE_EVENT_TABLE()
 };
@@ -71,7 +80,9 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
     EVT_MENU(ID_About, MyFrame::OnAbout)
     EVT_BUTTON(ID_Write, MyFrame::OnWriteClipboardContents)
     EVT_UPDATE_UI(ID_Write, MyFrame::OnUpdateUI)
+#if USE_ASYNCHRONOUS_CLIPBOARD_REQUEST
     EVT_CLIPBOARD_CHANGED(MyFrame::OnClipboardChange)
+#endif
 END_EVENT_TABLE()
 
 IMPLEMENT_APP(MyApp)
@@ -83,7 +94,7 @@ bool MyApp::OnInit()
 
     MyFrame *frame = new MyFrame("wxClipboard sample");
     frame->Show(true);
-    
+
     return true;
 }
 
@@ -92,9 +103,11 @@ MyFrame::MyFrame(const wxString& title)
 {
     // set the frame icon
     SetIcon(wxICON(sample));
-    
+
+#if USE_ASYNCHRONOUS_CLIPBOARD_REQUEST
     m_request = Idle;
     m_clipboardSupportsText = false;
+#endif
 
 #if wxUSE_MENUS
     // create a menu bar
@@ -102,7 +115,7 @@ MyFrame::MyFrame(const wxString& title)
 
     // the "About" item should be in the help menu
     wxMenu *helpMenu = new wxMenu;
-    helpMenu->Append(ID_About, "&About...\tF1", "Show about dialog");
+    helpMenu->Append(ID_About, "&About\tF1", "Show about dialog");
 
     fileMenu->Append(ID_Quit, "E&xit\tAlt-X", "Quit this program");
 
@@ -116,16 +129,16 @@ MyFrame::MyFrame(const wxString& title)
 #endif // wxUSE_MENUS
 
     wxPanel *panel = new wxPanel( this, -1 );
-    
+
     wxBoxSizer *main_sizer = new wxBoxSizer( wxVERTICAL );
-    main_sizer->Add( new wxButton( panel, ID_Write, "Get clipboard text" ) );
+    main_sizer->Add( new wxButton( panel, ID_Write, "Get clipboard text" ), 0, wxALL, 5 );
     m_textctrl = new wxTextCtrl( panel, ID_Text, "", wxDefaultPosition,
       wxDefaultSize, wxTE_MULTILINE );
     main_sizer->Add( m_textctrl, 1, wxGROW );
     panel->SetSizer( main_sizer );
 }
 
-void MyFrame::OnWriteClipboardContents(wxCommandEvent& event)
+void MyFrame::OnWriteClipboardContents(wxCommandEvent& WXUNUSED(event))
 {
    if (wxTheClipboard->Open())
    {
@@ -135,26 +148,34 @@ void MyFrame::OnWriteClipboardContents(wxCommandEvent& event)
             wxTheClipboard->GetData( data );
             m_textctrl->Clear();
             m_textctrl->SetValue( data.GetText() );
-            
+
         }
         wxTheClipboard->Close();
    }
 }
 
+#if USE_ASYNCHRONOUS_CLIPBOARD_REQUEST
 void MyFrame::OnClipboardChange(wxClipboardEvent&event)
 {
     m_clipboardSupportsText = event.SupportsFormat( wxDF_UNICODETEXT );
     m_request = Finished;
 }
+#endif
 
 void MyFrame::OnUpdateUI(wxUpdateUIEvent&event)
 {
+#if USE_ASYNCHRONOUS_CLIPBOARD_REQUEST
     if (m_request == Idle)
     {
-        wxTheClipboard->IsSupportedAsync( this );
+        if (!wxTheClipboard->IsSupportedAsync( this ))
+        {
+            // request failed, try again later
+            event.Enable( m_clipboardSupportsText ); // not yet known, assume last value
+            return;
+        }
         m_request = Waiting;
         event.Enable( m_clipboardSupportsText ); // not yet known, assume last value
-    } 
+    }
     else if (m_request == Waiting)
     {
         event.Enable( m_clipboardSupportsText ); // not yet known, assume last value
@@ -164,6 +185,9 @@ void MyFrame::OnUpdateUI(wxUpdateUIEvent&event)
         event.Enable( m_clipboardSupportsText );
         m_request = Idle;
     }
+#else
+    event.Enable( wxTheClipboard->IsSupported( wxDF_UNICODETEXT ) );
+#endif
 }
 
 void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
@@ -174,6 +198,7 @@ void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
 
 void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
 {
+    wxMessageBox("Clipboard sample", "About clipboard", wxOK|wxICON_INFORMATION, this);
 }