save/restore window position and size
authorJean-Philippe Orsini <jeanfi@gmail.com>
Sat, 26 Oct 2013 17:39:42 +0000 (17:39 +0000)
committerJean-Philippe Orsini <jeanfi@gmail.com>
Sat, 26 Oct 2013 17:39:42 +0000 (17:39 +0000)
src/main.c
src/ui.c
src/ui.h

index 1b86c22..70b65a0 100644 (file)
@@ -43,7 +43,7 @@ static GtkWidget *w_tasksave_btn;
 static GtkWidget *w_taskdone_btn;
 static GtkComboBox *w_status;
 static GtkComboBox *w_priority;
-/*static GSettings *settings;*/
+static GSettings *settings;
 
 enum {
        COL_ID,
@@ -293,15 +293,6 @@ int refresh_clicked_cbk(GtkButton *btn, gpointer data)
        return FALSE;
 }
 
-static gboolean delete_event_cbk(GtkWidget *w, GdkEvent *evt, gpointer data)
-{
-       gtk_widget_destroy(w);
-       gtk_main_quit();
-
-       return FALSE;
-}
-
-
 int newtask_clicked_cbk(GtkButton *btn, gpointer data)
 {
        gint result;
@@ -504,20 +495,14 @@ int main(int argc, char **argv)
 
        gtk_init(NULL, NULL);
 
-       /*      settings = g_settings_new("ptask");
-
-               printf("%d\n", g_settings_get_int(settings, "windows_x"));*/
+       settings = g_settings_new("ptask");
 
        builder = gtk_builder_new();
        gtk_builder_add_from_file
                (builder,
                 PACKAGE_DATA_DIR G_DIR_SEPARATOR_S "ptask.glade",
                 NULL);
-       /*      window = create_window();*/
-       window = GTK_WINDOW(gtk_builder_get_object(builder, "window"));
-
-       g_signal_connect(window, "delete_event",
-                        G_CALLBACK(delete_event_cbk), NULL);
+       window = create_window(builder, settings);
 
        w_treeview = GTK_TREE_VIEW(gtk_builder_get_object(builder, "treeview"));
        model = gtk_tree_view_get_model(GTK_TREE_VIEW(w_treeview));
index 8567d4f..a63288b 100644 (file)
--- a/src/ui.c
+++ b/src/ui.c
  * 02110-1301 USA
  */
 
+#include <log.h>
 #include <ui.h>
 
-GtkWindow *create_window()
+static void save_settings(GtkWindow *window, GSettings *settings)
 {
-       return NULL;
+       int w, h, x, y;
+
+       gtk_window_get_size(window, &w, &h);
+       gtk_window_get_position(window, &x, &y);
+
+       log_debug("save_settings(): x=%d, y=%d, w=%d, h=%d", x, y, w, h);
+
+       g_settings_set_int(settings, "window-width", w);
+       g_settings_set_int(settings, "window-height", h);
+       g_settings_set_int(settings, "window-x", x);
+       g_settings_set_int(settings, "window-y", y);
+
+       g_settings_sync();
+}
+
+static gboolean delete_event_cbk(GtkWidget *w, GdkEvent *evt, gpointer data)
+{
+       log_debug("delete_event_cbk");
+
+       save_settings(GTK_WINDOW(w), (GSettings *)data);
+       gtk_widget_destroy(w);
+       gtk_main_quit();
+
+       return TRUE;
 }
+
+GtkWindow *create_window(GtkBuilder *builder, GSettings *settings)
+{
+       GtkWindow *window;
+       int x, y, h, w;
+
+       window = GTK_WINDOW(gtk_builder_get_object(builder, "window"));
+
+       x = g_settings_get_int(settings, "window-x");
+       y = g_settings_get_int(settings, "window-y");
+       w = g_settings_get_int(settings, "window-width");
+       h = g_settings_get_int(settings, "window-height");
+
+       gtk_window_set_default_size(window, w, h);
+       gtk_window_move(window, x, y);
+
+       g_signal_connect(window, "delete_event",
+                        G_CALLBACK(delete_event_cbk), settings);
+
+       return window;
+}
+
index d560094..27aebce 100644 (file)
--- a/src/ui.h
+++ b/src/ui.h
@@ -22,6 +22,6 @@
 
 #include <gtk/gtk.h>
 
-GtkWindow *create_window();
+GtkWindow *create_window(GtkBuilder *, GSettings *);
 
 #endif