abijr has asked for the wisdom of the Perl Monks concerning the following question:

Hi, I am trying to do some rapid application development using the Gtk2 module and glade. And I am having problems placing values in comboboxes.

I haven't been able to find documentation in regard to the use of perl and gtk, without converting the glade file into perl code. Any pointers to such would be appreciated. Well here is the perl code:

#!/usr/bin/perl use strict; use warnings; use Glib; use Gtk2 '-init'; use Gtk2::SimpleList; # Connect to the glade file my $builder = Gtk2::Builder->new (); $builder->add_from_file ('example.glade'); $builder->connect_signals (); # connect to the combobox my $combo = $builder->get_object ('combobox1'); my @listing = qw/random stuff just to test /; my $text; # This is supposed to append the @listing to the # combobox foreach $text (@listing) { $combo->append_text ($text); } $builder->get_object ('window1')->show_all; Gtk2->main;

And the example.glade

<?xml version="1.0"?> <interface> <requires lib="gtk+" version="2.16"/> <!-- interface-naming-policy project-wide --> <object class="GtkWindow" id="window1"> <child> <object class="GtkComboBox" id="combobox1"> <property name="visible">True</property> </object> </child> </object> </interface>

When I execute I get this error:

Gtk-CRITICAL **: gtk_combo_box_append_text: assertion `GTK_IS_LIST_STORE (combo_box->priv->model)' failed at /home/abijr/progs/perl/gtk/hello line 22.

Thanks in advance.

Replies are listed 'Best First'.
Re: cannot append items in combobox using Gtk2 and glade
by abijr (Novice) on Jan 20, 2010 at 04:12 UTC

    Found the answer on a 6 year old mailing list thread, here's the code, but now working. The same glade file

    #!/usr/bin/perl use strict; use warnings; use Glib qw/TRUE FALSE/; use Gtk2 '-init'; use Gtk2::SimpleList; # Connect to the glade file my $builder = Gtk2::Builder->new (); $builder->add_from_file ('example.glade'); $builder->connect_signals (); # connect to the combobox my $cbox = $builder->get_object ('combobox1'); my @listing = qw/random stuff just to test /; my $text; my $model = new Gtk2::ListStore('Glib::String'); $cbox->clear(); my $renderer = new Gtk2::CellRendererText; $cbox->pack_start($renderer, FALSE); $cbox->set_attributes($renderer, text => 0); $cbox->set_model($model); # This is supposed to append the @listing to the # combobox foreach $text (@listing) { $cbox->append_text ($text) } $builder->get_object ('window1')->show_all; Gtk2->main;
      Thx a lot! Who'd have thought it would be *this* complicated >.<
Re: cannot append items in combobox using Gtk2 and glade
by Anonymous Monk on Jan 20, 2010 at 03:03 UTC

      Thanks, (I thought it was my code...)