ocarina/gui/window.c

67 lines
1.6 KiB
C

/*
* Copyright 2014 (c) Anna Schumaker.
*/
#include <core/version.h>
#include <gui/builder.h>
#include <gui/settings.h>
static const gchar *SETTINGS_WIDTH = "gui.window.width";
static const gchar *SETTINGS_HEIGHT = "gui.window.height";
static int saved_width = 0;
static int saved_height = 0;
gboolean __window_configure(GtkWindow *window, GdkEventConfigure *event,
gpointer data)
{
int width = gui_settings_get(SETTINGS_WIDTH);
int height = gui_settings_get(SETTINGS_HEIGHT);
if (event->width != width) {
saved_width = width;
gui_settings_set(SETTINGS_WIDTH, event->width);
}
if (event->height != height) {
saved_height = height;
gui_settings_set(SETTINGS_HEIGHT, event->height);
}
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) {
gui_settings_set(SETTINGS_WIDTH, saved_width);
gui_settings_set(SETTINGS_HEIGHT, saved_height);
}
return FALSE;
}
void gui_window_init(const gchar *icon)
{
GtkWindow *window = GTK_WINDOW(gui_builder_widget("o_window"));
gchar *title = g_strdup_printf("Ocarina %s", get_version());
gtk_window_set_title(window, title);
gtk_window_set_icon_from_file(window, icon, NULL);
saved_width = gui_settings_get(SETTINGS_WIDTH);
saved_height = gui_settings_get(SETTINGS_HEIGHT);
if (saved_width > 0 && saved_height > 0)
gtk_window_resize(window, saved_width, saved_height);
g_free(title);
}
void gui_window_deinit()
{
gtk_widget_destroy(gui_builder_widget("o_window"));
}