summaryrefslogtreecommitdiff
path: root/dalos.lua
diff options
context:
space:
mode:
authorPixel <pixel@nobis-crew.org>2009-12-23 01:13:20 +0100
committerPixel <pixel@nobis-crew.org>2009-12-23 01:13:20 +0100
commit7fea58bef326515437b3729c749fd22d85c62aaa (patch)
tree77cd16be8eb6ec8b3a787a2d3bef69feeacee042 /dalos.lua
parent86df190bee91eb38038a39b98448dd1623db1b6f (diff)
Adding category menus system.
Diffstat (limited to 'dalos.lua')
-rw-r--r--dalos.lua49
1 files changed, 43 insertions, 6 deletions
diff --git a/dalos.lua b/dalos.lua
index d8169e5..8e95028 100644
--- a/dalos.lua
+++ b/dalos.lua
@@ -38,7 +38,7 @@ function dalos:register_obj(name, constructor, category)
if self.objectstypes_by_name[name] then
error("An object type of that name already exists: " .. name)
end
- table.insert(self.objectstypes, { name = name, constructor = constructor, counter = 1, category = category or "Basic" })
+ table.insert(self.objectstypes, { name = name, constructor = constructor, counter = 1, category = category })
self.objectstypes_by_name[name] = #self.objectstypes
if self.activemenu then
self.activemenu:update_objects()
@@ -677,22 +677,59 @@ dalosp.menu = {
local west_menu = { radio = "1" }
local south_menu = { radio = "1" }
local item
+ local add_submenus = { }
+ local north_submenus = { }
+ local east_submenus = { }
+ local west_submenus = { }
+ local south_submenus = { }
+ local category
+ local add_smenu, north_smenu, east_smenu, west_smenu, south_smenu
+ local categories = {}
for k, v in ipairs(dalos.objectstypes) do
+ category = v.category
+ if category then
+ if not add_submenus[category] then
+ add_submenus[category] = { }
+ north_submenus[category] = { }
+ south_submenus[category] = { }
+ east_submenus[category] = { }
+ west_submenus[category] = { }
+ table.insert(categories, 1, category)
+ end
+ add_smenu = add_submenus[category]
+ north_smenu = north_submenus[category]
+ east_smenu = east_submenus[category]
+ west_smenu = west_submenus[category]
+ south_smenu = south_submenus[category]
+ else
+ add_smenu = add_menu
+ north_smenu = north_menu
+ east_smenu = east_menu
+ west_smenu = west_menu
+ south_smenu = south_menu
+ end
item = iup.item { title = v.name }
item.action = function (self) dalosp.menu.add_object(canvas, v) end
- table.insert(add_menu, item)
+ table.insert(add_smenu, item)
item = iup.item { title = v.name }
item.action = function (self) dalosp.menu.set_cross(canvas, v, dalosp.NORTH) end
- table.insert(north_menu, item)
+ table.insert(north_smenu, item)
item = iup.item { title = v.name }
item.action = function (self) dalosp.menu.set_cross(canvas, v, dalosp.EAST) end
- table.insert(east_menu, item)
+ table.insert(east_smenu, item)
item = iup.item { title = v.name }
item.action = function (self) dalosp.menu.set_cross(canvas, v, dalosp.WEST) end
- table.insert(west_menu, item)
+ table.insert(west_smenu, item)
item = iup.item { title = v.name }
item.action = function (self) dalosp.menu.set_cross(canvas, v, dalosp.SOUTH) end
- table.insert(south_menu, item)
+ table.insert(south_smenu, item)
+ end
+ for i, v in ipairs(categories) do
+ table.insert(add_menu, 1, iup.submenu { iup.menu(add_submenus[v]), title = v })
+ table.insert(north_menu, 1, iup.submenu { iup.menu(north_submenus[v]), title = v })
+ table.insert(south_menu, 1, iup.submenu { iup.menu(south_submenus[v]), title = v })
+ table.insert(east_menu, 1, iup.submenu { iup.menu(east_submenus[v]), title = v })
+ table.insert(west_menu, 1, iup.submenu { iup.menu(west_submenus[v]), title = v })
end
local menu_file = iup.submenu { iup.menu { item_load, item_save, iup.separator {}, item_import, item_reload, iup.separator {}, item_exit }, title = "File" }
local menu_add = iup.submenu { iup.menu(add_menu), title = "Add" }