// hello world var w = new Gtk.Window(0); w.connect("delete-event", function() { println("Done?"); Gtk.exit(1); }); w.setTitle("hello world"); // indicates a store that stores G_TYPE_STRING, G_TYPE_FLOAT, G_TYPE_POINTER, G_TYPE_BOOLEAN // should we use g_type_from_name("xxx") in the backend? // var store = new Gtk.ListStore("gchararray", "gfloat", "gpointer", "gboolean", "GdkPixbuf"); var iter = new Gtk.TreeIter(); store.append(iter); println("create val"); a = new G.Value("test") store.set(iter, 0, a); store.set(iter, 1, new G.Value(1.0)); store.set(iter, 2, new G.Value({ a: 1, c: 2})); store.set(iter, 3, new G.Value(true) ); var pixbuf = Gdk.Pixbuf.newFromFile("/usr/share/pixmaps/gnome-logo-icon.png"); println( " pixbuf='"+typeof(pixbuf) +"'"); store.set(iter, 4, new G.Value(pixbuf) ); // unref pixbuf? store.append(iter); try { store.set(iter, 0); } catch(e) { println("error" + e.toSource()); } store.set(iter, 0, new G.Value("test2")); store.set(iter, 1, new G.Value(1.0)); store.set(iter, 2, new G.Value({ a: 1, c: 2})); store.set(iter, 3, new G.Value(true) ); var view = new Gtk.TreeView(); var renderer = new Gtk.CellRendererText (); var col = new Gtk.TreeViewColumn(); col.setTitle("Name"); col.packStart(renderer, true); col.addAttribute(renderer, "text", 0); view.insertColumn( col, -1); var col = new Gtk.TreeViewColumn(); col.setTitle("Value"); col.packStart(renderer, true); col.addAttribute(renderer, "text", 1); view.insertColumn( col, -1); var col = new Gtk.TreeViewColumn(); col.setTitle("Bool"); col.packStart(renderer, true); col.addAttribute(renderer, "text", 3); view.insertColumn( col, -1); renderer = new Gtk.CellRendererPixbuf (); var col = new Gtk.TreeViewColumn(); col.setTitle("pix"); col.packStart(renderer, true); col.addAttribute(renderer, "pixbuf", 4); view.insertColumn( col, -1); println("adding store?"); view.setModel ( store ); view.connect("row-activated", function(view, path, col) { var model = view.getModel(); var iter = new Gtk.TreeIter(); if (model.getIter(iter, path)) { var name = new G.Value(); var name2 = new G.Value(); model.getValue(iter, 0, name); model.getValue(iter, 1, name2); println ("The row containing the name '"+ name.getString() + "' has been double-clicked. " + name2.getFloat()); model = new Gtk.ListStore(model); model.remove(iter); println ("removed?"); } }); println("add view?"); w.add(view); w.showAll(); Gtk.main();