跟着嵌入式体例的平凡行使,图形用户界面(Graphical User Interface,GUI)正在嵌入式体例中的位子也越来越紧急。
目前对比成熟的嵌入式GUI体例搜罗MicroWin-dows、Qt/Embedded、MiniGUI等。MicroWindows可移植性好,斥地中心正在底层的图形引擎,但窗口体例和图形接口方面的效力还对比毛病。Qt/Embedded可移植性较好,基于Qt的X Window序次可能特殊轻易地移植到嵌入式体例,但对体例硬件哀求较高,要紧用于手持设置。MiniGUI最初是为了工业左右体例打算斥地的,定造才能强,速率速,本能好,卓殊适合于及时性哀求高的地方。因为受到嵌入式体例硬件资源的限定,对嵌入式体例GUI的基础哀求搜罗:占用资源少、高本能、高牢靠性、可摆设。本文打算采用MiniGUI动作图形界面赞成体例。
MiniGUI是一款效力LGPL条件的纯自正在软件,是按照嵌入式体例行使特性量身定做的图形界面赞成体例,取得了平凡行使。它供应了具备的多窗口机造和信息转达机造,以及对话框和常用的控件类,搜罗文本框、按钮、编纂框、列表框等;特殊幼巧,包罗悉数效力的库文献仅为300 KB操纵。守旧的MiniGUI序次斥地是基于文本编纂器的,斥地职员正在序次源代码编写经过中无法预先看到窗口、控件的集体结果,缺乏一个可视化的斥地境况。因而,本文打算了一个MiniGUI,并运用EclipseGEF(Graphical Editing Framework)杀青。
可视化斥地器械要供应界面结构打算效力,要紧搜罗:界面上控件名望的摆放、属性的成立,为每个控件界说callback函数;菜单、状况条、位图编纂;反响界面编纂经过中爆发的交互事变,好比drop/drag、undo/redo、move、de-lete、resize等;留存及解析透露相应结构的效力;按照用户打算天生可运转的MiniGUI源代码。
可视化斥地器械要紧由界面打算器械和源代码天生器械两片面构成。集体构造如图1所示。
界面打算器械:杀青所见即所得的界面编纂器效力,可能按照必要调动和安排显示的实质和样子,这使得用户界面的筑造特殊轻易。采用守旧的面向对象打算手腕来斥地可视化界面,会碰到用户界面和底层的数据杂合、接口扩展导致的类膨胀等题目,因而界面打算器械运用MVC形式打算。用户通过界面打算器械的“控件打算”成立控件属性;“交互事变反响”用于反响界面编纂经过中爆发的交互事变,告终控件属性的改正。这两片面临应MVC中的Control-ler。“控件类”留存控件的百般属性,对应Model。“控件显示”按照控件类的属性成立显示控件,对应View。XML文档则掌管留存界面结构,控件类也可能按照XML解析文档实质取得自己属性。
源代码天生器械:通过遍历全面控件类的属性,将图形用户界面结构遵循运转平台哀求(目前仅赞成RTEMS)天生相应的MiniGUI源代码。
全面控件类通过树的样子来处分。树的顶层表现一个处分的工程,其下搜罗全面的对话框、菜单、状况条及位图资源,对话框的子节点是其上显示的全面控件,菜单搜罗弹出菜单和菜单项,状况条与对线所示。因为XML文档会被Java解析成树形构造,解析界面结构的经过即是一个树的遍历经过。运用树形构造来机合控件类,可能让软件正在逻辑上简便易懂,控件机合相干明白知道,而且通过树的遍历可能留存界面结构及天生源代码。
因为图形用户界面中很多元素拥有合伙属性,本文把这些元素的共有属性及手腕概括出来动作基类。要紧运用2个基类:容器类Content和控件类Control。Content要紧搜罗容器ID、文字属性及留存解析控件等手腕;Control要紧搜罗控件ID、名望巨细、控件格调等属性,以及留存解析控件、天生源代码等手腕。个中,对话框、菜单、状况条和位图担当自Content,如图3(a)所示;对话框控件担当自Control,如图3(b)所示。正在天生源代码等操作时自顶向下遍历扫数界面工程,可直接移用基类的手腕,无需辨别控件简直的种别。如此提升了代码的重费用,省略了冗余代码。