use warnings;
use strict;
use Tk;
my $logo = <<'logo_end';
/* XPM */
static char * logo_xpm[] = {
"32 32 5 1",
" c None",
". c #FD000A",
"+ c #FD6463",
"@ c #FEBEBE",
"# c #FEFFFC",
"################################",
"################################",
"################################",
"################################",
"################################",
"################################",
"################################",
"################################",
"################################",
"########........##.....@########",
"#########@....+####@.###########",
"##########+....@###.@###########",
"###########.....##++############",
"###########@....+@.#############",
"############+.....@#############",
"#############.....##############",
"#############@....@#############",
"#############@.....#############",
"#############.+....+############",
"############++#+....@###########",
"###########@.###.....###########",
"###########.@###@....+##########",
"##########++#####+....@#########",
"########+....###........########",
"################################",
"################################",
"################################",
"################################",
"################################",
"################################",
"################################",
"################################"};
logo_end
;
package Tk::Toplevel;
sub InitObject{
my ($self,$args) = @_;
$self->SUPER::InitObject($args);
my $mw = $self->MainWindow;
if ($mw->cget('-appicon')){
$self->afterIdle(sub{$self->iconimage($mw->cget('-appicon'))}) ;
}
}
package MainWindow;
sub Populate{
my ($self,$args) = @_;
$self->SUPER::Populate($args);
$self->ConfigSpecs(-appicondata => ['METHOD'],
-appiconfile => ['METHOD'],
-appicon => ['PASSIVE']
);
$self->configure(%$args);
}
sub appicondata{
my $self = shift;
$self->configure(-appicon => $self->Pixmap(-data=>$_[0]));
}
sub appiconfile{
my $self = shift;
$self->configure('-appicon' => $self->Pixmap(-file=>$_[0]));
}
package main;
#my $mw = MainWindow->new(-appiconfile => 'logo.xpm');
my $mw = MainWindow->new(-appicondata => $logo);
$mw->Toplevel();
$mw->MessageBox(-parent => $mw,
-font => 'Helvetica 11',
-message => 'a message');
MainLoop;