----------------------------------------------------------------- --# GtkComboBox with images ----------------------------------------------------------------- include GtkEngine.e constant docs = `GtkComboBox with a little work, you can add images to a combo! Click on the dotted line to 'tear-off' a menu! ` -- We have to use the GtkComboBox, rather than the simpler -- GtkComboBoxText, because we're adding an image to each -- option; enum NAME,PIX constant items = { {"Fish",create(GdkPixbuf,"thumbnails/fish.png",30,30)}, {"Fox",create(GdkPixbuf,"thumbnails/fox.png",30,30)}, {"Mouse",create(GdkPixbuf,"thumbnails/mouse.png",30,30)} } constant win = create(GtkWindow,"size=200x100,border_width=10,position=1,$destroy=Quit") constant panel = create(GtkBox,"orientation=VERTICAL") add(win,panel) constant doclbl = create(GtkLabel) set(doclbl,"markup",docs) add(panel,doclbl) constant mdl = create(GtkListStore,{gSTR,gPIX}), renderer1 = create(GtkCellRendererText), renderer2 = create(GtkCellRendererPixbuf) set(mdl,"data",items) constant combo = create(GtkComboBox,{ {"model",mdl}, {"pack start",renderer1,TRUE}, {"add attribute",renderer1,"text",1}, {"pack start",renderer2,TRUE}, {"add attribute",renderer2,"pixbuf",2}, {"active",1}, {"connect","changed",_("UpdateTitleBar")}}) -- try this: set(combo,"add tearoffs",TRUE) set(combo,"title","Animals") -- or this: -- set(combo,"wrap width",2) add(panel,combo) show_all(win) main() ----------------------------------------- function UpdateTitleBar(atom ctl) ----------------------------------------- integer x = get(ctl,"active") set(win,"title",items[x][NAME]) set(win,"icon",items[x][PIX]) return 1 end function