From 663839e0c6c6db7cbc05ceaacfc9068cf9c6a1ba Mon Sep 17 00:00:00 2001 From: David Higueros <111460331+TheDavSmasher@users.noreply.github.com> Date: Wed, 10 Sep 2025 09:33:19 -0600 Subject: [PATCH 1/2] Added fieldGroups --- src/ui/utils/forms.lua | 9 ++++++++- src/ui/windows/selection_context_window.lua | 3 ++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/ui/utils/forms.lua b/src/ui/utils/forms.lua index b276796d..9850583b 100644 --- a/src/ui/utils/forms.lua +++ b/src/ui/utils/forms.lua @@ -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 {} @@ -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)) @@ -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 \ No newline at end of file diff --git a/src/ui/windows/selection_context_window.lua b/src/ui/windows/selection_context_window.lua index 6a585415..a4cdb7d7 100644 --- a/src/ui/windows/selection_context_window.lua +++ b/src/ui/windows/selection_context_window.lua @@ -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 @@ -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, From 40b340aabb5596a1f250e9c699b2dae40b9b0df0 Mon Sep 17 00:00:00 2001 From: David Higueros <111460331+TheDavSmasher@users.noreply.github.com> Date: Wed, 10 Sep 2025 09:48:57 -0600 Subject: [PATCH 2/2] Added groups to trigger and entity handlers --- src/entities.lua | 10 ++++++++++ src/triggers.lua | 10 ++++++++++ 2 files changed, 20 insertions(+) diff --git a/src/entities.lua b/src/entities.lua index 820eae3b..b9334f63 100644 --- a/src/entities.lua +++ b/src/entities.lua @@ -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) diff --git a/src/triggers.lua b/src/triggers.lua index 8a995533..d618fdb5 100644 --- a/src/triggers.lua +++ b/src/triggers.lua @@ -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)