#if wxUSE_DATAOBJ
+#include "wx/dataobj.h"
+
#ifndef WX_PRECOMP
-#include "wx/intl.h"
+ #include "wx/intl.h"
+ #include "wx/log.h"
+ #include "wx/dcmemory.h"
+ #include "wx/image.h"
#endif
-#include "wx/log.h"
-#include "wx/dataobj.h"
-#include "wx/dcmemory.h"
#include "wx/mstream.h"
-#include "wx/image.h"
#include "wx/metafile.h"
+#include "wx/tokenzr.h"
+
#include "wx/mac/private.h"
#ifndef __DARWIN__
SetType( vType );
}
-wxDataFormat::wxDataFormat( const wxChar *zId )
-{
- SetId( zId );
-}
-
wxDataFormat::wxDataFormat( const wxString& rId )
{
SetId( rId );
default:
m_type = wxDF_PRIVATE;
char text[5];
- strncpy( text, (char*)&format, 4 );
+ memcpy( text, (const char*)&format, 4 );
text[4] = 0;
m_id = wxString::FromAscii( text );
break;
}
}
-void wxDataFormat::SetId( const wxChar* zId )
+void wxDataFormat::SetId( const wxString& zId )
{
m_type = wxDF_PRIVATE;
m_id = zId;
}
else
{
- wxDataFormat* pFormats = new wxDataFormat[nFormatCount];
+ wxDataFormat *pFormats = new wxDataFormat[nFormatCount];
GetAllFormats( pFormats, vDir );
for (size_t n = 0; n < nFormatCount; n++)
{
if (pFormats[n] == rFormat)
{
- found = true;
+ found = true;
break;
}
}
// wxFileDataObject
// ----------------------------------------------------------------------------
-bool wxFileDataObject::GetDataHere( void *pBuf ) const
+void wxFileDataObject::GetFileNames( wxCharBuffer &buf ) const
{
- if (pBuf == NULL)
- return false;
-
- wxString sFilenames;
+ wxString filenames;
for (size_t i = 0; i < m_filenames.GetCount(); i++)
{
- sFilenames += m_filenames[i];
- sFilenames += (wxChar)0;
+ filenames += m_filenames[i];
+ filenames += wxT('\n');
}
- memcpy( pBuf, sFilenames.mbc_str(), sFilenames.Len() + 1 );
+ buf = filenames.fn_str();
+}
+
+bool wxFileDataObject::GetDataHere( void *pBuf ) const
+{
+ if (pBuf == NULL)
+ return false;
+
+ wxCharBuffer buf;
+ size_t buffLength;
+
+ GetFileNames( buf );
+ buffLength = strlen( buf );
+ memcpy( pBuf, (const char*)buf, buffLength + 1 );
return true;
}
size_t wxFileDataObject::GetDataSize() const
{
- size_t nRes = 0;
+ wxCharBuffer buf;
+ size_t buffLength;
- for (size_t i = 0; i < m_filenames.GetCount(); i++)
- {
- nRes += m_filenames[i].Len();
- nRes += 1;
- }
+ GetFileNames( buf );
+ buffLength = strlen( buf );
- return nRes + 1;
+ return buffLength + 1;
}
-bool wxFileDataObject::SetData( size_t WXUNUSED(nSize), const void *pBuf )
+bool wxFileDataObject::SetData( size_t nSize, const void *pBuf )
{
- m_filenames.Empty();
+ wxString filenames;
- // only add if this is not an empty string
- // we can therefore clear the list by just setting an empty string
- if ((*(const char*)pBuf) != 0)
- AddFile( wxString::FromAscii( (char*)pBuf) );
+#if wxUSE_UNICODE
+ filenames = wxString( (const char*)pBuf, *wxConvFileName );
+#else
+ filenames = wxString (wxConvLocal.cWC2WX(wxConvFileName->cMB2WC( (const char*)pBuf)));
+#endif
+
+ m_filenames = wxStringTokenize( filenames, wxT("\n"), wxTOKEN_STRTOK );
return true;
}
{
if (m_pictHandle != NULL)
{
+#ifndef __LP64__
if (m_pictCreated)
KillPicture( (PicHandle)m_pictHandle );
+#endif
m_pictHandle = NULL;
}
// ownership is transferred to the bitmap
m_pictCreated = false;
+#ifndef __LP64__
Rect frame;
wxMacGetPictureBounds( picHandle, &frame );
-
+#if wxUSE_METAFILE
wxMetafile mf;
mf.SetHMETAFILE( (WXHMETAFILE)m_pictHandle );
+#endif
wxMemoryDC mdc;
m_bitmap.Create( frame.right - frame.left, frame.bottom - frame.top );
mdc.SelectObject( m_bitmap );
+#if wxUSE_METAFILE
mf.Play( &mdc );
+#endif
mdc.SelectObject( wxNullBitmap );
+#endif
return m_bitmap.Ok();
}