#include "ev-application.h"
#include "ev-utils.h"
#include "ev-document-types.h"
+#include "ev-file-helpers.h"
#include <glib.h>
#include <glib/gi18n.h>
gboolean
ev_application_open_window (EvApplication *application,
+ guint32 timestamp,
GError **error)
{
- gtk_widget_show (ev_window_new ());
+ GtkWidget *new_window = ev_window_new ();
+
+ gtk_widget_show (new_window);
+
+#ifdef HAVE_GTK_WINDOW_PRESENT_WITH_TIME
+ gtk_window_present_with_time (GTK_WINDOW (new_window),
+ timestamp);
+#else
+ gtk_window_present (GTK_WINDOW (new_window));
+#endif
return TRUE;
}
ev_application_open_uri (EvApplication *application,
const char *uri,
const char *page_label,
+ guint timestamp,
GError **error)
{
EvWindow *new_window;
new_window = ev_application_get_uri_window (application, uri);
if (new_window != NULL) {
+#ifdef HAVE_GTK_WINDOW_PRESENT_WITH_TIME
+ gtk_window_present_with_time (GTK_WINDOW (new_window),
+ timestamp);
+#else
gtk_window_present (GTK_WINDOW (new_window));
-
+#endif
return TRUE;
}
if (new_window == NULL) {
new_window = EV_WINDOW (ev_window_new ());
+ gtk_widget_show (GTK_WIDGET (new_window));
}
ev_window_open_uri (new_window, uri);
+#ifdef HAVE_GTK_WINDOW_PRESENT_WITH_TIME
+ gtk_window_present_with_time (GTK_WINDOW (new_window),
+ timestamp);
+#else
gtk_window_present (GTK_WINDOW (new_window));
+#endif
if (page_label != NULL) {
ev_window_open_page_label (new_window, page_label);
}
void
-ev_application_open_uri_list (EvApplication *application, GSList *uri_list)
+ev_application_open_uri_list (EvApplication *application,
+ GSList *uri_list,
+ guint timestamp)
{
GSList *l;
for (l = uri_list; l != NULL; l = l->next) {
- ev_application_open_uri (application, (char *)l->data, NULL, NULL);
+ ev_application_open_uri (application, (char *)l->data,
+ NULL,
+ timestamp,
+ NULL);
}
}
void
ev_application_shutdown (EvApplication *application)
{
+ if (application->toolbars_model) {
+ g_object_unref (application->toolbars_model);
+ g_free (application->toolbars_file);
+ application->toolbars_model = NULL;
+ application->toolbars_file = NULL;
+ }
+
+ if (application->recent_model) {
+ g_object_unref (application->recent_model);
+ application->recent_model = NULL;
+ }
+
g_object_unref (application);
gtk_main_quit ();
}
static void
ev_application_init (EvApplication *ev_application)
{
+ ev_application->toolbars_model = egg_toolbars_model_new ();
+
+ ev_application->toolbars_file = g_build_filename
+ (ev_dot_dir (), "evince_toolbar.xml", NULL);
+
+ if (!egg_toolbars_model_load (ev_application->toolbars_model,
+ ev_application->toolbars_file)) {
+ egg_toolbars_model_load (ev_application->toolbars_model,
+ DATADIR"/evince-toolbar.xml");
+ }
+
+ egg_toolbars_model_set_flags (ev_application->toolbars_model, 0,
+ EGG_TB_MODEL_NOT_REMOVABLE);
+
+ ev_application->recent_model = egg_recent_model_new (EGG_RECENT_MODEL_SORT_MRU);
+ /* FIXME we should add a mime type filter but current eggrecent
+ has only a varargs style api which does not work well when
+ the list of mime types is dynamic */
+ egg_recent_model_set_limit (ev_application->recent_model, 5);
+ egg_recent_model_set_filter_groups (ev_application->recent_model,
+ "Evince", NULL);
+}
+
+EggToolbarsModel *ev_application_get_toolbars_model (EvApplication *application)
+{
+ return application->toolbars_model;
}
+EggRecentModel *ev_application_get_recent_model (EvApplication *application)
+{
+ return application->recent_model;
+}
+
+void ev_application_save_toolbars_model (EvApplication *application)
+{
+ egg_toolbars_model_save (application->toolbars_model,
+ application->toolbars_file, "1.0");
+}
+
+