<?xml version="1.0"?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" 
               "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
<refentry id="xfconf-xfconf-backend">
<refmeta>
<refentrytitle role="top_of_page" id="xfconf-xfconf-backend.top_of_page">XfconfBackend</refentrytitle>
<manvolnum>3</manvolnum>
<refmiscinfo>XFCONF Library</refmiscinfo>
</refmeta>

<refnamediv>
<refname>XfconfBackend</refname>
<refpurpose>Interface for configuration store backends</refpurpose>
<!--[<xref linkend="desc" endterm="desc.title"/>]-->
</refnamediv>

<refsynopsisdiv id="xfconf-xfconf-backend.synopsis" role="synopsis">
<title role="synopsis.title">Synopsis</title>
<anchor id="XfconfBackend"/>
<synopsis>
                    <link linkend="XfconfBackendInterface">XfconfBackendInterface</link>;
                    <link linkend="XfconfBackend-struct">XfconfBackend</link>;
<link linkend="gboolean">gboolean</link>            <link linkend="xfconf-backend-initialize">xfconf_backend_initialize</link>           (<link linkend="XfconfBackend">XfconfBackend</link> *backend,
                                                         <link linkend="GError">GError</link> **error);
<link linkend="gboolean">gboolean</link>            <link linkend="xfconf-backend-set">xfconf_backend_set</link>                  (<link linkend="XfconfBackend">XfconfBackend</link> *backend,
                                                         const <link linkend="gchar">gchar</link> *channel,
                                                         const <link linkend="gchar">gchar</link> *property,
                                                         const <link linkend="GValue">GValue</link> *value,
                                                         <link linkend="GError">GError</link> **error);
<link linkend="gboolean">gboolean</link>            <link linkend="xfconf-backend-get">xfconf_backend_get</link>                  (<link linkend="XfconfBackend">XfconfBackend</link> *backend,
                                                         const <link linkend="gchar">gchar</link> *channel,
                                                         const <link linkend="gchar">gchar</link> *property,
                                                         <link linkend="GValue">GValue</link> *value,
                                                         <link linkend="GError">GError</link> **error);
<link linkend="gboolean">gboolean</link>            <link linkend="xfconf-backend-get-all">xfconf_backend_get_all</link>              (<link linkend="XfconfBackend">XfconfBackend</link> *backend,
                                                         const <link linkend="gchar">gchar</link> *channel,
                                                         const <link linkend="gchar">gchar</link> *property_base,
                                                         <link linkend="GHashTable">GHashTable</link> *properties,
                                                         <link linkend="GError">GError</link> **error);
<link linkend="gboolean">gboolean</link>            <link linkend="xfconf-backend-exists">xfconf_backend_exists</link>               (<link linkend="XfconfBackend">XfconfBackend</link> *backend,
                                                         const <link linkend="gchar">gchar</link> *channel,
                                                         const <link linkend="gchar">gchar</link> *property,
                                                         <link linkend="gboolean">gboolean</link> *exists,
                                                         <link linkend="GError">GError</link> **error);
<link linkend="gboolean">gboolean</link>            <link linkend="xfconf-backend-reset">xfconf_backend_reset</link>                (<link linkend="XfconfBackend">XfconfBackend</link> *backend,
                                                         const <link linkend="gchar">gchar</link> *channel,
                                                         const <link linkend="gchar">gchar</link> *property,
                                                         <link linkend="gboolean">gboolean</link> recursive,
                                                         <link linkend="GError">GError</link> **error);
<link linkend="gboolean">gboolean</link>            <link linkend="xfconf-backend-flush">xfconf_backend_flush</link>                (<link linkend="XfconfBackend">XfconfBackend</link> *backend,
                                                         <link linkend="GError">GError</link> **error);
<link linkend="void">void</link>                <link linkend="xfconf-backend-register-property-changed-func">xfconf_backend_register_property_changed_func</link>
                                                        (<link linkend="XfconfBackend">XfconfBackend</link> *backend,
                                                         <link linkend="XfconfPropertyChangedFunc">XfconfPropertyChangedFunc</link> func,
                                                         <link linkend="gpointer">gpointer</link> user_data);
</synopsis>
</refsynopsisdiv>

<refsect1 id="xfconf-xfconf-backend.object-hierarchy" role="object_hierarchy">
<title role="object_hierarchy.title">Object Hierarchy</title>
<synopsis>
  <link linkend="GInterface">GInterface</link>
   +----XfconfBackend
</synopsis>

</refsect1>

<refsect1 id="xfconf-xfconf-backend.prerequisites" role="prerequisites">
<title role="prerequisites.title">Prerequisites</title>
<para>
XfconfBackend requires
 <link linkend="GObject">GObject</link>.</para>

</refsect1>







<refsect1 id="xfconf-xfconf-backend.description" role="desc">
<title role="desc.title">Description</title>
<para>
XfconfBackend is an abstract interface that allows the Xfconf Daemon
to use different backends for storing configuration data.  These backends
can be flat text or binary files, a database, or just about anything
one could think of to store data.
</para>
</refsect1>

<refsect1 id="xfconf-xfconf-backend.details" role="details">
<title role="details.title">Details</title>
<refsect2 id="XfconfBackendInterface" role="struct">
<title>XfconfBackendInterface</title>
<indexterm zone="XfconfBackendInterface"><primary>XfconfBackendInterface</primary></indexterm><programlisting>typedef struct {
    GTypeInterface parent;
    
    gboolean (*initialize)(XfconfBackend *backend,
                           GError **error);
    
    gboolean (*set)(XfconfBackend *backend,
                    const gchar *channel,
                    const gchar *property,
                    const GValue *value,
                    GError **error);
    
    gboolean (*get)(XfconfBackend *backend,
                    const gchar *channel,
                    const gchar *property,
                    GValue *value,
                    GError **error);
    
    gboolean (*get_all)(XfconfBackend *backend,
                        const gchar *channel,
                        const gchar *property_base,
                        GHashTable *properties,
                        GError **error);
    
    gboolean (*exists)(XfconfBackend *backend,
                       const gchar *channel,
                       const gchar *property,
                       gboolean *exists,
                       GError **error);
    
    gboolean (*reset)(XfconfBackend *backend,
                      const gchar *channel,
                      const gchar *property,
                      gboolean recursive,
                      GError **error);

    gboolean (*list_channels)(XfconfBackend *backend,
                              GSList **channels,
                              GError **error);

    gboolean (*is_property_locked)(XfconfBackend *backend,
                                   const gchar *channel,
                                   const gchar *property,
                                   gboolean *locked,
                                   GError **error);
    
    gboolean (*flush)(XfconfBackend *backend,
                      GError **error);

    void (*register_property_changed_func)(XfconfBackend *backend,
                                           XfconfPropertyChangedFunc func,
                                           gpointer user_data);
    
    /*&lt; reserved for future expansion &gt;*/
    void (*_xb_reserved0)();
    void (*_xb_reserved1)();
    void (*_xb_reserved2)();
    void (*_xb_reserved3)();
} XfconfBackendInterface;
</programlisting>
<para>
An interface for implementing pluggable configuration store backends
into the Xfconf Daemon.
</para>
<para>
See the <link linkend="XfconfBackend"><type>XfconfBackend</type></link> function documentation for a description of what
each virtual function in <link linkend="XfconfBackendInterface"><type>XfconfBackendInterface</type></link> should do.</para>
<para>

</para><variablelist role="struct">
<varlistentry>
<term><link linkend="GTypeInterface">GTypeInterface</link>&nbsp;<structfield>parent</structfield>;</term>
<listitem><simpara>GObject interface parent.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><structfield>initialize</structfield>&nbsp;()</term>
<listitem><simpara>See <link linkend="xfconf-backend-initialize"><function>xfconf_backend_initialize()</function></link>.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><structfield>set</structfield>&nbsp;()</term>
<listitem><simpara>See <link linkend="xfconf-backend-set"><function>xfconf_backend_set()</function></link>.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><structfield>get</structfield>&nbsp;()</term>
<listitem><simpara>See <link linkend="xfconf-backend-get"><function>xfconf_backend_get()</function></link>.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><structfield>get_all</structfield>&nbsp;()</term>
<listitem><simpara>See <link linkend="xfconf-backend-get-all"><function>xfconf_backend_get_all()</function></link>.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><structfield>exists</structfield>&nbsp;()</term>
<listitem><simpara>See <link linkend="xfconf-backend-exists"><function>xfconf_backend_exists()</function></link>.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><structfield>reset</structfield>&nbsp;()</term>
<listitem><simpara>See <link linkend="xfconf-backend-reset"><function>xfconf_backend_reset()</function></link>.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><structfield>list_channels</structfield>&nbsp;()</term>
<listitem><simpara>See <link linkend="xfconf-backend-list-channels"><function>xfconf_backend_list_channels()</function></link>.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><structfield>is_property_locked</structfield>&nbsp;()</term>
<listitem><simpara>See <link linkend="xfconf-backend-is-property-locked"><function>xfconf_backend_is_property_locked()</function></link>.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><structfield>flush</structfield>&nbsp;()</term>
<listitem><simpara>See <link linkend="xfconf-backend-flush"><function>xfconf_backend_flush()</function></link>.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><structfield>register_property_changed_func</structfield>&nbsp;()</term>
<listitem><simpara>See <link linkend="xfconf-backend-register-property-changed-func"><function>xfconf_backend_register_property_changed_func()</function></link>.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><structfield>_xb_reserved0</structfield>&nbsp;()</term>
<listitem><simpara>Reserved for future expansion.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><structfield>_xb_reserved1</structfield>&nbsp;()</term>
<listitem><simpara>Reserved for future expansion.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><structfield>_xb_reserved2</structfield>&nbsp;()</term>
<listitem><simpara>Reserved for future expansion.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><structfield>_xb_reserved3</structfield>&nbsp;()</term>
<listitem><simpara>Reserved for future expansion.

</simpara></listitem>
</varlistentry>
</variablelist></refsect2>
<refsect2 id="XfconfBackend-struct" role="struct">
<title>XfconfBackend</title>
<indexterm zone="XfconfBackend-struct"><primary>XfconfBackend</primary></indexterm><programlisting>typedef struct _XfconfBackend XfconfBackend;</programlisting>
<para>
An instance of a class implementing a <link linkend="XfconfBackendInterface"><type>XfconfBackendInterface</type></link>.</para>
<para>

</para></refsect2>
<refsect2 id="xfconf-backend-initialize" role="function">
<title>xfconf_backend_initialize ()</title>
<indexterm zone="xfconf-backend-initialize"><primary>xfconf_backend_initialize</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>            xfconf_backend_initialize           (<link linkend="XfconfBackend">XfconfBackend</link> *backend,
                                                         <link linkend="GError">GError</link> **error);</programlisting>
<para>
Does any pre-initialization that the backend needs to function.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>backend</parameter>&nbsp;:</term>
<listitem><simpara> The <link linkend="XfconfBackend"><type>XfconfBackend</type></link>.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>error</parameter>&nbsp;:</term>
<listitem><simpara> An error return.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> The backend should return <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if initialization
              was successful, or <link linkend="FALSE:CAPS"><literal>FALSE</literal></link> otherwise.  On <link linkend="FALSE:CAPS"><literal>FALSE</literal></link>,
              <parameter>error</parameter> should be set to a description of the failure.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xfconf-backend-set" role="function">
<title>xfconf_backend_set ()</title>
<indexterm zone="xfconf-backend-set"><primary>xfconf_backend_set</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>            xfconf_backend_set                  (<link linkend="XfconfBackend">XfconfBackend</link> *backend,
                                                         const <link linkend="gchar">gchar</link> *channel,
                                                         const <link linkend="gchar">gchar</link> *property,
                                                         const <link linkend="GValue">GValue</link> *value,
                                                         <link linkend="GError">GError</link> **error);</programlisting>
<para>
Sets the variant <parameter>value</parameter> for <parameter>property</parameter> on <parameter>channel</parameter>.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>backend</parameter>&nbsp;:</term>
<listitem><simpara> The <link linkend="XfconfBackend"><type>XfconfBackend</type></link>.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>channel</parameter>&nbsp;:</term>
<listitem><simpara> A channel name.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>property</parameter>&nbsp;:</term>
<listitem><simpara> A property name.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>value</parameter>&nbsp;:</term>
<listitem><simpara> A value.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>error</parameter>&nbsp;:</term>
<listitem><simpara> An error return.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> The backend should return <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if the operation
              was successful, or <link linkend="FALSE:CAPS"><literal>FALSE</literal></link> otherwise.  On <link linkend="FALSE:CAPS"><literal>FALSE</literal></link>,
              <parameter>error</parameter> should be set to a description of the failure.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xfconf-backend-get" role="function">
<title>xfconf_backend_get ()</title>
<indexterm zone="xfconf-backend-get"><primary>xfconf_backend_get</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>            xfconf_backend_get                  (<link linkend="XfconfBackend">XfconfBackend</link> *backend,
                                                         const <link linkend="gchar">gchar</link> *channel,
                                                         const <link linkend="gchar">gchar</link> *property,
                                                         <link linkend="GValue">GValue</link> *value,
                                                         <link linkend="GError">GError</link> **error);</programlisting>
<para>
Gets the value of <parameter>property</parameter> on <parameter>channel</parameter> and stores it in <parameter>value</parameter>.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>backend</parameter>&nbsp;:</term>
<listitem><simpara> The <link linkend="XfconfBackend"><type>XfconfBackend</type></link>.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>channel</parameter>&nbsp;:</term>
<listitem><simpara> A channel name.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>property</parameter>&nbsp;:</term>
<listitem><simpara> A property name.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>value</parameter>&nbsp;:</term>
<listitem><simpara> A <link linkend="GValue"><type>GValue</type></link> return.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>error</parameter>&nbsp;:</term>
<listitem><simpara> An error return.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> The backend should return <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if the operation
              was successful, or <link linkend="FALSE:CAPS"><literal>FALSE</literal></link> otherwise.  On <link linkend="FALSE:CAPS"><literal>FALSE</literal></link>,
              <parameter>error</parameter> should be set to a description of the failure.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xfconf-backend-get-all" role="function">
<title>xfconf_backend_get_all ()</title>
<indexterm zone="xfconf-backend-get-all"><primary>xfconf_backend_get_all</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>            xfconf_backend_get_all              (<link linkend="XfconfBackend">XfconfBackend</link> *backend,
                                                         const <link linkend="gchar">gchar</link> *channel,
                                                         const <link linkend="gchar">gchar</link> *property_base,
                                                         <link linkend="GHashTable">GHashTable</link> *properties,
                                                         <link linkend="GError">GError</link> **error);</programlisting>
<para>
Gets multiple properties and values on <parameter>channel</parameter> and stores them in
<parameter>properties</parameter>, which is already initialized to hold <link linkend="gchar"><type>gchar</type></link>* keys and
<link linkend="GValue"><type>GValue</type></link><!-- -->* values.  The <parameter>property_base</parameter> parameter can be
used to limit the retrieval to a sub-tree of the property tree.
</para>
<para>
A value of the empty string ("") or forward slash ("/") for
<parameter>property_base</parameter> indicates the entire channel.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>backend</parameter>&nbsp;:</term>
<listitem><simpara> The <link linkend="XfconfBackend"><type>XfconfBackend</type></link>.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>channel</parameter>&nbsp;:</term>
<listitem><simpara> A channel name.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>property_base</parameter>&nbsp;:</term>
<listitem><simpara> The base of properties to return.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>properties</parameter>&nbsp;:</term>
<listitem><simpara> A <link linkend="GHashTable"><type>GHashTable</type></link>.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>error</parameter>&nbsp;:</term>
<listitem><simpara> An error return.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> The backend should return <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if the operation
              was successful, or <link linkend="FALSE:CAPS"><literal>FALSE</literal></link> otherwise.  On <link linkend="FALSE:CAPS"><literal>FALSE</literal></link>,
              <parameter>error</parameter> should be set to a description of the failure.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xfconf-backend-exists" role="function">
<title>xfconf_backend_exists ()</title>
<indexterm zone="xfconf-backend-exists"><primary>xfconf_backend_exists</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>            xfconf_backend_exists               (<link linkend="XfconfBackend">XfconfBackend</link> *backend,
                                                         const <link linkend="gchar">gchar</link> *channel,
                                                         const <link linkend="gchar">gchar</link> *property,
                                                         <link linkend="gboolean">gboolean</link> *exists,
                                                         <link linkend="GError">GError</link> **error);</programlisting>
<para>
Checks to see if <parameter>property</parameter> exists on <parameter>channel</parameter>, and stores <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> or
<link linkend="FALSE:CAPS"><literal>FALSE</literal></link> in <parameter>exists</parameter>.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>backend</parameter>&nbsp;:</term>
<listitem><simpara> The <link linkend="XfconfBackend"><type>XfconfBackend</type></link>.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>channel</parameter>&nbsp;:</term>
<listitem><simpara> A channel name.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>property</parameter>&nbsp;:</term>
<listitem><simpara> A property name.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>exists</parameter>&nbsp;:</term>
<listitem><simpara> A boolean return.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>error</parameter>&nbsp;:</term>
<listitem><simpara> An error return.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> The backend should return <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if the operation
              was successful, or <link linkend="FALSE:CAPS"><literal>FALSE</literal></link> otherwise.  On <link linkend="FALSE:CAPS"><literal>FALSE</literal></link>,
              <parameter>error</parameter> should be set to a description of the failure.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xfconf-backend-reset" role="function">
<title>xfconf_backend_reset ()</title>
<indexterm zone="xfconf-backend-reset"><primary>xfconf_backend_reset</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>            xfconf_backend_reset                (<link linkend="XfconfBackend">XfconfBackend</link> *backend,
                                                         const <link linkend="gchar">gchar</link> *channel,
                                                         const <link linkend="gchar">gchar</link> *property,
                                                         <link linkend="gboolean">gboolean</link> recursive,
                                                         <link linkend="GError">GError</link> **error);</programlisting>
<para>
Resets the property identified by <parameter>property</parameter> from <parameter>channel</parameter>.
If <parameter>recursive</parameter> is <link linkend="TRUE:CAPS"><literal>TRUE</literal></link>, all sub-properties of <parameter>property</parameter> will be
reset as well.  If the empty string ("") or a forward slash ("/")
is specified for <parameter>property</parameter>, the entire channel will be reset.
</para>
<para>
If none of the properties specified are locked or have root-owned
system-wide defaults set, this effectively removes the properties
from the configuration store entirely.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>backend</parameter>&nbsp;:</term>
<listitem><simpara> The <link linkend="XfconfBackend"><type>XfconfBackend</type></link>.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>channel</parameter>&nbsp;:</term>
<listitem><simpara> A channel name.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>property</parameter>&nbsp;:</term>
<listitem><simpara> A property name.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>recursive</parameter>&nbsp;:</term>
<listitem><simpara> Whether or not the reset is recursive.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>error</parameter>&nbsp;:</term>
<listitem><simpara> An error return.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> The backend should return <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if the operation
              was successful, or <link linkend="FALSE:CAPS"><literal>FALSE</literal></link> otherwise.  On <link linkend="FALSE:CAPS"><literal>FALSE</literal></link>,
              <parameter>error</parameter> should be set to a description of the failure.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xfconf-backend-flush" role="function">
<title>xfconf_backend_flush ()</title>
<indexterm zone="xfconf-backend-flush"><primary>xfconf_backend_flush</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>            xfconf_backend_flush                (<link linkend="XfconfBackend">XfconfBackend</link> *backend,
                                                         <link linkend="GError">GError</link> **error);</programlisting>
<para>
For backends that support persistent storage, ensures that all
configuration data stored in memory is saved to persistent storage.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>backend</parameter>&nbsp;:</term>
<listitem><simpara> The <link linkend="XfconfBackend"><type>XfconfBackend</type></link>.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>error</parameter>&nbsp;:</term>
<listitem><simpara> An error return.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> The backend should return <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if the operation
              was successful, or <link linkend="FALSE:CAPS"><literal>FALSE</literal></link> otherwise.  On <link linkend="FALSE:CAPS"><literal>FALSE</literal></link>,
              <parameter>error</parameter> should be set to a description of the failure.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xfconf-backend-register-property-changed-func" role="function">
<title>xfconf_backend_register_property_changed_func ()</title>
<indexterm zone="xfconf-backend-register-property-changed-func"><primary>xfconf_backend_register_property_changed_func</primary></indexterm><programlisting><link linkend="void">void</link>                xfconf_backend_register_property_changed_func
                                                        (<link linkend="XfconfBackend">XfconfBackend</link> *backend,
                                                         <link linkend="XfconfPropertyChangedFunc">XfconfPropertyChangedFunc</link> func,
                                                         <link linkend="gpointer">gpointer</link> user_data);</programlisting>
<para>
Registers a function to be called when a property changes.  The
backend implementation should keep a pointer to <parameter>func</parameter> and <parameter>user_data</parameter>
and call <parameter>func</parameter> when a property in the configuration store changes.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>backend</parameter>&nbsp;:</term>
<listitem><simpara> The <link linkend="XfconfBackend"><type>XfconfBackend</type></link>.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>func</parameter>&nbsp;:</term>
<listitem><simpara> A function of type <link linkend="XfconfPropertyChangeFunc"><type>XfconfPropertyChangeFunc</type></link>.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>user_data</parameter>&nbsp;:</term>
<listitem><simpara> Arbitrary caller-supplied data.
</simpara></listitem></varlistentry>
</variablelist></refsect2>

</refsect1>




</refentry>
