黑暗模式
如何访问控件的属性
1.修改控件的属性
控件所有的公开属性,都提供了相应的 set 函数,用它可以修改对应的属性。如:
c
/**
* @method check_button_set_value
* 设置控件的值。
* @annotation ["scriptable"]
* @param {widget_t*} widget check_button 对象。
* @param {bool_t} value 值
*
* @return {ret_t} 返回 RET_OK 表示成功,否则表示失败。
*/
ret_t check_button_set_value(widget_t* widget, bool_t value);
2.读取控件的属性
控件都提供了一个宏,将其由 widget 类型转换成实际的类型,然后可以直接读取它的属性。如:
c
bool_t checked = CHECK_BUTTON(button)->value;
3.通过 widget 的函数访问控件的属性
widget 提供了 widget_get_prop/widget_set_prop 系列函数,也可以用来访问控件的属性。
c
/**
* @method widget_get_prop
* 获取控件指定属性的值。
* @param {widget_t*} widget 控件对象。
* @param {const char*} name 属性的名称。
* @param {value_t*} v 返回属性的值。
*
* @return {ret_t} 返回 RET_OK 表示成功,否则表示失败。
*/
ret_t widget_get_prop(widget_t* widget, const char* name, value_t* v);
/**
* @method widget_set_prop
* 设置控件指定属性的值。
* @param {widget_t*} widget 控件对象。
* @param {const char*} name 属性的名称。
* @param {value_t*} v 属性的值。
*
* @return {ret_t} 返回 RET_OK 表示成功,否则表示失败。
*/
ret_t widget_set_prop(widget_t* widget, const char* name, const value_t* v);
4.访问 text 属性
/**
* @method widget_get_text
* 获取控件的文本。
* 只是对 widget\_get\_prop 的包装,文本的意义由子类控件决定。
*
* 如果希望获取 UTF8 格式的文本,可以参考下面的代码:
*
* ```c
* str_t str;
* str_init(&str, 0);
* str_from_wstr(&str, widget_get_text(target));
* log_debug("%s: %s\n", target->name, str.str);
* str_reset(&str);
* ```
*
* @annotation ["scriptable"]
* @param {widget_t*} widget 控件对象。
*
* @return {const wchar_t*} 返回文本。
*/
const wchar_t* widget_get_text(widget_t* widget);
/**
* @method widget_set_text
* 设置控件的文本。
* 只是对 widget\_set\_prop 的包装,文本的意义由子类控件决定。
* @param {widget_t*} widget 控件对象。
* @param {const wchar_t*} text 文本。
*
* @return {ret_t} 返回 RET_OK 表示成功,否则表示失败。
*/
ret_t widget_set_text(widget_t* widget, const wchar_t* text)
/**
* @method widget_set_text_utf8
* 设置控件的文本。
* 只是对 widget\_set\_prop 的包装,文本的意义由子类控件决定。
* @annotation ["scriptable"]
* @alias set_text
* @param {widget_t*} widget 控件对象。
* @param {const char*} text 文本。
*
* @return {ret_t} 返回 RET_OK 表示成功,否则表示失败。
*/
ret_t widget_set_text_utf8(widget_t* widget, const char* text);
5.访问 value 属性
仅使用与 int/bool 类型的属性
/**
* @method widget_set_value
* 设置控件的值。
* 只是对 widget\_set\_prop 的包装,值的意义由子类控件决定。
* @annotation ["scriptable"]
* @param {widget_t*} widget 控件对象。
* @param {int32_t} value 值。
*
* @return {ret_t} 返回 RET_OK 表示成功,否则表示失败。
*/
ret_t widget_set_value(widget_t* widget, int32_t value)
/**
* @method widget_get_value
* 获取控件的值。只是对 widget\_get\_prop 的包装,值的意义由子类控件决定。
* @annotation ["scriptable"]
* @param {widget_t*} widget 控件对象。
*
* @return {int32_t} 返回值。
*/
int32_t widget_get_value(widget_t* widget);