Legacy Maemo 5 Documentation/Graphical UI Tutorial/Introduction

= Application Development =

Introduction
The maemo platform's basic starting point for graphical user interface programming is Hildon, which comprises of a set of widgets optimized for handheld devices, a set of theming tools and other complementary libraries and applications.

Hildon is based on GNOME technologies to a great extent. Compared to a GNOME desktop from a user interface point of view, Hildon is designed to provide a new desktop for mobile embedded devices. Therefore it uses, for example, a lighter window manager called Matchbox[68].

Hildon is a user interface toolkit based in GTK that targets mobile devices. Hildon was originally developed by Nokia for the Maemo operating system that powered its Tnternet Tablet devices.

Since version 5.0 (also known as Fremantle), Hildon widgets are specially designed to be finger-friendly, that is, easily used on touch-screen devices. Hildon is published under the LGPL license which gives you the right to develop free and open source, as well as commercial, software with Hildon without being charged for licenses or royalties.

Because Hildon is based on GTK, it offers an object-oriented API, although written in C.

GTK is a library for creating user interfaces that is used in a number of important projects like GNOME. This topic includes many references to GTK and Glib. Glib is a library that offers functions to manage memory and data structures, as well as some replacements for standard calls in order to increase portability. For more information on GTK and Glib, refer to GTK and Glib documentation.

This topic is intended for developers and covers the usage of Hildon to create graphical user interfaces. It starts from a simple "Hello World" program and expands to more complex examples, presenting a number of widgets and their usage to accomplish some tasks from a technical point of view. It enables you to understand the process of graphical user interface programming and build effective touch interfaces for mobile devices with Hildon.

This topic assumes a good knowledge of the C programming language. Previous experience in creating graphical user interfaces with GTK will be helpful but not mandatory. It targets the development of graphical user interfaces, not the design of such. For more information on designing interfaces with regard to usability and user experience, see the topic on Hildon Human Interface Guidelines.

Desktop overview
This section gives a brief overview of the Hildon desktop area in order to give you a better understanding of the application domains and layout.

Figure 1 illustrates the look of the desktop when an application's normal window is shown. As for the figure's legend, the following list explains it:


 * A: Task switcher button. Tapping on it, the application is put in second plan and the desktop is quickly shown allowing you to choose any running application, as well as the application you had on before. To access the home view from this new view, press the dimmed area around the applications' thumbnails or launch another task by tapping the task switcher button which in this view becomes a task launcher button.
 * B: Status area button. Provides information about the status of the device or applications. A status view can be accessed by pressing the status area.
 * C: Close button. Closes the application. Note that if the current application's window is a subview (for more information, see Windows and Dialogs 6.5), a back button is displayed instead of a close button. The back button also closes the window but instead of closing the application, it goes back to a previous view.
 * D: Title area. Shows an identifier of the application's current task, usually its name but may also be a document's name, etc. Tapping on it calls the application's menu.
 * F: Application area. Shows the actual application's contents.



Figure 1: Three radio buttons

Hildon Desktop
The end user's desktop experience on Maemo compatible device is provided by the Hildon Desktop that is based on Hildon. The latter provides several libraries to interface with the desktop environment UI elements and services.

Hildon framework's main UI elements are separated to four categories and all of them can be extended with plug-ins:


 * Hildon Home is the root desktop, which can be customized by Hildon home applets.
 * Hildon Status bar provides area for information and quick-access items used mainly to communicate device status changes.
 * Hildon Task Navigator plug-ins implement the top-level desktop menus.
 * Hildon Control Panel is a general interface for application configuration and is extended by control panel plug-ins.

GUI applications in maemo usually contain one or more HildonWindows, which are the top-level application windows. They can include a standardized menubar and a toolbar.

The Hildon framework also includes other auxiliary widgets and services specialized for the Hildon environment. Examples of these are the Hildon-FM library for file system dialogs and widgets, HildonBanner for displaying notifications to the user and HildonWizardDialog for creating wizard user interfaces. For information about Hildon's widgets, see Maemo API References.

Another important element of the Hildon framework is the Hildon Input Method API, which is an interface for creating new user input systems in addition to the included virtual keyboard and handwriting recognition.