include GtkEngine.e
include std/dll.e
include std/filesys.e
constant win = create(GtkWindow) set(win,"title","Main Window")
constant panel = create(GtkVBox)
constant dlg = create(GtkDialog) set(dlg,"title","Custom Dialog")
constant btn = create(GtkButton,"gtk-ok")
constant image1 = create(GtkImage,canonical_path("~/demos/images/jls.jpg"))
constant image2 = create(GtkImage,canonical_path("~/demos/images/julian.jpg"))
constant lbl = create(GtkLabel,"click the button to open a dialog")
-----------------------------------------------
function ShowImage(atom ctl, atom data)
-----------------------------------------------
switch data do
case 1 then hide(lbl) hide(image2) show(image1)
case 2 then hide(lbl) hide(image1) show(image2)
end switch
return 1
end function
constant show_image = call_back(routine_id("ShowImage"))
--------------------------------------------------
function custom_button(object img, sequence title)
--------------------------------------------------
atom x, c, i, t
x = create(GtkButton)
c = create(GtkHBox)
add(x,c)
i = create(GtkImage,img)
t = create(GtkLabel,title)
add(c,{i,t})
show_all(x)
return x
end function
--------------------------------------------------------
function Foo() -- respond to button clicks
--------------------------------------------------------
object result
result = run(dlg)
switch result do
case 0 then puts(1,"Quit button clicked\n")
case 1 then puts(1,"OK button clicked\n")
case 4 then puts(1,"You closed the window\n")
case else ? result
end switch
return 1
end function
constant foo = call_back(routine_id("Foo"))
connect(win,"destroy",quit)
set(win,"default size",300,300)
set(dlg,"default size",300,200)
constant b1 = custom_button(canonical_path("~/demos/images/jls.jpg"),"Jamie Lynn")
constant b2 = custom_button(canonical_path("~/demos/images/julian.jpg"),"Julian")
connect(b1,"clicked",show_image,1)
connect(b2,"clicked",show_image,2)
constant top = get(dlg,"content area")
add(top,{b1,b2})
constant btn1 = get(dlg,"add button","gtk-quit",0)
constant btn2 = get(dlg,"add button","gtk-ok",1)
connect(btn,"clicked",foo)
add(win,panel)
add(panel,image1) hide(image1)
add(panel,image2) hide(image2)
add(panel,lbl)
pack(panel,-btn)
show(lbl)
show(btn)
show(panel)
show(win)
main()
---------------------------------------------------------------
-- copyright 2010 by Irv Mullins, code released under the LGPL
---------------------------------------------------------------