2014-09-10 08:43:11 -04:00
|
|
|
/*
|
|
|
|
* Copyright 2014 (c) Anna Schumaker.
|
|
|
|
*/
|
2016-03-29 08:39:00 -04:00
|
|
|
#include <core/settings.h>
|
2014-09-10 08:43:11 -04:00
|
|
|
#include <core/version.h>
|
2016-08-19 08:06:16 -04:00
|
|
|
#include <gui/window.h>
|
2015-12-26 20:51:05 -05:00
|
|
|
|
|
|
|
static const gchar *SETTINGS_WIDTH = "gui.window.width";
|
|
|
|
static const gchar *SETTINGS_HEIGHT = "gui.window.height";
|
2016-11-02 09:17:39 -04:00
|
|
|
static const gchar *SETTINGS_X = "gui.window.x";
|
|
|
|
static const gchar *SETTINGS_Y = "gui.window.y";
|
2015-12-26 20:51:05 -05:00
|
|
|
|
|
|
|
static int saved_width = 0;
|
|
|
|
static int saved_height = 0;
|
2016-11-02 09:17:39 -04:00
|
|
|
static int saved_x = 0;
|
|
|
|
static int saved_y = 0;
|
2015-12-26 20:51:05 -05:00
|
|
|
|
|
|
|
|
|
|
|
gboolean __window_configure(GtkWindow *window, GdkEventConfigure *event,
|
|
|
|
gpointer data)
|
|
|
|
{
|
2016-03-29 08:39:00 -04:00
|
|
|
int width = settings_get(SETTINGS_WIDTH);
|
|
|
|
int height = settings_get(SETTINGS_HEIGHT);
|
2016-11-02 09:17:39 -04:00
|
|
|
int x = settings_get(SETTINGS_X);
|
|
|
|
int y = settings_get(SETTINGS_Y);
|
2015-12-26 20:51:05 -05:00
|
|
|
|
|
|
|
if (event->width != width) {
|
|
|
|
saved_width = width;
|
2016-03-29 08:39:00 -04:00
|
|
|
settings_set(SETTINGS_WIDTH, event->width);
|
2015-12-26 20:51:05 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
if (event->height != height) {
|
|
|
|
saved_height = height;
|
2016-03-29 08:39:00 -04:00
|
|
|
settings_set(SETTINGS_HEIGHT, event->height);
|
2015-12-26 20:51:05 -05:00
|
|
|
}
|
|
|
|
|
2016-11-02 09:17:39 -04:00
|
|
|
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);
|
|
|
|
}
|
|
|
|
|
2015-12-26 20:51:05 -05:00
|
|
|
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) {
|
2016-03-29 08:39:00 -04:00
|
|
|
settings_set(SETTINGS_WIDTH, saved_width);
|
|
|
|
settings_set(SETTINGS_HEIGHT, saved_height);
|
2016-11-02 09:17:39 -04:00
|
|
|
settings_set(SETTINGS_X, saved_x);
|
|
|
|
settings_set(SETTINGS_Y, saved_y);
|
2015-12-26 20:51:05 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
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 18:03:45 -05:00
|
|
|
gchar *title = g_strdup_printf("Ocarina %s", get_version());
|
2014-09-10 08:43:11 -04:00
|
|
|
|
2016-08-19 08:06:16 -04:00
|
|
|
gtk_window_set_title(gui_window(), title);
|
|
|
|
gtk_window_set_icon_from_file(gui_window(), icon, NULL);
|
2015-12-26 18:03:45 -05:00
|
|
|
|
2016-03-29 08:39:00 -04:00
|
|
|
saved_width = settings_get(SETTINGS_WIDTH);
|
|
|
|
saved_height = settings_get(SETTINGS_HEIGHT);
|
2016-11-02 09:17:39 -04:00
|
|
|
saved_x = settings_get(SETTINGS_X);
|
|
|
|
saved_y = settings_get(SETTINGS_Y);
|
|
|
|
|
|
|
|
if (saved_width > 0 || saved_height > 0)
|
2016-08-19 08:06:16 -04:00
|
|
|
gtk_window_resize(gui_window(), saved_width, saved_height);
|
2016-11-02 09:17:39 -04:00
|
|
|
if (saved_x > 0 || saved_y > 0)
|
|
|
|
gtk_window_move(gui_window(), saved_x, saved_y);
|
2015-12-26 20:51:05 -05:00
|
|
|
|
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()
|
|
|
|
{
|
2016-08-19 08:06:16 -04:00
|
|
|
gtk_widget_destroy(GTK_WIDGET(gui_window()));
|
2015-12-26 18:16:11 -05:00
|
|
|
}
|