2014-09-10 08:43:11 -04:00
|
|
|
/*
|
|
|
|
* Copyright 2014 (c) Anna Schumaker.
|
|
|
|
*/
|
|
|
|
#include <core/version.h>
|
2015-12-24 09:35:36 -05:00
|
|
|
#include <gui/builder.h>
|
2015-12-26 20:51:05 -05:00
|
|
|
#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;
|
|
|
|
}
|
2014-09-10 08:43:11 -04:00
|
|
|
|
|
|
|
|
2015-12-26 12:29:24 -05:00
|
|
|
void gui_window_init(const gchar *icon)
|
2014-09-10 08:43:11 -04:00
|
|
|
{
|
2015-12-26 12:29:24 -05:00
|
|
|
GtkWindow *window = GTK_WINDOW(gui_builder_widget("o_window"));
|
2015-12-26 18:03:45 -05:00
|
|
|
gchar *title = g_strdup_printf("Ocarina %s", get_version());
|
2014-09-10 08:43:11 -04:00
|
|
|
|
2015-12-26 18:03:45 -05:00
|
|
|
gtk_window_set_title(window, title);
|
2015-12-26 12:29:24 -05:00
|
|
|
gtk_window_set_icon_from_file(window, icon, NULL);
|
2015-12-26 18:03:45 -05:00
|
|
|
|
2015-12-26 20:51:05 -05:00
|
|
|
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);
|
|
|
|
|
2015-12-26 18:03:45 -05:00
|
|
|
g_free(title);
|
2014-09-10 08:43:11 -04:00
|
|
|
}
|
2015-12-26 18:16:11 -05:00
|
|
|
|
|
|
|
void gui_window_deinit()
|
|
|
|
{
|
|
|
|
gtk_widget_destroy(gui_builder_widget("o_window"));
|
|
|
|
}
|