diff options
author | Marco 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) |
commit | d0e4d9279d7aa4be1ddec50c2a87c63638632712 (patch) | |
tree | a4ae2c0a4f5318d73b8100215fd733d02410cac2 /shell/ev-window.c | |
parent | 616f5c97013f1344caa6e899de6cc99664faa5e9 (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.c | 44 |
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; |