------------------------------------------------------------------------------------------------ --# AppChooserDialog -- This shows and optionally changes associations. -- It would normally be used within your program to -- choose your preferred helper apps. ------------------------------------------------------------------------------------------------ include GtkEngine.e constant docs = `AppChooserDialog Show available apps to handle a given file or a given file type e.g. "text/plain" ` constant win = create(GtkWindow,"size=300x100,border_width=10,position=1,$destroy=Quit") constant panel = create(GtkBox,"orientation=VERTICAL") add(win,panel) constant img = create(GtkImage) add(panel,img) constant lbl = create(GtkLabel) set(lbl,"markup",docs) add(panel,lbl) sequence ck = repeat(0,4) ck[1] = create(GtkRadioButton,0,"image/png") ck[2] = create(GtkRadioButton,ck[1],"text/plain") ck[3] = create(GtkRadioButton,ck[2],"text/html") ck[4] = create(GtkRadioButton,ck[3],"text/bogus") add(panel,ck) constant btnbox = create(GtkButtonBox,"margin-top=10") pack(panel,-btnbox) constant btn1 = create(GtkButton,"gtk-quit","Quit"), btn2 = create(GtkButton,"gtk-ok",_("ShowHandler")) add(btnbox,{btn1,btn2}) show_all(win) main() ------------------------------------------------------------------------ function ShowHandler() ------------------------------------------------------------------------ atom info, icon object name for i = 1 to length(ck) do if get(ck[i],"active") then name = get(ck[i],"label") end if end for object descr atom appdlg = create(GtkAppChooserDialog,win,GTK_DIALOG_MODAL,name) set(appdlg,"heading","Choose an App!") -- some options can be set by retrieving the underlying appwidget; atom appwid = get(appdlg,"widget") --here are some others you might try; --set(appwid,"show default",FALSE) --set(appwid,"show recommended",FALSE) --set(appwid,"show fallback",TRUE) --set(appwid,"show other",FALSE) --line below replaces default "no apps available" error text; --set(appwid,"default text"," You are SOL!" if get(appdlg,"run") = MB_OK then info = get(appdlg,"app info") icon = get(info,"icon") name = get(info,"display name") descr = get(info,"description") set(img,"from gicon",icon,GTK_ICON_SIZE_DIALOG) set(lbl,"markup",sprintf("%s\n%s\n",{name,descr})) end if set(appdlg,"destroy") return 1 end function