[gconf-editor] Make PolicyKit support optional



commit 0d4ecb4e3d191ccd9fef1417524c7fcff7535fe4
Author: Perier Romain <mrpouet tuxfamily org>
Date:   Wed May 6 16:03:05 2009 +0200

    Make PolicyKit support optional
    
    Make PolictKiy an optional dependency, turned on by default (#579096).
    
    Signed-off-by: Cosimo Cecchi <cosimoc gnome org>
---
 configure.in              |   25 +++++++++++++++----
 src/Makefile.am           |   15 ++++++++----
 src/gconf-editor-window.c |   57 ++++++++++++++++++++++++++++++++++----------
 3 files changed, 74 insertions(+), 23 deletions(-)

diff --git a/configure.in b/configure.in
index c639764..d15ae83 100644
--- a/configure.in
+++ b/configure.in
@@ -34,9 +34,7 @@ changequote([,])dnl
 
 PKG_CHECK_MODULES(GCONF_EDITOR,
 		  gconf-2.0 >= 2.9.2
-		  gtk+-2.0 >= 2.12.0
-		  polkit-dbus >= 0.7
-		  dbus-glib-1 >= 0.71)
+		  gtk+-2.0 >= 2.12.0)
 
 if test "$enable_maintainer_mode" = "yes"; then
 	DISABLE_DEPRECATED_CFLAGS="-DG_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED \
@@ -55,6 +53,22 @@ GNOME_COMMON_INIT
 GNOME_COMPILE_WARNINGS([maximum])
 GNOME_MAINTAINER_MODE_DEFINES
 
+dnl Enable or not the policykit support
+AC_ARG_WITH([policykit],
+	AC_HELP_STRING([--with-policykit],
+	[Compile with policykit support @<:@default=yes@:>@]),
+	[with_polkit=$withval],
+	[with_polkit=yes])
+
+if test x$with_polkit = xyes; then
+   AC_DEFINE([HAVE_POLICYKIT], 1, [PolicyKit support is required])
+   PKG_CHECK_MODULES(GCONF_EDITOR_POLKIT,
+                     polkit-dbus >= 0.7
+		     dbus-glib-1 >= 0.71)
+fi
+
+AM_CONDITIONAL([HAVE_POLICYKIT], [test x$with_polkit = xyes])
+
 dnl Get the GConf defaults source, and sed it to make the mandatory source.
 GCONF_DEFAULTS_SOURCE=`gconftool-2 --get-default-source`
 AC_ARG_WITH(gconf-defaults-source,
@@ -86,5 +100,6 @@ AC_OUTPUT
 
 echo "
 Configuration Sources:
-GConf default values source: ${GCONF_DEFAULTS_SOURCE}
-GConf mandatory values source: ${GCONF_MANDATORY_SOURCE}"
+GConf default values source:	${GCONF_DEFAULTS_SOURCE}
+GConf mandatory values source:	${GCONF_MANDATORY_SOURCE}
+PolicyKit support:     		${with_polkit}"
diff --git a/src/Makefile.am b/src/Makefile.am
index ae5cef3..193db21 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -3,14 +3,15 @@ INCLUDES = \
 	-DDATADIR=\""$(pkgdatadir)"\" 	\
 	-DICONDIR="\"$(pkgdatadir)/icons\"" \
 	$(DISABLE_DEPRECATED_CFLAGS) \
-	$(GCONF_EDITOR_CFLAGS)
+	$(GCONF_EDITOR_CFLAGS) \
+	$(GCONF_EDITOR_POLKIT_CFLAGS)
 
 bin_PROGRAMS = gconf-editor
 
 gconf_editor_built_headers = gconf-marshal.h
 gconf_editor_built_cfiles = gconf-marshal.c
 
-gconf_editor_SOURCES = \
+gconf_editor_SOURCES =			\
 	gconf-bookmarks.c		\
 	gconf-bookmarks.h		\
 	gconf-bookmarks-dialog.c	\
@@ -33,8 +34,6 @@ gconf_editor_SOURCES = \
 	gconf-util.h			\
 	gedit-output-window.c		\
 	gedit-output-window.h		\
-	gconf-policykit.c		\
-	gconf-policykit.h		\
 	gconf-search.h                  \
 	gconf-search.c                  \
 	gconf-search-dialog.h           \
@@ -43,6 +42,11 @@ gconf_editor_SOURCES = \
 	$(gconf_editor_built_headers)	\
 	$(gconf_editor_built_cfiles)
 
+if HAVE_POLICYKIT
+gconf_editor_SOURCES +=	gconf-policykit.h	\
+			gconf-policykit.c
+endif
+
 ## we just punt on built sources, and check them into svn, manually updating
 ## when required.
 regenerate-built-sources:
@@ -54,7 +58,8 @@ regenerate-built-sources:
 
 
 gconf_editor_LDADD = \
-	$(GCONF_EDITOR_LIBS)
+	$(GCONF_EDITOR_LIBS) \
+	$(GCONF_EDITOR_POLKIT_LIBS)
 
 EXTRA_DIST = \
 	gconf-marshal.list
diff --git a/src/gconf-editor-window.c b/src/gconf-editor-window.c
index c9ec8f8..733ff7f 100644
--- a/src/gconf-editor-window.c
+++ b/src/gconf-editor-window.c
@@ -27,7 +27,9 @@
 #include "gconf-cell-renderer.h"
 #include "gconf-editor-application.h"
 #include "gconf-key-editor.h"
-#include "gconf-policykit.h"
+#ifdef HAVE_POLICYKIT
+# include "gconf-policykit.h"
+#endif
 #include "gconf-stock-icons.h"
 #include "gconf-util.h"
 #include "gedit-output-window.h"
@@ -640,26 +642,30 @@ gconf_editor_window_row_expanded (GtkTreeView       *tree_view,
   gdk_display_flush (gtk_widget_get_display (GTK_WIDGET (gconfwindow)));
 }
 
+#ifdef HAVE_POLICYKIT
 static void
 gconf_editor_popup_policykit_callback (GtkWindow *window, GError *error)
 {
   if (error)
     gconf_editor_window_popup_error_dialog (window, _("Could not set value. Error was:\n%s"), error);
 }
+#endif
 
 static void
 gconf_editor_popup_window_set_as_default (GtkAction *action, GtkWidget *callback_data)
 {
   GConfEditorWindow *gconfwindow = GCONF_EDITOR_WINDOW (callback_data);
-  GtkWindow *window = GTK_WINDOW (callback_data);
 
   GtkTreeIter iter;
   GConfValue *value;
   char *path = NULL;
+
+#ifdef HAVE_POLICYKIT
+  GtkWindow *window = GTK_WINDOW (callback_data);
   gboolean can_use_pk;
   
   can_use_pk = (gconfwindow->type == GCONF_EDITOR_WINDOW_TYPE_NORMAL);
-  
+#endif
   gtk_tree_selection_get_selected (gtk_tree_view_get_selection (GTK_TREE_VIEW (gconfwindow->list_view)),
                                    NULL, &iter);
   gtk_tree_model_get (gconfwindow->sorted_list_model, &iter,
@@ -680,12 +686,13 @@ gconf_editor_popup_window_set_as_default (GtkAction *action, GtkWidget *callback
 
       if (!error)
         return;
-
+#ifdef HAVE_POLICYKIT
       if (!can_use_pk)
         gconf_editor_window_popup_error_dialog (window, _("Could not sync value. Error was:\n%s"), error);
+#endif
     }
   }
-
+#ifdef HAVE_POLICYKIT
   if (can_use_pk) {
     gconf_client_suggest_sync (gconfwindow->client, NULL);
     gconf_pk_set_default_async (path,
@@ -693,21 +700,23 @@ gconf_editor_popup_window_set_as_default (GtkAction *action, GtkWidget *callback
                                 (GFunc) gconf_editor_popup_policykit_callback,
                                 g_object_ref (window), g_object_unref);
   }
+#endif
 }
 
 static void
 gconf_editor_popup_window_set_as_mandatory (GtkAction *action, GtkWidget *callback_data)
 {
   GConfEditorWindow *gconfwindow = GCONF_EDITOR_WINDOW (callback_data);
-  GtkWindow *window = GTK_WINDOW (callback_data);
 
   GtkTreeIter iter;
   GConfValue *value;
   char *path = NULL;
+#ifdef HAVE_POLICYKIT
+  GtkWindow *window = GTK_WINDOW (callback_data);
   gboolean can_use_pk;
   
   can_use_pk = (gconfwindow->type == GCONF_EDITOR_WINDOW_TYPE_NORMAL);
-
+#endif
   gtk_tree_selection_get_selected (gtk_tree_view_get_selection (GTK_TREE_VIEW (gconfwindow->list_view)),
                                    NULL, &iter);
   gtk_tree_model_get (gconfwindow->sorted_list_model, &iter,
@@ -728,12 +737,13 @@ gconf_editor_popup_window_set_as_mandatory (GtkAction *action, GtkWidget *callba
 
       if (!error)
         return;
-      
+#ifdef HAVE_POLICYKIT
       if (!can_use_pk)
         gconf_editor_window_popup_error_dialog (window, _("Could not sync value. Error was:\n%s"), error);
+#endif
     }
   }
-
+#ifdef HAVE_POLICYKIT
   if (can_use_pk) {
     gconf_client_suggest_sync (gconfwindow->client, NULL);
     gconf_pk_set_mandatory_async (path,
@@ -741,6 +751,7 @@ gconf_editor_popup_window_set_as_mandatory (GtkAction *action, GtkWidget *callba
                                   (GFunc) gconf_editor_popup_policykit_callback,
                                   g_object_ref (window), g_object_unref);
   }
+#endif
 }
 
 static GtkActionEntry entries[] = {
@@ -934,10 +945,20 @@ list_view_button_press_event (GtkTreeView *tree_view, GdkEventButton *event, GCo
 						  window->type != GCONF_EDITOR_WINDOW_TYPE_DEFAULTS);
 			gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->ui_manager, "/GConfKeyPopupMenu/DefaultKey"), 
 						  (gconf_util_can_edit_defaults () && window->type != GCONF_EDITOR_WINDOW_TYPE_DEFAULTS) ||
-						  (gconf_pk_can_set_default () && window->type == GCONF_EDITOR_WINDOW_TYPE_NORMAL));
+#ifdef HAVE_POLICYKIT
+						  (gconf_pk_can_set_default () &&
+#else
+						   (
+#endif
+						    window->type == GCONF_EDITOR_WINDOW_TYPE_NORMAL));
 			gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->ui_manager, "/GConfKeyPopupMenu/MandatoryKey"), 
 						  (gconf_util_can_edit_mandatory () && window->type != GCONF_EDITOR_WINDOW_TYPE_MANDATORY) ||
-						  (gconf_pk_can_set_mandatory () && window->type == GCONF_EDITOR_WINDOW_TYPE_NORMAL));
+#ifdef HAVE_POLICYKIT
+						  (gconf_pk_can_set_mandatory () &&
+#else
+						   (
+#endif
+						    window->type == GCONF_EDITOR_WINDOW_TYPE_NORMAL));
 			
 			gtk_tree_path_free (path);
 		}
@@ -1037,10 +1058,20 @@ gconf_editor_window_list_view_popup_menu (GtkWidget *widget, GConfEditorWindow *
 					  window->type != GCONF_EDITOR_WINDOW_TYPE_DEFAULTS);
 		gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->ui_manager, "/GConfKeyPopupMenu/DefaultKey"), 
 					  (gconf_util_can_edit_defaults () && window->type != GCONF_EDITOR_WINDOW_TYPE_DEFAULTS) ||
-					  (gconf_pk_can_set_default () && window->type == GCONF_EDITOR_WINDOW_TYPE_NORMAL));
+#ifdef HAVE_POLICYKIT
+					  (gconf_pk_can_set_default () &&
+#else
+					   (
+#endif
+window->type == GCONF_EDITOR_WINDOW_TYPE_NORMAL));
 		gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->ui_manager, "/GConfKeyPopupMenu/MandatoryKey"), 
 					  (gconf_util_can_edit_mandatory () && window->type != GCONF_EDITOR_WINDOW_TYPE_MANDATORY) ||
-					  (gconf_pk_can_set_mandatory () && window->type == GCONF_EDITOR_WINDOW_TYPE_NORMAL));
+#ifdef HAVE_POLICYKIT
+					  (gconf_pk_can_set_mandatory () &&
+#else
+					   (
+#endif
+window->type == GCONF_EDITOR_WINDOW_TYPE_NORMAL));
 			
 	}
 	else {



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