set_icon_name('gtk-directory'); $menuwin->set_title('Logistor'); $menuwin->set_uposition(0,0); $menuhbox = new gtkhbox(); $menuhbox->pack_start(GtkImage::new_from_stock(Gtk::STOCK_DIRECTORY,Gtk::ICON_SIZE_MENU),false,false); //$menuwin->set_keep_above(true); $screen = GdkScreen::get_default(); $width = $screen->get_width(); $menu = new gtkmenubar(); $menuhbox->pack_start($menu); $menu_definition = array( 'Logistor' => array('Log out','Quit'), 'Search' => array('Close'), 'Tasks' => array('Search','Requests','Reports'), 'Maintinace' => array('Users', '
', 'Backup Database','Server Stats') ); setup_menu($menu, $menu_definition); // note 1 $menuwin->add($menuhbox); $menuwin->set_size_request($width,-1); //$menuwin->set_position(Gtk::WIN_POS_CENTER); $menuwin->set_resizable(false); $menuwin->set_decorated(false); //$menuwin->set_border_width(0); //$menuwin->set_skip_taskbar_hint(true); //$menuwin->set_skip_pager_hint(true); $menuwin->show_all(); $main = new gtkwindow(); $main->set_title('Logistor'); $text = new gtkentry(); $label = new gtklabel('search'); $labeltype = new gtklabel('Advanced >>'); $button = new gtkbutton('Go'); $hbox = new gtkhbox(); $vbox = new gtkvbox(); $vbox->pack_start($hbox,false,false); $vbox->pack_start($labeltype); $hbox->pack_start($label,false,false); $hbox->pack_start($text); $hbox->pack_start($button,false,false); $main->add($vbox); $main->set_icon_name('gtk-find'); $main->show_all(); $main->set_skip_taskbar_hint(true); $main->set_skip_pager_hint(true); Gtk::main(); // setup menu function setup_menu($menubar, $menus) { // note 1 // $menubar = new GtkMenuBar(); // $vbox->pack_start($menubar, 0, 0); foreach($menus as $toplevel => $sublevels) { $menubar->append($top_menu = new GtkMenuItem($toplevel)); $menu = new GtkMenu(); $top_menu->set_submenu($menu); foreach($sublevels as $submenu) { if (is_array($submenu)) { // set up radio menus $i=0; $radio[0] = null; foreach($submenu as $radio_item) {// note 3 $radio[$i] = new GtkRadioMenuItem($radio[0], $radio_item); $radio[$i]->connect('toggled', "on_toggle"); $menu->append($radio[$i]); ++$i; } $radio[0]->set_active(1); // select the first item } else { if ($submenu=='
') { $menu->append(new GtkSeparatorMenuItem()); } else { $menu->append($menu_item = new GtkMenuItem($submenu)); $menu_item->connect('activate', 'on_menu_select'); } } } } } // process radio menu selection function on_toggle($radio) { // note 3 $label = $radio->child->get_label(); $active = $radio->get_active(); echo("radio menu selected: $label\n"); } // process menu item selection function on_menu_select($menu_item) { $item = $menu_item->child->get_label(); echo "menu selected: $item\n"; if ($item=='Quit') Gtk::main_quit(); global $main; if ($item=='Close') $main->hide_all(); if ($item=='Search') $main->show_all(); }