From: Csürke Tamás <linuxlinux1@windowslive.com>
To: pike lista <pike-devel@lists.lysator.liu.se>
Sent: Tue, August 3, 2010 11:38:47 AM
Subject: RE: gtk question

Thank you, it's very useful. And runs without problem, it creates the tree. But I even couldn't create a similar ComboBox. :(

I think based on your example that I should render the rows with a cellrenderer, but I don't know how or where...





#!/usr/bin/env pike

void get_text(GTK2.ComboBox w, mixed data) {
//  string text=w->get_active_text();
  int index=w->get_active();
 
//  write("You chose: %s\n",text);
  object tm=w->get_property("model");
//  write("tm==%O\n",tm);
  object iter=tm->get_iter(GTK2.TreePath((string)index));
  mixed val=tm->get_value(iter,0);
  write("val==%O\n",val);
}

int main(int argc, array argv) {
  GTK2.setup_gtk();
  object w=GTK2.Window(GTK2.WINDOW_TOPLEVEL);
//  GTK2.ListStore ls=GTK2.ListStore(({ "string" }));
  object cb=GTK2.ComboBox("string");
  cb->append_text("test 1");
  cb->append_text("foo");
  cb->append_text("fred");
  cb->append_text("scooby");
  w->add(cb);
  w->show_all();
  cb->signal_connect("changed",get_text,0);
  w->signal_connect("destroy",lambda(){ exit(0); },0);
  return -1;
}


Just modify it to add specific cell renderers as per the previous example.