59bool SaveClipboard(
const std::string& aTextUTF8,
const std::vector<CLIPBOARD_MIME_DATA>& aMimeData )
61 if( aMimeData.empty() )
66 if( wxTheClipboard->Open() )
68 wxDataObjectComposite* data =
new wxDataObjectComposite();
69 data->Add(
new wxTextDataObject( wxString( aTextUTF8.c_str(), wxConvUTF8 ) ),
true );
74 if( entry.m_data.GetDataLen() == 0 )
81 if( entry.m_mimeType == wxS(
"image/png" ) )
83 wxMemoryInputStream stream( entry.m_data.GetData(), entry.m_data.GetDataLen() );
86 if(
image.LoadFile( stream, wxBITMAP_TYPE_PNG ) &&
image.IsOk() )
88 data->Add(
new wxBitmapDataObject( wxBitmap(
image ) ) );
100 wxDataFormat format( entry.m_mimeType );
101 wxCustomDataObject* custom =
new wxCustomDataObject( format );
104 custom->Alloc( entry.m_data.GetDataLen() );
105 custom->SetData( entry.m_data.GetDataLen(), entry.m_data.GetData() );
109 wxTheClipboard->SetData( data );
110 wxTheClipboard->Flush();
111 wxTheClipboard->Close();
126 if( wxTheClipboard->Open() )
128 if( wxTheClipboard->IsSupported( wxDataFormat( wxS(
"application/kicad" ) ) ) )
130 wxCustomDataObject data( wxDataFormat( wxS(
"application/kicad" ) ) );
132 if( wxTheClipboard->GetData( data ) )
134 result.assign(
static_cast<const char*
>( data.GetData() ), data.GetSize() );
135 wxTheClipboard->Close();
140 if( wxTheClipboard->IsSupported( wxDF_TEXT )
141 || wxTheClipboard->IsSupported( wxDF_UNICODETEXT ) )
143 wxTextDataObject data;
144 wxTheClipboard->GetData( data );
148 result = data.GetText().utf8_str();
151 wxTheClipboard->Close();
160 std::unique_ptr<wxImage>
image;
164 if( wxTheClipboard->Open() )
166 if( wxTheClipboard->IsSupported( wxDF_BITMAP ) )
168 wxBitmapDataObject data;
169 if( wxTheClipboard->GetData( data ) )
171 image = std::make_unique<wxImage>( data.GetBitmap().ConvertToImage() );
174 else if( wxTheClipboard->IsSupported( wxDF_FILENAME ) )
176 wxFileDataObject data;
177 if( wxTheClipboard->GetData( data ) && data.GetFilenames().size() == 1 )
179 image = std::make_unique<wxImage>( data.GetFilenames()[0] );
186 wxTheClipboard->Close();
197 if( wxTheClipboard->Open() )
199 wxDataObjectComposite* data =
new wxDataObjectComposite();
203 wxStringOutputStream os;
207 data->Add(
new wxTextDataObject( os.GetString() ),
true );
216 wxTheClipboard->SetData( data );
217 wxTheClipboard->Flush();
218 wxTheClipboard->Close();
235 if( wxTheClipboard->Open() )
237 if( wxTheClipboard->IsSupported( wxDF_TEXT ) )
239 wxTextDataObject data;
240 if( wxTheClipboard->GetData( data ) )
248 wxTheClipboard->Close();
bool AutoDecodeCSV(const wxString &aInput, std::vector< std::vector< wxString > > &aData)
Try to guess the format of a T/CSV file and decode it into aData.
wxString result
Test unit parsing edge cases and error handling.