Below is a second example of setting up a system tray application. <?php // setup main application $window = new GtkWindow(); $window->set_size_request(240, 120); $window->connect_simple('destroy', array('Gtk','main_quit')); $label = new GtkLabel('Hello World, GtkStatusIcon!'); $window->add($label); // setup system tray icon $statusicon = new GtkStatusIcon(); $statusicon->set_from_stock(Gtk::STOCK_FILE); $statusicon->set_tooltip('Left click to view GTK window'); $statusicon->connect('activate', 'on_activate'); $statusicon->connect('popup-menu', 'on_popup_menu'); $window->hide_all(); Gtk::main(); function on_activate($statusicon) { global $window; if ($window->is_visible()) $window->hide_all(); else $window->show_all(); } function on_popup_menu($statusicon) { $menu_definition = array('Show','Hide', 'Exit'); $menu = show_popup_menu($menu_definition); } function show_popup_menu($menu_definition) { $menu = new GtkMenu(); foreach($menu_definition as $menuitem_definition) { $menu_item = new GtkMenuItem($menuitem_definition); $menu->append($menu_item); $menu_item->connect('activate', 'on_popup_menu_select'); } $menu->show_all(); $menu->popup(); } function on_popup_menu_select($menu_item) { global $window; $item = $menu_item->child->get_label(); echo "popup menu selected: $itemn"; switch($item) { case 'Show': $window->show_all(); break; case 'Hide': $window->hide_all(); break; case 'Exit': Gtk::main_quit(); break; } } ?> As with the previous example, we first set up the main application – a GtkWindow with a GtkLabel 'Hello World, GtkStatusIcon!': $window = new GtkWindow(); $window->set_size_request(240, 120); $window->connect_simple('destroy', array('Gtk','main_quit')); $label = new GtkLabel('Hello World, GtkStatusIcon!'); $window->add($label); We then set up the system tray icon: $statusicon = new GtkStatusIcon(); $statusicon->set_from_stock(Gtk::STOCK_FILE); $statusicon->set_tooltip('Left click to view GTK window'); $statusicon->connect('activate', 'on_activate'); $statusicon->connect('popup-menu', 'on_popup_menu'); Note the use of $statusicon->set_tooltip('Left click to view GTK window'); which sets a tooltip for the system tray icon. When you hover the mouse over the icon, a tooltip will appear to display the message "Left click to view GTK window." We have also connected the "popup-menu" signal to monitor any right mouse click: $statusicon->connect('popup-menu', 'on_popup_menu');
blog comments powered by Disqus |
|
|
|
|
|
|
|