跳转到内容

core.ui.inputdialog

此模块提供用于终端 UI 系统中的文本输入对话框。

提示

使用此模块需要先导入:import("core.ui.inputdialog")

注意

UI 模块主要用于 xmake 内部的 xmake f --menu 菜单可视化配置。它提供基础的 UI 组件,当然,用户也可以用来实现一些自己的终端 UI。

inputdialog 模块继承自 textdialog,提供用于用户输入的文本输入字段。它包含一个提示标签和一个文本编辑组件。

inputdialog:new

  • 创建新的输入对话框实例

函数原型

API

lua
inputdialog:new(name: <string>, bounds: <rect>, title: <string>)

参数说明

参数描述
name必需。输入对话框名称字符串
bounds必需。输入对话框边界矩形
title必需。输入对话框标题字符串

返回值说明

类型描述
inputdialog返回输入对话框实例

用法说明

创建一个具有名称、边界和标题的输入对话框:

lua
import("core.ui.inputdialog")
import("core.ui.rect")

local dialog = inputdialog:new("input", rect{10, 5, 50, 10}, "输入")

inputdialog:textedit

  • 获取文本编辑组件

函数原型

API

lua
inputdialog:textedit()

参数说明

无参数

返回值说明

类型描述
textedit返回文本编辑实例

用法说明

访问文本编辑组件以获取或设置输入值:

lua
local textedit = dialog:textedit()
local input_value = textedit:text()

inputdialog:text

  • 获取提示标签

函数原型

API

lua
inputdialog:text()

参数说明

无参数

返回值说明

类型描述
label返回提示标签实例

用法说明

获取并自定义提示标签:

lua
local label = dialog:text()
label:text_set("请输入您的姓名:")
label:textattr_set("red")

inputdialog:button_add

  • 向对话框添加按钮

函数原型

API

lua
inputdialog:button_add(name: <string>, text: <string>, command: <string|function>)

参数说明

参数描述
name必需。按钮名称字符串
text必需。按钮显示文本
command必需。要执行的命令字符串或函数

返回值说明

类型描述
button返回按钮实例

用法说明

添加按钮以处理用户输入:

lua
-- 是按钮 - 获取输入并处理
dialog:button_add("yes", "< 是 >", function (v)
    local input = dialog:textedit():text()
    print("用户输入:", input)
    dialog:quit()
end)

-- 否/取消按钮
dialog:button_add("no", "< 否 >", function (v)
    dialog:quit()
end)

inputdialog:show

  • 显示或隐藏对话框

函数原型

API

lua
inputdialog:show(visible: <boolean>, opt?: <table>)

参数说明

参数描述
visible必需。显示或隐藏对话框
opt可选。选项表格,支持:{focused = true}

返回值说明

无返回值

用法说明

显示或隐藏输入对话框:

lua
dialog:show(true)  -- 显示对话框

-- 带焦点显示
dialog:show(true, {focused = true})

inputdialog:background_set

  • 设置对话框背景颜色

函数原型

API

lua
inputdialog:background_set(color: <string>)

参数说明

参数描述
color必需。颜色名称(例如:"blue"、"cyan")

返回值说明

无返回值

用法说明

设置对话框及其边框的背景颜色:

lua
dialog:background_set("blue")
dialog:frame():background_set("cyan")

inputdialog:quit

  • 关闭输入对话框

函数原型

API

lua
inputdialog:quit()

参数说明

无参数

返回值说明

无返回值

用法说明

关闭并从其父容器中移除对话框:

lua
dialog:quit()

以下是一个完整的输入对话框使用示例:

lua
import("core.ui.inputdialog")
import("core.ui.rect")
import("core.ui.application")

local app = application()

function app:init()
    application.init(self, "demo")
    self:background_set("blue")
    
    -- 创建输入对话框
    local dialog = inputdialog:new("input", rect{0, 0, 50, 10})
    dialog:text():text_set("请输入您的姓名:")
    dialog:background_set(self:background())
    dialog:frame():background_set("cyan")
    
    -- 添加按钮
    dialog:button_add("yes", "< 是 >", function (v)
        local input = dialog:textedit():text()
        print("输入值:", input)
        dialog:quit()
    end)
    
    dialog:button_add("no", "< 否 >", function (v)
        dialog:quit()
    end)
    
    -- 显示对话框
    dialog:show(false)  -- 初始隐藏
    
    -- 插入到应用程序
    self:insert(dialog, {centerx = true, centery = true})
end

function app:on_resize()
    self:dialog_input():bounds_set(rect{0, 0, 50, 10})
    self:center(self:dialog_input(), {centerx = true, centery = true})
    application.on_resize(self)
end

app:run()