91 lines
2.5 KiB
Elixir
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
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|