Plua Menus

lua-users home
wiki

Note page relates to Plua 1.1 only (PluaPalmVersion). Syntax has changed in Plua 2.0.

-- SD 2006-10-20

Plua allows you to specify menu items which it attaches to a single dynamic menu.

You can't create a number of menus across the top - this is supposedly a limit of the Palm OS which allows only one dynamic menu.

The following was my exploration of using a resource editor to hack the PluaRuntime

It is functional but of arguable use, given that you'd have to hack the Plua runtime (unless some bundling trick was used or a change in signature).

Provided you give the menu items numbers above the Plua range (eg: 1021) then they work.

Your pmenu items are appended to the end of the new menu, NOT normal location.

Interestingly, when I appended a SECOND new menu, the pmenu items still appeared at the end of the first one. I'm not sure this is

wholly repeatable as for a while they were still appearing on the main Menu.

My hacked copy of Plua has two new menus in it: tst1 contains t1 & t2 (and then gets pmenu items appended) tst2 contains t1-1 and t1-2.

Running menutest.lua, I get a menu id of:

1 for the (resource-added) tst1 item t1
3 for the first item added below by pmenu
7 for the (resource-added) test2 item t1-1

ie: the menu ID's returned from pevent are just sequential from 1, starting from the menu at which the pmenu items appended, ignoring any menu ID's set in the MBAR resource.

-- menutest.lua
-- contact dent@o...
-- reports menu ID's and demonstrates tables for event handling

pdestroy() pclear()
ptitle("Title")
mnu01t = {"Quit","-","mnu01:1","mnu01:2","mnu01'3","mnu01:4"}
mnu01=pmenu(mnu01t)

local eh = {}

eh[menuSelect] = function(mID)
palert("menu id "..mID)
end

eh[penDown] = function(x,y)
pset(x,y)
end

eh[penMove] = function(x,y)
plineto(x,y)
end

-- handle events using table
repeat
e, e1,e2,e3,e4=pevent()
local f=eh[e]
if f then f(e1,e2,e3,e4) end
until e==keyDown

-- AndyDent 2004-04-23


RecentChanges · preferences
edit · history
Last edited October 21, 2006 3:00 am GMT (diff)