Re: libgnome: User level



Colm Smyth wrote:

> Hi Dietmar,
>
> >From the API it looks rosy, but I'm guessing internally it's
> a stackable db is a little more heavyweight than the stackable]
> context. What you have described sounds like the symlink-database
> stack we had for GConf.

The ideas is from Havoc - only the implementation is a little different ;-)
(Although the example below does not work, because it is not fully implemented)

- Dietmar

>
>
> Nice feature though!
>
> Colm.
>
> >From: Dietmar Maurer <dietmar ximian com>
> >X-Accept-Language: en
> >MIME-Version: 1.0
> >To: Colm Smyth <Colm Smyth sun com>
> >CC: hp redhat com, michael ximian com, bratsche gnome org,
> gnome-2-0-list gnome org
> >Subject: Re: libgnome: User level
> >
> >Colm Smyth wrote:
> >
> >> >IMO you can also solve this with stackable databases, as used in
> >> bonobo-config.
> >>
> >> Not really.  Stackable databases (as used also in GConf ;) are not the
> >> solution to the problem below; each database in the stack has an
> >> identical namespace.
> >
> >Sorry, I meant stackable databases as used in bonobo-config.
> >
> >> The configuration context I described below provides a list of
> >> base addresses that define a logically stacked namespace
> >> that may be resolved within a single database or across multiple
> >> (stacked or composed) databases.
> >>
> >
> >So please let me explain the concept I use in bonobo-config. It is quite
> >easy and part of the ConfigDatabase interface:
> >
> >        /**
> >         * addDatabase:
> >         *
> >         * The added database will be used to lookup default values.
> >         */
> >        void            addDatabase (in ConfigDatabase default_db,
> >                                     in string path)
> >                raises (BackendFailed);
> >
> >That is all you need. Maybe it is best to use the user_level as example. The
> >user level is a global configuration key, but some application wants to
> >implement there own meaning. So we have two keys:
> >
> >/global/shared/settings/user_level
> >
> >/application/gnumeric/shared/user_level
> >
> >The application uses the following code to access the database:
> >
> >defaultdb = bonobo_get_object ("config:/global/shared/settings",
> "Bonobo/ConfigDatabase");
> >
> >db = bonobo_get_object ("config:/application/gnumeric",
> "Bonobo/ConfigDatabase");
> >
> >Bonobo_ConfigDatabase_addDatabase (db, defaultdb, "shared");
> >
> >You can now get/set the user_level with:
> >
> >bonobo_pbclient_get_long (db, "/shared/user_level", NULL);
> >
> >bonobo_pbclient_set_long (db, "/shared/user_level",  1, NULL);
> >
> >I think this is a nice solution to your problem.
> >
> >- Dietmar
> >





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]