X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;ds=sidebyside;f=shell%2Fev-application.c;h=3d4afb1b56dc378e877d709bec024c9c43443249;hb=e2796d0d1a833e63c9495193c9241bd718f68082;hp=9c7770ae0b1a75a1023a3316305e85ccc87b29e9;hpb=2fc3dcecc52241f84e007306f04f7329870ebf70;p=evince.git diff --git a/shell/ev-application.c b/shell/ev-application.c index 9c7770ae..3d4afb1b 100644 --- a/shell/ev-application.c +++ b/shell/ev-application.c @@ -57,6 +57,7 @@ struct _EvApplication { GObject base_instance; gchar *dot_dir; + gchar *data_dir; gchar *accel_map_file; gchar *toolbars_file; gchar *crashed_file; @@ -68,7 +69,8 @@ struct _EvApplication { EggSMClient *smclient; - gchar *last_chooser_uri; + gchar *filechooser_open_uri; + gchar *filechooser_save_uri; #ifdef ENABLE_DBUS EvMediaPlayerKeys *keys; @@ -786,8 +788,12 @@ ev_application_shutdown (EvApplication *application) g_free (application->dot_dir); application->dot_dir = NULL; - g_free (application->last_chooser_uri); - application->last_chooser_uri = NULL; + g_free (application->data_dir); + application->data_dir = NULL; + g_free (application->filechooser_open_uri); + application->filechooser_open_uri = NULL; + g_free (application->filechooser_save_uri); + application->filechooser_save_uri = NULL; g_object_unref (application); instance = NULL; @@ -805,6 +811,7 @@ ev_application_init (EvApplication *ev_application) { gint i; const gchar *home_dir; + gchar *toolbar_path; ev_application->dot_dir = g_build_filename (g_get_home_dir (), ".gnome2", @@ -815,6 +822,18 @@ ev_application_init (EvApplication *ev_application) if (!ev_dir_ensure_exists (ev_application->dot_dir, 0700)) exit (1); +#ifdef G_OS_WIN32 +{ + gchar *dir; + + dir = g_win32_get_package_installation_directory_of_module (NULL); + ev_application->data_dir = g_build_filename (dir, "share", "evince", NULL); + g_free (dir); +} +#else + ev_application->data_dir = g_strdup (DATADIR); +#endif + ev_application_init_session (ev_application); home_dir = g_get_home_dir (); @@ -832,14 +851,17 @@ ev_application_init (EvApplication *ev_application) ev_application->toolbars_file = g_build_filename (ev_application->dot_dir, "evince_toolbar.xml", NULL); + toolbar_path = g_build_filename (ev_application->data_dir, + "evince-toolbar.xml", NULL); egg_toolbars_model_load_names (ev_application->toolbars_model, - DATADIR "/evince-toolbar.xml"); + toolbar_path); if (!egg_toolbars_model_load_toolbars (ev_application->toolbars_model, ev_application->toolbars_file)) { egg_toolbars_model_load_toolbars (ev_application->toolbars_model, - DATADIR"/evince-toolbar.xml"); + toolbar_path); } + g_free (toolbar_path); /* Open item doesn't exist anymore, * convert it to OpenRecent for compatibility @@ -924,16 +946,32 @@ ev_application_save_toolbars_model (EvApplication *application) } void -ev_application_set_chooser_uri (EvApplication *application, const gchar *uri) +ev_application_set_filechooser_uri (EvApplication *application, + GtkFileChooserAction action, + const gchar *uri) { - g_free (application->last_chooser_uri); - application->last_chooser_uri = g_strdup (uri); + if (action == GTK_FILE_CHOOSER_ACTION_OPEN) { + g_free (application->filechooser_open_uri); + application->filechooser_open_uri = g_strdup (uri); + } else if (action == GTK_FILE_CHOOSER_ACTION_SAVE) { + g_free (application->filechooser_save_uri); + application->filechooser_save_uri = g_strdup (uri); + } } const gchar * -ev_application_get_chooser_uri (EvApplication *application) +ev_application_get_filechooser_uri (EvApplication *application, + GtkFileChooserAction action) { - return application->last_chooser_uri; + if (action == GTK_FILE_CHOOSER_ACTION_OPEN) { + if (application->filechooser_open_uri) + return application->filechooser_open_uri; + } else if (action == GTK_FILE_CHOOSER_ACTION_SAVE) { + if (application->filechooser_save_uri) + return application->filechooser_save_uri; + } + + return NULL; } void @@ -1095,3 +1133,9 @@ ev_application_get_dot_dir (EvApplication *application) { return application->dot_dir; } + +const gchar * +ev_application_get_data_dir (EvApplication *application) +{ + return application->data_dir; +}