eumandy/eugtk/examples/test54.ex
2016-11-25 00:33:18 -07:00

97 lines
2.4 KiB
Elixir

----------------------------------------------------------------------
--# Menus
----------------------------------------------------------------------
include GtkEngine.e
constant docs = `<u><b>Menus</b></u>
Please run this from an x-term
so that you can see the results
when you activate a menu item!
`
constant win = create(GtkWindow,"size=300x-1,position=1,$destroy=Quit")
constant panel = create(GtkBox,"orientation=VERTICAL")
add(win,panel)
constant menubar = create(GtkMenuBar)
pack(panel,menubar)
constant sep = create(GtkSeparator)
pack(panel,sep)
constant filemenu = create(GtkMenuItem,"_File")
set(menubar,"append",filemenu)
constant sub1 = create(GtkMenu)
set(filemenu,"submenu",sub1)
enum OPEN,CLOSE,DIRTY=4
sequence f = repeat(0,9)
f[1] = create(GtkMenuItem,"_Open","fOpen")
f[2] = create(GtkMenuItem,"_Close","fClose")
f[3] = create(GtkSeparatorMenuItem)
f[4] = create(GtkCheckMenuItem,"_Dirty","fDirty")
f[5] = create(GtkSeparatorMenuItem)
f[6] = create(GtkRadioMenuItem,NULL,"One","BtnID",1)
f[7] = create(GtkRadioMenuItem,f[6],"Two","BtnID",2)
f[8] = create(GtkRadioMenuItem,f[7],"Three","BtnID",3)
f[9] = create(GtkMenuItem,"_Quit","Bail")
set(f[2],"sensitive",FALSE)
set(sub1,"append",f)
constant lbl = create(GtkLabel)
set(lbl,"markup",docs)
add(panel,lbl)
show_all(win)
main()
-----------------------
global function fOpen()
-----------------------
puts(1,"Open menu item clicked\n")
set(f[2],"sensitive",TRUE)
set(f[1],"sensitive",FALSE)
return 1
end function
------------------------
global function fClose()
------------------------
puts(1,"Close menu item clicked\n")
set(f[2],"sensitive",FALSE)
set(f[1],"sensitive",TRUE)
return 1
end function
--------------------------------
global function fDirty(atom ctl)
--------------------------------
printf(1,"Dirty = %d\n",get(ctl,"active"))
return 1
end function
------------------------------------------
global function BtnID(atom ctl, atom id)
------------------------------------------
if get(ctl,"active") then
printf(1,"Radio %d active\n",id)
end if
return 1
end function
----------------------
global function Bail()
----------------------
if get(f[4],"active") then
Warn(win,"Sorry","The file is dirty","clean it up first!")
else
Quit()
end if
return 1
end function