简介
本文将使 Moblin 项目开发者对 Hildon 应用程序框架有更好的理解。所有 Moblin GUI 应用程序都是基于 Hildon 应用程序框架。本文介绍基本 Hildon 概念、结构和组成。
本文假设读者已具备下列知识:
- 基本 Linux 知识
- 理解 MID
- 基本 Linux GTK+ 应用程序编程
点击: http://v1.moblin.org/toolkits/basicDevGuides/simpleApp/toolkits_DevGds_simpleApp_cApp.php ,用 Python 开发,
点击 http://v1.moblin.org/toolkits/basicDevGuides/simpleApp/toolkits_DevGds_simpleApp_pythonApp.php 。
Hildon 纵览
背景
这里有几类应用程序能在 Moblin 项目中被开发。 Moblin 开发者可开发软件或增进非 PC 设备的 Linux ,例如 MID 和其它消费电子设备。 Moblin 开发者可开发或移植 Linux 应用程序,使用 GUI 连接特定所需手持设备。像 Linux 世界其它 GUI 应用程序一样, Moblin 应用程序界面基于 X 窗口系统。显然, Moblin 应用程序使用 Matchbox 工具管理窗体。 Matchbox 不同于多数其它窗口管理器,因为它同时只显示一个窗口,这是嵌入设备最重要的一点。这些应用程序使用 Hildon 应用程序框架编写,该框架是 GTK+ 的扩展。 Hildon 应用程序框架提供增强的 UI ,以适应手持设备特殊需求。GTK+ 是用来开发 Linux 应用程序 GUI 的库之一。 GTK 最初源于 GIMP ,即 GNU 图像处理程序,因此称作“ The GIMP Toolkit ”用来标识项目的组织。 GTK+ 是创建 GUI 的多平台工具集,提供完整窗口小部件集合,广泛用在 Linux 桌面区域的项目。它已成为 GNOME 项目的 UI 框架。 GTK+ 是自由软件和 GNU 项目的一部分。 GTK+ 的许可为 GNU LGPL ,允许所有开发者使用它,包含它开发自己的软件,无需任何许可费和版权费。 [1]
虽然 GTK+ 工作在相当多的桌面区域,但它需要为一些小屏幕设备改进, 像 MID 。例如,手持设备可能支持指触操作,通常需要比运行在桌面系统上相同应用程序大的窗口部件和字体。因为用户首选应用程序操作是使用手写笔或手指,该接口需要简单和直接,点击数应该优先,并容易让用户通过手指拖拉操作文字和对象。通过模仿消费电子产品用法, MID 应用程序需要更生动外貌和简单布局,与为桌面系统所写应用程序不同。小屏幕尺寸影响植入程序的最小化按钮、菜单选项及其它 GUI 窗体部件在窗口中呈现,用户期待触摸起来平滑、粗大,并容易在设备的小屏幕上易读。很多需求不能单纯使用 GTK+ 完成,它需要被改进。Nokia 拥有 Maemo 开源项目,提出增进窗体部件和其它可用库,产生一个基于 GTK+ 的 GUI ,使其更适合手持设备。该增进以及相关工具被称为 Hildon ,它逐渐的组成一个应用程序框架在 Meamo 平台上。 Hildon 是基于 GTK 和某些其它 GNOme 框架的技术。 Hildon 增进 GTK+ 在嵌入 Linux 设备上。增进包括 Hildon 窗体部件、加速改进 Sapwood 主题引擎、图像服务器、任务浏览器、控制面板、状态条、触摸屏输入方法、手写笔支持和高像素屏幕窗口管理 [2] 。
Maemo 应用程序被建立在 Hildon 框架顶层。简单的应用程序单独连接 Hildon 库、 GTK+ 、 Glib 和 LibOSSO 来使用 GUI 元素。更复杂应用程序依据其需要使用其它服务。例如,某应用程序可能连接 GStreamer 获得多媒体通道,连接 libcurl 获得 HTTP 通道。
使用 Hildon 的应用程序,接收任意 Hildon 窗体部件或 GTK 窗体部件经由 UI 传送的消息。下图说明应用程序、 Hildon 、 GTK+ 、 X lib 和其他 Linux 核心组件在 Moblin 项目中的关系:
应用程序可以调用 Hildon API 函数创建特定 Hildon 对象。例如,一个 Hildon 应用程序请求调用“ hildon_window_new() ”函数为自己创建顶层窗口对象。 Hildon 应用程序框架处理请求,并调用底层 GTK 函数创建窗口并呈现,等等。有很多其它选择,应用程序可持续调用 GTK 函数处理 UI 对象。例如, Hildon 应用程序可以调用“ hildon_window_new() ”函数创建按钮控件。在 Hildon 应用程序框架上,按钮将通过 Hildon 呈现,但所有底层操作保持无变化的 GTK 。当我们开始自己的 Moblin 项目,打算使用 Hildon 应用程序框架时, Hildon 将被单独发布,从 Maemo 项目中分离,并可能包含在 GNOME-Mobile 核心服务中。
应用程序框架结构
在 Moblin 的 GUI 应用程序中,底层框架包含一部分 Hildon 应用程序框架。结果, MID 应用程序将共享许多 Nokia N-level handheld 设备的 UI 和特有风格。通常, MID 的 UI 、导航和用户体验在很多方式上不同。例如, Maemo 的导航条在屏幕左边,而 Moblin 导航条在顶部。
下图列出使用 Moblin 的应用程序框架结构:在最初由 Maemo 提供的 Hildon 应用程序框架成员中, Moblin Linux 核心堆栈仅使用其中一部分。有些组件,像任务导航器、 Hildon UI 及控制面板,不被 Moblin 使用。所以,我们不将它们列入本文。查阅 http://maemo.org 可获得这些组件更多信息。
Moblin GUI 应用程序是图 2-2 描述堆栈顶部的成员。这有两个类别:
Moblin 应用程序 : | 这是典型 GUI 应用程序,它有特定面貌,或包含某一功能提供给用户,例如浏览器、媒体播放器,等等。 |
Moblin Applet: | 这是图形应用程序,用来配置某个系统设置,通常与底层硬件驱动通信。例如,用户控制音量和混音器的声音程序,等等。 |
应用程序和 Applet 都从 Hildon 库调用 API 获得它们的 UI 。应用层下,存在 Hildon 应用程序框架和 LibOSSO ,两者均来自 Maemo 。 Moblin 应用程序使用 4 个主要的 Hildon 应用程序框架部件来生成简单、时髦、易手指操作的 MID 界面,即 Hildon 开发库、 UI 主屏幕、 marquee 、状态条。
Hildon 库 : | 开发库是 MID 和应用程序产生 GUI 的库的集合。它们基于 GTK+ 库扩展,通过 GTK 窗体部件设计界面。它们是应用程序框架的基本成员,包括 Hildon 窗体部件集合(窗体,菜单,工具条等等), Hildon 桌面, Hildon 文件管理,通用状态条,等等。像积木一样搭建应用程序,并将在下列部分描述。 |
Home: | 这是 Moblin 系统主屏幕,在 MID 启动初时用户所看见的。 Home UI 将通过突变链接所有用户可使用的应用程序和 applet 。通常显示状态信息和屏幕顶部 Marquee 。 |
Marquee: | 这是 Moblin 系统顶部的任务条。 Marquee 和 Windows 任务条一样,将包含一系列插件用来显示应用程序标题、日历、时间、电池 /WiFi 状态等等。 |
图 2-3. 主屏幕和 Marquee 实例
LibOSSO 是一个重要的库,提供应用程序间通信功能。基本上,它是平台的抽象,为不同应用程序分配执行调用函数库能力,完成特定任务,像打开对话框窗口选择特定的一页,或通过播放器播放声音文件。最主要的功能是著名的 D-Bus 。更多信息点击: http://v1.moblin.org/toolkits/basicDevGuides/mobLinux/toolkits_DevGds_mobLinux_usingLibosso.php 。
Hildon 库介绍
Hildon 有 三大库: libhildon 、 libhildondesktop 和 libhildonfm ,下面将分别详细描述。
Libhildon : Hildon 窗体部件
Libhildon 包含窗体部件集合的库,用以应用程序的图形界面。窗体部件来自 GTK+ 开发库。下面是 Hildon 的 1.0.17 版本提供的主要窗体部件摘要。完整窗体部件参考,查阅: http://maemo.org/api_refs/4.0/hildon/ 。
虽然 libhildon 提供的窗体部件类似于很多 GTK+ 所提供的窗体部件,但他们通常为手持设备和 MID 特殊需求提供特别的增进。例如,很多窗体部件有更丰富图形面貌,大字体,高对比度,这是小屏幕和手指操作所必要的。就是说,大多标准 GTK+ 窗体部件被 Hildon 风格改进,所以更有益于手持设备。 Hildon 规格窗体部件也同样包括标准 GTK+ 窗口控件集合,并增加更多移动应用程序的特殊功能。
LibHildon 窗体部件例子 [3]
名称 | 描述 |
HildonWindow | Hildon 框架顶层窗体部件 |
HildonProgram | Hildon 框架运行的应用程序 |
HildonColorButton | 打开 HildonColorChooserDialog 的按钮 |
HildonColorChooserDialog | 用来选择 HSV 颜色空间的对话框 |
HildonColorChooser | Hildon 框架顶层窗体部件表现 |
HildonControlbar | 在预先设定范围增加和减少的窗体部件 |
HildonCalendarPopupr | 在弹出日历选择时间的窗体部件 |
HildonWeekdayPicker | 在某一事件发生时选择天数的窗体部件 |
HildonTimePicker | 用户设置时间的弹出对话框窗体部件 |
HildonNumberEditor | 用来输入预先确定范围的数字的窗口部件 |
HildonRangeEditor | 用来询问范围区间的窗体部件 |
HildonFindToolbar | 搜索域工具条 |
HildonCaption | 单子域容器窗体部件,可包含一个标签域和一个操作图标 |
HildonBanner | 用来显示定时通告的窗体部件 |
HildonNote | 询问用户确认的对话框 |
HildonSortDialog | 定义项的排序的窗体部件 |
HildonFontSelectionDialog | 用来选择字体的窗体部件 |
Hildon-sound | 基于 ESD 功能播放声音 |
Hildon 桌面是手持设备桌面环境。典型 Hildon 桌面包括任务导航器、状态条(例如显示电池或无线信息)和系统菜单,等等。相应的 libhildondesktop 提供必须的项建立自定义桌面对象。在 Moblin 中,主屏幕和 Marquee 开发都使用 libhildondesktop 库。
Hildon 桌面组件 [4]
名称 | 描述 |
HildonDesktopHomeItem | 用以 HildonHomeArea 子类的基类 |
HildonDesktopPanelItem | 控制项起源的基类 |
TaskNavigatorItem | 任务导航器起源的基类 |
StatusbarItem | 状态条起源的基类 |
HildonDesktopPopupWindow | 开发桌面弹出窗口的基类 |
HildonDesktopPopupMenu | 开发桌面弹出菜单的基类 |
Hildon 文件管理基于 Gnome VFS ,提供统一机制管理存放在本地驱动器和通过 URL 访问的远程容器中的文件。 Hildon 文件管理库包括一系列易用、内建对象,像标准 Hildon 文件选择对话框、文件容器窗体部件及用来获取文件信息和属性的对象。
Hildon 文件管理组件 [5]
名称 | 描述 |
HildonFileSelection | 选择文件的容器部件 |
HildonFileSystemModel | 显示文件系统结构的强大窗体部件 |
HildonFileChooserDialog | 基于 GtkFileChooser 选择文件的强大窗体部件 |
HildonFileDetailsDialog | 基于 GtkDialog 显示详细文件信息的对话框窗体部件 |
HildonFilesystemInfo | 查询系统相关文件信息的对象,像统计和显示名称等等 |
下列文档被用来参考写作本文。查阅这些文档获得更多信息:
• GTK Official Website- http://www.gtk.org
• Maemo Technology Overview - http://maemo.org/maemo_training_material/maemo4.x/html/maemo_Technology_Overview/Chapter_02_The_GUI_Components_of_maemo.html
• Maemo API References - http://maemo.org/api_refs/4.0/hildon/index.html
• Maemo API References - http://maemo.org/api_refs/4.0/libhildondesktop/index.html
• Maemo API References - https://stage.maemo.org/svn/maemo/projects/haf/doc/api/hildon-fm/index.html
• Maemo Online Training - Technology Overview http://maemo.org/maemo_training_material/maemo4.x/html/maemo_Technology_Overview
• Maemo Online Training - Application Development http://maemo.org/maemo_training_material/maemo4.x/html/maemo_Application_Development/index.html
• Maemo Online Training - Platform Development http://maemo.org/maemo_training_material/maemo4.x/html/maemo_Platform_Development/index.html
• Maemo 4 Architecture - http://maemo.org/development/documentation/how-tos/4-x/maemo_architecture.html
• LibOSSO Documentation - http://maemo.org/api_refs/4.0/LibOSSO/index.html
以上内容由徐诚提供
本文译自Intel Moblin.org社区
更多内容,请点击“Moblin技术”专区