From: John Darrington Date: Wed, 4 Mar 2009 00:22:46 +0000 (+0900) Subject: Convenience functions for setting/retrieving window geometry. X-Git-Tag: sav-api~762 X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c1c6d7c7e942d47f65b112fdd7cdc64361ef2ea4;p=pspp Convenience functions for setting/retrieving window geometry. Created a pair of convenience functions in psppire-conf.c to perform saving and loading of window geometry. Updated psppire-window.c to use them. --- diff --git a/src/ui/gui/psppire-conf.c b/src/ui/gui/psppire-conf.c index c7d7cbe3bb..36ef97f44f 100644 --- a/src/ui/gui/psppire-conf.c +++ b/src/ui/gui/psppire-conf.c @@ -185,3 +185,49 @@ psppire_conf_set_int (PsppireConf *conf, conf_write (conf); } + + +/* + A convenience function to set the geometry of a + window from from a saved config +*/ +void +psppire_conf_set_window_geometry (PsppireConf *conf, + const gchar *base, + GtkWindow *window) +{ + gint height, width; + gint x, y; + + if (psppire_conf_get_int (conf, base, "height", &height) + && + psppire_conf_get_int (conf, base, "width", &width) ) + { + gtk_window_set_default_size (window, width, height); + } + + if ( psppire_conf_get_int (conf, base, "x", &x) + && + psppire_conf_get_int (conf, base, "y", &y) ) + { + gtk_window_move (window, x, y); + } +} + + +/* + A convenience function to save the window geometry. + This should typically be called from a window's + "configure-event" signal handler + */ +void +psppire_conf_save_window_geometry (PsppireConf *conf, + const gchar *base, + GdkEventConfigure *event) +{ + psppire_conf_set_int (conf, base, "height", event->height); + psppire_conf_set_int (conf, base, "width", event->width); + + psppire_conf_set_int (conf, base, "x", event->x); + psppire_conf_set_int (conf, base, "y", event->y); +} diff --git a/src/ui/gui/psppire-conf.h b/src/ui/gui/psppire-conf.h index f98c25a095..b98c1e65ff 100644 --- a/src/ui/gui/psppire-conf.h +++ b/src/ui/gui/psppire-conf.h @@ -18,6 +18,8 @@ #include #include +#include + #ifndef __PSPPIRE_CONF_H__ #define __PSPPIRE_CONF_H__ @@ -80,6 +82,14 @@ void psppire_conf_set_int (PsppireConf *conf, const gchar *base, const gchar *name, gint value); +void psppire_conf_set_window_geometry (PsppireConf *conf, + const gchar *base, + GtkWindow *window); + +void psppire_conf_save_window_geometry (PsppireConf *, + const gchar *, + GdkEventConfigure *); + G_END_DECLS diff --git a/src/ui/gui/psppire-window.c b/src/ui/gui/psppire-window.c index 5de6afd84a..628ed45cb2 100644 --- a/src/ui/gui/psppire-window.c +++ b/src/ui/gui/psppire-window.c @@ -194,42 +194,22 @@ psppire_window_get_property (GObject *object, static void on_realize (GtkWindow *window, gpointer data) { - gint height, width; - gint x, y; - PsppireConf *conf = psppire_conf_new (); const gchar *base = G_OBJECT_TYPE_NAME (window); - if (psppire_conf_get_int (conf, base, "height", &height) - && - psppire_conf_get_int (conf, base, "width", &width) ) - { - gtk_window_set_default_size (window, width, height); - } - - - if ( psppire_conf_get_int (conf, base, "x", &x) - && - psppire_conf_get_int (conf, base, "x", &y) ) - { - gtk_window_move (window, x, y); - } - + psppire_conf_set_window_geometry (conf, base, window); } static gboolean -on_configure (GtkWidget *w, GdkEventConfigure *event, gpointer data) +on_configure (GtkWidget *window, GdkEventConfigure *event, gpointer data) { - const gchar *base = G_OBJECT_TYPE_NAME (w); + const gchar *base = G_OBJECT_TYPE_NAME (window); PsppireConf *conf = psppire_conf_new (); - psppire_conf_set_int (conf, base, "height", event->height); - psppire_conf_set_int (conf, base, "width", event->width); - psppire_conf_set_int (conf, base, "x", event->x); - psppire_conf_set_int (conf, base, "y", event->y); + psppire_conf_save_window_geometry (conf, base, event); return FALSE; }