--------------------------------------------------------------------------- --# GtkAppChooserWidget --------------------------------------------------------------------------- include GtkEngine.e sequence docs = `App Chooser Widget Displays default app, recommended apps, and others, if requested, for files of a given type. Choose types below. ` ifdef WINDOWS then docs &= "Doesn't seem to work on Windows" end ifdef constant ctypes = { "text/plain", "text/html", "image/gif", "inode/directory", "application/pdf", "application/x-compressed-tar", $} object content_type = ctypes[1] constant win = create(GtkWindow,"size=200x100,border=10,position=1,$destroy=Quit") constant panel = create(GtkBox,"orientation=VERTICAL,spacing=5") add(win,panel) constant lbl = create(GtkLabel) set(lbl,"markup",docs) add(panel,lbl) constant btn1 = create(GtkButton,"gtk-quit","Quit"), btnbox = create(GtkButtonBox) pack(panel,-btnbox) constant combo = create(GtkComboBoxText,{ {"tooltip markup","Drop down list of content-types"}, {"signal","changed","UpdateContentType"}}) for i = 1 to length(ctypes) do set(combo,"append text",ctypes[i]) end for add(btnbox,{btn1,combo}) object apcw = create(GtkAppChooserWidget,content_type) add(panel,apcw) show_all(win) set(combo,"active",1) UpdateContentType() -- line above is a hack to remove the shadowy "no applications found" -- overlay which appears when using GTK3.14, even if apps are found. -- That is probably a bug in the GTK3.14 version of the app chooser main() ------------------------------------ global function UpdateContentType() ------------------------------------ content_type = get(combo,"active text") set(apcw,"destroy") -- get rid of the old one; apcw = create(GtkAppChooserWidget,content_type) -- create new with new content-type; set(apcw,"show other",TRUE) set(apcw,"default text",sprintf("Sorry, can't find an app for %s",{content_type})) show(apcw) add(panel,apcw) return 1 end function