
-------------------------------------------------------------------------------------
--# Toggle button, custom check button, Switch
-------------------------------------------------------------------------------------

include GtkEngine.e
include std/utils.e -- for iif()

constant docs = "<u><b>Various Buttons</b></u>"

constant -- strings used to display control states; 
    up = "<span color='blue'>Up</span>",
    down = "<span color='red'>Down</span>",
    on = "<span color='red'>On</span>",
    off = "<span color='blue'>Off</span>",
    checked = "<span color='red'>Checked</span>",
    unchecked = "<span color='blue'>Unchecked</span>"

constant win = create(GtkWindow,"size=350x100,border=10,position=1,$destroy=Quit")

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

constant lbl = add(panel,create(GtkLabel,{{"markup",docs}}))

constant box1 = add(panel,create(GtkGrid,"margin_bottom=5,column_homogeneous=1"))

constant 
    sizegroup = create(GtkSizeGroup,GTK_SIZE_GROUP_BOTH),
    btn1 = create(GtkToggleButton,"gtk-edit#_Edit"),
    btn2 = create(GtkCheckButton,"face-plain-symbolic#",_("ToggleMe")),
    btn3 = create(GtkSwitch)	

    add(box1,{btn1,btn2,btn3})

    set(btn1,"tooltip markup","A normal ToggleButton")
    set(btn2,"tooltip markup","A <i>crazy</i> CheckButton!")
    set(btn3,"tooltip markup","A Switch")

constant box2 = pack_end(panel,create(GtkButtonBox,"margin_top=10"))
	add(box2,
	    {create(GtkButton,"gtk-quit","Quit"),
	     create(GtkButton,"gtk-ok",_("ShowStatus"))})

show_all(win)
main()

-----------------------------------
function ToggleMe(atom ctl)
-----------------------------------
object img = get(ctl,"image") 

    if get(ctl,"active") then
	    set(img,"from icon name","face-laugh",GTK_ICON_SIZE_LARGE_TOOLBAR)
	    set(ctl,"label"," Happy")
    else
	    set(img,"from icon name","face-plain",GTK_ICON_SIZE_LARGE_TOOLBAR)
	    set(ctl,"label"," Sad")
    end if
    
return 1
end function

--------------------------------------------------
function ShowStatus(atom ctl)
--------------------------------------------------
Info(win,"Buttons","Active buttons",
    sprintf("Toggle Button is: %s\nCheckButton is: %s\nSwitch is: %s",
        {iif(get(btn1,"active"),down,up), 
         iif(get(btn2,"active"),checked,unchecked),
         iif(get(btn3,"active"),on,off)}))
return 1
end function

