2016-11-25 00:33:18 -07:00

91 lines
2.5 KiB
Elixir

---------------------------------------------------------------------------
--# GtkScale and GtkEntry as progressbar
---------------------------------------------------------------------------
include GtkEngine.e
-- this is the main window which contains a scrollbar and a quit button;
constant win = create(GtkWindow,"size=200x100,border_width=10,$destroy=Quit")
constant panel = create(GtkBox,"orientation=VERTICAL,spacing=5")
add(win,panel)
constant lbl = create(GtkLabel)
set(lbl,"markup",
"<b><u>GtkScrollbar</u></b> using an adjustment\nand a separate level display window")
add(panel,lbl)
-- this adjustment links scrollbar changes to the value displayed in
-- the second window
constant adj = create(GtkAdjustment)
set(adj,"configure",25,0,100,1) -- initial value, min, max, step
constant sb = create(GtkScrollbar,0,adj)
constant sigid = connect(sb,"value-changed","DisplayValue")
add(panel,sb)
constant btn1 = create(GtkButton,"gtk-quit","Quit")
pack(panel,-btn1)
-- the second window is borderless, and contains a GtkEntry which displays
-- the value set by the scrollbar both as text and as a progressbar;
constant vwin = create(GtkWindow,{
{"title","Value"},
{"default size",200,50},
{"background","black"},
{"border width",10},
{"position",GTK_WIN_POS_CENTER},
{"keep above",TRUE},
{"decorated",FALSE},
{"move",300,300},
{"connect","hide",_("DisconnectSignal"),sigid}})
constant lbl1 = create(GtkLabel,"font=8,color=yellow")
constant vpanel = create(GtkBox,VERTICAL)
add(vwin,vpanel)
set(lbl1,"markup",
"<u><b>test83.ex : </b></u>below is a GtkEntry with progressbar\n")
add(vpanel,lbl1)
constant vlbl = create(GtkEntry,{
{"font","Courier Bold 12"},
{"color","red"},
{"alignment",.5},
{"text","25 percent"},
{"progress fraction",0.25}})
add(vpanel,vlbl)
show_all(vwin)
show_all(win)
main()
------------------------------------------------------------
global function DisplayValue(atom ctl)
------------------------------------------------------------
atom v = get(ctl,"value")
set(vlbl,"text",sprintf("%2.0f percent",v))
set(vlbl,"progress fraction",v/100)
if v = 100 then
set(vwin,"background","red")
else
set(vwin,"background","black")
end if
return 1
end function
-----------------------------------------------------------
function DisconnectSignal(atom ctl, integer sigid)
-----------------------------------------------------------
disconnect(sb,sigid)
return 1
end function