]> git.saurik.com Git - wxWidgets.git/commitdiff
unicode conversion support for dataobjects
authorStefan Csomor <csomor@advancedconcepts.ch>
Sat, 15 May 2004 14:58:09 +0000 (14:58 +0000)
committerStefan Csomor <csomor@advancedconcepts.ch>
Sat, 15 May 2004 14:58:09 +0000 (14:58 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27290 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/dataobj.h
src/common/dobjcmn.cpp
src/mac/carbon/dataobj.cpp

index 085487c62f32db7d29fc2e8185687d75f8c6f499..838f25f33bd5be059b4fd4da8ea41098e6a50c15 100644 (file)
@@ -345,6 +345,18 @@ public:
     virtual bool GetDataHere(void *buf) const { return GetDataHere(GetPreferredFormat(), buf); }
     virtual bool SetData(size_t len, const void *buf) { return SetData(GetPreferredFormat(), len, buf); }
 
+    size_t GetDataSize(const wxDataFormat& format) const;
+    bool GetDataHere(const wxDataFormat& format, void *pBuf) const;
+    bool SetData(const wxDataFormat& format, size_t nLen, const void* pBuf);
+#elif wxUSE_UNICODE && defined(__WXMAC__)
+    virtual size_t GetFormatCount(Direction WXUNUSED(dir) = Get) const { return 2; }
+    virtual void GetAllFormats(wxDataFormat *formats,
+                               wxDataObjectBase::Direction WXUNUSED(dir) = Get) const;
+
+    virtual size_t GetDataSize() const { return GetDataSize(GetPreferredFormat()); }
+    virtual bool GetDataHere(void *buf) const { return GetDataHere(GetPreferredFormat(), buf); }
+    virtual bool SetData(size_t len, const void *buf) { return SetData(GetPreferredFormat(), len, buf); }
+
     size_t GetDataSize(const wxDataFormat& format) const;
     bool GetDataHere(const wxDataFormat& format, void *pBuf) const;
     bool SetData(const wxDataFormat& format, size_t nLen, const void* pBuf);
index c70c712265752b7671eaefeea559ec25aad36881..3f145db3219ccdee35ef3c6a00d2907f9511b419 100644 (file)
@@ -282,6 +282,57 @@ bool wxTextDataObject::SetData(const wxDataFormat& format,
     return TRUE;
 }
 
+#elif wxUSE_UNICODE && defined(__WXMAC__)
+
+size_t wxTextDataObject::GetDataSize(const wxDataFormat& format) const
+{
+    if (format == wxDF_UNICODETEXT)
+    {
+        // host native is UTF16
+           wxMBConvUTF16BE converter ;
+        wxCharBuffer buffer = converter.cWX2MB( GetText().c_str() );
+        return strlen( (const char*) buffer ) + 1;
+    }
+    else  // == wxDF_TEXT
+    {
+        wxCharBuffer buffer = wxConvLibc.cWX2MB( GetText().c_str() );
+        return strlen( (const char*) buffer ) + 1;
+    }
+}
+
+bool wxTextDataObject::GetDataHere(const wxDataFormat& format, void *buf) const
+{
+    if (format == wxDF_UNICODETEXT)
+    {
+        // host native is UTF16
+           wxMBConvUTF16BE converter ;
+        wxCharBuffer buffer = converter.cWX2MB( GetText().c_str() );
+        strcpy( (char*) buf, (const char*) buffer );
+    }
+    else
+    {
+        wxCharBuffer buffer = wxConvLibc.cWX2MB( GetText().c_str() );
+        strcpy( (char*) buf, (const char*) buffer );
+    }
+    
+    return TRUE;
+}
+
+bool wxTextDataObject::SetData(const wxDataFormat& format,
+                               size_t WXUNUSED(len), const void *buf)
+{
+    if (format == wxDF_UNICODETEXT)
+    {
+        // host native is UTF16
+           wxMBConvUTF16BE converter ;
+        SetText( converter.cMB2WX( (const char*) buf ) );
+    }
+    else
+        SetText( wxConvLibc.cMB2WX( (const char*) buf ) );
+    return TRUE;
+}
+
 #else
 
 size_t wxTextDataObject::GetDataSize() const
index cc6f7df020f9b89abdf353a0828df12028d03ed4..bec4f2bd605d14d75b1c96f681471ddaebefa93a 100644 (file)
@@ -166,6 +166,19 @@ bool wxDataObject::IsSupportedFormat(
     }
 }
 
+// ----------------------------------------------------------------------------
+// wxTextDataObject
+// ----------------------------------------------------------------------------
+
+#if wxUSE_UNICODE
+void wxTextDataObject::GetAllFormats(wxDataFormat *formats, wxDataObjectBase::Direction dir) const
+{
+    *formats++ = wxDataFormat( wxDF_TEXT );
+    *formats = wxDataFormat( wxDF_UNICODETEXT );
+}
+
+#endif
+
 // ----------------------------------------------------------------------------
 // wxFileDataObject
 // ----------------------------------------------------------------------------