97 lines
2.4 KiB
Elixir
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
|