diff --git a/capplets/common/ChangeLog b/capplets/common/ChangeLog index 143c41ccb..a04666f51 100644 --- a/capplets/common/ChangeLog +++ b/capplets/common/ChangeLog @@ -1,3 +1,13 @@ +2002-03-10 Seth Nickell + + * Makefile.am: + * activate-settings-daemon.c: (popup_error_message), + (activate_settings_daemon): + * activate-settings-daemon.h: + + Add new client interface for activating the settings daemon + if its not already running. + 2002-02-27 Kjartan Maraas * capplet-util.c: s/PACKAGE/GETTEXT_PACKAGE/g diff --git a/capplets/common/Makefile.am b/capplets/common/Makefile.am index 9d795e391..441ce1d75 100644 --- a/capplets/common/Makefile.am +++ b/capplets/common/Makefile.am @@ -10,6 +10,7 @@ INCLUDES = \ noinst_LIBRARIES = libcommon.a libcommon_a_SOURCES = \ + activate-settings-daemon.c activate-settings-daemon.h \ capplet-util.c capplet-util.h \ gconf-property-editor.c gconf-property-editor.h \ gconf-property-editor-marshal.c gconf-property-editor-marshal.h diff --git a/capplets/common/activate-settings-daemon.c b/capplets/common/activate-settings-daemon.c new file mode 100644 index 000000000..8f08a92b1 --- /dev/null +++ b/capplets/common/activate-settings-daemon.c @@ -0,0 +1,54 @@ +#include +#include + +#include "activate-settings-daemon.h" + + +/*#include "GNOME_SettingsDaemon.h"*/ + +static void popup_error_message () +{ + GtkWidget *dialog; + + dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_NO_SEPARATOR, GTK_MESSAGE_WARNING, + GTK_BUTTONS_OK, "Unable to start the settings manager 'gnome2-settings-daemon'.\n" + "Without the GNOME settings manager running, some preferences may not take effect. This could" + "indicate a problem with Bonobo, or a non-GNOME (e.g. KDE) settings manager may already" + "be active and conflicting with the GNOME settings manager."); + + gtk_widget_show (dialog); + gtk_widget_destroy (dialog); +} + +/* Returns FALSE if activation failed, else TRUE */ +gboolean +activate_settings_daemon (void) +{ + CORBA_Environment ev; + CORBA_Object object; + + /*GNOME_SettingsDaemon corba_foo;*/ + + bonobo_init (NULL, NULL); + + CORBA_exception_init (&ev); + + object = bonobo_activation_activate_from_id ("OAFIID:GNOME_SettingsDaemon", + 0, NULL, &ev); + + if (ev._major != CORBA_NO_EXCEPTION) { + popup_error_message (); + return FALSE; + } + + if (object == CORBA_OBJECT_NIL) { + popup_error_message (); + return FALSE; + } + + /*bool = GNOME_SettingsDaemon_awake (corba_foo, "MyService", &ev); + printf ("bool is %d\n", bool);*/ + + + return TRUE; +} diff --git a/capplets/common/activate-settings-daemon.h b/capplets/common/activate-settings-daemon.h new file mode 100644 index 000000000..fc1558d82 --- /dev/null +++ b/capplets/common/activate-settings-daemon.h @@ -0,0 +1,9 @@ +#ifndef ACTIVATE_SETINGS_DAEMON +#define ACTIVATE_SETINGS_DAEMON + +#include + +/* Returns FALSE if activation failed, else TRUE */ +gboolean activate_settings_daemon (void); + +#endif