
------------------------------------------------------------------------
--# GtkSpinner demo
-- Spinner won't actually spin while a euphoria call is processed, 
-- such as a call to read a large file.
-- If that is the case, you must use tasks. See examples/task.ex
------------------------------------------------------------------------

include GtkEngine.e

constant docs = `<u><b>GtkSpinner</b></u>

The spinner won't spin while a lengthy
Euphoria call is processed, such as reading
a large file.

For that, you must use tasks to keep
the spinner going. See ~/demos/examples/task.ex
`
constant win = create(GtkWindow,"size=100x100,border=10,$destroy=Quit")

constant panel = create(GtkBox,VERTICAL,10)
    add(win,panel)

constant spin = create(GtkSpinner,{
    {"size request",30,30}, -- make this any size you wish;
    {"vexpand",TRUE},
    {"hexpand",TRUE}})
    add(panel,spin)
    
constant lbl = create(GtkLabel)
    add(panel,lbl)
    set(lbl,"markup",docs)
    
constant box = create(GtkButtonBox),
    btn1 = create(GtkButton,"gtk-quit","Quit"),
    btn2 = create(GtkSwitch,_("Toggle"))
    add(box,{btn1,btn2})
    pack(panel,-box)
    
show_all(win)
main()

--------------------------------------------
function Toggle(atom ctl)
--------------------------------------------
    if get(ctl,"active") then
	set(spin,"start")
    else 
	set(spin,"stop")
    end if
return 1
end function

