<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://maemo.octonezd.me/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=84.155.13.243</id>
	<title>Maemo Wiki Mirror - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://maemo.octonezd.me/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=84.155.13.243"/>
	<link rel="alternate" type="text/html" href="https://maemo.octonezd.me/index.php/Special:Contributions/84.155.13.243"/>
	<updated>2026-04-22T12:31:53Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://maemo.octonezd.me/index.php?title=Documentation/Maemo_5_Developer_Guide/Application_Development/Writing_a_new_maemo_application&amp;diff=6507</id>
		<title>Documentation/Maemo 5 Developer Guide/Application Development/Writing a new maemo application</title>
		<link rel="alternate" type="text/html" href="https://maemo.octonezd.me/index.php?title=Documentation/Maemo_5_Developer_Guide/Application_Development/Writing_a_new_maemo_application&amp;diff=6507"/>
		<updated>2010-01-16T14:55:20Z</updated>

		<summary type="html">&lt;p&gt;84.155.13.243: /* Adding application to menu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
This section is a guide for making new applications for the Maemo platform. Maemo 5 SDK needs to be installed successfully as a pre-requisite. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt; A simple text editor with a few essential features is used as a example. Let us name it as &#039;&#039;MaemoPad&#039;&#039; &amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt; MaemoPad has the following basic features: &#039;&#039;New&#039;&#039;, &#039;&#039;Open&#039;&#039;, &#039;&#039;Save&#039;&#039;, &#039;&#039;Save As...&#039;&#039;, &#039;&#039;Cut&#039;&#039;, &#039;&#039;Copy&#039;&#039;, &#039;&#039;Paste&#039;&#039;, &#039;&#039;Font&#039;&#039;, &#039;&#039;Full Screen&#039;&#039;, &#039;&#039;Full Screen&#039;&#039; hardware key handling, &#039;&#039;Send-Via email/bluetooth&#039;&#039; and &#039;&#039;Close&#039;&#039;. For simplicity, it does not contain advanced features like ``Undo&#039;&#039;, ``Redo&#039;&#039;, different fonts in one document, pictures, tables, etc. &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The figure below is a screenshot of the text editor.&lt;br /&gt;
&lt;br /&gt;
[[Image:Maemopad2.png|500px]]&lt;br /&gt;
&lt;br /&gt;
= Creating the application file structure =&lt;br /&gt;
&lt;br /&gt;
In general, a maemo application uses @@LINK@@ GNU build system and has the following files and subdirectories:&lt;br /&gt;
* &amp;lt;code&amp;gt;src/&amp;lt;/code&amp;gt;: Contains the source files.&lt;br /&gt;
* &amp;lt;code&amp;gt;debian/&amp;lt;/code&amp;gt;: Contains the files related to debian packaging&lt;br /&gt;
* &amp;lt;code&amp;gt;data/&amp;lt;/code&amp;gt;: Contains all data files needed to run the application. Maemopad will need the following data files:&lt;br /&gt;
**&amp;lt;code&amp;gt;.desktop&amp;lt;/code&amp;gt; file &lt;br /&gt;
**D-Bus &amp;lt;code&amp;gt;.service&amp;lt;/code&amp;gt; file &lt;br /&gt;
**application icons in a separate directory called &amp;lt;code&amp;gt;icons/&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;po/&amp;lt;/code&amp;gt;: Contains the localization files. Maemopad contains the following files:&lt;br /&gt;
** &amp;lt;code&amp;gt;POTFILES.in&amp;lt;/code&amp;gt; list the names of the files to be localized.&lt;br /&gt;
** Translation file &amp;lt;code&amp;gt;en_GB.po&amp;lt;/code&amp;gt; containing British English strings for the application.&lt;br /&gt;
** Translation file &amp;lt;code&amp;gt;fi_FI.po&amp;lt;/code&amp;gt; containing Finnish strings for the application.&lt;br /&gt;
* &amp;lt;code&amp;gt;autogen.sh&amp;lt;/code&amp;gt; is a shell script that provides automatic build system preparation.&lt;br /&gt;
* &amp;lt;code&amp;gt;configure.ac&amp;lt;/code&amp;gt; is an input file for &amp;lt;code&amp;gt;autoconf&amp;lt;/code&amp;gt; that contains &amp;lt;code&amp;gt;autoconf&amp;lt;/code&amp;gt; macros that test the system features the package needs or can use. It produces the &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt; script.&lt;br /&gt;
* &amp;lt;code&amp;gt;Makefile.am&amp;lt;/code&amp;gt; is used by &amp;lt;code&amp;gt;automake&amp;lt;/code&amp;gt; to produce a standards-compliant &amp;lt;code&amp;gt;Makefile.in&amp;lt;/code&amp;gt;. The &amp;lt;code&amp;gt;Makefile.am&amp;lt;/code&amp;gt; in the top source directory is usually very simple and includes the files and subdirectories needed to make the application: &amp;lt;code&amp;gt;src/, po/ and data/&amp;lt;/code&amp;gt; and all the &amp;lt;code&amp;gt;Makefile&amp;lt;/code&amp;gt;s in &amp;lt;code&amp;gt;src/, po/, and data/&amp;lt;/code&amp;gt; directories.&lt;br /&gt;
&lt;br /&gt;
You can compile the source as follows:&lt;br /&gt;
 &lt;br /&gt;
  [sbox-FREMANTLE_X86 ~] &amp;gt; ./autogen.sh &lt;br /&gt;
  [sbox-FREMANTLE_X86 ~] &amp;gt;$ ./configure &lt;br /&gt;
  [sbox-FREMANTLE_X86 ~] &amp;gt;$ make&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For more information about GNU autoconf and automake, see chapter [http://wiki.maemo.org/Documentation/Maemo_5_Developer_Guide/GNU_Build_System GNU build system]&lt;br /&gt;
&lt;br /&gt;
= Coding the application =&lt;br /&gt;
&lt;br /&gt;
The src/ directory of MaemoPad contains the following files:&lt;br /&gt;
* main.c&lt;br /&gt;
* maemopad-window.h&lt;br /&gt;
* maemopad-window.c&lt;br /&gt;
* fullscreenmanager.c&lt;br /&gt;
* fullscreenmanage.h&lt;br /&gt;
* Makefile.am&lt;br /&gt;
&lt;br /&gt;
== maemopad-window.h ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[https://garage.maemo.org/svn/maemoexamples/trunk/maemopad/src/maemopad-window.h maemopad-window.h]&amp;lt;/code&amp;gt; defines the &amp;lt;code&amp;gt;MaemopadWindow&amp;lt;/code&amp;gt; structure to hold the application data and other declarations. Even though the data varies depending on the application, a sample structure might look like this:&lt;br /&gt;
&lt;br /&gt;
 typedef struct _MaemopadWindow MaemopadWindow;&lt;br /&gt;
 &lt;br /&gt;
 struct _MaemopadWindow&lt;br /&gt;
 {&lt;br /&gt;
  HildonWindow parent;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;font color=red&amp;gt;/* Osso context, needed for &amp;quot;send via&amp;quot; functionality. */&amp;lt;/font&amp;gt;&lt;br /&gt;
  osso_context_t *osso; &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;font color=red&amp;gt;/* Fullscreen mode is on (TRUE) or off (FALSE): */&amp;lt;/font&amp;gt;&lt;br /&gt;
  gboolean fullscreen;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;font color=red&amp;gt;/* Button items for menu: */&amp;lt;/font&amp;gt;&lt;br /&gt;
  GtkWidget *new_item;&lt;br /&gt;
  GtkWidget *open_item;&lt;br /&gt;
  GtkWidget *save_item;&lt;br /&gt;
  GtkWidget *saveas_item;&lt;br /&gt;
  GtkWidget *cut_item;&lt;br /&gt;
  GtkWidget *copy_item;&lt;br /&gt;
  GtkWidget *paste_item;&lt;br /&gt;
  &amp;lt;font color=red&amp;gt;/*.....more...truncated...*/&amp;lt;/font&amp;gt;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
Where &#039;&#039;MaemopadWindow&#039;&#039; is a structure containing pointers to all the UI objects, such as HildonWindow, menu items, toolbar; and UI-related data, for instance a boolean variable indicating whether the application is in fullscreen mode.&lt;br /&gt;
&lt;br /&gt;
Each application creates its own AppData variable, and this variable is usually passed around as a parameter in the functions, particularly the callback functions, so that the applications data can be accessible by the functions.&lt;br /&gt;
&lt;br /&gt;
Many applications declare this AppData variable as global.&lt;br /&gt;
&lt;br /&gt;
== main.c ==&lt;br /&gt;
&lt;br /&gt;
main.c usually performs, at least, the following functions:&lt;br /&gt;
&lt;br /&gt;
* Initializing GTK&lt;br /&gt;
* Initializing localization&lt;br /&gt;
* Creating an instance of HildonProgram&lt;br /&gt;
* Calling to a function, usually defined in interface.c, to create the main view.&lt;br /&gt;
* Connecting the main view window to the created HildonProgram&lt;br /&gt;
* Running &amp;lt;code&amp;gt;gtk_main()&amp;lt;/code&amp;gt;&lt;br /&gt;
* Connecting the &amp;lt;code&amp;gt;``delete_event&amp;quot;&amp;lt;/code&amp;gt; of the main view to a callback function to handle a proper application exit, such as destroying the main view window, freeing used memory and saving application states before exit.&lt;br /&gt;
* Call &amp;lt;code&amp;gt;gtk_main_quit()&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is the main function of MaemoPad with comments:&lt;br /&gt;
&lt;br /&gt;
 int main (int argc, char* argv[])&lt;br /&gt;
 {&lt;br /&gt;
  osso_context_t *osso = NULL;&lt;br /&gt;
  AppData *data = g_new0 (AppData, 1);&lt;br /&gt;
 &lt;br /&gt;
  &amp;lt;font color=red&amp;gt;/* Initialize the locale stuff: */&amp;lt;/font&amp;gt;&lt;br /&gt;
  setlocale (LC_ALL, &amp;quot;&amp;quot;);&lt;br /&gt;
  bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);&lt;br /&gt;
  bind_textdomain_codeset(GETTEXT_PACKAGE, &amp;quot;UTF-8&amp;quot;);&lt;br /&gt;
  textdomain (GETTEXT_PACKAGE);&lt;br /&gt;
 &lt;br /&gt;
  &amp;lt;font color=red&amp;gt;/* Inititialize GTK+ and hildon: */&amp;lt;/font&amp;gt;&lt;br /&gt;
  hildon_gtk_init (&amp;amp;argc, &amp;amp;argv);&lt;br /&gt;
 &lt;br /&gt;
  if (!g_thread_supported()) {&lt;br /&gt;
    g_thread_init (NULL);&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
  &amp;lt;font color=red&amp;gt;/* Create the hildon application and setup the title: */&amp;lt;/font&amp;gt;&lt;br /&gt;
  data-&amp;gt;program = HILDON_PROGRAM (hildon_program_get_instance ());&lt;br /&gt;
  g_set_application_name (_(&amp;quot;MaemoPad&amp;quot;));&lt;br /&gt;
 &lt;br /&gt;
  &amp;lt;font color=red&amp;gt;/* We need the osso context to call libmodest_dbus_client_compose_mail() later. */&amp;lt;/font&amp;gt;&lt;br /&gt;
  osso = osso_initialize (OSSO_SERVICE, VERSION, TRUE, NULL);&lt;br /&gt;
  g_assert (osso);&lt;br /&gt;
 &lt;br /&gt;
  &amp;lt;font color=red&amp;gt;/* Create the window for our application: */&amp;lt;/font&amp;gt;&lt;br /&gt;
  data-&amp;gt;window = maemopad_window_new (osso);&lt;br /&gt;
  hildon_program_add_window (data-&amp;gt;program, data-&amp;gt;window);&lt;br /&gt;
 &lt;br /&gt;
  &amp;lt;font color=red&amp;gt;/* Show the main window and start the mainloop, &lt;br /&gt;
   * quitting the mainloop when it the main window is hidden:&lt;br /&gt;
   */&amp;lt;/font&amp;gt;&lt;br /&gt;
  gtk_widget_show (GTK_WIDGET (data-&amp;gt;window));&lt;br /&gt;
  g_signal_connect(data-&amp;gt;window, &amp;quot;hide&amp;quot;, G_CALLBACK (&amp;amp;on_main_window_hide), NULL);&lt;br /&gt;
  g_signal_connect(data-&amp;gt;window, &amp;quot;delete_event&amp;quot;, &lt;br /&gt;
    G_CALLBACK (&amp;amp;gtk_widget_hide_on_delete), NULL);&lt;br /&gt;
  gtk_main();&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;font color=red&amp;gt;/* Clean up: */&amp;lt;/font&amp;gt;&lt;br /&gt;
  gtk_widget_destroy (GTK_WIDGET (data-&amp;gt;window));&lt;br /&gt;
  g_free (data);&lt;br /&gt;
 &lt;br /&gt;
  return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= User interface =&lt;br /&gt;
&lt;br /&gt;
The graphical user interface code is implemented in directory &#039;&#039;&#039;./src/ui/&#039;&#039;&#039;. It contains two .c files: interface.c and callbacks.c&lt;br /&gt;
&lt;br /&gt;
== interface.c ==&lt;br /&gt;
&lt;br /&gt;
This file creates the graphical user interface (GUI) and connects the signals and events to appropriate handlers defined in callbacks.c. See section [localhost#sec:writing_maemo_gui_applications [[Image:crossref.png|[*]]]] for information on how to create GUI in Maemo. For more information on GTK see the GTK+ Reference Manual [[/node22.html#maemoapi 52]].&lt;br /&gt;
&lt;br /&gt;
As a general practice, an AppUIData struct variable is created when creating the GUI. And then, a HildonWindow and smaller components are created in different functions, such as &amp;lt;code&amp;gt;create_menu()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;create_toolbar()&amp;lt;/code&amp;gt;. When creating each component, AppUIData should refer various necessary UI objects created along the way.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt; The following excerpt shows how AppUIData is created, and how it points to the toolbar and the button ``New file&#039;&#039; on the toolbar. &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&amp;lt;span&amp;gt;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Creates and initializes a main_view */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 AppUIData&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;interface_main_view_new&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; AppData &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;data &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;)&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span&amp;gt;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Zero memory with g_new0 */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
     AppUIData&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; result &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;g_new0&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; AppUIData&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#993399&amp;quot;&amp;gt;1&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span&amp;gt;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/*....*/&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;create_toolbar&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; result &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span&amp;gt;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/*....*/&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Create toolbar to mainview */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;static&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;void&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;create_toolbar&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; AppUIData &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;main &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;)&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span&amp;gt;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Create new GTK toolbar */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
     main&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;-&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;toolbar &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;gtk_toolbar_new&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;();&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span&amp;gt;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/*....*/&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span&amp;gt;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Create the &amp;quot;New file&amp;quot; button in the toolbar */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
     main&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;-&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;new_tb &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;gtk_tool_button_new_from_stock&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;GTK_STOCK_NEW&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span&amp;gt;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/*....*/&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== callbacks.c ==&lt;br /&gt;
&lt;br /&gt;
callbacks.c defines all the functions that handle the signals or events that might be triggered by the UI. When creating different UI objects in interface.c, the handlers are registered as follows.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&amp;lt;span&amp;gt;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Create the menu items needed for the drop down menu */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;static&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;void&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;create_menu&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; AppUIData &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;main &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;)&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span&amp;gt;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* ... */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
     main&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;-&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;new_item &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;gtk_menu_item_new_with_label&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;_&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;New&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;)&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span&amp;gt;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* ... */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span&amp;gt;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Attach the callback functions to the activate signal */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;g_signal_connect&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;G_OBJECT&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; main&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;-&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;new_item &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;),&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;activate&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
                       &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;G_CALLBACK&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; callback_file_new&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;),&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; main &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span&amp;gt;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* ... */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Function callback_file_new is implemented in callbacks.c, saving the current file if needed, and then opening a new file to edit.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;void&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;callback_file_new&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;GtkAction &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; action&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; gpointer data&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;)&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
     gint answer&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
     AppUIData &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;mainview &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; NULL&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
     mainview &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; AppUIData &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;)&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; data&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;g_assert&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;mainview &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;!=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; NULL &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;amp;amp;&amp;amp;amp;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; mainview&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;-&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;data &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;!=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; NULL &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span&amp;gt;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* save changes note if file is edited */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;if&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; mainview&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;-&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;file_edited &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;)&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
         answer &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;interface_save_changes_note&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; mainview &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
         &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;if&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; answer &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;==&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; CONFRESP_YES &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;)&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
             &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;if&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; mainview&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;-&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;file_name &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;==&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; NULL &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;)&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
                 mainview&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;-&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;file_name &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;interface_file_chooser&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;mainview&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; GTK_FILE_CHOOSER_ACTION_SAVE&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
             &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
             &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;write_buffer_to_file&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; mainview &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
         &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span&amp;gt;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* clear buffer, filename and free buffer text */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;gtk_text_buffer_set_text&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;GTK_TEXT_BUFFER&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;mainview&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;-&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;buffer&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;),&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;-&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#993399&amp;quot;&amp;gt;1&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
     mainview&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;-&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;file_name &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; NULL&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
     mainview&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;-&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;file_edited &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; FALSE&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
N.B. The AppUIData struct variable &#039;&#039;mainview&#039;&#039; is retrieved in such a way that the handlers can have a direct effect on the UI for the users.&lt;br /&gt;
&lt;br /&gt;
MaemoPad contains many functions:&lt;br /&gt;
&lt;br /&gt;
* File Save/Save-As/Open: This uses HildonFileChooserDialog.&lt;br /&gt;
* Edit Cut/Copy/Paste: This uses Clipboard ([/node13.html#sec:clipboard_usage 12.2])&lt;br /&gt;
* Hardware keys: MaemoPad can recognize the ``Fullscreen`` button key presses (F6). It switches the application from fullscreen mode to normal mode, and vice versa. Many other hardware key events can be added to MaemoPad, see section [localhost#sec:hardware_keys 8.3.3].&lt;br /&gt;
* Font/Color Selector: These are explained in HildonFontSelectionDialog and HildonColorChooser.&lt;br /&gt;
* Send via Email/Bluetooth: Refer to section &#039;&#039;&amp;lt;nowiki&amp;gt;``Send via&#039;&#039; functionality&amp;lt;/nowiki&amp;gt;&#039;&#039; [/node13.html#sec:send_via_functionality 12.3] on chapter &#039;&#039;Using Generic Platform Components&#039;&#039; of Maemo Reference Manual for instructions on how to implement Send via functionality.&lt;br /&gt;
&lt;br /&gt;
More information on GTK Widgets can be found on the [http://maemo.org/api_refs/4.0/gtk/GtkWidget.html GTK+ Reference Manual].&lt;br /&gt;
&lt;br /&gt;
== interface.h ==&lt;br /&gt;
&lt;br /&gt;
In the interface header file interface.h, public functions are defined for main.c and callbacks.c. In the case of MaemoPad, confirmation responses for the save changes note, MaemopadError enum for the Hildon error note and the AppUIData are also defined here. &#039;&#039;&#039;N.B.&#039;&#039;&#039; AppUIData can also be defined in appdata.h in some other applications. MaemoPad&#039;s interface.h looks like this:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000080&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;#define&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt; MAIN_VIEW_NAME &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;AppUIData&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;typedef&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;enum&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
     MAEMOPAD_NO_ERROR &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#993399&amp;quot;&amp;gt;0&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
     MAEMOPAD_ERROR_INVALID_URI&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
     MAEMOPAD_ERROR_SAVE_FAILED&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
     MAEMOPAD_ERROR_OPEN_FAILED&lt;br /&gt;
 &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; MaemopadError&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Struct to include view&#039;s information */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;typedef&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;struct&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;_AppUIData&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; AppUIData&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;struct&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;_AppUIData&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span&amp;gt;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Handle to app&#039;s data */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
     AppData &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;data&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span&amp;gt;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Fullscreen mode is on (TRUE) or off (FALSE) */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
     gboolean fullscreen&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span&amp;gt;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Items for menu */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
     GtkWidget &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;file_item&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
     GtkWidget &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;new_item&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span&amp;gt;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* ... */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
     GtkWidget &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;font_item&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
     GtkWidget &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;fullscreen_item&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span&amp;gt;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Toolbar */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
     GtkWidget&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; toolbar&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
     GtkWidget&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; iconw&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
     GtkToolItem&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; new_tb&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
     GtkToolItem&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; open_tb&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span&amp;gt;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* ... */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span&amp;gt;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Textview related */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
     GtkWidget&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; scrolledwindow&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;   &amp;lt;span&amp;gt;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* textview is under this widget */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
     GtkWidget&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; textview&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;         &amp;lt;span&amp;gt;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* widget that shows the text */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
     GtkTextBuffer&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; buffer&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;       &amp;lt;span&amp;gt;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* buffer that contains the text */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
     GtkClipboard&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; clipboard&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;     &amp;lt;span&amp;gt;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* clipboard for copy/paste */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
     PangoFontDescription&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; font_desc&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;    &amp;lt;span&amp;gt;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* font used in textview */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
     gboolean file_edited&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;     &amp;lt;span&amp;gt;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* tells is our file on view edited */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
     gchar&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; file_name&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;         &amp;lt;span&amp;gt;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* directory/file under editing */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Public functions: */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 AppUIData&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;interface_main_view_new&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; AppData&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; data &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;void&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;interface_main_view_destroy&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; AppUIData&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; main &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;char&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;interface_file_chooser&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; AppUIData&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; main&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; GtkFileChooserAction action &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 PangoFontDescription&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;interface_font_chooser&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; AppUIData &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; main &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* ... */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Localization =&lt;br /&gt;
&lt;br /&gt;
Localization means translating the application into different languages. In Maemo, this is fairly easily performed by grouping all the strings needing translations into a .po file, giving them each an id, and then using the id in the code instead of hard-coded strings. The function used to generate the translated strings from an id in Maemo is the standard GNU &amp;lt;code&amp;gt;gettext()&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Initialization ==&lt;br /&gt;
&lt;br /&gt;
When the application runs, &amp;lt;code&amp;gt;gettext()&amp;lt;/code&amp;gt; is used to determine the correct language depending on the locale settings. The application initializes the text domain as follows:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;int&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;main&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;int&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; argc&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;char&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; argv&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;[]&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;)&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span&amp;gt;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* ... */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span&amp;gt;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Initialize the locale stuff */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;setlocale&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; LC_ALL&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;bindtextdomain&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; GETTEXT_PACKAGE&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; LOCALEDIR &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;bind_textdomain_codeset&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;GETTEXT_PACKAGE&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;UTF-8&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;textdomain&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; GETTEXT_PACKAGE &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span&amp;gt;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* ... */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
More information on localization can be found in section [/node17.html#sec:maemo_localization 16.4].&lt;br /&gt;
&lt;br /&gt;
== File structure ==&lt;br /&gt;
&lt;br /&gt;
Localization files are stored in the po/ directory. The following files are used for MaemoPad localization:&lt;br /&gt;
&lt;br /&gt;
 Makefile.am&lt;br /&gt;
 POTFILES.in&lt;br /&gt;
 en_GB.po&lt;br /&gt;
&lt;br /&gt;
POTFILES.in contains the list of the source code files to be localized. In MaemoPad, only main.c and interface.c contain strings that need to be localized.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&amp;lt;span&amp;gt;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# List of MaemoPad source files to be localized&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;..&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;/src/main&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;.&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;c&lt;br /&gt;
 &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;..&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;/src/ui/interface&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;.&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;c&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
File en_GB.po includes translated text for British English. It contains pairs of id/string as follows:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&amp;lt;span&amp;gt;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# ...&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 msgid &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;maemopad_yes&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 msgstr &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;Yes&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# ...&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;N.B.&#039;&#039;&#039; The comments in .po file start with ``#``.&lt;br /&gt;
&lt;br /&gt;
== Using en_GB.po ==&lt;br /&gt;
&lt;br /&gt;
The msgid(s) are passed to the GNU &amp;lt;code&amp;gt;gettext()&amp;lt;/code&amp;gt; function as a parameter to generate the translated string. In Maemo, the recommended way is&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000080&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;#define&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;_&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;String&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;)&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;gettext&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;String&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;)&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Therefore, in MaemoPad, the string for Menu-&amp;amp;gt;File-&amp;amp;gt;Open menu is created as follows:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;    main&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;-&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;open_item &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;gtk_menu_item_new_with_label&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;_&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;Open&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;)&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 8.8.5.4 Creating .po files from source ===&lt;br /&gt;
&lt;br /&gt;
Sometimes code must be localized for applications that were not originally designed for localization. You can create .po files from source code using [http://www.gnu.org/software/gettext/ GNU xgettext][], by extracting all the strings from the source files into a template.po file&lt;br /&gt;
&lt;br /&gt;
 xgettext -f POTFILES.in -C -a -o template.po&lt;br /&gt;
&lt;br /&gt;
Read the man page for xgettext for more information, in short:&lt;br /&gt;
&lt;br /&gt;
* ``-f POTFILES.in`` uses POTFILES.in to get the files to be localized&lt;br /&gt;
* ``-C`` is for C-code type of strings&lt;br /&gt;
* ``-a`` is for ensuring that we get all strings from specified files&lt;br /&gt;
* ``-o template.po`` defines the output filename.&lt;br /&gt;
&lt;br /&gt;
The next step is to copy this template.po into ./po/en_GB.po and add or edit all the strings in British English. Other languages can be handled in the same way.&lt;br /&gt;
&lt;br /&gt;
= Adding application to menu =&lt;br /&gt;
&lt;br /&gt;
See section [localhost#sec:getting_app_to_task_navigator_menu 8.6.1] for information on how to perform this. In short, the maemopad.desktop and com.nokia.maemopad.service files are stored in the ./data directory, and they look like this, respectively&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;[Desktop Entry]&lt;br /&gt;
 Encoding=UTF-8&lt;br /&gt;
 Version=0.1&lt;br /&gt;
 Type=Application&lt;br /&gt;
 Name=MaemoPad&lt;br /&gt;
 Exec=/usr/bin/maemopad&lt;br /&gt;
 Icon=maemopad&lt;br /&gt;
 X-Window-Icon=maemopad&lt;br /&gt;
 X-Window-Icon-Dimmed=maemopad&lt;br /&gt;
 X-Osso-Service=com.nokia.maemopad&lt;br /&gt;
 X-Osso-Type=application/x-executable&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(&#039;&#039;&#039;N.B.&#039;&#039;&#039; Whitespace is not allowed after the lines.)&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;# Service description file&lt;br /&gt;
 [D-BUS Service]&lt;br /&gt;
 Name=com.nokia.maemopad&lt;br /&gt;
 Exec=/usr/bin/maemopad&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These files reside on the device here:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
/usr/share/applications/hildon&lt;br /&gt;
/usr/share/dbus-1/services&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Link to Maemo menu =&lt;br /&gt;
&lt;br /&gt;
When the Debian package is installed to Maemo platform, .desktop and .service files are used to link MaemoPad to the Task Navigator.&lt;br /&gt;
&lt;br /&gt;
== Adding help =&lt;br /&gt;
&lt;br /&gt;
Applications can have their own help files. Help files are XML files located under the &amp;lt;code&amp;gt;/usr/share/osso-help&amp;lt;/code&amp;gt; directory. Each language is located in its own subdirectory, such as &amp;lt;code&amp;gt;/usr/share/osso-help/en_GB&amp;lt;/code&amp;gt; for British English help files. MaemoPad has &amp;lt;code&amp;gt;data/help/en_GB/MaemoPad.xml&amp;lt;/code&amp;gt; with very simple help content. The middle part of the contextUID must be the same as the help file name (without suffix):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000080&amp;quot;&amp;gt;&amp;amp;lt;?xml&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;version&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;1.0&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;encoding&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;UTF-8&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000080&amp;quot;&amp;gt;?&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;amp;lt;hildonhelpsource&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
   &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;amp;lt;folder&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;amp;lt;title&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt;MaemoPad&amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;amp;lt;/title&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;amp;lt;topic&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
       &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;amp;lt;topictitle&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt;Main Topic&amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;amp;lt;/topictitle&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
       &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;amp;lt;context&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;contextUID&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;Example_MaemoPad_Content&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;/&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
       &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;amp;lt;para&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt;This is a help file with example content.&amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;amp;lt;/para&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;amp;lt;/topic&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
   &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;amp;lt;/folder&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;amp;lt;/hildonhelpsource&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
By using &amp;lt;code&amp;gt;hildon_help_show()&amp;lt;/code&amp;gt; function (see hildon-help.h), this help content can be shown in the application. After creating a Help menu item, a callback function can be connected to it:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;void&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;callback_help&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; GtkAction &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; action&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; gpointer data &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;)&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
     osso_return_t retval&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span&amp;gt;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* connect pointer to our AppUIData struct */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
     AppUIData &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;mainview &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; NULL&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
     mainview &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; AppUIData &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;)&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; data&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;g_assert&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;mainview &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;!=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; NULL &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;amp;amp;&amp;amp;amp;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; mainview&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;-&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;data &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;!=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; NULL &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
     retval &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&#039;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;hildon_help_show&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
       mainview&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;-&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;data&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;-&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;osso&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* osso_context */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
       HELP_TOPIC_ID&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;        &amp;lt;span&amp;gt;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* topic id */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
       HILDON_HELP_SHOW_DIALOG&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Packaging the application =&lt;br /&gt;
&lt;br /&gt;
A Debian package is an application packed in one file to make installing easy in Debian-based operating systems, like Maemo platform. More information about creating a Debian packages can be found in section &#039;&#039;Creating Debian packages&#039;&#039; [/node18.html#sec:creating_debian_packages 17.1] of Maemo Reference Manual Chapter &#039;&#039;Packaging, Deploying and Distributing&#039;&#039;. Our goal in this section is to create a Debian package of MaemoPad, to be installed in the Maemo platform.&lt;br /&gt;
&lt;br /&gt;
If creating a package that can be installed using the Application Manager, see section &#039;&#039;Making application packages&#039;&#039; [/node18.html#sec:making_app_pack 17.2] of the same aforementioned chapter.&lt;br /&gt;
&lt;br /&gt;
== Creating debian/ Directory ==&lt;br /&gt;
&lt;br /&gt;
In order to create the package, the following files are created in the debian/ directory:&lt;br /&gt;
&lt;br /&gt;
 changelog&lt;br /&gt;
 control&lt;br /&gt;
 copyright&lt;br /&gt;
 rules&lt;br /&gt;
 ... etc ...&lt;br /&gt;
&lt;br /&gt;
The &#039;rules&#039; file is the file defining how the Debian package is built. The &#039;rules&#039; file tells where the files should be installed. Also a &#039;control&#039; file is needed to define what kind of packages (often different language versions) are going to be created. Changelog and copyright files are also needed, or the package does not build. The &#039;changelog&#039; file consists of the version number of the package, and a short description about changes compared to older versions. The &#039;copyright&#039; file includes information in plain text about the package copyrights.&lt;br /&gt;
&lt;br /&gt;
Most important lines in rules file are:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&amp;lt;span&amp;gt;&#039;&#039;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# Add here commands to install the package into debian/&amp;amp;lt;installation directory&amp;amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;$(MAKE)&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; install &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;DESTDIR&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;$(CURDIR)&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;/debian&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;/&amp;amp;lt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;installation directory&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These lines define where the package files are installed. debian/&amp;amp;lt;installation directory&amp;amp;gt; is used as a temporary directory for package construction.&lt;br /&gt;
&lt;br /&gt;
== Creating and building the package ==&lt;br /&gt;
&lt;br /&gt;
The package is made using the following command:&lt;br /&gt;
&lt;br /&gt;
 dpkg-buildpackage -rfakeroot -uc -us -sa -D&lt;br /&gt;
&lt;br /&gt;
The result should be these MaemoPad files:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;maemopad_x.x.dsc&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;maemopad_x.x.tar.gz&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;maemopad_x.x_i386.changes&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;maemopad_x.x_i386.deb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt; A .deb file now exists. This package can be installed using ``fakeroot dpkg -i maemopad_x.x_i386.deb&#039;&#039; command. The icon to the application should now be in the Maemo Task Navigator menu, and it should be launchable from there. To remove the package, use the command ``fakeroot dpkg -r maemopad&#039;&#039;. &amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>84.155.13.243</name></author>
	</entry>
</feed>