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 -- Build aggregated options for the main
context menu
34 self.contextMenuBuilder:buildAggregatedOptions()
36 -- Build aggregated options for submenus
37 for _, subMenuBuilder in ipairs(
self.subMenuBuilders) do
38 subMenuBuilder:buildAggregatedOptions()
47 for _, subMenuBuilder in ipairs(
self.subMenuBuilders) do
48 if subMenuBuilder.
name and subMenuBuilder.
name == subMenuName then
60function
Options.
new(text, target,
callback, callbackParameters, addOnTop, useMultiple, count)
66 self.callbackParameters = callbackParameters or {}
67 self.addOnTop = addOnTop or
false
68 self.useMultiple = useMultiple or
false
69 self.count = count or 1
78function
Options:getCallbackParameters() return
self.callbackParameters end
79function
Options:getAddOnTop() return
self.addOnTop end
80function
Options:getUseMultiple() return
self.useMultiple end
85function
Options:setTarget(target)
self.target = target end
87function
Options:setCallbackParameters(callbackParameters)
self.callbackParameters = callbackParameters end
88function
Options:setAddOnTop(addOnTop)
self.addOnTop = addOnTop end
89function
Options:setUseMultiple(useMultiple)
self.useMultiple = useMultiple end
90function
Options:setCount(count)
self.count = count end
117 self.menuManager = menuManager
119 self.addedOptions = {}
120 self.aggregatedOptions = {}
130 return
self.addedOptions
138 return
self.menuManager
149 -- Track added options for debugging
155 -- Create
a new
context for the submenu
160 -- Add predefined options to the submenu
162 for _,
option in ipairs(options) do
167 -- Create
a new menu
option that leads to the submenu
177 table.insert(
self.subMenus, subMenuBuilder)
183 local
uniqueID = aggregatedOption:getUniqueID()
194 aggregatedOption:addOption(
option)
195 self:addAggregatedOption(aggregatedOption)
203 local
uniqueID = aggregatedOption:getUniqueID()
206 for _,
option in ipairs(aggregatedOption:getOptions()) do
207 local optionText =
option:getText()
209 if
option:getUseMultiple() and
option:getCount() > 1 then
210 optionText = optionText .. " (
x" ..
option:getCount() .. ")"
213 local
callback = function(target, parameters)
214 option:getCallback()(target, parameters)
217 if
option:getAddOnTop() then
void ContextMenuBuilder()
void self aggregatedOptions()
void processingNotification backgroundColor a()
void new(text, target, callback, callbackParameters, addOnTop, useMultiple, count)