]> git.saurik.com Git - wxWidgets.git/blobdiff - src/motif/clipbrd.cpp
Pass events to pushed event handlers.
[wxWidgets.git] / src / motif / clipbrd.cpp
index 21df675bf2dba318d71fb4de42a85919d8fd20d8..9bd9307194685a5016172fe5e1324437e83dd04b 100644 (file)
 #pragma implementation "clipbrd.h"
 #endif
 
+#include "wx/defs.h"
+
+#if wxUSE_CLIPBOARD
+
 #include "wx/app.h"
 #include "wx/frame.h"
 #include "wx/bitmap.h"
 #include "wx/clipbrd.h"
 #include "wx/dataobj.h"
 
+#include "wx/listimpl.cpp"
+WX_DEFINE_LIST(wxDataObjectList);
+
+#ifdef __VMS__
+#pragma message disable nosimpint
+#endif
 #include <Xm/Xm.h>
 #include <Xm/CutPaste.h>
+#ifdef __VMS__
+#pragma message enable nosimpint
+#endif
 
 #include <string.h>
 
-#if !USE_SHARED_LIBRARY
 // IMPLEMENT_DYNAMIC_CLASS(wxClipboard, wxObject)
 // IMPLEMENT_ABSTRACT_CLASS(wxClipboardClient, wxObject)
-#endif
 
 static bool gs_clipboardIsOpen = FALSE;
 
@@ -91,7 +102,7 @@ bool wxIsClipboardFormatAvailable(wxDataFormat dataFormat)
         return TRUE;
 }
 
-bool wxSetClipboardData(wxDataFormat dataFormat, wxObject *obj, int width, int height)
+bool wxSetClipboardData(wxDataFormat dataFormat, wxObject *obj, int WXUNUSED(width), int WXUNUSED(height))
 {
     if (dataFormat != wxDF_TEXT)
         return FALSE;
@@ -203,19 +214,19 @@ wxObject *wxGetClipboardData(wxDataFormat dataFormat, long *len)
 wxDataFormat  wxEnumClipboardFormats(wxDataFormat dataFormat)
 {
     // Only wxDF_TEXT supported
-    if (dataFormat == (wxDataFormat) 0)
+    if (dataFormat == wxDF_TEXT)
        return wxDF_TEXT;
     else
-       return (wxDataFormat) 0;
+       return wxDF_INVALID;
 }
 
-wxDataFormat  wxRegisterClipboardFormat(char *formatName)
+wxDataFormat  wxRegisterClipboardFormat(char *WXUNUSED(formatName))
 {
     // Not supported
-    return (wxDataFormat) 0;
+    return (wxDataFormat) wxDF_INVALID;
 }
 
-bool wxGetClipboardFormatName(wxDataFormat dataFormat, char *formatName, int maxCount)
+bool wxGetClipboardFormatName(wxDataFormat dataFormat, char *formatName, int WXUNUSED(maxCount))
 {
     // Only wxDF_TEXT supported
     if (dataFormat == wxDF_TEXT)
@@ -233,8 +244,6 @@ bool wxGetClipboardFormatName(wxDataFormat dataFormat, char *formatName, int max
 
 IMPLEMENT_DYNAMIC_CLASS(wxClipboard,wxObject)
 
-wxClipboard* wxTheClipboard = (wxClipboard*) NULL;
-
 wxClipboard::wxClipboard()
 {
     m_open = FALSE;
@@ -247,12 +256,12 @@ wxClipboard::~wxClipboard()
 
 void wxClipboard::Clear()
 {
-    wxNode* node = m_data.First();
+    wxDataObjectList::Node* node = m_data.GetFirst();
     while (node)
     {
-        wxDataObject* data = (wxDataObject*) node->Data();
+        wxDataObject* data = node->GetData();
         delete data;
-        node = node->Next();
+        node = node->GetNext();
     }
     m_data.Clear();
 }
@@ -271,28 +280,36 @@ bool wxClipboard::SetData( wxDataObject *data )
     wxCHECK_MSG( data, FALSE, "data is invalid" );
     wxCHECK_MSG( m_open, FALSE, "clipboard not open" );
 
-    switch (data->GetFormat())
+    Clear();
+
+    return AddData( data );
+}
+
+bool wxClipboard::AddData( wxDataObject *data )
+{
+    wxCHECK_MSG( data, FALSE, "data is invalid" );
+    wxCHECK_MSG( m_open, FALSE, "clipboard not open" );
+
+    wxDataFormat::NativeFormat format = data->GetPreferredFormat().GetType();
+    switch ( format )
     {
         case wxDF_TEXT:
         case wxDF_OEMTEXT:
         {
             wxTextDataObject* textDataObject = (wxTextDataObject*) data;
             wxString str(textDataObject->GetText());
-            return wxSetClipboardData(data->GetFormat(), (wxObject*) (const char*) str);
-            break;
+            return wxSetClipboardData(format, (wxObject*) (const char*) str);
         }
+#if 0
         case wxDF_BITMAP:
         case wxDF_DIB:
         {
             wxBitmapDataObject* bitmapDataObject = (wxBitmapDataObject*) data;
             wxBitmap bitmap(bitmapDataObject->GetBitmap());
-            return wxSetClipboardData(data->GetFormat(), & bitmap);
+            return wxSetClipboardData(data->GetType(), & bitmap);
             break;
         }
-        default:
-        {
-            return FALSE;
-        }
+#endif // 0
     }
   
     return FALSE;
@@ -306,25 +323,26 @@ void wxClipboard::Close()
     wxCloseClipboard();
 }
 
-bool wxClipboard::IsSupported( wxDataFormat format)
+bool wxClipboard::IsSupported( const wxDataFormat& format)
 {
     return wxIsClipboardFormatAvailable(format);
 }
 
-bool wxClipboard::GetData( wxDataObject *data )
+bool wxClipboard::GetData( wxDataObjectdata )
 {
     wxCHECK_MSG( m_open, FALSE, "clipboard not open" );
     
-    switch (data->GetFormat())
+    wxDataFormat::NativeFormat format = data.GetPreferredFormat().GetType();
+    switch ( format )
     {
         case wxDF_TEXT:
         case wxDF_OEMTEXT:
         {
-            wxTextDataObject* textDataObject = (wxTextDataObject*) data;
-            char* s = (char*) wxGetClipboardData(data->GetFormat());
+            wxTextDataObject& textDataObject = (wxTextDataObject &) data;
+            char* s = (char*) wxGetClipboardData(format);
             if (s)
             {
-                textDataObject->SetText(s);
+                textDataObject.SetText(s);
                 delete[] s;
                 return TRUE;
             }
@@ -332,11 +350,12 @@ bool wxClipboard::GetData( wxDataObject *data )
                 return FALSE;
             break;
         }
+/*
         case wxDF_BITMAP:
         case wxDF_DIB:
         {
             wxBitmapDataObject* bitmapDataObject = (wxBitmapDataObject*) data;
-            wxBitmap* bitmap = (wxBitmap*) wxGetClipboardData(data->GetFormat());
+            wxBitmap* bitmap = (wxBitmap*) wxGetClipboardData(data->GetType());
             if (bitmap)
             {
                 bitmapDataObject->SetBitmap(* bitmap);
@@ -347,34 +366,19 @@ bool wxClipboard::GetData( wxDataObject *data )
                 return FALSE;
             break;
         }
+*/
         default:
         {
-            return FALSE;
+#ifndef __VMS
+          // VMS complains that this statement is/causes unreachability
+          return FALSE;
+#endif
         }
     }
-    return FALSE;
+   
+   return FALSE;
 }
 
-//-----------------------------------------------------------------------------
-// wxClipboardModule
-//-----------------------------------------------------------------------------
-
-IMPLEMENT_DYNAMIC_CLASS(wxClipboardModule,wxModule)
-
-bool wxClipboardModule::OnInit()
-{
-    wxTheClipboard = new wxClipboard();
-  
-    return TRUE;
-}
-
-void wxClipboardModule::OnExit()
-{
-    if (wxTheClipboard) delete wxTheClipboard;
-    wxTheClipboard = (wxClipboard*) NULL;
-}
-
-
 #if 0
 
 /*
@@ -525,3 +529,4 @@ char *wxClipboard::GetClipboardData(char *format, long *length, long time)
 }
 #endif
 
+#endif // wxUSE_CLIPBOARD