]> www.fi.muni.cz Git - evince.git/blobdiff - shell/ev-window.c
Set slash action insensitive when appropriate
[evince.git] / shell / ev-window.c
index 40b8a10b89a95fcd052c6201c62f34c7103824da..8a0ec4efc49b536c0630c4142aca51d13895b4f9 100644 (file)
@@ -59,6 +59,7 @@
 
 #include <libgnomevfs/gnome-vfs-uri.h>
 #include <libgnomevfs/gnome-vfs-utils.h>
+#include <libgnomevfs/gnome-vfs-ops.h>
 #include <libgnomeprintui/gnome-print-dialog.h>
 
 #include <gconf/gconf-client.h>
@@ -213,6 +214,8 @@ update_action_sensitivity (EvWindow *ev_window)
        set_action_sensitive (ev_window, "EditSelectAll", sensitive);
        set_action_sensitive (ev_window, "EditFind",
                              has_pages && EV_IS_DOCUMENT_FIND (document));
+       set_action_sensitive (ev_window, "Slash",
+                             has_pages && EV_IS_DOCUMENT_FIND (document));
        set_action_sensitive (ev_window, "EditFindNext",
                              ev_view_can_find_next (view));
 
@@ -749,6 +752,29 @@ start_loading_document (EvWindow   *ev_window,
        return FALSE;
 }
 
+static gboolean
+sanity_check_uri (EvWindow *window, const char *uri)
+{
+       gboolean result = FALSE;
+       GnomeVFSURI *vfs_uri;
+       char *err;
+
+       vfs_uri = gnome_vfs_uri_new (uri);
+       if (vfs_uri) {
+               if (gnome_vfs_uri_exists (vfs_uri)) {
+                       result = TRUE;
+               }
+       }
+
+       if (!result) {
+               err = g_strdup_printf (_("The file %s does not exist."), uri);
+               unable_to_load (window, err);
+               g_free (err);
+       }
+
+       return result;
+}
+
 void
 ev_window_open (EvWindow *ev_window, const char *uri)
 {
@@ -756,6 +782,10 @@ ev_window_open (EvWindow *ev_window, const char *uri)
        GType document_type;
        char *mime_type = NULL;
 
+       if (!sanity_check_uri (ev_window, uri)) {
+               return;
+       }
+
        g_free (ev_window->priv->uri);
        ev_window->priv->uri = g_strdup (uri);
 
@@ -1022,6 +1052,8 @@ using_postscript_printer (GnomePrintConfig *config)
        } else  if (transport) {
                if (!strcmp ((const gchar *)transport, "CUPS"))
                        return TRUE;
+               else if (!strcmp ((const gchar *)transport, "LPD"))
+                       return TRUE;
        }
 
        return FALSE;
@@ -2411,7 +2443,6 @@ register_custom_actions (EvWindow *window, GtkActionGroup *group)
                               "stock_id", GTK_STOCK_ZOOM_IN,
                               "tooltip", _("Adjust the zoom level"),
                               "zoom", 1.0,
-                              "visible_overflown", FALSE,
                               NULL);
        g_signal_connect (action, "zoom_to_level",
                          G_CALLBACK (zoom_control_changed_cb), window);