eumandy/eugtk/examples/test198.ex
2016-11-25 00:33:18 -07:00

73 lines
2.1 KiB
Elixir

-----------------------------------------------------------------------------------------------------------------------
--# GtkPlacesSidebar
-----------------------------------------------------------------------------------------------------------------------
include GtkEngine.e
include GtkFileSelector.e
include resources/places_sidebar.txt
requires("3.10","GtkPlacesSidebar")
constant win = create(GtkWindow,{
{"default size",400,600},
{"position",GTK_WIN_POS_CENTER},
{"signal","destroy","Quit"}})
constant panel = create(GtkBox,HORIZONTAL)
add(win,panel)
constant sidebar = create(GtkPlacesSidebar,{
{"add shortcut",create(GFile,"~/demos")},
{"show connect to server",TRUE}})
connect(sidebar,"open-location","ShowSelected")
add(panel,sidebar)
constant rightside = create(GtkBox,{
{"orientation",VERTICAL},
{"margin top",10}})
pack(panel,rightside)
constant lbl = create(GtkLabel,{
{"markup",places_sidebar:txt},
{"padding",10,0},
{"line wrap",FALSE}})
pack(rightside,lbl)
constant box = create(GtkButtonBox,{
{"orientation",HORIZONTAL},
{"layout",GTK_BUTTONBOX_SPREAD},
{"margin bottom",10}})
pack_end(rightside,box)
constant
btn1 = create(GtkButton,"gtk-quit","Quit"),
btn2 = create(GtkButton,"gtk-add","AddShortcut")
add(box,{btn1,btn2})
show_all(win)
main()
------------------------------
global function ShowSelected()
------------------------------
object loc = get(sidebar,"location")
object name = gtk_str_func("g_file_get_parse_name",{P},{loc})
fileselector:filters = {"euphoria","all"}
fileselector:Open(name & "/*")
-- without the added /*, selected dir will be highlighted, but not opened
-- with the addition, dir will be opened and files displayed.
return 1
end function
------------------------------
global function AddShortcut()
------------------------------
fileselector:filters = {"dir"}
object folder = fileselector:SelectFolder(0)
if string(folder) then
set(sidebar,"add shortcut",create(GFile,folder))
end if
return 1
end function