linuxOS_D21X/source/artinchip/awtk-ui/awtk/src/widgets/grid.h
2024-11-29 16:23:11 +08:00

157 lines
4.2 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* File: grid.h
* Author: AWTK Develop Team
* Brief: 网格。
*
* Copyright (c) 2022 - 2022 Guangzhou ZHIYUAN Electronics Co.,Ltd.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* License file for more details.
*
*/
/**
* History:
* ================================================================
* 2022-06-18 Li XianJing <xianjimli@hotmail.com> created
*
*/
#ifndef TK_GRID_H
#define TK_GRID_H
#include "base/widget.h"
BEGIN_C_DECLS
/**
* @class grid_t
* @parent widget_t
* @annotation ["scriptable","design","widget"]
* 网格。
* 在xml中使用"grid"标签创建控件。如:
*
* ```xml
* <!-- ui -->
* <grid x="c" y="50" w="100" h="100"/>
* ```
*
* 可用通过style来设置控件的显示风格如字体的大小和颜色等等。如
*
* ```xml
* <!-- style -->
* <grid>
* <style name="default" grid_color="gray" border_color="black" odd_bg_color="#f5f5f5" even_bg_color="#eeeeee">
* <normal />
* </style>
* </grid>
* ```
*/
typedef struct _grid_t {
widget_t widget;
/**
* @property {uint32_t} rows
* @annotation ["set_prop","get_prop","readable","persitent","design","scriptable"]
* 行数。
*/
uint32_t rows;
/**
* @property {char*} columns_definition
* @annotation ["set_prop","get_prop","readable","persitent","design","scriptable"]
* 各列的参数。
* 各列的参数之间用英文的分号(;)分隔,每列参数的格式为:
*
* col(w=?,left_margin=?,right_margin=?,top_maorgin=?,bottom_margin=?)
*
* * w 为列的宽度(必须存在)。取值在(0-1]区间时视为grid控件宽度的比例否则为像素宽度。
* (如果为负数,将计算结果加上控件的宽度)
* * left_margin(可选可缩写为l) 该列左边的边距。
* * right_margin(可选可缩写为r) 该列右边的边距。
* * top_margin(可选可缩写为t) 该列顶部的边距。
* * bottom_margin(可选可缩写为b) 该列底部的边距。
* * margin(可选可缩写为m) 同时指定上面4个边距。
* * fill_available(可选可缩写为f) 填充剩余宽度(只有一列可以指定)。
*
*/
char* columns_definition;
/**
* @property {bool_t} show_grid
* @annotation ["set_prop","get_prop","readable","persitent","design","scriptable"]
* 是否显示网格。
*/
bool_t show_grid;
/*private*/
darray_t cols_definition;
} grid_t;
/**
* @method grid_create
* @annotation ["constructor", "scriptable"]
* 创建grid对象
* @param {widget_t*} parent 父控件
* @param {xy_t} x x坐标
* @param {xy_t} y y坐标
* @param {wh_t} w 宽度
* @param {wh_t} h 高度
*
* @return {widget_t*} grid对象。
*/
widget_t* grid_create(widget_t* parent, xy_t x, xy_t y, wh_t w, wh_t h);
/**
* @method grid_cast
* 转换为grid对象(供脚本语言使用)。
* @annotation ["cast", "scriptable"]
* @param {widget_t*} widget grid对象。
*
* @return {widget_t*} grid对象。
*/
widget_t* grid_cast(widget_t* widget);
/**
* @method grid_set_rows
* 设置 行数。
* @annotation ["scriptable"]
* @param {widget_t*} widget widget对象。
* @param {uint32_t} rows 行数。
*
* @return {ret_t} 返回RET_OK表示成功否则表示失败。
*/
ret_t grid_set_rows(widget_t* widget, uint32_t rows);
/**
* @method grid_set_columns_definition
* 设置 各列的参数。
* @annotation ["scriptable"]
* @param {widget_t*} widget widget对象。
* @param {const char*} columns_definition 各列的参数。
*
* @return {ret_t} 返回RET_OK表示成功否则表示失败。
*/
ret_t grid_set_columns_definition(widget_t* widget, const char* columns_definition);
/**
* @method grid_set_show_grid
* 设置 是否显示网格。
* @annotation ["scriptable"]
* @param {widget_t*} widget widget对象。
* @param {bool_t} show_grid 是否显示网格。
*
* @return {ret_t} 返回RET_OK表示成功否则表示失败。
*/
ret_t grid_set_show_grid(widget_t* widget, bool_t show_grid);
#define GRID(widget) ((grid_t*)(grid_cast(WIDGET(widget))))
/*public for subclass and runtime type check*/
TK_EXTERN_VTABLE(grid);
END_C_DECLS
#endif /*TK_GRID_H*/