Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell/ev-window.c
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <mpg@redhat.com>2005-06-30 13:32:05 (GMT)
committer Marco Pesenti Gritti <marco@src.gnome.org>2005-06-30 13:32:05 (GMT)
commitd0e4d9279d7aa4be1ddec50c2a87c63638632712 (patch)
treea4ae2c0a4f5318d73b8100215fd733d02410cac2 /shell/ev-window.c
parent616f5c97013f1344caa6e899de6cc99664faa5e9 (diff)
Metadata manager from gedit but modified to use GValue, so that we dont
2005-06-30 Marco Pesenti Gritti <mpg@redhat.com> * shell/Makefile.am: * shell/ev-metadata-manager.c: (item_free), (ev_metadata_manager_init), (ev_metadata_manager_shutdown), (parse_value), (parseItem), (load_values), (ev_metadata_manager_get), (value_free), (ev_metadata_manager_set), (save_values), (save_item), (get_oldest), (resize_items), (ev_metadata_manager_save), (ev_metadata_manager_set_int): * shell/ev-metadata-manager.h: Metadata manager from gedit but modified to use GValue, so that we dont need to keep converting from strings. * configure.ac: ENABLE_METADATA conditional, on when dbus is on * shell/ev-application.c: (ev_application_open_uri): Show the window after load so that we can initialize window size before it's showed. * shell/ev-window.c: (ev_window_setup_from_metadata), (ev_window_open_uri), (window_configure_event_cb), (ev_window_init): Save and load metadata information about window size. Not yet keeping states in account. * shell/main.c: (main): Shutdown metadata manager.
Diffstat (limited to 'shell/ev-window.c')
-rw-r--r--shell/ev-window.c44
1 files changed, 44 insertions, 0 deletions
diff --git a/shell/ev-window.c b/shell/ev-window.c
index 11ee1ad..63b1b9c 100644
--- a/shell/ev-window.c
+++ b/shell/ev-window.c
@@ -60,6 +60,7 @@
#include "ev-application.h"
#include "ev-stock-icons.h"
#include "ev-file-helpers.h"
+#include "ev-metadata-manager.h"
#include <poppler.h>
@@ -906,6 +907,23 @@ ev_window_xfer_job_cb (EvJobXfer *job,
}
}
+#ifdef ENABLE_METADATA
+static void
+ev_window_setup_from_metadata (EvWindow *window)
+{
+ char *uri = window->priv->uri;
+ GValue width = { 0, };
+ GValue height = { 0, };
+
+ ev_metadata_manager_get (uri, "window_width", &width);
+ ev_metadata_manager_get (uri, "window_height", &height);
+
+ gtk_window_set_default_size (GTK_WINDOW (window),
+ g_value_get_int (&width),
+ g_value_get_int (&height));
+}
+#endif
+
void
ev_window_open_uri (EvWindow *ev_window, const char *uri)
{
@@ -914,6 +932,10 @@ ev_window_open_uri (EvWindow *ev_window, const char *uri)
g_free (ev_window->priv->uri);
ev_window->priv->uri = g_strdup (uri);
+
+#ifdef ENABLE_METADATA
+ ev_window_setup_from_metadata (ev_window);
+#endif
ev_window_clear_jobs (ev_window);
ev_window_clear_local_uri (ev_window);
@@ -2975,6 +2997,25 @@ sidebar_page_main_widget_update_cb (GObject *ev_sidebar_page,
}
}
+static gboolean
+window_configure_event_cb (EvWindow *window, gpointer dummy)
+{
+#ifdef ENABLE_METADATA
+ int width, height;
+
+ if (window->priv->uri == NULL) {
+ return FALSE;
+ }
+
+ gtk_window_get_size (GTK_WINDOW (window), &width, &height);
+
+ ev_metadata_manager_set_int (window->priv->uri, "window_width", width);
+ ev_metadata_manager_set_int (window->priv->uri, "window_height", height);
+
+ return FALSE;
+#endif
+}
+
static void
ev_window_init (EvWindow *ev_window)
{
@@ -2986,6 +3027,9 @@ ev_window_init (EvWindow *ev_window)
GConfClient *client;
int sidebar_size;
+ g_signal_connect (ev_window, "configure_event",
+ G_CALLBACK (window_configure_event_cb), NULL);
+
ev_window->priv = EV_WINDOW_GET_PRIVATE (ev_window);
ev_window->priv->page_mode = PAGE_MODE_DOCUMENT;