Wx-Demo
view release on metacpan or search on metacpan
lib/Wx/DemoModules/wxClipboard.pm view on Meta::CPAN
_Copy( get_text_bitmap_data_object() );
Wx::LogMessage( "Copied both text and image" );
}
sub OnCopyData {
my( $this, $event ) = @_;
my $PerlData = { fruit => 'lemon', colour => 'yellow' };
_Copy( get_perl_data_object( $PerlData ) );
Wx::LogMessage( "Copied perl data object: fruit=$PerlData->{fruit}, colour=$PerlData->{colour}" );
}
sub OnPaste {
my( $this, $event ) = @_;
wxTheClipboard->Open;
my $text = '';
# The cliboard may contain a composite object
# in which case, for GTK at least, we need to
# check for wxDF_UNICODETEXT in addition to
# wxDF_TEXT.
# wxDF_UNICODETEXT may not be wrapped in the
# version of Wx installed, so we may have to use
# a workaround.
my $unicodetext_wxwidgets_id = 13;
my $unicodetextformat = ( defined(&Wx::wxDF_UNICODETEXT) )
? wxDF_UNICODETEXT() : Wx::DataFormat->newNative( $unicodetext_wxwidgets_id );
if( wxTheClipboard->IsSupported( wxDF_TEXT ) || wxTheClipboard->IsSupported( $unicodetextformat ) ) {
my $data = Wx::TextDataObject->new;
my $ok = wxTheClipboard->GetData( $data );
if( $ok ) {
Wx::LogMessage( "Pasted text data" );
$text = $data->GetText;
} else {
Wx::LogMessage( "Error pasting text data" );
$text = '';
}
}
$this->text->SetLabel( $text );
my $bitmap = wxNullBitmap;
if( wxTheClipboard->IsSupported( wxDF_BITMAP ) ) {
my $data = Wx::BitmapDataObject->new;
my $ok = wxTheClipboard->GetData( $data );
if( $ok ) {
Wx::LogMessage( "Pasted bitmap data" );
$bitmap = $data->GetBitmap;
} else {
Wx::LogMessage( "Error pasting bitmap data" );
$bitmap = wxNullBitmap;
}
}
$this->image->SetBitmap( $bitmap );
# testing the perl data object
my $data = get_perl_data_object();
Wx::LogMessage( "Testing if clipboard supports: " . $data->GetFormat->GetId() );
if( wxTheClipboard->IsSupported( $data->GetFormat ) ) {
Wx::LogMessage( "It does: get data from clipboard" );
my $ok = wxTheClipboard->GetData( $data );
if( $ok ) {
Wx::LogMessage( "Pasted perl data object" );
my $PerlData = $data->GetPerlData();
foreach (keys %$PerlData) {
$text .= "$_ = $PerlData->{$_} ";
}
} else {
Wx::LogMessage( "Error pasting perl data object" );
$text = '';
}
$this->text->SetLabel( $text );
}
wxTheClipboard->Close;
}
sub add_to_tags { qw(dnd) }
sub title { 'wxClipboard' }
1;
( run in 1.523 second using v1.01-cache-2.11-cpan-84e82930d8c )