Tento rozbalovací seznam vypisuje změnu svého stavu do terminálu.
/* Okno v aplikaci */
class MyWindow : Gtk.ApplicationWindow {
/* Instance pole s linuxovými distribucemi náležející do tohoto okna */
string[] distros = {"Select distribution", "Fedora", "Mint", "Suse"};
/* Tento výčet dělá kód lépe čitelným, když se odkazujeme na sloupec
* jako Column.DISTRO namísto 0.
*/
enum Column {
DISTRO
}
/* Konstruktor */
internal MyWindow (MyApplication app) {
Object (application: app, title: "Welcome to GNOME");
this.set_default_size (200, -1);
this.border_width = 10;
Gtk.ListStore liststore = new Gtk.ListStore (1, typeof (string));
for (int i = 0; i < distros.length; i++){
Gtk.TreeIter iter;
liststore.append (out iter);
liststore.set (iter, Column.DISTRO, distros[i]);
}
Gtk.ComboBox combobox = new Gtk.ComboBox.with_model (liststore);
Gtk.CellRendererText cell = new Gtk.CellRendererText ();
combobox.pack_start (cell, false);
combobox.set_attributes (cell, "text", Column.DISTRO);
/* Nastaví první položku v seznamu jako vybranou (aktivní) */
combobox.set_active (0);
/* Napojí signál "changed" rozbalovacího seznamu
* na obsluhu signálu (neboli funkci zpětného volání)
*/
combobox.changed.connect (this.item_changed);
/* Přidá rozbalovací seznam do tohoto okna */
this.add (combobox);
combobox.show ();
}
/* Zpracování signálu pro signál "changed" rozbalovacího seznamu */
void item_changed (Gtk.ComboBox combo) {
if (combo.get_active () !=0) {
print ("You chose " + distros [combo.get_active ()] +"\n");
}
}
}
/* Toto je aplikace */
class MyApplication : Gtk.Application {
/* Konstruktor */
internal MyApplication () {
Object (application_id: "org.example.MyApplication");
}
/* Přepíše signál "activate" z GLib.Application,
* který je zděděný z Gtk.Application
*/
protected override void activate () {
/* Vytvoří okno této aplikace a zobrazí jej */
new MyWindow (this).show ();
}
}
/* main vytvoří a spustí aplikaci */
int main (string[] args) {
return new MyApplication ().run (args);
}
V této ukázce se používá následující:
Gtk.ListStore
Gtk.ComboBox
Gtk.CellRendererText
set_attributes