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
---------------------------------------------------------------