8 self.subMenuBuilders = {}
13 target = target or
self.contextMenuBuilder
18 -- Create
a submenu and its builder
21 -- Store the submenu builder for later use
22 table.insert(
self.subMenuBuilders, subMenuBuilder)
28 target = target or
self.contextMenuBuilder
33 local function buildSubMenu(subMenuBuilder)
34 for _,
subMenu in ipairs(subMenuBuilder.subMenus) do
38 subMenuBuilder:buildAggregatedOptions()
42 self.contextMenuBuilder:buildAggregatedOptions()
45 for _, subMenuBuilder in ipairs(
self.subMenuBuilders) do
46 buildSubMenu(subMenuBuilder)
55 for _, subMenuBuilder in ipairs(
self.subMenuBuilders) do
56 if subMenuBuilder.
name and subMenuBuilder.
name == subMenuName then
68function
Options.
new(text, target,
callback, callbackParameters, addOnTop, useMultiple, count)
74 self.callbackParameters = callbackParameters or {}
75 self.addOnTop = addOnTop or
false
76 self.useMultiple = useMultiple or
false
77 self.count = count or 1
86function
Options:getCallbackParameters() return
self.callbackParameters end
87function
Options:getAddOnTop() return
self.addOnTop end
88function
Options:getUseMultiple() return
self.useMultiple end
93function
Options:setTarget(target)
self.target = target end
95function
Options:setCallbackParameters(callbackParameters)
self.callbackParameters = callbackParameters end
96function
Options:setAddOnTop(addOnTop)
self.addOnTop = addOnTop end
97function
Options:setUseMultiple(useMultiple)
self.useMultiple = useMultiple end
125 self.menuManager = menuManager
127 self.addedOptions = {}
128 self.aggregatedOptions = {}
138 return
self.addedOptions
146 return
self.menuManager
157 -- Track added
options for debugging
163 -- Create
a new
context for the submenu
168 -- Add predefined
options to the submenu
175 -- Create
a new menu
option that leads to the submenu
185 table.insert(
self.subMenus, subMenuBuilder)
191 local
uniqueID = aggregatedOption:getUniqueID()
202 aggregatedOption:addOption(
option)
203 self:addAggregatedOption(aggregatedOption)
211 local
uniqueID = aggregatedOption:getUniqueID()
214 for _,
option in ipairs(aggregatedOption:getOptions()) do
215 local optionText =
option:getText()
217 if
option:getUseMultiple() and
option:getCount() > 1 then
218 optionText = optionText .. " (
x" ..
option:getCount() .. ")"
221 local
callback = function(target, parameters)
222 option:getCallback()(target, parameters)
225 if
option:getAddOnTop() then
void ContextMenuBuilder()
void self aggregatedOptions()
void self FrameworkZ UI self nil
void processingNotification backgroundColor a()
void new(text, target, callback, callbackParameters, addOnTop, useMultiple, count)