<!-- ##### SECTION Title ##### -->
MatePanelApplet

<!-- ##### SECTION Short_Description ##### -->
The MatePanelApplet object.

<!-- ##### SECTION Long_Description ##### -->
<para>
The #MatePanelApplet object is an object which encapsulates an applet. It
is a #GtkContainer which may contain a single widget. This widget, in
turn, should contain all widgets exposed by the applet.
</para>

<para>
A #MatePanelApplet is associated with a #MateComponentControl. The control makes
the cross process UI emmbedding required by applets possible.
</para>

<!-- ##### SECTION See_Also ##### -->
<para>

</para>

<!-- ##### SECTION Stability_Level ##### -->


<!-- ##### SECTION Image ##### -->


<!-- ##### STRUCT MatePanelApplet ##### -->
<para>
The #MatePanelApplet struct contains private data only.
</para>


<!-- ##### SIGNAL MatePanelApplet::change-background ##### -->
<para>
Emitted when the background of the panel changes. Use @type to
determine which, if any, of @color and @pimxap is valid.
</para>

@matepanelapplet: The object which received the signal.
@arg1: 
@arg2: 
@arg3: 
<!-- # Unused Parameters # -->
@type: The #MatePanelAppletBackgroundType.
@color: The #GdkColor if @type is #PANEL_COLOR_BACKGROUND.
@pixmap: The pixmap file name if @type is #PANEL_PIXMAP_BACKGROUND

<!-- ##### SIGNAL MatePanelApplet::change-orient ##### -->
<para>
Emitted when the orientation of the panel changes.
</para>

@matepanelapplet: The object which received the signal.
@orient: The new #MatePanelAppletOrient of the applet.

<!-- ##### SIGNAL MatePanelApplet::change-size ##### -->
<para>
Emitted when the size of the panel changes.
</para>

<para>
Note: this is different for size negotiation which is handled by
size_request() and size_allocate() as usual. This signal should
be used to determine what font size or widget layout to use 
depending on the size of the panel. See mate_panel_applet_get_size().
</para>

@matepanelapplet: The object which received the signal.
@size: The size hint of the panel.

<!-- ##### SIGNAL MatePanelApplet::move-focus-out-of-applet ##### -->
<para>
Emitted when the applet has lost focus. This signal is used internally and is not meant to be used by applets themselves.
</para>

@matepanelapplet: The object which received the signal.
@direction: The direction of focus movement.

<!-- ##### ARG MatePanelApplet:background ##### -->
<para>

</para>

<!-- ##### ARG MatePanelApplet:closure ##### -->
<para>

</para>

<!-- ##### ARG MatePanelApplet:connection ##### -->
<para>

</para>

<!-- ##### ARG MatePanelApplet:flags ##### -->
<para>

</para>

<!-- ##### ARG MatePanelApplet:id ##### -->
<para>

</para>

<!-- ##### ARG MatePanelApplet:locked ##### -->
<para>

</para>

<!-- ##### ARG MatePanelApplet:locked-down ##### -->
<para>

</para>

<!-- ##### ARG MatePanelApplet:orient ##### -->
<para>

</para>

<!-- ##### ARG MatePanelApplet:prefs-key ##### -->
<para>

</para>

<!-- ##### ARG MatePanelApplet:size ##### -->
<para>

</para>

<!-- ##### ARG MatePanelApplet:size-hints ##### -->
<para>

</para>

<!-- ##### ENUM MatePanelAppletOrient ##### -->
<para>
The #MatePanelAppletOrient type specifies the orientation of the applet. The
values may seem backward (e.g. %MATE_PANEL_APPLET_ORIENT_LEFT means the panel
is on the right hand side), but this is because the value is representative
of the applet's <emphasis>orientation</emphasis>, not the panel's position.
</para>

@MATE_PANEL_APPLET_ORIENT_UP: 
@MATE_PANEL_APPLET_ORIENT_DOWN: 
@MATE_PANEL_APPLET_ORIENT_LEFT: 
@MATE_PANEL_APPLET_ORIENT_RIGHT: 

<!-- ##### ENUM MatePanelAppletBackgroundType ##### -->
<para>
The #MatePanelAppletBackgroundType enumerated type specifies the type of
background of a panel.
</para>

@PANEL_NO_BACKGROUND: The panel has no background, the default is used.
@PANEL_COLOR_BACKGROUND: The panel has a color, i.e rgb value,
background.
@PANEL_PIXMAP_BACKGROUND:  The panel has either an image background
or is translucent.

<!-- ##### ENUM MatePanelAppletFlags ##### -->
<para>
The #MatePanelAppletFlags associated with the applet are boolean flags which
the panel may read in order to figure out how to handle the applet.
</para>

@MATE_PANEL_APPLET_FLAGS_NONE: No flags are to be associated with the applet.
@MATE_PANEL_APPLET_EXPAND_MAJOR: The applet should expand horizontally on an
horizontal panel and vertically on a vertical panel - e.g. the behaviour
of the Window List applet.
@MATE_PANEL_APPLET_EXPAND_MINOR: The applet should expand vertically on an
horizontal panel and horizontally on a vertical panel. Most applets should
set this flag in order to utilise the full panel width and allow the applet
to be Fitt's Law compliant.
@MATE_PANEL_APPLET_HAS_HANDLE: The panel should draw a grab handle around the
applet - e.g. the Window List and Notification Area applets both set this
flag.

<!-- ##### USER_FUNCTION MatePanelAppletFactoryCallback ##### -->
<para>
This callback is invoked when the applet is loaded onto the panel. Typically
the callback will check that @iid matches and fill the @applet with the
widgets which make up the applet.
</para>

<para>
Prior to the callback being invoked the #MatePanelApplet (or an instance of the
sub-class specified by the #GType passed to the factory macros) is instantiated
and initialized.
</para>

@applet: The #MatePanelApplet.
@iid: The MateComponent IID of the applet requested.
@user_data: The data passed to the factory macros.
@Returns: %TRUE on success, %FALSE on failure.


<!-- ##### FUNCTION mate_panel_applet_new ##### -->
<para>
Creates a new #MatePanelApplet. This function is typically not
useful as the applet is created before the #MatePanelAppletFactoryCallback
is invoked.
</para>

@void: 
@Returns: The #MatePanelApplet.


<!-- ##### FUNCTION mate_panel_applet_get_orient ##### -->
<para>
Get the current orientation of the applet.
</para>

@applet: The #MatePanelApplet.
@Returns: The orientation of the applet.


<!-- ##### FUNCTION mate_panel_applet_get_size ##### -->
<para>
Get the current size hint for the panel. The size hint is
not useful for most applets.
</para>

<para>
Note: The return value is <emphasis>not an integer value
specifying the pixel size of the panel.</emphasis> Do not
use this value to calculate the size of the applet. Use it
only as a hint by which to decide the applet's layout.
</para>

@applet: The #MatePanelApplet.
@Returns: The panel's size hint.


<!-- ##### FUNCTION mate_panel_applet_get_background ##### -->
<para>
Returns the current background type. If the background
type is %PANEL_NO_BACKGROUND both @color and @pixmap will
be unaffected. If the background type is %PANEL_COLOR_BACKGROUND
then @color will contain the current panel background colour.
If the background type is %PANEL_PIXMAP_BACKGROUND, @pixmap will
contain a pointer to a #GdkPixmap which is a copy of the applet's
portion of the panel's background pixmap.
</para>

<!-- FIXME: give an example of how to use this -->

@applet: A #MatePanelApplet.
@color: A #GdkColor to be filled in.
@pixmap: Returned #GdkPixmap.
@Returns: The background type.


<!-- ##### FUNCTION mate_panel_applet_get_preferences_key ##### -->
<para>
Returns the MateConf path to the directory containing the applet's
per-instance preference keys. Using this you may construct the
full path for the applet's preference keys. See 
<xref linkend="mate-panel-applet-Panel-Applet-MateConf-Utilities" /> for
more information.
</para>

@applet: The #MatePanelApplet.
@Returns: A MateConf path.


<!-- ##### FUNCTION mate_panel_applet_add_preferences ##### -->
<para>
Associates each schema in @schema_dir with a key in the applet's
preferences directory (i.e. the directory returned by
mate_panel_applet_get_preferences_key()). Each applet preference
should have an associated schema to ensure that the key has
a defined type, sane default and documentation.
</para>

<para>
If you pass %NULL for @opt_error, this function will print
a warning message from any #GError which MateConf may return.
</para>

@applet: The #MatePanelApplet.
@schema_dir: The MateConf path where the applet's schemas are installed
e.g. /schemas/apps/my_applet
@opt_error: Optional #GError.


<!-- ##### FUNCTION mate_panel_applet_get_flags ##### -->
<para>
Retrieve the #MatePanelAppletFlags associated with the applet.
</para>

@applet: The #MatePanelApplet.
@Returns: The #MatePanelAppletFlags.


<!-- ##### FUNCTION mate_panel_applet_set_flags ##### -->
<para>
Set the #MatePanelAppletFlags associated with the applet. See
#MatePanelAppletFlags for more details on the possible uses of
these flags.
</para>

@applet: The #MatePanelApplet.
@flags: The #MatePanelAppletFlags to associate.


<!-- ##### FUNCTION mate_panel_applet_set_size_hints ##### -->
<para>
Set a list of desired size ranges for an applet with the
#MATE_PANEL_APPLET_EXPAND_MAJOR flags set. @size_hints is an
array of (max, min) pairs where min(i) > max(i + 1).
</para>

<para>
The panel will endeavour to allocate the applet a size
in one of the (@base + max, @base + min) ranges.
</para>

@applet: The #MatePanelApplet.
@size_hints: Array of size_hints.
@n_elements: Number of elements in the array. <emphasis>
Not</emphasis> the number of pairs.
@base_size: The base size of the applet.


<!-- ##### FUNCTION mate_panel_applet_get_locked_down ##### -->
<para>
Check if the @applet is locked down. A locked down applet should not allow any change to its configuration.
</para>

@applet: The #MatePanelApplet.
@Returns: %TRUE if the @applet is locked down, %FALSE otherwise.


<!-- ##### FUNCTION mate_panel_applet_request_focus ##### -->
<para>
Set keyboard focus to @applet.
</para>

@applet: The #MatePanelApplet.
@timestamp: timestamp of the event triggering the window focus


<!-- ##### FUNCTION mate_panel_applet_setup_menu ##### -->
<para>
Sets up a popup menu for @applet described by the xml
string, @xml. See <xref linkend="applet-writing" /> section
for a description of the format of the xml.
</para>

@applet: A #MatePanelApplet.
@xml: The xml character string describing the popup menu.
@action_group: 
<!-- # Unused Parameters # -->
@verb_list: The list of #MateComponentUIVerbs for the menu.
@user_data: The user data pointer for the menu.


<!-- ##### FUNCTION mate_panel_applet_setup_menu_from_file ##### -->
<para>
Sets up a popup menu for @applet described by the xml
file, @file. See <xref linkend="applet-writing" /> for a description of
the format of the xml.
</para>

@applet: A #MatePanelApplet.
@filename: 
@action_group: 
<!-- # Unused Parameters # -->
@opt_datadir: The data directory - i.e. ${prefix}/share (optional).
@file: The file's name.
@opt_app_name: The application's name (optional).
@verb_list: The list of #MateComponentUIVerbs for the menu.
@user_data: The user data pointer for the menu.


<!-- ##### FUNCTION mate_panel_applet_factory_main ##### -->
<para>
A generic 'main' routine for applets. This should not normally be
used directly because it is invoked by #MATE_PANEL_APPLET_MATECOMPONENT_FACTORY.
</para>

@factory_id: 
@out_process: 
@applet_type: The #GType to instantiate.
@callback: The factory callback.
@data: The factory user data pointer.
@Returns: 0 on success, 1 on failure.
<!-- # Unused Parameters # -->
@iid: The matecomponent-activation iid of the factory.