PHP-GTK2 Newsletter

PHP-GTK2 Tips & Techniques
FREE Newsletter
by kksou



Sample Code 295: How to change options of pulldown menu on the fly using GtkComboBox?
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 as shown below:

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


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   
54   
55   
56   
57   
<?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 GtkComboBox 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 a combobox
$combobox = new GtkComboBox();

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

// Set up the combobox
$combobox->set_model($model);
$cellRenderer = new GtkCellRendererText();
$combobox->pack_start($cellRenderer);
$combobox->set_attributes($cellRenderer, 'text', 0);

// populate combobox
populate('US');

// 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);
  • 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 combobox.

What's new here:

  1. Clear the model.
  2. Repopulate the model.

Related Links

User reviews   Average user ratings:    5.0   (from 1 user)
  1. Veronica Bendersky
    July 29, 2008 7:50am

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