54 lines
1.5 KiB
Elixir
54 lines
1.5 KiB
Elixir
|
|
-----------------------------------------------------------------------------
|
|
--# Attaching data to GtkButtons
|
|
-- Can pass integers or atoms which can be used directly.
|
|
-- Strings and more complex Euphoria objects are passed via pointer,
|
|
-- which is created automatically, but must be 'unpacked' before use.
|
|
-----------------------------------------------------------------------------
|
|
|
|
include GtkEngine.e
|
|
|
|
sequence items = {
|
|
{"Excesso Gasoline","gallon",3.599}, -- item #1
|
|
{"Slippery Oil", "quart", 2.49} -- item #2
|
|
}
|
|
enum NAME, UNIT, PRICE
|
|
|
|
constant pix = create(GdkPixbuf,"thumbnails/gconf-editor.png")
|
|
|
|
constant win = create(GtkWindow,
|
|
"size=200x150,border_width=10,position=1,$destroy=Quit")
|
|
|
|
constant panel = create(GtkBox,"orientation=VERTICAL")
|
|
add(win,panel)
|
|
|
|
constant img = create(GtkImage,pix)
|
|
add(panel,img)
|
|
|
|
constant lbl1 = create(GtkLabel,"Lou's Service Station")
|
|
add(panel,lbl1)
|
|
|
|
constant lbl2 = create(GtkLabel,"font=8,text='Associating data with buttons")
|
|
add(panel,lbl2)
|
|
|
|
constant btnbox = create(GtkButtonBox)
|
|
pack(panel,-btnbox)
|
|
add(btnbox,{
|
|
create(GtkButton,"Gas",_("Foo"),1),
|
|
create(GtkButton,"Oil",_("Foo"),2)})
|
|
|
|
show_all(win)
|
|
main()
|
|
|
|
------------------------------------------------
|
|
function Foo(atom ctl, integer n) -- n is item #
|
|
------------------------------------------------
|
|
Info(win,"Lou's Gas & Oil",
|
|
items[n][NAME],
|
|
sprintf("$%2.2f per %s",{items[n][PRICE],items[n][UNIT]}))
|
|
return 1
|
|
end function
|
|
|
|
|
|
|