Gtk-Perl
view release on metacpan or search on metacpan
Gtk/samples/test.pl view on Meta::CPAN
"o c yellow",
"O c #808080",
"# c white",
" ",
" .. ",
" ..XX. ",
" ..XXXXX. ",
" ..XXXXXXXX. ",
".ooXXXXXXXXX. ",
"..ooXXXXXXXXX. ",
".X.ooXXXXXXXXX. ",
".XX.ooXXXXXX.. ",
" .XX.ooXXX..#O ",
" .XX.oo..##OO. ",
" .XX..##OO.. ",
" .X.#OO.. ",
" ..O.. ",
" .. ",
" ");
my @mini_page_xpm = (
"16 16 4 1",
" c None s None",
". c black",
"X c white",
"o c #808080",
" ",
" ....... ",
" .XXXXX.. ",
" .XoooX.X. ",
" .XXXXX.... ",
" .XooooXoo.o ",
" .XXXXXXXX.o ",
" .XooooooX.o ",
" .XXXXXXXX.o ",
" .XooooooX.o ",
" .XXXXXXXX.o ",
" .XooooooX.o ",
" .XXXXXXXX.o ",
" ..........o ",
" oooooooooo ",
" ");
my $book_open;
my $book_open_mask;
my $book_closed;
my $book_closed_mask;
my $mini_page;
my $mini_page_mask;
my $root_win;
my $modeller;
my $sheets;
my $rings;
sub build_option_menu {
my ( $items, $function, $num_items, $history, $data ) = @_;
my $omenu = new Gtk::OptionMenu;
my $menu = new Gtk::Menu;
my $previous = undef;
my $i;
my $menu_item;
for $i ( 0 .. $num_items - 1 ) {
# Perl/GTK!
# Please note the use of $previous to create the group of radioitems
$menu_item = new_with_label Gtk::RadioMenuItem( @{$items}[$i], $previous );
$menu_item->signal_connect( 'activate', $function, $data );
$menu->append( $menu_item );
if ( $i == $history ) {
$menu_item->set_active( 1 );
}
$menu_item->show;
$previous = $menu_item;
}
$omenu->set_menu( $menu );
$omenu->set_history( $history );
return $omenu;
}
sub find_radio_menu_toggled {
my ( $widget ) = @_;
my @group = $widget->group();
my $i = 0;
my $item;
for $item ( @group ) {
if ( $item->active ) {
last;
}
$i++;
}
return $i;
}
sub bbox_widget_destroy {
my($widget, $todestroy) = @_;
}
sub destroy_tooltips {
# print "Destroy_tooltips: ", Dumper(\@_);
my($widget, $window) = @_;
#$$window->{tooltips}->unref;
$$window = undef;
}
sub set_cursor {
my($spinner, $widget) = @_;
my($c, $cursor);
$c = $spinner->get_value_as_int;
$c = 0 if $c < 0;
$c = 152 if $c > 152;
$cursor = new Gtk::Gdk::Cursor $c;
$widget->window->set_cursor($cursor);
}
sub cursor_expose_event {
my($widget) = @_;
Gtk/samples/test.pl view on Meta::CPAN
$hbox2->border_width( 2 );
$frame->add( $hbox2);
$label = new Gtk::Label( 'Pages :' );
$hbox2->pack_start( $label, 0, 1, 0 );
$page_label = new Gtk::Label ( "$pages" );
$hbox2->pack_end( $page_label, 0, 1, 5 );
$frame = new Gtk::Frame( undef );
$frame->set_shadow_type ( 'in' );
$hbox->pack_start( $frame, 0, 1, 0 );
$hbox2 = new Gtk::HBox( 0, 0 );
$hbox2->border_width( 2 );
$frame->add( $hbox2);
$label = new Gtk::Label( 'Selected :' );
$hbox2->pack_start( $label, 0, 1, 0 );
my @selected = $ctree->selection();
$sel_label = new Gtk::Label ( $#selected );
$hbox2->pack_end( $sel_label, 0, 1, 5 );
$frame = new Gtk::Frame( undef );
$frame->set_shadow_type ( 'in' );
$hbox->pack_start( $frame, 0, 1, 0 );
$hbox2 = new Gtk::HBox( 0, 0 );
$hbox2->border_width( 2 );
$frame->add( $hbox2);
$label = new Gtk::Label( 'Visible :' );
$hbox2->pack_start( $label, 0, 1, 0 );
my @row_list = $ctree->row_list();
$vis_label = new Gtk::Label ( $#row_list );
$hbox2->pack_end( $vis_label, 0, 1, 5 );
ctree_rebuild( undef, $ctree );
}
if (not $ctree_window->visible) {
$ctree_window->show_all;
} else {
$ctree_window->destroy;
}
}
sub create_menu {
my($depth) = @_;
my($menu,$submenu,$menuitem);
if ($depth<1) {
return undef;
}
$menu = new Gtk::Menu;
$submenu = undef;
$menuitem = undef;
my($i,$j);
for($i=0,$j=1;$i<5;$i++,$j++)
{
my($buffer) = sprintf("item %2d - %d", $depth, $j);
$menuitem = new Gtk::RadioMenuItem($buffer, $menuitem);
$menu->append($menuitem);
$menuitem->set_show_toggle(1) if $depth % 2;
$menuitem->show;
if ($depth>1) {
if (not defined $submenu) {
$submenu = create_menu($depth-1);
$menuitem->set_submenu($submenu);
}
}
}
return $menu;
}
sub create_menus {
my($box1,$box2,$button,$menu,$menubar,$menuitem,$optionmenu,$separator);
if (not defined $menu_window) {
$menu_window = new Gtk::Window -toplevel;
signal_connect $menu_window destroy => \&destroy_window, \$menu_window;
signal_connect $menu_window delete_event => \&destroy_window, \$menu_window;
$menu_window->set_title("menus");
$menu_window->border_width(0);
$box1 = new Gtk::VBox(0,0);
$menu_window->add($box1);
$box1->show;
$menubar = new Gtk::MenuBar;
$box1->pack_start($menubar, 0, 1, 0);
$menubar->show;
$menu = create_menu(2);
$menuitem = new Gtk::MenuItem("test");
$menuitem->set_submenu($menu);
$menubar->append($menuitem);
show $menuitem;
$menu = create_menu(3);
$menuitem = new Gtk::MenuItem("foo");
$menuitem->set_submenu($menu);
$menubar->append($menuitem);
show $menuitem;
$menu = create_menu(4);
$menuitem = new Gtk::MenuItem("bar");
$menuitem->set_submenu($menu);
$menubar->append($menuitem);
show $menuitem;
$box2 = new Gtk::VBox(0,10);
$box2->border_width(10);
$box1->pack_start($box2, 1, 1, 0);
$box2->show;
$optionmenu = new Gtk::OptionMenu;
$optionmenu->set_menu(create_menu(1));
$optionmenu->set_history(4);
$box2->pack_start($optionmenu, 1, 1, 0);
$optionmenu->show;
$separator = new Gtk::HSeparator;
$box1->pack_start($separator, 0, 1, 0);
show $separator;
$box2 = new Gtk::VBox(0,10);
$box2->border_width(10);
$box1->pack_start($box2, 0, 1, 0);
$box2->show;
$button = new Gtk::Button "close";
signal_connect $button clicked => sub { destroy $menu_window};
$box2->pack_start($button, 1, 1, 0);
$button->can_default(1);
$button->grab_default;
$button->show;
}
if (!visible $menu_window) {
show $menu_window;
} else {
destroy $menu_window;
}
}
sub item_factory_cb {
my ($widget, $action, @data) = @_;
print "ItemFactory: activated ", $widget->item_factory_path(), " -> ", $action, "\n";
}
my @item_factory_entries = (
["/_File", undef, 0, "<Branch>"],
["/File/tearoff1", undef, 0, "<Tearoff>"],
["/File/_New", "<control>N", 1],
["/File/_Open", "<control>O", 2],
["/File/_Save", "<control>S", 3],
["/File/Save _As...", undef, 4],
["/File/sep1", undef, 0, "<Separator>"],
#["/File/_Quit", "<control>Q", 5],
{
'path' => "/File/_Quit",
'accelerator' => "<control>Q",
'action' => 5,
'type' => '<Item>'
},
["/_Preferences", undef, 0, "<Branch>"],
["/_Preferences/_Color", undef, 0, "<Branch>"],
["/_Preferences/Color/_Red", undef, 10, "<RadioItem>"],
["/_Preferences/Color/_Green", undef, 11, "<RadioItem>"],
["/_Preferences/Color/_Blue", undef, 12, "<RadioItem>"],
["/_Preferences/_Shape", undef, 0, "<Branch>"],
["/_Preferences/Shape/_Square", undef, 20, "<RadioItem>"],
["/_Preferences/Shape/_Rectangle", undef, 21, "<RadioItem>"],
["/_Preferences/Shape/_Oval", undef, 22, "<RadioItem>"],
["/_Help", undef, 0, "<LastBranch>"],
["/Help/_About", undef, 30]
);
sub create_item_factory {
if (!defined $item_factory_window) {
my ($accel_group, $item_factory, $box1, $label, $box2);
my ($separator, $button, $dummy);
$item_factory_window = new Gtk::Window('toplevel');
signal_connect $item_factory_window destroy => \&destroy_window, \$item_factory_window;
signal_connect $item_factory_window "delete-event" => \&destroy_window, \$item_factory_window;
$accel_group = new Gtk::AccelGroup;
$item_factory = new Gtk::ItemFactory('Gtk::MenuBar', "<main>", $accel_group);
#$item_factory_window->set_data('<main>', $item_factory);
$accel_group->attach($item_factory_window);
# $item_factory->create_items();
foreach (@item_factory_entries) {
$item_factory->create_item($_, \&item_factory_cb);
}
$item_factory_window->set_title("Item Factory");
$item_factory_window->set_border_width(0);
$box1 = new Gtk::VBox(0, 0);
$item_factory_window->add($box1);
$box1->pack_start($item_factory->get_widget('<main>'), 0, 0, 0);
$label = new Gtk::Label "Type\n<alt>\nto start";
$label->set_usize(200, 200);
$label->set_alignment(0.5, 0.5);
$box1->pack_start($label, 1, 1, 0);
$separator = new Gtk::HSeparator;
$box1->pack_start($separator, 0, 1, 0);
$box2 = new Gtk::VBox(0, 10);
$box2->set_border_width(10);
$box1->pack_start($box2, 0, 1, 0);
$button = new Gtk::Button("close");
$button->signal_connect('clicked', sub {$item_factory_window->destroy;});
$box2->pack_start($button, 1, 1, 0);
$button->can_default(1);
$button->grab_default;
}
if (!visible $item_factory_window) {
show_all $item_factory_window;
} else {
destroy $item_factory_window;
}
}
sub color_selection_ok {
my($widget, $dialog) = @_;
my(@color) = $dialog->colorsel->get_color;
print "color=@color\n";
$dialog->colorsel->set_color(@color);
}
sub color_selection_changed {
my($widget, $dialog) = @_;
my(@color) = $dialog->colorsel->get_color;
print "color=@color\n";
}
sub create_color_selection {
if (not defined $cs_window) {
set_install_cmap Gtk::Preview 1;
Gtk/samples/test.pl view on Meta::CPAN
$notebook->set_scrollable( 1 );
if ( $notebook->children == 5 ) {
notebook_create_pages( $notebook, 6, 15 );
}
}
sub notebook_popup {
my( $button, $notebook ) = @_;
if ( $button->active ) {
$notebook->popup_enable;
} else {
$notebook->popup_disable;
}
}
sub create_notebook {
my(
$box1,
$box2,
$button,
$separator,
$notebook,
$omenu,
$menu,
$submenu,
$menuitem,
$group,
$transparent
);
if (not defined $notebook_window) {
$notebook_window = new Gtk::Window( 'toplevel' );
$notebook_window->signal_connect( 'destroy', \&Gtk::Widget::destroyed, \$notebook_window );
$notebook_window->set_title("notebook");
$notebook_window->border_width(0);
$box1 = new Gtk::VBox 0, 0;
$notebook_window->add($box1);
$notebook = new Gtk::Notebook;
$notebook->signal_connect( 'switch_page', \¬ebook_page_switch );
$notebook->set_tab_pos(-top);
$box1->pack_start($notebook, 1, 1, 0);
$notebook->border_width(10);
$notebook->realize;
($book_open, $book_open_mask) = Gtk::Gdk::Pixmap->create_from_xpm_d($notebook->window, $transparent, @book_open_xpm);
($book_closed, $book_closed_mask) = Gtk::Gdk::Pixmap->create_from_xpm_d($notebook->window, $transparent, @book_closed_xpm);
notebook_create_pages($notebook, 1, 5);
$separator = new Gtk::HSeparator();
$box1->pack_start( $separator, 0, 1, 10 );
$box2 = new Gtk::HBox( 1, 5 );
$box1->pack_start( $box2, 0, 1, 0 );
$omenu = new Gtk::OptionMenu();
$menu = new Gtk::Menu();
$submenu = undef;
$menuitem = undef;
$menuitem = new Gtk::RadioMenuItem "Standard", $menuitem;
$menuitem->signal_connect("activate", \¬ebook_standard, $notebook);
$menu->append($menuitem);
$menuitem->show;
$menuitem = new Gtk::RadioMenuItem "w/o Tabs", $menuitem;
$menuitem->signal_connect("activate", \¬ebook_notabs, $notebook);
$menu->append($menuitem);
$menuitem->show;
$menuitem = new Gtk::RadioMenuItem "Scrollable", $menuitem;
$menuitem->signal_connect("activate", \¬ebook_scrollable, $notebook);
$menu->append($menuitem);
$menuitem->show;
$omenu->set_menu($menu);
$box2->pack_start($omenu, 0, 0, 0);
$button = new Gtk::CheckButton "Enable popup menu";
$box2->pack_start($button, 0, 0, 0);
$button->signal_connect("clicked", \¬ebook_popup, $notebook);
$box2 = new Gtk::HBox 0, 10;
$box2->border_width(10);
$box1->pack_start($box2, 0, 1, 0);
$button = new Gtk::Button( 'Close' );
$button->signal_connect( 'clicked', sub { $notebook_window->destroy } );
$box2->pack_start( $button, 1, 1, 0 );
$button->can_default( 1 );
$button->grab_default;
$button = new Gtk::Button( 'Next' );
$button->signal_connect( 'clicked', sub { $notebook->next_page } );
$box2->pack_start( $button, 1, 1, 0 );
$button = new Gtk::Button( 'Prev' );
$button->signal_connect( 'clicked', sub { $notebook->prev_page } );
$box2->pack_start( $button, 1, 1, 0 );
$button = new Gtk::Button( 'Rotate' );
$button->signal_connect( 'clicked', \¬ebook_rotate, $notebook );
$box2->pack_start( $button, 1, 1, 0 );
}
if (! $notebook_window->visible) {
$notebook_window->show_all();
} else {
$notebook_window->destroy();
}
}
# paned demo
sub create_panes {
my($frame,$hpaned,$vpaned);
if (not defined $paned_window) {
$paned_window = new Gtk::Window "toplevel";
$paned_window->signal_connect("destroy", \&destroy_window, \$paned_window);
$paned_window->signal_connect("delete_event", \&destroy_window, \$paned_window);
$paned_window->set_title("Panes");
$paned_window->border_width(0);
$vpaned = new Gtk::VPaned;
$paned_window->add($vpaned);
$vpaned->border_width(5);
$vpaned->show;
$hpaned = new Gtk::HPaned;
$vpaned->add1($hpaned);
$frame = new Gtk::Frame;
( run in 0.622 second using v1.01-cache-2.11-cpan-39bf76dae61 )