PyMaemo/UI tutorial/Controls

= Controls = Hildon provides a set of controls specially designed for touchscreens that allows to build simple and easy-to-use interfaces. This chapter explains how to use these widgets.

Buttons
A Hildon application can use several types of buttons. Hildon provides specialized buttons derived from GtkButton which provide additional commodities specific to the Hildon framework. Using GtkButtons and GtkToggleButtons is also recommended.

Hildon Button
HildonButton is a GtkButton which usually contains two labels, title and value. It can also include an image.

To create a HildonButton, use the following functions:

GtkWidget  *  hildon_button_new                ( HildonSizeType size ,                                               HildonButtonArrangement arrangement ); GtkWidget  *  hildon_button_new_with_text      ( HildonSizeType size ,                                               HildonButtonArrangement arrangement ,                                                const  gchar  * title ,                                                const  gchar  * value <font color="#990000">) </tt>

Note that in the creation of a HildonButton you must indicate the value for the properties "size" and "arrangement", choosing a Hildon size and a horizontal or vertical arrangement of the labels.

You can set and retrieve both labels by using the following convenience functions:

<tt> <font color="#009900">void        <font color="#000000">hildon_button_set_title          <font color="#990000">( HildonButton <font color="#990000"> * button <font color="#990000">,                                                <font color="#0000FF">const  gchar <font color="#990000"> * title <font color="#990000">); <font color="#009900">void        <font color="#000000">hildon_button_set_value          <font color="#990000">( HildonButton <font color="#990000"> * button <font color="#990000">,                                                <font color="#0000FF">const  gchar <font color="#990000"> * value <font color="#990000">);  <font color="#0000FF">const  gchar <font color="#990000"> *  <font color="#000000">hildon_button_get_title         <font color="#990000">( HildonButton <font color="#990000"> * button <font color="#990000">);  <font color="#0000FF">const  gchar <font color="#990000"> *  <font color="#000000">hildon_button_get_value         <font color="#990000">( HildonButton <font color="#990000"> * button <font color="#990000">); </tt>

Alternatively, use the following function to set both labels of a HildonButton:

<tt> <font color="#009900">void        <font color="#000000">hildon_button_set_text           <font color="#990000">( HildonButton <font color="#990000"> * button <font color="#990000">,                                                <font color="#0000FF">const  gchar <font color="#990000"> * title <font color="#990000">,                                                <font color="#0000FF">const  gchar <font color="#990000"> * value <font color="#990000">); </tt>

To add images to HildonButtons, use the following functions to set and retrieve the current image:  and.

You can also set the position of the image.

<tt> <font color="#009900">void        <font color="#000000">hildon_button_set_image_position   <font color="#990000">( HildonButton <font color="#990000"> * button <font color="#990000">,                                                GtkPositionType position <font color="#990000">); </tt>

Currently supported positions are GTK_POS_LEFT or GTK_POS_RIGHT.

The visual style (color, fonts, etc) of a HildonButton can be changed by using the function. Use HILDON_BUTTON_STYLE_NORMAL to make it look like a normal HildonButton, or HILDON_BUTTON_STYLE_PICKER to make it look like a HildonPickerButton.

The next simple example shows how to create a HildonButton, set the label text and add an image.

'''Example 7.1. Example of a Hildon button with a label and an image'''

<tt>GtkWidget <font color="#990000"> *  <font color="#000000">create_button  <font color="#990000">(  <font color="#009900">void  <font color="#990000">) <font color="#FF0000">{ GtkWidget <font color="#990000"> * button <font color="#990000"> ; GtkWidget <font color="#990000"> * image <font color="#990000"> ;  <font color="#9A1900">/* Create a hildon button */  button <font color="#990000"> =  <font color="#000000">hildon_button_new   <font color="#990000">( HILDON_SIZE_AUTO_WIDTH <font color="#990000"> | HILDON_SIZE_FINGER_HEIGHT <font color="#990000">,                                  HILDON_BUTTON_ARRANGEMENT_VERTICAL <font color="#990000">);  <font color="#9A1900">/* Set labels value */   <font color="#000000">hildon_button_set_text  <font color="#990000">(   <font color="#000000">HILDON_BUTTON   <font color="#990000">( button <font color="#990000">),  <font color="#FF0000">"Some title"  <font color="#990000">,  <font color="#FF0000">"Some value"  <font color="#990000">);  <font color="#9A1900">/* Set image */  image <font color="#990000"> =  <font color="#000000">gtk_image_new_from_stock   <font color="#990000">( GTK_STOCK_INFO <font color="#990000">, GTK_ICON_SIZE_BUTTON <font color="#990000">);  <font color="#000000">hildon_button_set_image  <font color="#990000">(   <font color="#000000">HILDON_BUTTON   <font color="#990000">( button <font color="#990000">), image <font color="#990000">);  <font color="#000000">hildon_button_set_image_position  <font color="#990000">(   <font color="#000000">HILDON_BUTTON   <font color="#990000">( button <font color="#990000">), GTK_POS_RIGHT <font color="#990000">);  <font color="#0000FF">return  button <font color="#990000"> ; <font color="#FF0000">} </tt>

Hildon Check Button
HildonCheckButton is a button that contains a label and a check box. The check box toggles between checked or unchecked.

To create a HildonCheckButton:

<tt> GtkWidget <font color="#990000"> *  <font color="#000000">hildon_check_button_new          <font color="#990000">( HildonSizeType size <font color="#990000">); </tt>

Note that, again, you must specify the size of the button.

You can retrieve or set the current state of the button with the following functions, respectively:

<tt>gboolean    <font color="#000000">hildon_check_button_get_active   <font color="#990000">( HildonCheckButton <font color="#990000"> * button <font color="#990000">); <font color="#009900">void        <font color="#000000">hildon_check_button_set_active   <font color="#990000">( HildonCheckButton <font color="#990000"> * button <font color="#990000">,                                               gboolean is_active <font color="#990000">); </tt>

The signal "toggled" is emitted when the state of the button changes. A handler can be attached to this signal if a further action is required.

Here is a simple example which creates a check button and a simple callback to handle the signal "toggled".

'''Example 7.2. Example of a Hildon check button'''

<tt> <font color="#009900">void  <font color="#000000">button_toggled  <font color="#990000">( HildonCheckButton <font color="#990000"> * button <font color="#990000">, gpointer user_data <font color="#990000">) <font color="#FF0000">{ gboolean active <font color="#990000"> ; active <font color="#990000"> =  <font color="#000000">hildon_check_button_get_active   <font color="#990000">( button <font color="#990000">);  <font color="#0000FF">if  <font color="#990000">( active <font color="#990000">)  <font color="#000000">g_debug  <font color="#990000">(  <font color="#FF0000">"Button is active"  <font color="#990000">);  <font color="#0000FF">else   <font color="#000000">g_debug  <font color="#990000">(  <font color="#FF0000">"Button is not active"  <font color="#990000">); <font color="#FF0000">} GtkWidget <font color="#990000"> *  <font color="#000000">create_button  <font color="#990000">(  <font color="#009900">void  <font color="#990000">) <font color="#FF0000">{ GtkWidget <font color="#990000"> * button <font color="#990000"> ; button <font color="#990000"> =  <font color="#000000">hildon_check_button_new   <font color="#990000">( HILDON_SIZE_AUTO <font color="#990000">);  <font color="#000000">gtk_button_set_label  <font color="#990000">(   <font color="#000000">GTK_BUTTON   <font color="#990000">( button <font color="#990000">),  <font color="#FF0000">"Click me"  <font color="#990000">);  <font color="#000000">g_signal_connect  <font color="#990000">( button <font color="#990000">,  <font color="#FF0000">"toggled"  <font color="#990000">,   <font color="#000000">G_CALLBACK   <font color="#990000">( button_toggled <font color="#990000">), NULL <font color="#990000">);  <font color="#0000FF">return  button <font color="#990000"> ; <font color="#FF0000">} </tt>

Using Gtk Buttons and Toggles
As was said above, apart from Hildon specific buttons, use GtkButton and GtkToggleButton also in the Hildon framework.

GtkButton
If only a label is needed, you do not need to use HildonButtons and a GtkButton can be used instead. You can use it as you would do in a GTK application. The only change is the creation function that you must use:

<tt>GtkWidget <font color="#990000"> *  <font color="#000000">hildon_gtk_button_new            <font color="#990000">( HildonSizeType size <font color="#990000">); </tt>

This alternative constructor allows you to set a Hildon size for the newly create function.

GtkToggleButton
To create a GtkToggleButton in a Hildon application you should use:

<tt>GtkWidget <font color="#990000"> *  <font color="#000000">hildon_gtk_toggle_button_new     <font color="#990000">( HildonSizeType size <font color="#990000">); </tt>

GtkRadioButton
To create a GtkRadioButton in a Hildon application, use:

<tt>GtkWidget <font color="#990000"> *  <font color="#000000">hildon_gtk_radio_button_new      <font color="#990000">( HildonSizeType size <font color="#990000">,                                               GSList <font color="#990000"> * group <font color="#990000">); </tt>

The most common use case of this type of buttons in a Hildon application is as filters in a application menu. For more information, see section Touch View Menu.

Text display and handling
Text entry fields are used for entering one or more lines of plain text. Use a HildonEntry for a single-line text input or HildonTextView if you need a multi-line text input.

Hildon Text Entry
The HildonEntry is a GTK+ widget which represents a text entry. It is derived from the GtkEntry widget and provides additional commodities specific to the Hildon framework.

The main additional feature is a placeholder text to display if the entry is empty and not in focus.

Creating a new HildonEntry:

<tt>GtkWidget <font color="#990000"> *  <font color="#000000">hildon_entry_new                 <font color="#990000">( HildonSizeType size <font color="#990000">); </tt>

Note that the creation function needs to specify a size from HildonSizeType.

The placeholder is stored as a property. To set it, use the following convenience function:

<tt> <font color="#009900">void        <font color="#000000">hildon_entry_set_placeholder     <font color="#990000">( HildonEntry <font color="#990000"> * entry <font color="#990000">,                                                <font color="#0000FF">const  gchar <font color="#990000"> * text <font color="#990000">); </tt>

Here's a very simple example showing how to create a HindonEntry.

'''Example 7.3. Example of a Hildon entry'''

<tt>GtkWidget <font color="#990000"> *  <font color="#000000">create_entry  <font color="#990000">(  <font color="#009900">void  <font color="#990000">) <font color="#FF0000">{ GtkWidget <font color="#990000"> * entry <font color="#990000"> ; entry <font color="#990000"> =  <font color="#000000">hildon_entry_new   <font color="#990000">( HILDON_SIZE_AUTO <font color="#990000">);  <font color="#000000">hildon_entry_set_placeholder  <font color="#990000">(   <font color="#000000">HILDON_ENTRY   <font color="#990000">( entry <font color="#990000">),  	                          <font color="#FF0000">"First name"  <font color="#990000">);  <font color="#0000FF">return  entry <font color="#990000"> ; <font color="#FF0000">} </tt>

Hildon Text Area
The HildonTextView is a GTK+ widget which represents a text area in Hildon applications. It is derived from the GtkTextView widget and provides additional commodities specific to the Hildon framework.

Create a HildonTextView:

<tt>GtkWidget <font color="#990000"> *  <font color="#000000">hildon_text_view_new             <font color="#990000">(  <font color="#009900">void  <font color="#990000">); </tt>

Like for the HildonTextEntry presented above, you can store a placeholder as well using the function.

<tt> <font color="#009900">void        <font color="#000000">hildon_text_view_set_placeholder     <font color="#990000">( HildonEntry <font color="#990000"> * entry <font color="#990000">,                                                    <font color="#0000FF">const  gchar <font color="#990000"> * text <font color="#990000">); </tt>

The text that is being edited with a HildonTextView is represented by a object GtkTextBuffer. The following functions can be used to set and retrieve the buffer associated with a HildonTextView.

<tt> <font color="#009900">void        <font color="#000000">hildon_text_view_set_buffer          <font color="#990000">( HildonTextView <font color="#990000"> * text_view <font color="#990000">,                                                   GtkTextBuffer <font color="#990000"> * buffer <font color="#990000">); GtkTextBuffer <font color="#990000"> *  <font color="#000000">hildon_text_view_get_buffer       <font color="#990000">( HildonTextView <font color="#990000"> * text_view <font color="#990000">); </tt>

Here is an example that shows how to create a HildonTextView and how to set its placeholder. Also, the buffer is retrieved and a function is set as a handler to the "changed" of the buffer. The handler simply gets the text from the HildonTextView's buffer and prints it.

'''Example 7.4. Example of a Hildon text view with a placeholder'''

<tt>  <font color="#0000FF">static  <font color="#009900">void  <font color="#000000">text_changed                                    <font color="#990000">( GtkTextBuffer <font color="#990000"> * buffer <font color="#990000">,                                                   gpointer      <font color="#990000"> * user_data <font color="#990000">) <font color="#FF0000">{ gchar <font color="#990000"> * text <font color="#990000"> ; GtkTextIter start <font color="#990000">, end <font color="#990000"> ;  <font color="#000000">gtk_text_buffer_get_start_iter  <font color="#990000">( buffer <font color="#990000">,  <font color="#990000">&amp; start <font color="#990000">);  <font color="#000000">gtk_text_buffer_get_end_iter  <font color="#990000">( buffer <font color="#990000">,  <font color="#990000">&amp; end <font color="#990000">); text <font color="#990000"> =  <font color="#000000">gtk_text_buffer_get_text   <font color="#990000">( buffer <font color="#990000">,  <font color="#990000">&amp; start <font color="#990000">,  <font color="#990000">&amp; end <font color="#990000">, FALSE <font color="#990000">);  <font color="#000000">g_debug  <font color="#990000">( text <font color="#990000">); <font color="#FF0000">} GtkWidget <font color="#990000"> *  <font color="#000000">create_text_view  <font color="#990000">(  <font color="#009900">void  <font color="#990000">) <font color="#FF0000">{ GtkWidget <font color="#990000"> * text_view <font color="#990000"> ; text_view <font color="#990000"> =  <font color="#000000">hildon_text_view_new   <font color="#990000">;  <font color="#000000">hildon_text_view_set_placeholder  <font color="#990000">(   <font color="#000000">HILDON_TEXT_VIEW   <font color="#990000">( text_view <font color="#990000">),                                        <font color="#FF0000">"Type some text here"  <font color="#990000">); buffer <font color="#990000"> =  <font color="#000000">hildon_text_view_get_buffer   <font color="#990000">( textview <font color="#990000">);  <font color="#000000">g_signal_connect  <font color="#990000">( buffer <font color="#990000">,                        <font color="#FF0000">"changed"  <font color="#990000">,                         <font color="#000000">G_CALLBACK   <font color="#990000">( text_changed <font color="#990000">),                        NULL <font color="#990000">);  <font color="#0000FF">return  text_view <font color="#990000"> ; <font color="#FF0000">} </tt>

Warning
Although HildonTextView is derived from GtkTextView,  and  must never be used to get/set the buffer in this widget,   and   must be used instead.

Notification widgets
To cover the main use cases regarding notification of users, Hildon provides banners and notes. Banner widgets display a text information during a certain period of time. Notes are specialized GtkDialogs that need a small amount of input from the user.

Banners
A HildonBanner is useful to display information which does not need any user response. This widget automatically disappears after a certain time period.

To create and show a banner, use the following function:

<tt>GtkWidget <font color="#990000"> *  <font color="#000000">hildon_banner_show_information   <font color="#990000">( GtkWidget <font color="#990000"> * widget <font color="#990000">,                                                <font color="#0000FF">const  gchar <font color="#990000"> * icon_name <font color="#990000">,                                                <font color="#0000FF">const  gchar <font color="#990000"> * text <font color="#990000">); GtkWidget <font color="#990000"> *  <font color="#000000">hildon_banner_show_informationf   <font color="#990000">( GtkWidget <font color="#990000"> * widget <font color="#990000">,                                                <font color="#0000FF">const  gchar <font color="#990000"> * icon_name <font color="#990000">,                                                <font color="#0000FF">const  gchar <font color="#990000"> * format <font color="#990000">,                                               <font color="#990000">...); GtkWidget <font color="#990000"> * hildon_banner_show_information_with_markup <font color="#990000">( GtkWidget <font color="#990000"> * widget <font color="#990000">,                                               <font color="#0000FF">const  gchar <font color="#990000"> * icon_name <font color="#990000">,                                                <font color="#0000FF">const  gchar <font color="#990000"> * markup <font color="#990000">); </tt>

All functions above require a widget as an argument that must be a pointer to the owner widget of the banner. Usually, the owner is the window that represents the currently displayed view.

Function  shows a banner with the given text.

Function  shows a banner which displays the text given by the printf-like formated string applied to the parameters that the rest of the function's arguments represent.

You can also apply a Pango markup and add some attributes to the displayed text. To do that, either use  to create the banner or setup the markup by calling   after the initialization. [@@COMMENT@@ LINK TO PANGO MARKUP]

Warning
Currently, icons are not displayed in banners, so any value that you pass as the icon_name is ignored.

The period of time after the banner automatically disappear is stored in the property "timeout" (in miliseconds). A convenience function to set this property is provided:

<tt> <font color="#009900">void        <font color="#000000">hildon_banner_set_timeout        <font color="#990000">( HildonBanner <font color="#990000"> * self <font color="#990000">,                                               guint timeout <font color="#990000">); </tt>

Here is a simple example showing how to setup and show an informational banner.

'''Example 7.5. Setting up an informational banner'''

<tt>   GtkWidget <font color="#990000"> * banner <font color="#990000"> ;  <font color="#9A1900">/* Create a banner with a markup */  banner <font color="#990000"> =  <font color="#000000">hildon_banner_show_information_with_markup   <font color="#990000">( widget <font color="#990000">,                                                           NULL <font color="#990000">,                                                           <font color="#FF0000">"&lt;b&gt;Information banner&lt;/b&gt;"  <font color="#990000">);  <font color="#000000">hildon_banner_set_timeout  <font color="#990000">(   <font color="#000000">HILDON_BANNER   <font color="#990000">( banner <font color="#990000">),  <font color="#993399">9000  <font color="#990000">); </tt>

Note
Only one timed banner can exist for each window in your application. If you spawn a new banner before the previous one has timed out, the first one is replaced.

Information Notes
Information notes are used to show an information to the users. This note disappears when user taps outside the note's area. Otherwise the note remains visible.

Here is an example of how to show an information note and handle the user's answer.

'''Example 7.6. Example of a Hildon information note'''

<tt>  <font color="#0000FF">static  <font color="#009900">void  <font color="#000000">show_information_note                          <font color="#990000">( GtkWidget <font color="#990000"> * parent <font color="#990000">) <font color="#FF0000">{ GtkWidget <font color="#990000"> * window <font color="#990000">, <font color="#990000"> * note <font color="#990000"> ; gint response <font color="#990000"> ; note <font color="#990000"> =  <font color="#000000">hildon_note_new_information   <font color="#990000">( NULL <font color="#990000">,      <font color="#FF0000">"Lorem ipsum dolor sit amet, consectetur adipiscing elit."      <font color="#FF0000">"Maecenas tristique dictum est. Aenean rhoncus aliquam mi."      <font color="#FF0000">"In hac habitasse platea dictumst."  <font color="#990000">); response <font color="#990000"> =  <font color="#000000">gtk_dialog_run   <font color="#990000">(   <font color="#000000">GTK_DIALOG   <font color="#990000">( note <font color="#990000">));  <font color="#0000FF">if  <font color="#990000">( response <font color="#990000"> == GTK_RESPONSE_DELETE_EVENT <font color="#990000">)  <font color="#000000">g_debug  <font color="#990000">(  <font color="#FF0000">"%s: GTK_RESPONSE_DELETE_EVENT"  <font color="#990000">, __FUNCTION__ <font color="#990000">);  <font color="#000000">gtk_object_destroy  <font color="#990000">(   <font color="#000000">GTK_OBJECT   <font color="#990000">( note <font color="#990000">)); <font color="#FF0000">} </tt>

Confirmation Notes
Confirmation notes show an information text that is usually a question and two buttons labelled "Yes" and "No".

To create a confirmation note with the text you specify and two buttons labelled "Yes"/"No", use  as follows:

'''Example 7.7. Example of a Hildon confirmation note'''

<tt>  <font color="#0000FF">static  <font color="#009900">void  <font color="#000000">show_confirmation_note                          <font color="#990000">( GtkWidget <font color="#990000"> * parent <font color="#990000">) <font color="#FF0000">{ GtkWidget <font color="#990000"> * note <font color="#990000"> ; gint response <font color="#990000"> ; note <font color="#990000"> =  <font color="#000000">hildon_note_new_confirmation   <font color="#990000">( parent <font color="#990000">,                                           <font color="#FF0000">"Do you want foo ?"  <font color="#990000">); response <font color="#990000"> =  <font color="#000000">gtk_dialog_run   <font color="#990000">(   <font color="#000000">GTK_DIALOG   <font color="#990000">( note <font color="#990000">));  <font color="#0000FF">if  <font color="#990000">( response <font color="#990000"> == GTK_RESPONSE_DELETE_EVENT <font color="#990000">)  <font color="#000000">g_debug  <font color="#990000">(  <font color="#FF0000">"%s: GTK_RESPONSE_DELETE_EVENT"  <font color="#990000">, __FUNCTION__ <font color="#990000">);  <font color="#000000">gtk_object_destroy  <font color="#990000">(   <font color="#000000">GTK_OBJECT   <font color="#990000">( note <font color="#990000">)); <font color="#FF0000">} </tt>

Alternatively, you can use  to create a confirmation note with custom buttons.

'''Example 7.8. Example of a Hildon copnfirmation note with custom buttons'''

<tt>  <font color="#0000FF">static  <font color="#009900">void  <font color="#000000">show_confirmation_note                          <font color="#990000">( GtkWidget <font color="#990000"> * parent <font color="#990000">) <font color="#FF0000">{ GtkWidget <font color="#990000"> * note <font color="#990000"> ; gint response <font color="#990000"> ; note <font color="#990000"> =  <font color="#000000">hildon_note_new_confirmation_add_buttons   <font color="#990000">( parent <font color="#990000">,                                                      <font color="#FF0000">"Do you want foo?"  <font color="#990000">,                                                      <font color="#FF0000">"ACCEPT"  <font color="#990000">, GTK_RESPONSE_OK <font color="#990000">,                                                      <font color="#FF0000">"CANCEL"  <font color="#990000">, GTK_RESPONSE_CANCEL <font color="#990000">,                                                      <font color="#FF0000">"DELETE"  <font color="#990000">, GTK_RESPONSE_DELETE_EVENT <font color="#990000">); response <font color="#990000"> =  <font color="#000000">gtk_dialog_run   <font color="#990000">(   <font color="#000000">GTK_DIALOG   <font color="#990000">( note <font color="#990000">));  <font color="#0000FF">if  <font color="#990000">( response <font color="#990000"> == GTK_RESPONSE_DELETE_EVENT <font color="#990000">)  <font color="#000000">g_debug  <font color="#990000">(  <font color="#FF0000">"%s: GTK_RESPONSE_DELETE_EVENT"  <font color="#990000">, __FUNCTION__ <font color="#990000">);  <font color="#000000">gtk_object_destroy  <font color="#990000">(   <font color="#000000">GTK_OBJECT   <font color="#990000">( note <font color="#990000">)); <font color="#FF0000">} </tt>

Cancel Notes

A cancel note displays a text, a Cancel button and a progress bar. They are useful to tell users that a long task is in progress. Also, cancel notes allow users to cancel the task in progress.

Next example shows how to create a cancel note with a progress bar. Note that to control the progress bar, additional code is needed.

'''Example 7.9. Example of a Hildon cancel note with a progress bar'''

<tt>  <font color="#0000FF">static  <font color="#009900">void  <font color="#000000">show_information_note                          <font color="#990000">( GtkWidget <font color="#990000"> * parent <font color="#990000">) <font color="#FF0000">{ GtkWidget <font color="#990000"> * note GtkProgressBar <font color="#990000"> * progressbar gint response <font color="#990000"> ; progressbar <font color="#990000"> =  <font color="#000000">gtk_progress_bar_new <font color="#990000">  note <font color="#990000"> =  <font color="#000000">hildon_note_new_cancel_with_progress_bar   <font color="#990000">( parent <font color="#990000">,                                                    <font color="#FF0000">"A large task is happening"                                                    <font color="#990000">progressbar  <font color="#990000">); response <font color="#990000"> =  <font color="#000000">gtk_dialog_run   <font color="#990000">(   <font color="#000000">GTK_DIALOG   <font color="#990000">( note <font color="#990000">));  <font color="#0000FF">if  <font color="#990000">( response <font color="#990000"> == GTK_RESPONSE_DELETE_EVENT <font color="#990000">)  <font color="#000000">g_debug  <font color="#990000">(  <font color="#FF0000">"%s: GTK_RESPONSE_DELETE_EVENT"  <font color="#990000">, __FUNCTION__ <font color="#990000">);  <font color="#000000">gtk_object_destroy  <font color="#990000">(   <font color="#000000">GTK_OBJECT   <font color="#990000">( note <font color="#990000">)); <font color="#FF0000">}