]> www.fi.muni.cz Git - evince.git/commitdiff
[shell] Port override_restrictions gconf key to GSettings
authorCarlos Garcia Campos <carlosgc@gnome.org>
Mon, 3 May 2010 12:37:30 +0000 (14:37 +0200)
committerCarlos Garcia Campos <carlosgc@gnome.org>
Mon, 3 May 2010 12:38:45 +0000 (14:38 +0200)
configure.ac
data/Makefile.am
data/evince.schemas.in [deleted file]
data/org.gnome.Evince.gschema.xml.in [new file with mode: 0644]
shell/ev-window.c
shell/main.c

index 8f1835790ba2c0cf4bc14c65b157871dfa9b46b2..3621326e9ade2a503e504aa4a38a002bd5775aa3 100644 (file)
@@ -85,6 +85,8 @@ m4_pattern_allow([AM_V_GEN])dnl Make autoconf not complain about the rule below
 EV_INTLTOOL_EVINCE_BACKEND_RULE='%.evince-backend:   %.evince-backend.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(AM_V_GEN) LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
 AC_SUBST([EV_INTLTOOL_EVINCE_BACKEND_RULE])
 
+GLIB_GSETTINGS
+
 # Check which platform to use
 
 AC_MSG_CHECKING([for which platform to build])
@@ -122,8 +124,9 @@ AM_CONDITIONAL([PLATFORM_WIN32],[test "$with_platform" = "win32"])
 dnl Specify required versions of dependencies
 DBUS_GLIB_REQUIRED=0.70
 GTK_REQUIRED=2.20.0
-GLIB_REQUIRED=2.18.0
+GLIB_REQUIRED=2.25.3
 KEYRING_REQUIRED=2.22.0
+GCONF_REQUIRED=2.31.2
 AC_SUBST([GLIB_REQUIRED])
 AC_SUBST([GTK_REQUIRED])
 
@@ -312,7 +315,7 @@ AC_MSG_RESULT([$with_gconf])
 AM_CONDITIONAL([WITH_GCONF],[test "$with_gconf" = "yes"])
 
 if test "$with_gconf" = "yes"; then
-   PKG_CHECK_MODULES([GCONF],[gconf-2.0])
+   PKG_CHECK_MODULES([GCONF],[gconf-2.0 >= $GCONF_REQUIRED])
    AC_DEFINE([WITH_GCONF],[1],[Define if GConf support is enabled])
 
    AM_GCONF_SOURCE_2
index 79660251a4d16e64ba44cbe493192bf699cb69ae..feb52301527bcf88e1a41a07aab9cbd3c00c0b6f 100644 (file)
@@ -1,8 +1,7 @@
 SUBDIRS = icons
 NULL=
 
-install-data-local: install-schemas update-icon-cache
-uninstall-local: uninstall-schemas
+install-data-local: update-icon-cache
 
 #
 # man file
@@ -49,45 +48,20 @@ $(service_DATA): $(service_in_files) Makefile
 endif
 
 #
-# GConf schema
+# GSettings schema
 #
 
-if WITH_GCONF
-@INTLTOOL_SCHEMAS_RULE@
-
-schema_in_files = evince.schemas.in
-schemadir = $(GCONF_SCHEMA_FILE_DIR)
-schema_DATA = $(schema_in_files:.schemas.in=.schemas)
-
-install-schemas: $(schema_DATA)
-if GCONF_SCHEMAS_INSTALL
-       if test -z "$(DESTDIR)" ; then \
-       for p in $^ ; do \
-               GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) \
-                       $(GCONFTOOL) \
-                       --makefile-install-rule \
-                       $(top_builddir)/data/$$p; \
-       done \
-       fi
-endif
-
-uninstall-schemas: $(schema_DATA)
-if GCONF_SCHEMAS_INSTALL
-       if test -z "$(DESTDIR)" ; then \
-       for p in $^ ; do \
-               GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) \
-                       $(GCONFTOOL) \
-                       --makefile-uninstall-rule \
-                       $(top_builddir)/data/$$p; \
-       done \
-       fi
-endif
-
-else
-
-install-schemas:
-uninstall-schemas:
-
+# gsettingsschemadir and gschema_compile are defined by the GLIB_GSETTINGS
+# macro in configure.ac
+gsettingsschema_in_files = org.gnome.Evince.gschema.xml.in
+gsettingsschema_DATA = $(gsettingsschema_in_files:.xml.in=.xml)
+@INTLTOOL_XML_NOMERGE_RULE@
+# This rule will check your schemas for validity before installation
+# Uncomment when porting is done
+# GSETTINGS_CHECK_RULE
+if GSETTINGS_SCHEMAS_INSTALL
+install-data-hook:
+       $(AM_V_GEN) $(GLIB_COMPILE_SCHEMAS) --allow-any-name $(DESTDIR)$(gsettingsschemadir) --targetdir=$(DESTDIR)$(gsettingsschemadir)
 endif
 
 #
@@ -116,7 +90,7 @@ update-icon-cache:
 EXTRA_DIST =                                   \
        $(ui_DATA)                              \
        $(DESKTOP_IN_FILES)                     \
-       $(schema_in_files)                      \
+       $(gsettingsschema_in_files)             \
        org.gnome.evince.Daemon.service.in      \
        $(man_MANS)                             \
        evince.ico                              \
@@ -128,7 +102,7 @@ EXTRA_DIST =                                        \
 
 DISTCLEANFILES = \
        $(DESKTOP_FILES)        \
-       $(schema_DATA)          \
+       $(gsettingsschema_DATA)         \
        $(service_DATA)
 
 -include $(top_srcdir)/git.mk
diff --git a/data/evince.schemas.in b/data/evince.schemas.in
deleted file mode 100644 (file)
index cbad422..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-<gconfschemafile>
-  <schemalist>
-    <schema>
-      <key>/schemas/apps/evince/override_restrictions</key>
-      <applyto>/apps/evince/override_restrictions</applyto>
-      <owner>evince</owner>
-      <type>bool</type>
-      <default>true</default>
-      <locale name="C">
-        <short>Override document restrictions</short>
-        <long>Override document restrictions, like restriction to copy or to print.</long>
-      </locale>
-    </schema>
-  </schemalist>
-</gconfschemafile>
diff --git a/data/org.gnome.Evince.gschema.xml.in b/data/org.gnome.Evince.gschema.xml.in
new file mode 100644 (file)
index 0000000..dfccd85
--- /dev/null
@@ -0,0 +1,9 @@
+<schemalist>
+  <schema id="org.gnome.Evince" path="/apps/evince/" gettext-domain="evince">
+    <key name="override_restrictions" type="b">
+      <default>true</default>
+      <summary>Override document restrictions</summary>
+      <description>Override document restrictions, like restriction to copy or to print.</description>
+    </key>
+  </schema>
+</schemalist>
index dab2c5ad0d2cec03f84f466986f1d1f01e860cb5..8c5d95fdb1853e34467684b0b34cd5ccc408ace9 100644 (file)
@@ -140,6 +140,9 @@ struct _EvWindowPrivate {
        GtkWidget *sidebar_attachments;
        GtkWidget *sidebar_layers;
 
+       /* Settings */
+       GSettings *settings;
+
        /* Menubar accels */
        guint           menubar_accel_keyval;
        GdkModifierType menubar_accel_modifier;
@@ -224,6 +227,9 @@ struct _EvWindowPrivate {
 #define GCONF_LOCKDOWN_PRINT        "/desktop/gnome/lockdown/disable_printing"
 #define GCONF_LOCKDOWN_PRINT_SETUP  "/desktop/gnome/lockdown/disable_print_setup"
 
+#define GS_SCHEMA_NAME           "org.gnome.Evince"
+#define GS_OVERRIDE_RESTRICTIONS "override_restrictions"
+
 #define SIDEBAR_DEFAULT_SIZE    132
 #define LINKS_SIDEBAR_ID "links"
 #define THUMBNAILS_SIDEBAR_ID "thumbnails"
@@ -377,12 +383,12 @@ ev_window_setup_action_sensitivity (EvWindow *ev_window)
                can_find = TRUE;
        }
 
-#ifdef WITH_GCONF
-       if (has_document)
-               override_restrictions = gconf_client_get_bool (ev_window->priv->gconf_client,
-                                                              GCONF_OVERRIDE_RESTRICTIONS,
-                                                              NULL);
-#endif
+       if (has_document && ev_window->priv->settings) {
+               override_restrictions =
+                       g_settings_get_boolean (ev_window->priv->settings,
+                                               GS_OVERRIDE_RESTRICTIONS);
+       }
+
        if (!override_restrictions && info && info->fields_mask & EV_DOCUMENT_INFO_PERMISSIONS) {
                ok_to_print = (info->permissions & EV_DOCUMENT_PERMISSIONS_OK_TO_PRINT);
                ok_to_copy = (info->permissions & EV_DOCUMENT_PERMISSIONS_OK_TO_COPY);
@@ -1190,6 +1196,14 @@ ev_window_refresh_window_thumbnail (EvWindow *ev_window)
        ev_job_scheduler_push_job (ev_window->priv->thumbnail_job, EV_JOB_PRIORITY_NONE);
 }
 
+static void
+override_restrictions_changed (GSettings *settings,
+                              gchar     *key,
+                              EvWindow  *ev_window)
+{
+       ev_window_setup_action_sensitivity (ev_window);
+}
+
 #ifdef WITH_GCONF
 static void
 lockdown_changed (GConfClient *client,
@@ -1216,6 +1230,12 @@ ev_window_setup_document (EvWindow *ev_window)
        ev_window_title_set_document (ev_window->priv->title, document);
        ev_window_title_set_uri (ev_window->priv->title, ev_window->priv->uri);
 
+       ev_window->priv->settings = g_settings_new (GS_SCHEMA_NAME);
+       g_signal_connect (ev_window->priv->settings,
+                         "changed::"GS_OVERRIDE_RESTRICTIONS,
+                         G_CALLBACK (override_restrictions_changed),
+                         ev_window);
+
 #ifdef WITH_GCONF
        if (!ev_window->priv->gconf_client)
                ev_window->priv->gconf_client = gconf_client_get_default ();
@@ -1223,18 +1243,10 @@ ev_window_setup_document (EvWindow *ev_window)
                              GCONF_LOCKDOWN_DIR,
                              GCONF_CLIENT_PRELOAD_ONELEVEL,
                              NULL);
-       gconf_client_add_dir (ev_window->priv->gconf_client,
-                             GCONF_OVERRIDE_RESTRICTIONS,
-                             GCONF_CLIENT_PRELOAD_NONE,
-                             NULL);
        gconf_client_notify_add (ev_window->priv->gconf_client,
                                 GCONF_LOCKDOWN_DIR,
                                 (GConfClientNotifyFunc)lockdown_changed,
                                 ev_window, NULL, NULL);
-       gconf_client_notify_add (ev_window->priv->gconf_client,
-                                GCONF_OVERRIDE_RESTRICTIONS,
-                                (GConfClientNotifyFunc)lockdown_changed,
-                                ev_window, NULL, NULL);
 #endif /* WITH_GCONF */
 
        ev_window_setup_action_sensitivity (ev_window);
@@ -4840,6 +4852,11 @@ ev_window_dispose (GObject *object)
                priv->recent_manager = NULL;
        }
 
+       if (priv->settings) {
+               g_object_unref (priv->settings);
+               priv->settings = NULL;
+       }
+
        priv->recent_ui_id = 0;
 
        if (priv->model) {
index dfe6a200db31049a0ad72695aefe8a2f9d3011cb..d7d6e158447564f831a23121d97cd94a1cd62af0 100644 (file)
@@ -216,6 +216,11 @@ main (int argc, char *argv[])
        GOptionContext *context;
        GError         *error = NULL;
 
+#ifdef WITH_GCONF
+       /* Remove when porting is done */
+       g_setenv ("GSETTINGS_BACKEND", "gconf", FALSE);
+#endif
+
 #ifdef G_OS_WIN32
 
     if (fileno (stdout) != -1 &&