core.ui.action 
This module defines action enumeration constants for the UI system.
TIP
To use this module, you need to import it first: import("core.ui.action")
NOTE
The UI module is primarily used for xmake's internal xmake f --menu menu-based visual configuration. It provides basic UI components that can also be used by users to implement their own terminal UIs.
The action module provides type constants for UI event callback actions, used to set and handle various UI events.
Predefined Action Types 
The action module defines the following predefined action types:
| Action | Description | 
|---|---|
| action.ac_on_text_changed | Triggered when text content changes | 
| action.ac_on_selected | Triggered when an item is selected | 
| action.ac_on_clicked | Triggered when clicked | 
| action.ac_on_resized | Triggered when resized | 
| action.ac_on_scrolled | Triggered when scrolled | 
| action.ac_on_enter | Triggered when confirmed/entered | 
| action.ac_on_load | Triggered when loaded | 
| action.ac_on_save | Triggered when saved | 
| action.ac_on_exit | Triggered when exiting | 
Usage 
These action constants are used to set event callback handlers:
lua
import("core.ui.action")
import("core.ui.button")
-- Create button
local btn = button:new("ok", rect{10, 5, 20, 1}, "OK")
-- Set click event
btn:action_set(action.ac_on_enter, function (v)
    print("Button clicked!")
end)action:register 
- Register custom action types
Function Prototype 
API
lua
action:register(tag: <string>, ...)Parameter Description 
| Parameter | Description | 
|---|---|
| tag | Required. Tag name for accumulating count | 
| ... | Variable arguments. Action constant names | 
Return Value 
No return value
Usage 
Register custom action types:
lua
import("core.ui.action")
-- Register custom actions
action:register("ac_max",
    "ac_on_custom1",
    "ac_on_custom2",
    "ac_on_custom3"
)
-- Now can use these custom actions
some_view:action_set(action.ac_on_custom1, function (v)
    print("Custom action 1 triggered")
end)Here is a complete usage example:
lua
import("core.ui.action")
import("core.ui.button")
import("core.ui.rect")
import("core.ui.application")
import("core.ui.window")
local demo = application()
function demo:init()
    application.init(self, "demo")
    self:background_set("blue")
    
    -- Create window
    local win = window:new("main", rect{1, 1, self:width() - 1, self:height() - 1}, "Action Demo")
    
    -- Create buttons and set different events
    local btn1 = button:new("btn1", rect{5, 5, 20, 1}, "< Button1 >")
    local btn2 = button:new("btn2", rect{30, 5, 20, 1}, "< Button2 >")
    
    -- Set different event handlers
    btn1:action_set(action.ac_on_enter, function (v)
        print("Button 1 confirmed clicked")
    end)
    
    btn2:action_set(action.ac_on_enter, function (v)
        print("Button 2 confirmed clicked")
    end)
    
    -- Add buttons to window panel
    local panel = win:panel()
    panel:insert(btn1)
    panel:insert(btn2)
    
    -- Select first button
    panel:select(btn1)
    
    self:insert(win)
    self._win = win
end
function demo:on_resize()
    self._win:bounds_set(rect{1, 1, self:width() - 1, self:height() - 1})
    application.on_resize(self)
end
function main(...)
    demo:run(...)
end