awtk/docs/manual/dialog_t.md
2019-12-11 16:21:15 +08:00

13 KiB
Raw Blame History

dialog_t

概述

image

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

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

如果dialog有透明或半透效果则不支持窗口动画。

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

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

image

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

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

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

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

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

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

 widget_t* dlg = dialog_open(name);

 ret = dialog_modal(dlg);

关闭模态对话框用dialog_quit

static ret_t on_dialog_btn_click(void* ctx, event_t* evt) {
  widget_t* win = widget_get_window(WIDGET(evt->target));
  int code = (char*)ctx - (char*)NULL;

  dialog_quit(win, code);

   return RET_OK;
}

关闭非模态对话框用window_close。

static ret_t on_dialog_btn_click(void* ctx, event_t* evt) {
  widget_t* win = widget_get_window(WIDGET(evt->target));
  int code = (char*)ctx - (char*)NULL;

  window_close(win);

  return RET_OK;
}

更多用法请参考: dialog.xml

完整C代码示例请参考

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

<style name="default">
  <normal border_color="#606060" />
</style>

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


函数

函数名称 说明
dialog_cast 转换dialog对象(供脚本语言使用)。
dialog_confirm 显示『确认』对话框。

主题由dialog_confirm.xml文件决定。 | | dialog_create | 创建dialog对象。 | | dialog_create_simple | 创建dialog对象同时创建title/client。 | | dialog_get_client | 获取client控件。 | | dialog_get_title | 获取title控件。 | | dialog_info | 显示『提示信息』对话框。

主题由dialog_info.xml文件决定。 | | dialog_is_modal | 检查对话框是否为模态对话框。 | | dialog_is_quited | 检查对话框是否已经退出模态。 | | dialog_modal | 模态显示对话框。 dialog_modal返回后dialog对象将在下一个idle函数中回收。 也就是在dialog_modal调用完成后仍然可以访问dialog中控件直到本次事件结束。 | | dialog_open | 从资源文件中加载并创建Dialog对象。

本函数在ui_loader/ui_builder_default里实现。 | | dialog_quit | 退出模态显示,关闭对话框。

比如,在对话框中关闭按钮的事件处理函数中,调用本函数关闭对话框。 | | dialog_set_title | 设置对话框的标题文本。 | | dialog_toast | 显示『短暂提示信息』对话框。

主题由dialog_toast.xml文件决定。 | | dialog_warn | 显示『警告』对话框。

主题由dialog_warn.xml文件决定。 |

属性

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

请参考 对话框高亮策略 |

dialog_cast 函数


  • 函数功能:

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

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

dialog_confirm 函数


  • 函数功能:

显示『确认』对话框。

主题由dialog_confirm.xml文件决定。

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

dialog_create 函数


  • 函数功能:

创建dialog对象。

  • 函数原型:
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。

  • 函数原型:
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控件。

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

dialog_get_title 函数


  • 函数功能:

获取title控件。

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

dialog_info 函数


  • 函数功能:

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

主题由dialog_info.xml文件决定。

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

dialog_is_modal 函数


  • 函数功能:

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

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

dialog_is_quited 函数


  • 函数功能:

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

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

dialog_modal 函数


  • 函数功能:

模态显示对话框。

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

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

dialog_open 函数


  • 函数功能:

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

本函数在ui_loader/ui_builder_default里实现。

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

dialog_quit 函数


  • 函数功能:

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

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

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

dialog_set_title 函数


  • 函数功能:

设置对话框的标题文本。

  • 函数原型:
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文件决定。

  • 函数原型:
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文件决定。

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

highlight 属性


对话框高亮策略。

请参考 对话框高亮策略

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