package IconFrame; use strict; use warnings; use Carp; use Wx qw[:everything]; use base qw(Wx::Frame); use MIME::Base64; use IO::Scalar; sub new { my $self = shift; $self = $self->SUPER::new( undef, -1, 'Icon list', [ -1, -1 ], [ -1, -1 ], wxDEFAULT_FRAME_STYLE, ); Wx::InitAllImageHandlers(); #- Grid Sizer $self->{sizer} = Wx::GridSizer->new( 1, 1 ); my $d = ; my $img_data = decode_base64($d); my $data = IO::Scalar->new( \$img_data ); my $bmp = $self->make_bitmap_icon($data); #-- Create bitmap buttons my $button = Wx::BitmapButton->new( $self, -1, $bmp, [ -1, -1 ], ); #-- Add buttons to grid sizer $self->{sizer}->Add( $button, 0, wxALIGN_CENTRE | wxGROW | wxALL, 2, ); $self->SetSizer( $self->{sizer} ); $self->{sizer}->Fit($self); return $self; } sub make_bitmap_icon { my ($self, $iconfile) = @_; return Wx::Bitmap->new( Wx::Image->new( $iconfile, wxBITMAP_TYPE_ANY, -1, ), ); } 1; package IconApp; use base 'Wx::App'; sub OnInit { my $frame = IconFrame->new(); $frame->Show( 1 ); } package main; use strict; use warnings; my $app = IconApp->new(); $app->MainLoop; __DATA__ R0lGODlhEAAQAIIAAPwCBMT+xATCBASCBARCBAQCBEQCBAAAACH5BAEAAAAALAAAAAAQABAAAAM2CLrc/itAF8RkdVyVye4FpzUgJwijORCGUhDDOZbLG6Nd2xjwibIQ2y80sRGIl4IBuWk6Af4EACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=