Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions src/entities.lua
Original file line number Diff line number Diff line change
Expand Up @@ -1308,6 +1308,16 @@ function entities.ignoredFieldsMultiple(layer, entity)
return alwaysIgnoredFieldsMultiple
end

function entities.groups(layer, entity)
local handler = entities.getHandler(entity)

if handler and handler.groups then
return utils.callIfFunction(handler.groups, entity)
end

return nil
end

function entities.fieldOrder(layer, entity)
local handler = entities.getHandler(entity)

Expand Down
10 changes: 10 additions & 0 deletions src/triggers.lua
Original file line number Diff line number Diff line change
Expand Up @@ -792,6 +792,16 @@ function triggers.ignoredFieldsMultiple(layer, trigger)
return alwaysIgnoredFieldsMultiple
end

function triggers.groups(layer, trigger)
local handler = triggers.getHandler(trigger)

if handler and handler.groups then
return utils.callIfFunction(handler.groups, trigger)
end

return nil
end

function triggers.fieldOrder(layer, trigger)
local defaultFieldOrder = {"x", "y", "width", "height"}
local handler = triggers.getHandler(trigger)
Expand Down
9 changes: 8 additions & 1 deletion src/ui/utils/forms.lua
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,12 @@ local function getLanguageKey(key, language, default)
return default
end

local function getItemGroups(handler, ...)
local fieldOrder = utils.callIfFunction(handler and handler.groups, ...)

return fieldOrder and utils.deepcopy(fieldOrder) or nil
end

local function getItemFieldOrder(handler, ...)
local fieldOrder = utils.callIfFunction(handler and handler.fieldOrder, ...) or {}

Expand Down Expand Up @@ -73,6 +79,7 @@ function formUtils.prepareFormData(handler, data, options, handlerArguments)
local addMissingToFieldOrder = options.addMissingToFieldOrder

local fieldsAdded = {}
local fieldGroups = getItemGroups(handler, unpack(handlerArguments))
local fieldInformation = getItemFieldInformation(handler, unpack(handlerArguments))
local fieldOrderOriginal = getItemFieldOrder(handler, unpack(handlerArguments))
local fieldIgnored = getItemIgnoredFields(handler, options.multiple, unpack(handlerArguments))
Expand Down Expand Up @@ -160,7 +167,7 @@ function formUtils.prepareFormData(handler, data, options, handlerArguments)
fieldInformation[field].tooltipText = tooltip
end

return dummyData, fieldInformation, fieldOrder
return dummyData, fieldInformation, fieldOrder, fieldGroups
end

return formUtils
3 changes: 2 additions & 1 deletion src/ui/windows/selection_context_window.lua
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ function contextWindow.createContextMenu(selections, bestSelection, room)
return
end

local dummyData, fieldInformation, fieldOrder = prepareFormData(selections, bestSelection, language)
local dummyData, fieldInformation, fieldOrder, fieldGroups = prepareFormData(selections, bestSelection, language)
local keyCount = utils.countKeys

-- Window would be empty, nothing to show
Expand All @@ -167,6 +167,7 @@ function contextWindow.createContextMenu(selections, bestSelection, room)
local windowTitle = getWindowTitle(language, selections, bestSelection)
local selectionForm, formFields = form.getForm(buttons, dummyData, {
fields = fieldInformation,
groups = groups,
fieldOrder = fieldOrder,
fieldMetadata = {
formData = dummyData,
Expand Down