Esempio n. 1
0
 function Menu($vbox, $menu_definition, $accel_group)
 {
     $this->menu_definition = $menu_definition;
     $menubar = new GtkMenuBar();
     $vbox->pack_start($menubar, 0, 0);
     foreach ($menu_definition as $toplevel => $sublevels) {
         $top_menu = new GtkMenuItem($toplevel);
         $menubar->append($top_menu);
         $menu = new GtkMenu();
         $top_menu->set_submenu($menu);
         // let's ask php-gtk to tell us when user press the 2nd Alt key
         $menu->connect('key-press-event', array(&$this, 'on_menu_keypress'), $toplevel);
         //*
         foreach ($sublevels as $submenu) {
             if (strpos("{$submenu}", '|') === false) {
                 $accel_key = '';
             } else {
                 list($submenu, $accel_key) = explode('|', $submenu);
             }
             if ($submenu == '<hr>') {
                 $menu->append(new GtkSeparatorMenuItem());
             } else {
                 $submenu2 = str_replace('_', '', $submenu);
                 $submenu2 = str_replace(' ', '_', $submenu2);
                 $stock_image_name = 'Gtk::STOCK_' . strtoupper($submenu2);
                 if (defined($stock_image_name)) {
                     $menu_item = new GtkImageMenuItem(constant($stock_image_name));
                 } else {
                     $menu_item = new GtkMenuItem($submenu);
                 }
                 if ($accel_key != '') {
                     $menu_item->add_accelerator("activate", $accel_group, ord($accel_key), Gdk::CONTROL_MASK, 1);
                 }
                 $menu->append($menu_item);
                 $menu_item->connect('activate', array(&$this, 'on_menu_select'));
                 $this->menuitem[$toplevel][$submenu] = $menu_item;
             }
             //                }
         }
         // */
     }
 }