eumandy/eugtk/examples/test82.ex

71 lines
1.9 KiB
Elixir
Raw Normal View History

2016-11-25 00:33:18 -07:00
------------------------------------------------------------------------
--# GtkScale with options
------------------------------------------------------------------------
include GtkEngine.e
constant win = create(GtkWindow,"size=200x100,border_width=10,position=1,$destroy=Quit")
constant panel = create(GtkBox,VERTICAL)
add(win,panel)
constant lbl = create(GtkLabel,"markup=<b><u>GtkScale</u></b> using an adjustment")
add(panel,lbl)
constant scale = create(GtkScale,{
{"orientation",HORIZONTAL},
{"range",0,100},
{"increments",0.01,1},
{"fill level",75},
{"show fill level",TRUE}, -- note: some themes do not colorize the fill level bar!
{"restrict to fill level",FALSE}})
add(panel,scale)
constant btn1 = create(GtkButton,"gtk-quit","Quit")
pack(panel,-btn1)
constant vwin = create(GtkWindow,{ -- secondary window to show current value;
{"title","Value"},
{"keep above",TRUE},
{"default size",150,150},
{"transient for",win},
{"deletable",FALSE},
{"type hint",GDK_WINDOW_TYPE_HINT_DIALOG},
{"position",GTK_WIN_POS_MOUSE}})
constant vlbl = create(GtkLabel,"font='Courier bold 18',text='0'") -- for value;
add(vwin,vlbl)
show_all(vwin)
show_all(win)
constant sigid = connect(scale,"value-changed","DisplayValue")
main()
------------------------------------------------------------
global function DisplayValue(atom ctl)
------------------------------------------------------------
atom val = get(ctl,"value")
set(vlbl,"markup",sprintf("%2.1f",val))
if val > 75 then
set(vwin,"title=OVER!,background=black")
set(vlbl,"background=red,foreground=white")
elsif val > 0 then
set(vwin,"title=Value,background=lightgreen")
set(vlbl,"background=green,foreground=black")
else set(vlbl,"background=gray80,foreground=black")
end if
return 1
end function