GtkPrintSettings *print_settings;
GtkPageSetup *print_page_setup;
gboolean close_after_print;
+#ifdef WITH_GCONF
+ GConfClient *gconf_client;
+#endif
};
#define EV_WINDOW_GET_PRIVATE(object) \
#define ZOOM_CONTROL_ACTION "ViewZoom"
#define NAVIGATION_ACTION "Navigation"
+#define GCONF_LOCKDOWN_DIR "/desktop/gnome/lockdown"
#define GCONF_OVERRIDE_RESTRICTIONS "/apps/evince/override_restrictions"
#define GCONF_LOCKDOWN_SAVE "/desktop/gnome/lockdown/disable_save_to_disk"
#define GCONF_LOCKDOWN_PRINT "/desktop/gnome/lockdown/disable_printing"
+#define GCONF_LOCKDOWN_PRINT_SETUP "/desktop/gnome/lockdown/disable_print_setup"
#define PRESENTATION_TIMEOUT 5
{
EvDocument *document = ev_window->priv->document;
const EvDocumentInfo *info = NULL;
-
gboolean has_document = FALSE;
gboolean ok_to_print = TRUE;
+ gboolean ok_to_print_setup = TRUE;
gboolean ok_to_copy = TRUE;
gboolean has_properties = TRUE;
gboolean override_restrictions = TRUE;
gboolean can_get_text = FALSE;
gboolean has_pages = FALSE;
gboolean can_find = FALSE;
-#ifdef WITH_GCONF
- GConfClient *client;
-#endif
if (document) {
has_document = TRUE;
}
#ifdef WITH_GCONF
- client = gconf_client_get_default ();
- override_restrictions = gconf_client_get_bool (client,
- GCONF_OVERRIDE_RESTRICTIONS,
- NULL);
+ if (has_document)
+ override_restrictions = gconf_client_get_bool (ev_window->priv->gconf_client,
+ GCONF_OVERRIDE_RESTRICTIONS,
+ NULL);
#endif
if (!override_restrictions && info && info->fields_mask & EV_DOCUMENT_INFO_PERMISSIONS) {
ok_to_print = (info->permissions & EV_DOCUMENT_PERMISSIONS_OK_TO_PRINT);
ok_to_print = FALSE;
#ifdef WITH_GCONF
- if (gconf_client_get_bool (client, GCONF_LOCKDOWN_SAVE, NULL)) {
+ if (has_document &&
+ gconf_client_get_bool (ev_window->priv->gconf_client, GCONF_LOCKDOWN_SAVE, NULL)) {
ok_to_copy = FALSE;
}
- if (gconf_client_get_bool (client, GCONF_LOCKDOWN_PRINT, NULL)) {
+ if (has_document &&
+ gconf_client_get_bool (ev_window->priv->gconf_client, GCONF_LOCKDOWN_PRINT, NULL)) {
ok_to_print = FALSE;
}
- g_object_unref (client);
+ if (has_document &&
+ gconf_client_get_bool (ev_window->priv->gconf_client, GCONF_LOCKDOWN_PRINT_SETUP, NULL)) {
+ ok_to_print_setup = FALSE;
+ }
#endif
/* File menu */
ev_window_set_action_sensitive (ev_window, "FileOpenCopy", has_document);
ev_window_set_action_sensitive (ev_window, "FileSaveAs", has_document && ok_to_copy);
#if !GTK_CHECK_VERSION (2, 17, 4)
- ev_window_set_action_sensitive (ev_window, "FilePageSetup", has_pages && ok_to_print);
+ ev_window_set_action_sensitive (ev_window, "FilePageSetup", has_pages && ok_to_print && ok_to_print_setup);
#endif
ev_window_set_action_sensitive (ev_window, "FilePrint", has_pages && ok_to_print);
ev_window_set_action_sensitive (ev_window, "FileProperties", has_document && has_properties);
ev_job_scheduler_push_job (ev_window->priv->thumbnail_job, EV_JOB_PRIORITY_NONE);
}
+#ifdef WITH_GCONF
+static void
+lockdown_changed (GConfClient *client,
+ guint cnxn_id,
+ GConfEntry *entry,
+ EvWindow *ev_window)
+{
+ ev_window_setup_action_sensitivity (ev_window);
+}
+#endif /* WITH_GCONF */
+
static gboolean
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);
+#ifdef WITH_GCONF
+ if (!ev_window->priv->gconf_client)
+ ev_window->priv->gconf_client = gconf_client_get_default ();
+ gconf_client_add_dir (ev_window->priv->gconf_client,
+ 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);
if (ev_window->priv->history)
ev_print_operation_set_current_page (op, current_page);
ev_print_operation_set_print_settings (op, print_settings);
ev_print_operation_set_default_page_setup (op, print_page_setup);
+#ifdef WITH_GCONF
+ ev_print_operation_set_embed_page_setup (op, !gconf_client_get_bool (ev_window->priv->gconf_client,
+ GCONF_LOCKDOWN_PRINT_SETUP,
+ NULL));
+#else
ev_print_operation_set_embed_page_setup (op, TRUE);
+#endif
g_object_unref (print_settings);
g_object_unref (print_page_setup);
g_source_remove (priv->setup_document_idle);
priv->setup_document_idle = 0;
}
-
+
+#ifdef WITH_GCONF
+ if (priv->gconf_client) {
+ g_object_unref (priv->gconf_client);
+ priv->gconf_client = NULL;
+ }
+#endif
+
if (priv->monitor) {
g_object_unref (priv->monitor);
priv->monitor = NULL;
G_CALLBACK (ev_window_cmd_scroll_forward) },
{ "ShiftReturn", NULL, "", "<shift>Return", NULL,
G_CALLBACK (ev_window_cmd_scroll_backward) },
+ { "p", GTK_STOCK_GO_UP, "", "p", NULL,
+ G_CALLBACK (ev_window_cmd_go_previous_page) },
+ { "n", GTK_STOCK_GO_DOWN, "", "n", NULL,
+ G_CALLBACK (ev_window_cmd_go_next_page) },
{ "Plus", GTK_STOCK_ZOOM_IN, NULL, "plus", NULL,
G_CALLBACK (ev_window_cmd_view_zoom_in) },
{ "CtrlEqual", GTK_STOCK_ZOOM_IN, NULL, "<control>equal", NULL,