1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
| <?php $window = new GtkWindow(); $window->connect_simple('destroy', array( 'Gtk', 'main_quit')); $window->set_size_request(400,150); $window->add($vbox = new GtkVBox());
// display title
$title = new GtkLabel("Setup pulldown menu with options in 2d matrix"); $title->modify_font(new PangoFontDescription("Times New Roman Italic 10")); $title->modify_fg(Gtk::STATE_NORMAL, GdkColor::parse("#0000ff")); $title->set_size_request(-1, 40); $title->set_justify(Gtk::JUSTIFY_CENTER); $alignment = new GtkAlignment(0.5, 0, 0, 0); $alignment->add($title); $vbox->pack_start($alignment, 0, 0); $vbox->pack_start(new GtkLabel(), 0, 0);
$vbox->pack_start($hbox=new GtkHBox(), 0, 0); $hbox->pack_start(new GtkLabel('Select: '), 0, 0);
// Setup combobox
$combobox = new ComboBox1($window); $hbox->pack_start($combobox, 0, 0); $hbox->pack_start(new GtkLabel(' '), 0, 0); $hbox->pack_start($button = new GtkButton('Submit'), 0, 0); $button->set_size_request(60, 24); $button->connect('clicked', "on_submit_button", $combobox);
$window->show_all(); Gtk::main();
class ComboBox1 extends GtkHBox {
function __construct($parent_window) { parent::__construct(); $this->parent_window = $parent_window; $this->entry = new GtkEntry(); $this->pack_start($this->entry, 0, 0); $this->pack_start($this->button = new GtkButton('V'), 0, 0);
$this->button->connect('clicked', array(&$this, 'on_button')); $this->entry->connect('key-press-event', array(&$this, 'on_keypress_entry')); }
function on_keypress_entry($widget, $event) { $this->button->clicked(); }
function on_button($button) { // process button click
$win_pos=$this->parent_window->get_position(); $x_field_pos=$this->entry->allocation->x; $y_field_pos=$this->entry->allocation->y; $x_shift=4; $y_shift=23+$this->entry->allocation->height;
$x_win=$win_pos[0]+$x_field_pos+$x_shift; $y_win=$win_pos[1]+$y_field_pos+$y_shift;
$this->dialog = new GtkDialog(null, null, Gtk::DIALOG_MODAL|Gtk::DIALOG_NO_SEPARATOR); $this->dialog->set_decorated(false); $this->dialog->set_uposition($x_win,$y_win);
$this->dialog->vbox->pack_start($table = new GtkTable(), 0, 0);
// the selection
$data = array( array('', 'option 1', 'option 2', 'option 3'), array('Product 0', 'item0.1', 'item0.2', 'item0.3'), array('Product 1', 'item1.1', 'item1.2', 'item1.3'), array('Product 2', 'item2.1', 'item2.2', 'item2.3'), array('Product 3', 'item3.1', 'item3.2', 'item3.3'), array('Product 4', 'item4.1', 'item4.2', 'item4.3'));
$this->display_table ($table, $data); $this->dialog->action_area->set_size_request(-1, 0);
$this->dialog ->show_all(); $this->dialog->run(); }
function display_table($table, $a) { for ($row=0; $row<count($a); ++$row) { for ($col=0; $col<count($a[$row]); ++$col) {
|