Skip to content

docs: add getMenuActionConfigUiValues and getActionConfigUiValues — missing from all docs #35

Description

@simons-plugins

The skill documents three of the five dialog pre-population callbacks (getDeviceConfigUiValues, getEventConfigUiValues, getPrefsConfigUiValues) but two are completely absent. Both are confirmed present in plugin_base.py across all supported Indigo versions (verified in both 2025.1 at line 1112 and 2025.2 at line 1195):

  • getMenuActionConfigUiValues(self, menu_id) — fires before a menu item dialog opens
  • getActionConfigUiValues(self, plugin_props, type_id, dev_id) — fires before an action config dialog opens

How we found this the hard way

The requirement was simple: open a menu item dialog (Day / Month / Year dropdowns) with today's date pre-selected. The skill documents getDeviceConfigUiValues for device dialogs but nothing equivalent for menu items, so we guessed at a name.

Attempt 1: Tried getMenuItemsValues(self, valuesDict, typeId, devId) — invented name, Indigo silently ignored it, dialog opened with static XML defaultValue every time.

Attempt 2: Replaced static <List> blocks with <List class="self" method="buildRptDayList"/> dynamic list methods, returning today's value first so Indigo would auto-select it. Result: dialog showed "Select an item" — Indigo does not auto-select the first item from a dynamic list when there is no matching defaultValue.

Resolution: Searched plugin_base.py directly and found get_menu_action_config_ui_values at line 1195 (2025.2) / line 1112 (2025.1). One override, six lines of code, works first time. If this had been in the docs the entire detour would never have happened.

Suggested addition to plugin-lifecycle.md — a single reference table for all five callbacks:

### Dialog pre-population callbacks — full reference (all Indigo versions)

Override any of these to seed fields with computed or live values before
the dialog opens. All return (values_dict, errors_dict).

| Callback                              | Dialog         | Signature                                       |
|---------------------------------------|----------------|-------------------------------------------------|
| getPrefsConfigUiValues                | Plugin prefs   | (self)                                          |
| getDeviceConfigUiValues               | Device config  | (self, plugin_props, type_id, dev_id)           |
| getEventConfigUiValues                | Event/trigger  | (self, plugin_props, type_id, event_id)         |
| getMenuActionConfigUiValues ← MISSING | Menu item      | (self, menu_id)                                 |
| getActionConfigUiValues     ← MISSING | Action config  | (self, plugin_props, type_id, dev_id)           |

Note: dynamic list methods do NOT auto-select their first item when no
defaultValue matches — getMenuActionConfigUiValues is the correct approach
for menu item dialogs.

Example — default a menu item's date dropdowns to today:

def getMenuActionConfigUiValues(self, menu_id):
    values_dict = indigo.Dict()
    errors_dict = indigo.Dict()
    if menu_id == "dailyReport":
        today = date.today()
        values_dict["rpt_day"]   = f"{today.day:02d}"
        values_dict["rpt_month"] = f"{today.month:02d}"
        values_dict["rpt_year"]  = str(today.year)
    return (values_dict, errors_dict)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions