#!/usr/bin/perl -w use strict; use warnings; use Glib qw/TRUE FALSE/; use Gtk2 '-init'; use Gtk2::TrayIcon; #global variables my $current_controls = 0; my $visible = 0; #icon goes in box, box goes in tray my $icon = Gtk2::Image->new_from_stock( 'gtk-open', 'menu'); my $eventbox = Gtk2::EventBox->new; $eventbox->add($icon); my $tray = Gtk2::TrayIcon->new('Test'); $tray->add($eventbox); #events and timeouts $eventbox->signal_connect('button_release_event', \&click); #show tray $tray->show_all; #end event loop Gtk2->main; #handles tray clicks sub click { #left mouse button if ($_[1]->button == 1) { #Window show/hide controls if ( $current_controls != 0) { if ( $visible == 0) { $visible = 1 } if ( $visible == 1) { $visible = 0 } &interface; } } #right mouse button elsif ($_[1]->button == 3) { &menu; } return 1; } #right click menu sub menu { my $menu = Gtk2::Menu->new(); #VCI my $menu_VCI = Gtk2::ImageMenuItem->new_with_label("VCI"); $menu_VCI->signal_connect(activate => sub { $current_controls = 1} +); $menu_VCI->set_image(Gtk2::Image->new_from_stock('gtk-refresh', 'm +enu')); $menu->add($menu_VCI); #configure my $menu_pref = Gtk2::ImageMenuItem->new_with_label("Configure"); $menu_pref->set_image(Gtk2::Image->new_from_stock('gtk-preferences +', 'menu')); $menu->add($menu_pref); #separator my $menu_sep = Gtk2::SeparatorMenuItem->new(); $menu->add($menu_sep); #Quit my $menu_quit = Gtk2::ImageMenuItem->new_with_label("Quit"); $menu_quit->signal_connect(activate => sub { Gtk2->main_quit}); $menu_quit->set_image(Gtk2::Image->new_from_stock('gtk-quit', 'men +u')); $menu->add($menu_quit); $menu->show_all; #popup menu, the three is for right mouse button $menu->popup(undef,undef,undef,3,undef,undef); return 1; } #Program interfaces sub interface { my $interface = Gtk2::Window->new('popup'); $interface->set_position('center'); #Eventbox for capturing the mouse click my $eventbox_interface = Gtk2::EventBox->new; #table to contain the widgets my $table_interface = Gtk2::Table->new( 8, 2, FALSE); #menu items for VCI if ( $current_controls == 1) { #Labels my $label_vci_downloading = Gtk2::Label->new( 'Downloading'); my $label_vci_uploading = Gtk2::Label->new( 'Uploading'); #Bold text for the Main Labels my $fontdescription = Gtk2::Pango::FontDescription->new; $fontdescription->set_weight( 'bold'); $label_vci_uploading->modify_font( $fontdescription); $label_vci_downloading->modify_font( $fontdescription); #labels for the progressbars my $label_vci_uasposition = Gtk2::Label->new( 'uasposition'); my $label_vci_waytemp1 = Gtk2::Label->new( 'waytemp'); my $label_vci_waytemp2 = Gtk2::Label->new( 'waytemp'); my $label_vci_wayfinal = Gtk2::Label->new( 'wayfinal'); #Horizontal Separator my $hseparator_vci = Gtk2::HSeparator->new; #Connect button-> will switch to stop after press my $menu_vci_connect = Gtk2::Button->new("Connect"); #Attach the widgets to the table $table_interface->attach_defaults( $label_vci_uploading, 0, 2, + 0, 1); $table_interface->attach_defaults( $label_vci_uasposition, 0, +1, 1, 2); $table_interface->attach_defaults( $label_vci_waytemp1, 0, 1, +2, 3); $table_interface->attach_defaults( $label_vci_wayfinal, 0, 1, +3, 4); $table_interface->attach_defaults( $label_vci_downloading, 0, +2, 4, 5); $table_interface->attach_defaults( $label_vci_waytemp2, 0, 1, +5, 6); $table_interface->attach_defaults( $hseparator_vci, 0, 2, 6, 7 +); $table_interface->attach_defaults( $menu_vci_connect, 1, 2, 7, + 8); #button function $menu_vci_connect->signal_connect( 'button-press-event' => sub + { my $button_vci_label = $menu_vci_connect->get_label; if ( $button_v +ci_label eq 'Connect') { $menu_vci_ +connect->set_label( 'Stop'); } else { $menu_vci_ +connect->set_label( 'Connect'); } }); } #add the widgets to the window: widgets->table->eventbox->window $eventbox_interface->add( $table_interface); $interface->add( $eventbox_interface); $interface->show_all; # if ( $visible == 0) { # $interface->hide_all; # } # else { # $interface->show_all # } }
In reply to Re^4: Gtk2: main window visibility
by deadpickle
in thread Gtk2: main window visibility
by deadpickle
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |