Easy, just pure layout managments and the
decorated state of the dialog:
Code:
#!/usr/bin/perl -w
use utf8;
use strict;
use Gtk2;
use Glib qw/ TRUE FALSE /;
sub splash
{
my ($sender, $toplevel) = @_;
my $dlg = Gtk2::Dialog->new('You wont see me', $toplevel, ['destroy-with-parent']);
$dlg->set_has_separator (FALSE);
$dlg->set_decorated (FALSE);
$dlg->set_size_request (600, 500);
my $layout = $dlg->get_content_area; # inner layout
# place a horizantal widget container
my $hbox1 = Gtk2::HBox->new (FALSE, 0);
# system menu
my $sysmenu = Gtk2::Button->new_from_stock ('gtk-open'); #system menu
# title bar
my $a1 = Gtk2::Alignment->new (0.0, 0.5, 0.0, 0.0);
my $titlebar = Gtk2::Label->new ('My browser title');
# place a button holder (also a horizontal widget container)
my $hbox2 = Gtk2::HBox->new (FALSE, 0);
# button set
my $a2 = Gtk2::Alignment->new (1.0, 0.5, 0.0, 0.0);
my $b1 = Gtk2::Button->new_from_stock ('gtk-ok'); # minimize
my $b2 = Gtk2::Button->new_from_stock ('gtk-cancel'); # maximize
my $b3 = Gtk2::Button->new_from_stock ('gtk-quit'); # close
# our inner poopy html widget
my $browser = Gtk2::TextView->new;
# layout
$hbox1->pack_start ($sysmenu, FALSE, FALSE, 0);
$a1->add ($titlebar);
$hbox1->pack_start ($a1, TRUE, FALSE, 0);
$hbox2->pack_start ($b1, FALSE, FALSE, 0);
$hbox2->pack_start ($b2, FALSE, FALSE, 0);
$hbox2->pack_start ($b3, FALSE, FALSE, 0);
$a2->add ($hbox2);
$hbox1->pack_start ($a2, FALSE, FALSE, 0);
$layout->pack_start ($hbox1, FALSE, FALSE, 0);
$layout->pack_start ($browser, TRUE, TRUE, 0);
# signals
$b1->signal_connect_swapped ('clicked' => sub{ shift->destroy; }, $dlg);
$layout->show_all;
$dlg->run;
}
sub Main
{
Gtk2->init;
my $win = Gtk2::Window->new ('toplevel');
$win->set_position ('center');
$win->set_border_width (10);
$win->set_size_request (350, 150);
# widgets
my $layout = Gtk2::VBox->new (FALSE, 0);
my $b1 = Gtk2::Button->new_from_stock ('gtk-ok');
# layout
$layout->pack_start ($b1, TRUE, FALSE, 0);
$win->add ($layout);
# signal connections
$win->signal_connect ('destroy' => sub { Gtk2->main_quit; });
$b1->signal_connect ('clicked' => \&splash, $win);
$win->show_all;
Gtk2->main;
return 0;
}
exit (Main);