/* * Copyright 2014 (c) Anna Schumaker. */ #include #include #include static const gchar *SETTINGS_WIDTH = "gui.window.width"; static const gchar *SETTINGS_HEIGHT = "gui.window.height"; static const gchar *SETTINGS_X = "gui.window.x"; static const gchar *SETTINGS_Y = "gui.window.y"; static int saved_width = 0; static int saved_height = 0; static int saved_x = 0; static int saved_y = 0; gboolean __window_configure(GtkWindow *window, GdkEventConfigure *event, gpointer data) { int width = settings_get(SETTINGS_WIDTH); int height = settings_get(SETTINGS_HEIGHT); int x = settings_get(SETTINGS_X); int y = settings_get(SETTINGS_Y); if (event->width != width) { saved_width = width; settings_set(SETTINGS_WIDTH, event->width); } if (event->height != height) { saved_height = height; settings_set(SETTINGS_HEIGHT, event->height); } if (event->x != x) { saved_x = x; settings_set(SETTINGS_X, event->x); } if (event->y != y) { saved_y = y; settings_set(SETTINGS_Y, event->y); } return FALSE; } gboolean __window_state(GtkWindow *window, GdkEventWindowState *event, gpointer data) { if (event->changed_mask & GDK_WINDOW_STATE_MAXIMIZED && event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED) { settings_set(SETTINGS_WIDTH, saved_width); settings_set(SETTINGS_HEIGHT, saved_height); settings_set(SETTINGS_X, saved_x); settings_set(SETTINGS_Y, saved_y); } return FALSE; } void gui_window_init(const gchar *icon) { gchar *title = g_strdup_printf("Ocarina %s", get_version()); gtk_window_set_title(gui_window(), title); gtk_window_set_icon_from_file(gui_window(), icon, NULL); saved_width = settings_get(SETTINGS_WIDTH); saved_height = settings_get(SETTINGS_HEIGHT); saved_x = settings_get(SETTINGS_X); saved_y = settings_get(SETTINGS_Y); if (saved_width > 0 || saved_height > 0) gtk_window_resize(gui_window(), saved_width, saved_height); if (saved_x > 0 || saved_y > 0) gtk_window_move(gui_window(), saved_x, saved_y); g_free(title); } void gui_window_deinit() { gtk_widget_destroy(GTK_WIDGET(gui_window())); }