diff options
| author | Bernard Xiong <[email protected]> | 2013-02-21 13:11:10 +0800 |
|---|---|---|
| committer | Bernard Xiong <[email protected]> | 2013-02-21 13:11:10 +0800 |
| commit | 385f682d7bfce81ba281faaffb0a250ab94985b8 (patch) | |
| tree | 94fca413db98390d21dc18938067a7a90e470a6f /components/rtgui/doc | |
| parent | c4bd0023f8da136c5788f47f9a0170a77f627be9 (diff) | |
remove RT-Thread GUI from RT-Thread temporary
Diffstat (limited to 'components/rtgui/doc')
| -rw-r--r-- | components/rtgui/doc/ANNOUNCE.0.6.md | 69 | ||||
| -rw-r--r-- | components/rtgui/doc/attention.txt | 18 | ||||
| -rw-r--r-- | components/rtgui/doc/historical/road_map.txt | 70 | ||||
| -rw-r--r-- | components/rtgui/doc/mv-model.dox | 81 |
4 files changed, 0 insertions, 238 deletions
diff --git a/components/rtgui/doc/ANNOUNCE.0.6.md b/components/rtgui/doc/ANNOUNCE.0.6.md deleted file mode 100644 index 8d65c0a812..0000000000 --- a/components/rtgui/doc/ANNOUNCE.0.6.md +++ /dev/null @@ -1,69 +0,0 @@ -RTGUI 0.6版发布纪要 - -# 为什么是 0.6? - -RTGUI 是作为 RT-Thread 的一个组件存在的。这次新发布的版本是在原 RTGUI 基础上重 -构而来的。原 RTGUI 没有独立的版本号。暂设其为 0.5。所以本版本号取 0.6,为在原有 -基础上改进之意。以后我们会每个月发布一个新版本。下一个版本号会是 0.6.1。 - -# 运行环境 - -理论上原来可以运行 RTGUI 的设备上都可以运行新的 RTGUI。本版本自带一个 Windows -模拟器,用来方便地评估运行效果。默认的运行环境是 realtouch。RT-Thread 中的模拟 -器也是可以运作的。 - -# 新版本有什么特点? - -0. 新版本的 GUI 摒弃了原有的 workbench/view/window 的工作方式。转换成全面向 - window的工作方式。原有的 workbench/view 可以用 notebook 来实现。 -0. 用 `rtgui_app` 对线程进行了抽象。 -0. 事件驱动更彻底: - 0. 将事件处理机制集成进 `rtgui_object`。 - 0. 添加了`RTGUI_EVENT_SHOW` 和 `RTGUI_EVENT_HIDE` 来通知控件将要被显示/隐藏。 - 0. 底层代码中对事件的应用更加彻底。 -0. 重构了自动布局方式。使得控件的摆放更加方便。 - -# 增强 - -- 添加了 TJPGD 引擎。使得小内存系统解码 jpeg 图片成为可能。(onelife) -- 添加了对单色屏的支持(onelife) -- bmp 图像引擎的重构(onelife) -- bmp 图像的旋转/缩放,以及功能性增强(amsl) -- 增加屏幕快照功能(amsl) -- PNG 引擎增加 Alpha 通道支持(amsl) -- 新增 edit 多行文本编辑控件。(amsl) -- 增加了 Model/View 的编程框架。(Grissiom) -- 添加了缩减字库的特性,开启后可以自动添加用到的汉字,不用的汉字字形不会加入到 - 字库当中。使得 GUI 能够在小 ROM 系统上得以应用。(Grissiom) -- 新增 digtube 七段码显示控件(prife) -- demo/benchmark 新增了 FPS 输出(amsl) -- 新增 box/panel/groupbox,支持自动布局(Bernard) - -# API 变化 - -除了 workbench/view 的消失以外,还有如下的 API 变化: - -- c05a301, 68e3e30: `rtgui_{menu,win}_hiden` 被重命名为 `rtgui_{menu,win}_hide`。 -- 05e4894: 将 `struct rtgui_widget` 中的 `mini_{height,width}` 重命名为 `min_{height,width}`。 -- 等等…… - -今后很长时间内,新版本的 RTGUI 会与此版本的 API 尽量只增不减,保持兼容。 - -# Bug fixes - -- 00a6690: 解决了 `rtgui_notebook_set_current_by_index` 中重绘标签页的 bug。感 - 谢 prife 提交 bug 信息和补丁。 -- 6850ff2: 解决了 `last_mevent_widget` 引起的事件传送失败。感谢 heryon 提交bug - 报告。 -- 9143e11: 解决了 jpeg 引擎中的内存泄漏。感谢 Young 提供 bug 信息。 -- fbd567c: 解决了 `rtgui_textbox_set_line_length` 的 bug。 -- 9b67b66: 修复了窗口标题栏渐变效果的绘制。 -- fc3abbf: 修复了 `rtgui_label_set_text`。感谢 tanghong668 提供 bug 信息。 -- d41586c: 修复了窗口激活时重复刷新的问题。感谢 onelife 提供 bug 信息。 -- ab08de6: 修复了字库缓存的 bug。感谢 rtt\_fans 提供 bug 信息。 -- 等等…… - -除了上面提到的,luoyuncong2012, lgnq, shaolin 也有贡献。上面的列表也必然是不完 -整的。感谢编写了第一版 RTGUI 的 Bernard 和其他大侠们,没有他们的辛勤劳动,也不 -会有今天的版本。感谢各位使用和支持RTGUI的开发人员,是你们 RTGUI 体现了 RTGUI 的 -价值。 diff --git a/components/rtgui/doc/attention.txt b/components/rtgui/doc/attention.txt deleted file mode 100644 index d02745cd73..0000000000 --- a/components/rtgui/doc/attention.txt +++ /dev/null @@ -1,18 +0,0 @@ -1, 对同一 window 销毁两次会引起 segfault。同时,如果在创建时设置了 -RTGUI_WIN_STYLE_DESTROY_ON_CLOSE,close 窗口之后不要再去销毁窗口。 - -2, 所有的 window 由 topwin 进行管理,用户不要在指定创建具有父窗口的子窗口之后在 -把这个窗口加为父窗口的 child。这可能会导致子窗口无法显示。 - -3, command 事件添加了 wid 参数,用于指定此事件需要传递的目标窗口。 - -4, 在 widget 中添加了 on_show 和 on_hide 事件回调函数。他们会在控件显示/隐藏的 -时候被调用。 - -5, slider 控件改为左键减小数值,右键增加数值。横向的 slider 处理左右键,纵向的 -slider 处理上下键,上面的值小,下面的值大。 - -6, view 不再提供 show 方法。如果想单独显示控件,请用 window 包含之。 - -7, 若窗口在销毁(destroy)时没有关闭,则 RTGUI 会先关闭之。也会调用 on_close 函数 -但是此函数的返回值会被忽略。 diff --git a/components/rtgui/doc/historical/road_map.txt b/components/rtgui/doc/historical/road_map.txt deleted file mode 100644 index c14e519251..0000000000 --- a/components/rtgui/doc/historical/road_map.txt +++ /dev/null @@ -1,70 +0,0 @@ -RTGUI for 1.1 路线图(排名不分先后) -1, 把 rtgui_thread 给去掉,变成 rtgui_application ,消除原来的 rtgui_thread + -mq 的模式。rtgui_application 记录当前依附的 panel,和 panel 的 extent。(Done) - 1.1, rtgui_application_run 运行主事件循环(Done) - 1.2, rtgui_application 作为事件的接收者_和_事件派发者。(Done) - -2, workbench,window并成一个,其事件主循环并合并到rtgui_application中。 - 2.1, window 作为有标题栏的 workbench(Done) - 2.2, 将其事件主循环移至 application 中。(Done) - 2.3, 将 window 的父类 toplevel 合并进 window 中。所有直接与服务器打交道的从 - window 继承。(或者将 toplevel 合并进 application 中,因为只有 application 才 - 会和服务器打交道。) - 2.4 在创建 window 的时候需要指定 parent,如果为 RT_NULL,则此 window 为 root - 窗口,parent 为当前 rtgui_application。每一个 application 必须有且只有一个根 - 窗口。(Done) - 2.5 添加一个 FULL_PANEL 的 STYLE。指定此 STYLE 之后会自动填满整个 panel。其 - 与 NO_TITLE 之类的合用可以达到之前 workbench 的效果。(Deprecated) - 2.6 event_loop 可以设定顶层控件,只会把事件传递给顶层控件。这样可以方便的实 - 现模态窗口。event_loop 靠 object 的一个标志位来判断是否要退出当前循环。(Done) - -3, 将 view 合并进 container,所有容器类继承 container。[note1](Done) - -4, 事件循环完成后不主动销毁控件,销毁任务交由用户完成。但是有些自动销毁是必要的 -,比如 container 自动销毁其包含的控件(Done) - 4.1 对于 window 的 onclose事件,保证在其回调函数中可以(但不是必须)安全销毁窗 - 口。这个功能不保证能够实现。(onclose 是在将要关闭窗口的时候触发的,调用它之 - 后 RTGUI 还要进行其他的设置和清理工作,所以不能在 onclose 里销毁窗口)(Cannot - Implement) - 4.2 对 window 添加 RTGUI_WIN_STYLE_DESTROY_ON_CLOSE 。使得其在被关闭时自动销 - 毁。注意:对同一 window 销毁两次会引起 segfault。同时,如果在创建时设置了 - RTGUI_WIN_STYLE_DESTROY_ON_CLOSE,close 窗口之后不要再去销毁窗口。 - -5, API 清理。更详细的文档。 - -6, 使 panel 退化为无窗口标题的 window,这样 server 就只记录 window 一种东西的位 -置。(Done, 删除了 panel,使得整体以 window 为主) - -7, 指定名称的时候不再自己拷贝一份。(我觉得 90% 的情况下名称都是静态的字符串,这 -时用 strdup其实并没有必要。)(Deprecated) - -8, 添加一些工业控制当中用到的波形、仪表之类的控件。 - -9, 在 window 中记录焦点控件,键盘事件由 window 直接投送。各个控件不记录焦点控件 -。(Done) - -10, 在 widget 中添加 on_show 和 on_hide 事件回调函数。(Done) - -11, 添加 EVENT_WIN_MODAL_ENTER 和 EVENT_WIN_MODAL_EXIT 事件,用来通知窗口管理器 -(topwin)一个窗口进入模态。窗口管理器根据这个进行相应的设置。(Done) - -12, rtgui_filelist_view 不必继承自 container。(Deprecated) - -13, 添加 desktop window 支持。(Done) - 概念与名词: - 13.1 desktop window:最底层的桌面窗口。它会在所有窗口下面显示,并且不会被它 - 上面的窗口模态掉。它的子窗口是 root window。(继承关系由 RTGUI 管理,不 - 用用户管理)它只有在启用 RTGUI_USING_DESKTOP_WINDOW 时才有此特性。 - 13.2 root window:创建时父窗口为 RT_NULL 的窗口。是用户空间窗口继承树的根。 - 13.3 normal window:创建时父窗口不为 RT_NULL 的窗口。它始终会在父窗口之上显 - 示(它会 clip 父窗口)。normal windows 和 root window 组成一个窗口树。 - 13.4 模态:当一个 normal window 模态显示时会会模态自己所在树的同级窗口 - 和所有父级窗口,但不会影响别的窗口树。被模态的窗口不会接受到用户事 - 件(按键,触摸等) - ----- -[note1] 我们至少需要一种容器控件来盛放其他的控件,并且能把上层事件传递给被包含 -的控件。实现这样的功能有一个就好,container 可以担当这个责任。其他需要放多个控 -件的控件则可以继承/包含这个控件。然后多个容器控件轮换的,notebook 可以来做。 -notebook可以是有标签和无标签的,有标签的对应一般的 tab 控件,无标签的对应 rtgui -for RTT 1.0 的 workbench+view。 diff --git a/components/rtgui/doc/mv-model.dox b/components/rtgui/doc/mv-model.dox deleted file mode 100644 index 15975c4625..0000000000 --- a/components/rtgui/doc/mv-model.dox +++ /dev/null @@ -1,81 +0,0 @@ -/** @~english - @page pg-mv-model Model-View framework - - @brief A overview of the Model-View framework - - @section Glossary - - @li view: widget dedicated to show the data. It could be a graph, list etc. - @li model: abstraction and combination of data. - @li data: things that needed to be delivered or shown. It could be a array of - votage values which is sampled from a AD in an interval. Or it could be the - attributes of all the files in a folder. - - @section Design considerations and implementations - - @li one model can respond to more than one views. one view can connect to - more than one models. - @li It is guaranteed that the change events of a model will be sent to all - the registered views. - @li Because there are so many formats of data, Model-View neither specify the - format data is stored nor try to abstract them. The only thing stored in - model is a pointer to the underlaying data. It is the responsibility of - inherited classed to implement the boxing/un-boxing operations. - @li Data can be multi-dimensional. The "dimension" does not only means - dimension geometry. It can also means attributes. For example, a folder could - have two attributes which are name and icon. So it's two-dimensional. If take - the size into consideration, it will be three-dimensional. The size of - dimension is saved in model. Each dimension is correspond to a pointer to some - sort of data. Model can save many of them. As above, model does not make - assumptions on the underlaying data structure. It only provide mechanism, not - policy and leave that to the inherited classes. - - @section Events - - @li model has a record of registered views. When data changes, model notify - views the change by sending events. The event contains the id of the model, - the id of target view, the scope of changed data. - @li views can handle the event by retrieve data from model, and update - themselves according to the scope that data has changed. The connected model - views should have the same presentation of data structure. Views should also - restore all the models it interested. In the case of repainting, it should - re-retrieve data from those models. - @li model send events by rtgui_send. So it's suitable for the synchronization - between threads and even could be used in ISR. -*/ - -/** @~chinese - @page pg-mv-model Model-View 框架 - - @brief 对于 Model-View 框架的简介 - - @section 名词解释 - - @li view:用于显示数据的控件。可以是诸如图表控件、列表控件的控件。 - @li model:对于数据的组合和抽象。 - @li 数据:需要显示或传递的数据。它可以是每隔一段时间就从AD读取的电压值,也可 - 以是一个目录下所有文件的属性列表。 - - @section 设计原则和实现 - - @li 一个 model 可以对应多个view。一个view可以对应多个 model。 - @li 保证 model 的更新事件会同时发送到所有注册的 view 上。 - @li 因为数据的形式与内容千差万别,所以 Model-View 不规定数据的存储形式,也不对其进 - 行抽象。只在 model 中保留指向第一个数据的指针。打包/解包由从m odel/view 派生出 - 的子类实现。 - @li 数据源可以是多维的。这里的维度指的不只是几何的维度,而且可以是属性。比如 - 一个目录,它可以有名称、图标两个属性,那么它就是两维的。如果加入大小这个属性 - ,就是三维的。 model 内部存储数据的维度大小。一个维度对应一个数据首地址的指针 - 。model 中可以存储多个数据首地址。model 对底层数据结构不作假设。只提供机制,不 - 提供策略。只保证能够多维,但把具体的实现方式留给子类实现。 - - @subsection 事件 - - @li model 内部记录对自己感兴趣的 view。在数据变化时,用事件通知所有相关 view。事 - 件内容包含:自己的 id;目标 view 的 id;所变化数据的 index 范围。 - @li view 收到事件之后通过 model id 拿到数据并根据事件中的变化范围更新自己。对于 - 指针的数据类型转换需要自己实现并保证和 model 一致。view 内部保存与自己相关的 - model id,在需要重绘的时候要从所有相关 model 提取数据。 - @li model 通过 rtgui_send 给 view 发送事件。使得这个模型适用于线程间同步,也 - 可以在中断上下文里通知事件的发生。 -*/ |
