PHP-GTK2 Newsletter

PHP-GTK2 Tips & Techniques
FREE Newsletter
by kksou



Sample Code 297: How to change options of pulldown menu on the fly using GtkComboBoxEntry?
Written by kksou   
Saturday, 28 July 2007
Problem

This is in response to Bernard Fouché's post titled "Trouble clearing GtkComboBoxEntry text list"

Suppose we want to change the options of a pulldown menu on-the-fly using GtkComboBoxEntry as shown below:

How to change options of pulldown menu on the fly using GtkComboBoxEntry?


Solution

Sample Code
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   
<?php
$window = new GtkWindow();
$window->connect_simple('destroy', array( 'Gtk', 'main_quit'));
$window->set_size_request(400,180);

$window->add($vbox = new GtkVBox());

// display title
$title = new GtkLabel("Change GtkComboBoxEntry options on the fly");
$title->modify_font(new PangoFontDescription("Times New Roman Italic 10"));
$title->modify_fg(Gtk::STATE_NORMAL, GdkColor::parse("#0000ff"));
$title->set_size_request(-1, 60);
$vbox->pack_start($title, 0, 0);

// add buttons
$vbox->pack_start($hbox = new GtkHBox(), 0);
$hbox->pack_start(new GtkLabel('Continent: '), 0);
$hbox->pack_start($button1 = new GtkButton('US'), 0);
$button1->connect('clicked', 'on_button');
$button1->set_size_request(80, -1);
$hbox->pack_start($button2 = new GtkButton('Europe'), 0);
$button2->connect('clicked', 'on_button');
$button2->set_size_request(80, -1);
$vbox->pack_start(new GtkLabel(), 0); // leave a gap

// the selection
$list['US'] = array('US-1', 'US-2', 'US-3', 'US-4');
$list['Europe'] = array('Europe-1', 'Europe-2', 'Europe-3',
    'Europe-4', 'Europe-5', 'Europe-6');

$vbox->pack_start($hbox=new GtkHBox(), 0, 0);
$hbox->pack_start(new GtkLabel('Select: '), 0, 0);

// Create the model
if (defined("GObject::TYPE_STRING")) {
    $model = new GtkListStore(GObject::TYPE_STRING);
} else {
    $model = new GtkListStore(Gtk::TYPE_STRING);
}

// Create the comboboxentry
$combobox = &GtkComboBoxEntry::new_with_model($model, 0);

// populate combobox
populate('Europe');

// setup the submit button
$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", $combobox);

  • Note that this is only 70% of the sample code. You have to be a registered member to see the entire sample code. Please login or register.
  • Registration is free and immediate.
  • Have some doubt about the registration? Please read this forum article.
Explanation

We make use of the code in to set up the GtkComboBoxEntry.

What's new here:

  1. Clear the model.
  2. Repopulate the model.
  3. Get the selection.

Related Links

User reviews

There are no user reviews yet.

Note: You have to be a registered member to leave a comment. Free registration here.

 
< Prev   Next >

Copyright © 2006-2008. kksou.com. All Rights Reserved