71 lines
2.0 KiB
Elixir
71 lines
2.0 KiB
Elixir
|
|
--------------------------------------------------------------------------
|
|
--# GtkStack with visible stack switcher
|
|
--------------------------------------------------------------------------
|
|
|
|
include GtkEngine.e
|
|
|
|
requires("3.10","GtkStack")
|
|
|
|
integer which = 1
|
|
|
|
constant txt =
|
|
`<span font='bold 16'>GtkStack</span>
|
|
|
|
The GtkStack widget is a container which only shows one of its children at a time.
|
|
In contrast to GtkNotebook, GtkStack does not provide a means for users to change
|
|
the visible child. Instead, the GtkStackSwitcher widget (two buttons above)
|
|
can be used with GtkStack to provide this functionality.
|
|
|
|
Transitions between pages can be animated as slides or fades. This can be controlled
|
|
with gtk_stack_set_transition_type(). These animations respect the
|
|
"gtk-enable-animations" setting.
|
|
`
|
|
constant win = create(GtkWindow,"border=10,position=1,$destroy=Quit")
|
|
|
|
constant panel = create(GtkGrid)
|
|
add(win,panel)
|
|
|
|
constant
|
|
img1 = create(GtkImage,"thumbnails/mongoose.png"),
|
|
img2 = create(GtkImage,"thumbnails/clown.svg"),
|
|
lgpl = create(GtkLabel,LGPL),
|
|
stk = create(GtkStack,{
|
|
{"transition duration",1000},
|
|
{"transition type",GTK_STACK_TRANSITION_TYPE_SLIDE_UP_DOWN},
|
|
{"add titled",img1,"Eu","Euphoria"},
|
|
{"add titled",img2,"C","C"}})
|
|
set(panel,"attach",stk,1,6,4,1)
|
|
|
|
constant switcher = create(GtkStackSwitcher)
|
|
set(switcher,"stack",stk)
|
|
set(panel,"attach",switcher,2,10,4,4)
|
|
|
|
constant lbl = create(GtkLabel,{
|
|
{"markup",txt},
|
|
{"font","8"},
|
|
{"line wrap",TRUE}})
|
|
set(panel,"attach",lbl,1,15,4,4)
|
|
|
|
constant box = create(GtkButtonBox)
|
|
add(box,{
|
|
create(GtkButton,"gtk-quit","Quit"),
|
|
create(GtkButton,"Change Mascots","Change")})
|
|
set(panel,"attach",box,1,20,4,4)
|
|
|
|
show_all(win)
|
|
main()
|
|
|
|
-------------------------
|
|
global function Change()
|
|
-------------------------
|
|
object current = get(stk,"visible child name")
|
|
if equal("Eu",current) then
|
|
set(stk,"visible child name","C")
|
|
else
|
|
set(stk,"visible child name","Eu")
|
|
end if
|
|
return 1
|
|
end function
|
|
|