From 78d0bbfbdb14ab05de26db6651d9fdb03f2140d0 Mon Sep 17 00:00:00 2001 From: Bradford Hovinen Date: Fri, 13 Jul 2001 17:20:01 +0000 Subject: [PATCH] Resolve configuration database and store in property frame (apply_cb): 2001-07-13 Bradford Hovinen * sound-properties-capplet.c (set_moniker_cb): Resolve configuration database and store in property frame (apply_cb): Retrieve configuration database from property frame (create_control_cb): Don't store config database in property control (create_control_cb): Add listener for property change in config database (changed_cb): Implement --- capplets/sound/ChangeLog | 11 ++++++++ capplets/sound/sound-properties-capplet.c | 32 +++++++++++++++++++---- 2 files changed, 38 insertions(+), 5 deletions(-) diff --git a/capplets/sound/ChangeLog b/capplets/sound/ChangeLog index 17d388d26..cf1276cef 100644 --- a/capplets/sound/ChangeLog +++ b/capplets/sound/ChangeLog @@ -1,3 +1,14 @@ +2001-07-13 Bradford Hovinen + + * sound-properties-capplet.c (set_moniker_cb): Resolve + configuration database and store in property frame + (apply_cb): Retrieve configuration database from property frame + (create_control_cb): Don't store config database in property + control + (create_control_cb): Add listener for property change in config + database + (changed_cb): Implement + 2001-07-12 Bradford Hovinen * sound-properties-capplet.c (apply_settings): Disable launch of diff --git a/capplets/sound/sound-properties-capplet.c b/capplets/sound/sound-properties-capplet.c index 40661a2f1..f0be48326 100644 --- a/capplets/sound/sound-properties-capplet.c +++ b/capplets/sound/sound-properties-capplet.c @@ -124,22 +124,33 @@ apply_cb (BonoboPropertyControl *pc, Bonobo_PropertyControl_Action action) CORBA_exception_init (&ev); pf = gtk_object_get_data (GTK_OBJECT (pc), "property-frame"); - db = gtk_object_get_data (GTK_OBJECT (pc), "config-database"); + db = gtk_object_get_data (GTK_OBJECT (pf), "config-database"); bonobo_pbproxy_update (pf->proxy); - apply_settings (db); Bonobo_ConfigDatabase_sync (db, &ev); CORBA_exception_free (&ev); } } +/* changed_cb + * + * Callback issued when a setting in the ConfigDatabase changes. Does not vary + * from capplet to capplet. + */ + +static void +changed_cb (BonoboListener *listener, gchar *event_name, CORBA_any *any, + CORBA_Environment *ev, Bonobo_ConfigDatabase db) +{ + apply_settings (db); +} + /* get_legacy_settings * * Retrieve older gnome_config -style settings and store them in the * configuration database. This function is written per-capplet. * - * In most cases, it's best to use the COPY_FROM_LEGACY macro defined above. - */ + * In most cases, it's best to use the COPY_FROM_LEGACY macro defined above. */ static void get_legacy_settings (Bonobo_ConfigDatabase db) @@ -223,6 +234,7 @@ set_moniker_cb (BonoboPropertyBag *bag, BonoboArg *arg, guint arg_id, BonoboPropertyFrame *pf; Bonobo_PropertyBag proxy; GladeXML *dialog; + Bonobo_ConfigDatabase db; if (arg_id != 1) return; @@ -234,6 +246,13 @@ set_moniker_cb (BonoboPropertyBag *bag, BonoboArg *arg, guint arg_id, proxy = BONOBO_OBJREF (pf->proxy); dialog = gtk_object_get_data (GTK_OBJECT (control), "dialog"); + db = bonobo_get_object (moniker, "IDL:Bonobo/ConfigDatabase:1.0", ev); + + if (BONOBO_EX (ev) || db == CORBA_OBJECT_NIL) + g_critical ("Could not resolve configuration moniker; will not be able to save settings"); + + gtk_object_set_data (GTK_OBJECT (pf), "config-database", db); + /* Begin per-capplet part */ CREATE_PEDITOR (boolean, "enable_esd", "enable_toggle"); @@ -336,7 +355,10 @@ create_control_cb (BonoboGenericFactory *factory, Bonobo_ConfigDatabase db) ((BonoboPropertyControlGetControlFn) create_dialog_cb, 1, NULL); gtk_signal_connect (GTK_OBJECT (property_control), "action", GTK_SIGNAL_FUNC (apply_cb), NULL); - gtk_object_set_data (GTK_OBJECT (property_control), "config-database", db); + + bonobo_event_source_client_add_listener + (db, (BonoboListenerCallbackFn) changed_cb, + "Bonobo/ConfigDatabase:change", &ev, db); CORBA_exception_free (&ev);