----------------------------------------------------------------
-- ButtonTest.exu
-- Demonstrates:
-- Different types of GTK buttons
-- Labels
-- packing
-- Link Buttons & linking to a web browser
-- (should be run from an xterm so you can see the results)
----------------------------------------------------------------
include GtkEngine.e
include std/dll.e
---------------- main window ----------------
constant win = create(GtkWindow)
connect(win,"destroy",quit)
set(win,"Border Width",20)
set(win,"position",GTK_WIN_POS_CENTER)
set(win,"default Size",400,300)
function Foo(atom ctl, atom data)
object addr = peek_string(data)
if system_exec("/usr/bin/env firefox " & addr,0) != 0 then
return Warn(win,"What!","You don't have firefox?\n Shame! Shame! Shame!")
end if
return 1
end function
constant foo = call_back(routine_id("Foo"))
-------------- vertical container -----------
constant panel = create(GtkVBox)
add(win,panel)
constant lbl0 = create(GtkLabel,
"Run this from an x-term!\nso you can see the results\n")
constant lbl1 = create(GtkLabel,"GTK Check Button")
constant btn1 = create(GtkCheckButton,"_Click me! [alt-c]")
constant sep1 = create(GtkHSeparator)
constant lbl2 = create(GtkLabel,"GTK Radio Buttons")
constant rb1 = create(GtkRadioButton,0,"_One")
constant rb2 = create(GtkRadioButton,rb1,"_Two")
constant sep2 = create(GtkHSeparator)
constant lbl3 = create(GtkLabel,"GTK Toggle Button")
constant tb1 = create(GtkToggleButton,"click _Me!")
constant sep3 = create(GtkHSeparator)
constant lbl4 = create(GtkLabel,"GTK Link Button")
constant lb1 = create(GtkLinkButton,"http://rapideuphoria.com","Euphoria")
junk = get(lb1,"set uri hook",foo)
constant sep4 = create(GtkHSeparator)
constant lbl5 = create(GtkLabel,"GTK Scale Button")
constant sb1 = create(GtkScaleButton,1,0,100,10)
constant sep5 = create(GtkHSeparator)
constant lbl6 = create(GtkLabel,"GTK Volume Button")
constant vb1 = create(GtkVolumeButton)
-----------------------------------------------------------
-- Generic function to display results available from btns
-----------------------------------------------------------
function ShowValue(atom ctl, atom data)
switch data do
case 1 then printf(1,"Button 1 = %d\n",get(ctl,"active"))
break
case 2 then if get(ctl,"active") then
puts(1,"Radio btn 1 selected\n")
end if
break
case 3 then if get(ctl,"active") then
puts(1,"Radio btn 2 selected\n")
end if
break
case 4 then printf(1,"Toggle Button = %d\n",get(ctl,"active"))
break
case 5 then printf(1,"Scale Button = %g\n",get(ctl,"value"))
break
case 6 then printf(1,"Volume Button = %f\n",get(ctl,"value"))
break
end switch
return 1
end function
constant show_value = call_back(routine_id("ShowValue"))
connect(btn1,"clicked",show_value,1)
connect(rb1,"clicked",show_value,2)
connect(rb2,"clicked",show_value,3)
connect(tb1,"toggled",show_value,4)
connect(sb1,"released",show_value,5)
connect(vb1,"released",show_value,6)
pack(panel,{lbl0,lbl1,btn1,sep1,lbl2,rb1,rb2,sep2,lbl3,tb1,sep3})
pack(panel,{lbl4,lb1,sep4,lbl5,sb1,sep5,lbl6,vb1})
show_all(win)
main()
---------------------------------------------------------------
-- copyright 2009 by Irv Mullins, code released under the LGPL
---------------------------------------------------------------