All pastes #454675 Raw Edit

Stuff

public text v1 · immutable
·published 2007-04-23 19:20 UTC
rendered paste body
<?php

$menuwin = new gtkwindow();
$menuwin->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', '<hr>', '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=='<hr>') {
                    $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();
}