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);
+}
#include <glib-object.h>
#include <glib.h>
+#include <gtk/gtkwindow.h>
+
#ifndef __PSPPIRE_CONF_H__
#define __PSPPIRE_CONF_H__
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
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;
}