]> www.fi.muni.cz Git - evince.git/blobdiff - shell/main.c
Don't overwite an error.
[evince.git] / shell / main.c
index 60f92c77ce120e4602673036ba07a934d53aec81..17e0f647f9fa9f95041982c9a942f4ea49d46dfb 100644 (file)
 #include "ev-application.h"
 #include "ev-backends-manager.h"
 #include "ev-debug.h"
+#include "ev-init.h"
 #include "ev-file-helpers.h"
-#include "ev-metadata-manager.h"
 #include "ev-stock-icons.h"
 #include "eggsmclient.h"
+#ifndef G_OS_WIN32
 #include "eggdesktopfile.h"
+#endif
 
 static gchar   *ev_page_label;
 static gchar   *ev_find_string;
@@ -48,6 +50,18 @@ static gboolean unlink_temp_file = FALSE;
 static gchar   *print_settings;
 static const char **file_arguments = NULL;
 
+static gboolean
+option_version_cb (const gchar *option_name,
+                   const gchar *value,
+                   gpointer     data,
+                   GError     **error)
+{
+  g_print ("%s %s\n", _("GNOME Document Viewer"), VERSION);
+
+  exit (0);
+  return FALSE;
+}
+
 static const GOptionEntry goption_options[] =
 {
        { "page-label", 'p', 0, G_OPTION_ARG_STRING, &ev_page_label, N_("The page of the document to display."), N_("PAGE")},
@@ -57,6 +71,7 @@ static const GOptionEntry goption_options[] =
        { "find", 'l', 0, G_OPTION_ARG_STRING, &ev_find_string, N_("The word or phrase to find in the document"), N_("STRING")},
        { "unlink-tempfile", 'u', G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_NONE, &unlink_temp_file, NULL, NULL },
        { "print-settings", 't', G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_FILENAME, &print_settings, NULL, NULL },
+       { "version", 0, G_OPTION_FLAG_NO_ARG | G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_CALLBACK, option_version_cb, NULL, NULL },
        { G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &file_arguments, NULL, N_("[FILE...]") },
        { NULL }
 };
@@ -316,7 +331,6 @@ main (int argc, char *argv[])
 {
        GOptionContext *context;
        GHashTable *args;
-       gboolean enable_metadata = FALSE;
        GError *error = NULL;
 
        /* Init glib threads asap */
@@ -355,22 +369,21 @@ main (int argc, char *argv[])
 
                        return 0;
                }
-       } else {
-               enable_metadata = TRUE;
        }
 #endif /* ENABLE_DBUS */
 
-       ev_debug_init ();
-       ev_backends_manager_init ();
-       
-       if (enable_metadata) {
-               ev_metadata_manager_init ();
-       }
+        if (!ev_init ())
+                return 1;
 
-       ev_file_helpers_init ();
        ev_stock_icons_init ();
-       
+
+#ifdef G_OS_WIN32
+       /* Manually set name and icon in win32 */
+       g_set_application_name (_("Evince"));
+       gtk_window_set_default_icon_name ("evince");
+#else
        egg_set_desktop_file (GNOMEDATADIR "/applications/evince.desktop");
+#endif /* G_OS_WIN32 */
 
        if (!ev_application_load_session (EV_APP))
                load_files (file_arguments, args);
@@ -378,15 +391,7 @@ main (int argc, char *argv[])
 
        gtk_main ();
 
-       ev_file_helpers_shutdown ();
-
-       if (enable_metadata) {
-               ev_metadata_manager_shutdown ();
-       }
-
-       ev_backends_manager_shutdown ();
-
-       ev_debug_shutdown ();
+       ev_shutdown ();
 
        return 0;
 }