MacroPanel

Build and show a runtime input panel for script-controlled macro parameters.

Syntax

MacroPanel(title="", subtitle="", confirm_text="Run", cancel_text="Cancel", *, version="")

Constructor parameters

NameDescription
titleString
Panel title.
Optional · Positional or named
Default: ""
subtitleString
Panel subtitle/helper text.
Optional · Positional or named
Default: ""
confirm_textString
Confirm button label.
Optional · Positional or named
Default: "Run"
cancel_textString
Cancel button label.
Optional · Positional or named
Default: "Cancel"
versionString
Optional version label kept for compatibility; MacroPanel input values are restored from and saved to Storage by variable name, not by version.
Optional · Keyword only
Default: ""

Returns

Example

panel = MacroPanel("Run config", "Pick options before run", confirm_text="Start", cancel_text="Back")
panel.text("<b>Ready?</b>")
panel.checkbox("safe_mode", "Safe mode", checked=True)
panel.toggle_switch("retry", "Auto retry", checked=False)
panel.edit_text("username", default="player01", desc="Shown below the field")
panel.edit_text("runs", "Runs", default="3", desc="Numbers only", input_type="number")
panel.radio_group("mode", ["farm", "pvp"], default="farm")
panel.radio_group("target", ["boss", "minion"], default="boss", dropdown=True)
panel.slider("speed", min=0, max=100, step=5, default=60)
panel.stepper("retry_count", min=0, max=10, step=1, default=2)
values = panel.show()

Fields

NameDescription
titleString
Panel title. Writable after construction.
Default: ""
subtitleString
Panel subtitle/helper text. Writable after construction.
Default: ""
versionString
Optional version label kept for compatibility; MacroPanel input values are restored from and saved to Storage by variable name, not by version. Writable after construction.
Default: ""
confirm_textString
Confirm button label.
Default: "Run"
cancel_textString
Cancel button label.
Default: "Cancel"

Methods

10 methods

MacroPanel.notify

Show a blocking info dialog in overlay runtime and continue after user confirms. Strings stay unchanged; structured values use the same readable formatter as str(value), including multi-line expansion for nested content.

Syntax

MacroPanel.notify(text)

Parameters

NameDescription
textAny
Message text or structured value to display.
Required · Positional or named
No default

Returns

None — No return value after user confirmation.

Example

# Wait for the user to acknowledge this message
MacroPanel.notify("Macro is ready")

MacroPanel.error

Stop script execution by throwing a runtime error. During macro runs, the overlay shows one standard script error with the flow/action path; structured values use the same readable formatter as str(value).

Syntax

MacroPanel.error(text)

Parameters

NameDescription
textAny
Error text or structured value to display.
Required · Positional or named
No default

Returns

None — Does not return; raises a runtime error.

Example

# A failed precondition ends the entire Run
if not TfliteModel.exists("enemy_detector"):
    MacroPanel.error("Import enemy_detector in Template Manager")

MacroPanel.edit_text

Add an editable text field. Use desc for small helper text under the field, and input_type="number" to show numeric input while the returned value stays a String.

Syntax

panel.edit_text(name, label=None, default="", desc=None, input_type="text")

Parameters

NameDescription
nameString
Variable name to return in panel result.
Required · Positional or named
No default
labelString?
Display label. Leave empty to hide label.
Optional · Positional or named
Default: None
defaultString
Default text value.
Optional · Positional or named
Default: ""
descString?
Small helper text displayed below this field.
Optional · Positional or named
Default: None
input_typeString
Use "text" for normal text or "number" for numeric input. The result value remains a String.
Optional · Positional or named
Default: "text"

Returns

MacroPanel — The same panel for fluent chaining.

Example

# Build a panel and wait for user confirmation
panel = MacroPanel("Settings")
panel.edit_text("player", label="Player", default="Guest")
result = panel.show()
print(result)

MacroPanel.checkbox

Add a checkbox input.

Syntax

panel.checkbox(name, label=None, checked=False)

Parameters

NameDescription
nameString
Variable name.
Required · Positional or named
No default
labelString?
Display label. Leave empty to hide label.
Optional · Positional or named
Default: None
checkedBoolean
Default checked state.
Optional · Positional or named
Default: False

Returns

MacroPanel — The same panel for fluent chaining.

Example

# Build a panel and wait for user confirmation
panel = MacroPanel("Settings")
panel.checkbox("sound", label="Sound", checked=True)
result = panel.show()
print(result)

MacroPanel.toggle_switch

Add a toggle switch input.

Syntax

panel.toggle_switch(name, label=None, checked=False)

Parameters

NameDescription
nameString
Variable name.
Required · Positional or named
No default
labelString?
Display label. Leave empty to hide label.
Optional · Positional or named
Default: None
checkedBoolean
Default toggle state.
Optional · Positional or named
Default: False

Returns

MacroPanel — The same panel for fluent chaining.

Example

# Build a panel and wait for user confirmation
panel = MacroPanel("Settings")
panel.toggle_switch("enabled", label="Enabled", checked=True)
result = panel.show()
print(result)

MacroPanel.radio_group

Add a radio-group selector, or render it as a dropdown when dropdown=True.

Syntax

panel.radio_group(name, options, label=None, default=None, dropdown=False)

Parameters

NameDescription
nameString
Variable name.
Required · Positional or named
No default
optionslist[String]
Selectable options.
Required · Positional or named
No default
labelString?
Display label. Leave empty to hide label.
Optional · Positional or named
Default: None
defaultString|Int|None
Default option label or 0-based option index; None selects the first option.
Optional · Positional or named
Default: None
dropdownBoolean
Render this selector as a dropdown instead of radio options.
Optional · Positional or named
Default: False

Returns

MacroPanel — The same panel for fluent chaining.

Example

# Build a panel and wait for user confirmation
panel = MacroPanel("Settings")
panel.radio_group("mode", ["slow", "fast"], label="Mode", default="slow")
result = panel.show()
print(result)

MacroPanel.slider

Add a numeric slider.

Syntax

panel.slider(name, min=0, max=100, step=1, label=None, default=None)

Parameters

NameDescription
nameString
Variable name.
Required · Positional or named
No default
minNumber
Minimum value.
Optional · Positional or named
Default: 0
maxNumber
Maximum value.
Optional · Positional or named
Default: 100
stepNumber
Step size between values.
Optional · Positional or named
Default: 1
labelString?
Display label. Leave empty to hide label.
Optional · Positional or named
Default: None
defaultNumber?
Default value, clamped to min/max.
Optional · Positional or named
Default: min

Returns

MacroPanel — The same panel for fluent chaining.

Example

# Build a panel and wait for user confirmation
panel = MacroPanel("Settings")
panel.slider("speed", min=1, max=10, step=1, default=5)
result = panel.show()
print(result)

MacroPanel.stepper

Add a numeric stepper with +/- controls.

Syntax

panel.stepper(name, min=0, max=100, step=1, label=None, default=None)

Parameters

NameDescription
nameString
Variable name.
Required · Positional or named
No default
minNumber
Minimum integer value.
Optional · Positional or named
Default: 0
maxNumber
Maximum integer value.
Optional · Positional or named
Default: 100
stepNumber
Step size.
Optional · Positional or named
Default: 1
labelString?
Display label. Leave empty to hide label.
Optional · Positional or named
Default: None
defaultNumber?
Default value, clamped to min/max.
Optional · Positional or named
Default: min

Returns

MacroPanel — The same panel for fluent chaining.

Example

# Build a panel and wait for user confirmation
panel = MacroPanel("Settings")
panel.stepper("count", min=1, max=20, step=1, default=3)
result = panel.show()
print(result)

MacroPanel.text

Add an HTML text block. Basic tags render inline, and CSS-styled fragments such as cards, colored sections, flex rows, gradients, and rounded boxes render in a locked-down WebView with JavaScript and external navigation disabled.

Syntax

panel.text(html)

Parameters

NameDescription
htmlString
HTML content to display.
Required · Positional or named
No default

Returns

MacroPanel — The same panel for fluent chaining.

Example

# Build a panel and wait for user confirmation
panel = MacroPanel("Settings")
panel.text("<b>Ready</b>")
result = panel.show()
print(result)

MacroPanel.show

Display panel and return typed user input values. Existing Storage values with matching variable names become the field defaults, and confirmed values are saved back to Storage by variable name: checkbox/toggle values are Boolean, slider values are Number, stepper values are Int, radio/dropdown values are 0-based Int option indexes, and edit text values are String for normal text (or the corresponding numeric or stored type). If the same panel.show() call reopens repeatedly without another runtime action, the runtime stops the script to avoid an infinite panel loop.

Syntax

panel.show()

Returns

dict — dict of variableName -> typed value.

Example

# Build a panel and wait for user confirmation
panel = MacroPanel("Settings")
panel.checkbox("enabled", checked=True)
result = panel.show()
print(result)