config daemon/library for 4.6

Nick Schermer nickschermer at gmail.com
Wed Sep 5 12:56:20 CEST 2007


2007/9/5, Brian J. Tarricone <bjt23 at cornell.edu>:
> On Tue, 4 Sep 2007 13:26:22 -0400 Erik Harrison wrote:
>
> > On 9/4/07, Brian J. Tarricone <bjt23 at cornell.edu> wrote:
> >
> > > 7.  I plan on adding a simple client-side transaction type thing
> [...]
> >
> > In previous discussions, no one has actually come up with a use for
> > transactions, just that they can imagine wanting them for
> > completeness, or in some vague future. If no one needs it why
> > implement a finicky half solution?
>
> Yeah, good call.  If there's a need for it, it can be implemented
> properly later.
>
> I just added a GetAll() method to get all properties in a given channel
> (the idea being an app will grab all settings it cares about in one go
> on startup to avoid a bunch of round-trips).  A SetMultiple() method
> might make some sense; client-side transactions could be implemented
> using it, and, assuming the config store backend is implemented
> properly, even the daemon crashing would ensure either all or none of
> the changes in the transaction get committed.  But I'll leave that till
> later if there's an actual need.
>

Maybe the xfconf_channel set functions can be written as va_lists. So
you can write multiple settings (in 1 transaction) using

gboolean xfconf_channel_set_string(XfconfChannel *channel,
                                   const gchar *property1,
                                   const gchar *value1,
                                   const gchar *property2,
                                   const gchar *value2,
                                   NULL);

For that reason I also prefer the fist way you retreived the variables
(in combination with va_lists):

gboolean xfconf_channel_get_string (XfconfChannel *channel,
                                   const gchar *property1,
                                   char **value1,
                                   const gchar *default1,
                                   const gchar *property2,
                                   char **value2,
                                   const gchar *default2,
                                   NULL);

Maybe it's also useful to have a function to remove a channel and all
the properties inside (for example when a plugin is removed from the
panel, the panel can ask to remove all the plugin settings).

gboolean xfconf_channel_remove (const gchar *channel_name,
                                    GError **error);

The current api also lacks a bit of error handling, so errors in
xfconf_channel_remove_property for example

gboolean xfconf_channel_remove_property(XfconfChannel *channel,
                                    const gchar *property,
                                    GError **error);

Was the property not removed because it does not exist? Or not allowed
because of kiosk mode? stuff like that. Macros to read channel stuff
XFCONF_CHANNEL_IS_WRITEABLE() could be useful too.

Just my 0.02,
Nick



More information about the Xfce4-dev mailing list