
-----------------------------------------------------------------
--# GtkFileChooserButton
-----------------------------------------------------------------

include GtkEngine.e

constant docs = `<b><u>GtkFileChooserButton</u></b>
a widget which can be added to any container 
to pop up a file-chooser dialog.
`
constant win = create(GtkWindow,"size=400x80,border_width=10,position=1,$destroy=Quit")
 
constant panel = create(GtkBox,"orientation=VERTICAL") 
    add(win,panel)

constant lbl = create(GtkLabel)
    set(lbl,"markup",docs)
    add(panel,lbl)
	
constant box = create(GtkBox,"orientation=HORIZONTAL, spacing=5")
    pack(panel,-box)

constant btn1 = create(GtkButton,"gtk-quit","Quit")
    set(btn1,"tooltip text","Click to exit")
    add(box,btn1)
	
constant fcb = create(GtkFileChooserButton,"Select a file",GTK_FILE_CHOOSER_ACTION_OPEN)	
    set(fcb,"tooltip text","Click to open a file chooser dialog")
    pack(box,fcb,TRUE,TRUE)

constant btn2 = create(GtkButton,"gtk-ok",_("Foo"))
    set(btn2,"tooltip text","Click to try to open the selected file")
    add(box,btn2)
	
show_all(win)
main()

------------------------------------------------------------------------
function Foo() --calls show_uri which handles most files
------------------------------------------------------------------------
object selected = get(fcb,"filename")
    if atom(selected) then -- directory was clicked, not a file
	return 1 
    end if
    if Question(win,"File Chooser",
	"Open \n" & selected,
	"with default handler?") = MB_YES then
	ifdef WINDOWS then
		system("explorer " & selected,0)
		return 1
	end ifdef
	show_uri(selected)  -- this line is all that's needed for UNIX
    end if
return 1
end function

