create mapmodel slots automatically from the edit menu

If a mapmodel is placed that does not have a slot assigned yet, it is
assigned one automatically.
This commit is contained in:
ac-stef
2015-05-18 14:46:03 +02:00
parent 03bcae1918
commit 4a5b5cded8
+11 -8
View File
@@ -268,10 +268,13 @@ tempalias __rebuildmapmodelmenus [
push __mm_menus "" // menus with content
push __mm_done "" // done map config slots
push idxs ""
push mpath ""
looplist $__mapmodelcategories [key menu] [delmenu $menu]
looplist (getmapmodelattributes explodekeywords sortby: keywords sortby: desc usage distribution) [path keyword desc usage dist] [
path = (concatword "mapmodels/" $path)
idxs = (mapmodelslotbyname $path)
looplist (getmapmodelattributes explodekeywords sortby: keywords sortby: desc usage defaults distribution) [path keyword desc usage dflts dist] [
mpath = (concatword "mapmodels/" $path)
dflts = (concat $dflts "0 0 0 0")
dflts = (concat (at $dflts 0) (at $dflts 1) (at $dflts 2) (at $dflts 3)) // fix missing/incomplete default slot parameters
idxs = (mapmodelslotbyname $mpath)
if (|| (! (strlen $keyword)) (< (findlist $__mapmodelcategories $keyword) 0)) [
keyword = unsorted
if (strcmp $dist "official") [ keyword = unsoo ] // unless someone writes the missing config files ;)
@@ -281,16 +284,16 @@ tempalias __rebuildmapmodelmenus [
keyword = (concatword __mm_key_ $keyword)
newmenu $$keyword
concatuniq __mm_menus $$keyword
if (strlen $desc) [] [desc = $path]
if (strlen $desc) [] [desc = $mpath]
if (listlen $idxs) [
__mm_done = (concat $__mm_done $idxs)
if (> (listlen $idxs) 1) [
looplist $idxs i [menuitem (concat $desc (concatword "#" $i)) (concat newent mapmodel $i) (__mm_showmodel $$keyword $path) $usage] // several slots for the same mapmodel
looplist $idxs i [menuitem (concat $desc (concatword "#" $i)) (concat newent mapmodel $i) (__mm_showmodel $$keyword $mpath) $usage] // several slots for the same mapmodel
][
menuitem $desc (concat newent mapmodel $idxs) (__mm_showmodel $$keyword $path) $usage // usual case: one slot per model
menuitem $desc (concat newent mapmodel $idxs) (__mm_showmodel $$keyword $mpath) $usage // usual case: one slot per model
]
][
menuitem (concatword "\f4" $desc) (concat __mm_unassigned $path) (__mm_showmodel $$keyword $path) $usage // mapmodel has no slot assigned
menuitem (concatword "\f4" $desc) (concat newent mapmodel "(mapmodel" $dflts $path ")") (__mm_showmodel $$keyword $mpath) $usage // mapmodel has no slot assigned: assign one
]
]
delmenu Mapmodels
@@ -299,7 +302,7 @@ tempalias __rebuildmapmodelmenus [
looplist $__mapmodelcategories [key menu] [if (>= (findlist $__mm_menus $menu) 0) [concatuniq __mm_sorted $menu]] // create list of non-empty menus in order of list above
looplist $__mm_sorted m [menuitem $m (concat showmenu $m)] // only create non-empty menus
mapmodelchanged 0
pop menu __mm_menus __mm_sorted __mm_done __mm_unsorted idxs
pop menu __mm_menus __mm_sorted __mm_done __mm_unsorted idxs mpath
]
]