dialog_t

概述

image

对话框。 对话框是一种特殊的窗口,大小和位置可以自由设置。

AWTK中的对话框可以是模态的,也可以是非模态的。

由于浏览器中无法实现主循环嵌套,因此无法实现模态对话框。
如果希望自己写的AWTK应用程序可以在浏览器(包括各种小程序)中运行或演示,
请避免使用模态对话框。

对话框通常由对话框标题和对话框客户区两部分组成:

image

dialog_t是window_base_t的子类控件,window_base_t的函数均适用于dialog_t控件。

在xml中使用”dialog”标签创建对话框。如:

  1. <dialog anim_hint="center_scale(duration=300)" x="c" y="m" w="80%" h="160" text="Dialog">
  2. <dialog_title x="0" y="0" w="100%" h="30" text="Hello AWTK" />
  3. <dialog_client x="0" y="bottom" w="100%" h="-30">
  4. <label name="" x="center" y="middle:-20" w="200" h="30" text="Are you ready?"/>
  5. <button name="quit" x="10" y="bottom:10" w="40%" h="30" text="确定"/>
  6. <button name="quit" x="right:10" y="bottom:10" w="40%" h="30" text="取消"/>
  7. </dialog_client>
  8. </dialog>

如果你不需要对话框的标题,可以这样写:

  1. <dialog anim_hint="center_scale(duration=300)" x="c" y="m" w="80%" h="160" text="Dialog">
  2. <label name="" x="center" y="middle:-20" w="200" h="30" text="Are you ready?"/>
  3. <button name="quit" x="10" y="bottom:10" w="40%" h="30" text="确定"/>
  4. <button name="quit" x="right:10" y="bottom:10" w="40%" h="30" text="取消"/>
  5. </dialog>

打开非模态对话框时,其用法与普通窗口一样。打开非模态对话框时,还需要调用dialog_modal。

  1. widget_t* dlg = dialog_open(name);
  2. ret = dialog_modal(dlg);

关闭模态对话框用dialog_quit

  1. static ret_t on_dialog_btn_click(void* ctx, event_t* evt) {
  2. widget_t* win = widget_get_window(WIDGET(evt->target));
  3. int code = (char*)ctx - (char*)NULL;
  4. dialog_quit(win, code);
  5. return RET_OK;
  6. }

关闭非模态对话框用window_close。

  1. static ret_t on_dialog_btn_click(void* ctx, event_t* evt) {
  2. widget_t* win = widget_get_window(WIDGET(evt->target));
  3. int code = (char*)ctx - (char*)NULL;
  4. window_close(win);
  5. return RET_OK;
  6. }

更多用法请参考:
dialog.xml

完整C代码示例请参考:

可用通过style来设置控件的显示风格,如字体的大小和颜色等等。如:

  1. <style name="default">
  2. <normal border_color="#606060" />
  3. </style>

更多用法请参考:
[theme default]
(https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L324)


函数

函数名称 说明
dialog_cast 转换dialog对象(供脚本语言使用)。
dialog_confirm 显示『确认』对话框。
dialog_create 创建dialog对象。
dialog_create_simple 创建dialog对象,同时创建title/client。
dialog_get_client 获取client控件。
dialog_get_title 获取title控件。
dialog_info 显示『提示信息』对话框。
dialog_is_modal 检查对话框是否为模态对话框。
dialog_is_quited 检查对话框是否已经退出模态。
dialog_modal 模态显示对话框。
dialog_open 从资源文件中加载并创建Dialog对象。
dialog_quit 退出模态显示,关闭对话框。
dialog_set_title 设置对话框的标题文本。
dialog_toast 显示『短暂提示信息』对话框。
dialog_warn 显示『警告』对话框。

属性

属性名称 类型 说明
highlight const char* 对话框高亮策略。

dialog_cast 函数


  • 函数功能:

转换dialog对象(供脚本语言使用)。

  • 函数原型:
  1. widget_t* dialog_cast (widget_t* widget);
  • 参数说明:
参数 类型 说明
返回值 widget_t* dialog对象。
widget widget_t* dialog对象。

dialog_confirm 函数


  • 函数功能:

显示『确认』对话框。

主题由dialog_confirm.xml文件决定。

  • 函数原型:
  1. ret_t dialog_confirm (const char* text);
  • 参数说明:
参数 类型 说明
返回值 ret_t 返回RET_OK表示确认,否则表示取消。
text const char* 文本内容。

dialog_create 函数


  • 函数功能:

创建dialog对象。

  • 函数原型:
  1. widget_t* dialog_create (widget_t* parent, xy_t x, xy_t y, wh_t w, wh_t h);
  • 参数说明:
参数 类型 说明
返回值 widget_t* dialog对象。
parent widget_t* 父控件
x xy_t x坐标
y xy_t y坐标
w wh_t 宽度
h wh_t 高度

dialog_create_simple 函数


  • 函数功能:

创建dialog对象,同时创建title/client。

  • 函数原型:
  1. widget_t* dialog_create_simple (widget_t* parent, xy_t x, xy_t y, wh_t w, wh_t h);
  • 参数说明:
参数 类型 说明
返回值 widget_t* dialog对象。
parent widget_t* 父控件
x xy_t x坐标
y xy_t y坐标
w wh_t 宽度
h wh_t 高度

dialog_get_client 函数


  • 函数功能:

获取client控件。

  • 函数原型:
  1. widget_t* dialog_get_client (widget_t* widget);
  • 参数说明:
参数 类型 说明
返回值 widget_t* client对象。
widget widget_t* dialog对象。

dialog_get_title 函数


  • 函数功能:

获取title控件。

  • 函数原型:
  1. widget_t* dialog_get_title (widget_t* widget);
  • 参数说明:
参数 类型 说明
返回值 widget_t* title对象。
widget widget_t* dialog对象。

dialog_info 函数


  • 函数功能:

显示『提示信息』对话框。

主题由dialog_info.xml文件决定。

  • 函数原型:
  1. ret_t dialog_info (const char* text);
  • 参数说明:
参数 类型 说明
返回值 ret_t 返回RET_OK表示成功,否则表示失败。
text const char* 文本内容。

dialog_is_modal 函数


  • 函数功能:

检查对话框是否为模态对话框。

  • 函数原型:
  1. bool_t dialog_is_modal (widget_t* widget);
  • 参数说明:
参数 类型 说明
返回值 bool_t 返回TRUE表示是模态对话框,否则表示不是。
widget widget_t* dialog对象。

dialog_is_quited 函数


  • 函数功能:

检查对话框是否已经退出模态。

  • 函数原型:
  1. bool_t dialog_is_quited (widget_t* widget);
  • 参数说明:
参数 类型 说明
返回值 bool_t 返回TRUE表示已经退出,否则表示没有。
widget widget_t* dialog对象。

dialog_modal 函数


  • 函数功能:

模态显示对话框。
dialog_modal返回后,dialog对象将在下一个idle函数中回收。
也就是在dialog_modal调用完成后仍然可以访问dialog中控件,直到本次事件结束。

  • 函数原型:
  1. ret_t dialog_modal (widget_t* widget);
  • 参数说明:
参数 类型 说明
返回值 ret_t 返回RET_OK表示成功,否则表示失败。
widget widget_t* dialog对象。

dialog_open 函数


  • 函数功能:

从资源文件中加载并创建Dialog对象。

本函数在ui_loader/ui_builder_default里实现。

  • 函数原型:
  1. widget_t* dialog_open (const char* name);
  • 参数说明:
参数 类型 说明
返回值 widget_t* 对象。
name const char* dialog的名称。

dialog_quit 函数


  • 函数功能:

退出模态显示,关闭对话框。

比如,在对话框中关闭按钮的事件处理函数中,调用本函数关闭对话框。

  • 函数原型:
  1. ret_t dialog_quit (widget_t* widget, uint32_t code);
  • 参数说明:
参数 类型 说明
返回值 ret_t 返回RET_OK表示成功,否则表示失败。
widget widget_t* dialog对象。
code uint32_t 退出码,作为dialog_modal的返回值。

dialog_set_title 函数


  • 函数功能:

设置对话框的标题文本。

  • 函数原型:
  1. ret_t dialog_set_title (widget_t* widget, char* title);
  • 参数说明:
参数 类型 说明
返回值 ret_t 返回RET_OK表示成功,否则表示失败。
widget widget_t* dialog对象。
title char* 标题。

dialog_toast 函数


  • 函数功能:

显示『短暂提示信息』对话框。

主题由dialog_toast.xml文件决定。

  • 函数原型:
  1. ret_t dialog_toast (const char* text, uint32_t duration);
  • 参数说明:
参数 类型 说明
返回值 ret_t 返回RET_OK表示成功,否则表示失败。
text const char* 文本内容。
duration uint32_t 显示时间(单位为毫秒)。

dialog_warn 函数


  • 函数功能:

显示『警告』对话框。

主题由dialog_warn.xml文件决定。

  • 函数原型:
  1. ret_t dialog_warn (const char* text);
  • 参数说明:
参数 类型 说明
返回值 ret_t 返回RET_OK表示成功,否则表示失败。
text const char* 文本内容。

highlight 属性


对话框高亮策略。

  • 类型:const char*
特性 是否支持
可直接读取
可直接修改
可持久化
可脚本化
可在IDE中设置
可在XML中设置
可通过widget_get_prop读取
可通过widget_set_prop修改