Author: post
Date: 2010-05-28 19:00:42 +0200 (Fri, 28 May 2010)
New Revision: 3403
Modified:
trunk/librawstudio/conf_interface.h
trunk/src/gtk-interface.c
Log:
Rawstudio now remembers window state and size.
Modified: trunk/librawstudio/conf_interface.h
===================================================================
--- trunk/librawstudio/conf_interface.h 2010-05-28 16:54:49 UTC (rev 3402)
+++ trunk/librawstudio/conf_interface.h 2010-05-28 17:00:42 UTC (rev 3403)
@@ -66,6 +66,11 @@
#define CONF_LIBRARY_TAG_SEARCH "library_tag_search"
#define CONF_EXPORT_AS_FOLDER "export_as_folder"
#define CONF_EXPORT_AS_SIZE_PERCENT "export_as_size_percent"
+#define CONF_MAIN_WINDOW_WIDTH "main_window_width"
+#define CONF_MAIN_WINDOW_HEIGHT "main_window_height"
+#define CONF_MAIN_WINDOW_POS_X "main_window_pos_x"
+#define CONF_MAIN_WINDOW_POS_Y "main_window_pos_y"
+#define CONF_MAIN_WINDOW_MAXIMIZED "main_window_maximized"
#define DEFAULT_CONF_EXPORT_FILENAME "%f_%2c"
#define DEFAULT_CONF_BATCH_DIRECTORY "batch_exports/"
@@ -92,6 +97,11 @@
#define DEFAULT_CONF_USE_SYSTEM_THEME FALSE
#define DEFAULT_CONF_SHOW_FILENAMES FALSE
#define DEFAULT_CONF_LIBRARY_AUTOTAG FALSE
+#define DEFAULT_CONF_MAIN_WINDOW_WIDTH 800
+#define DEFAULT_CONF_MAIN_WINDOW_HEIGHT 600
+#define DEFAULT_CONF_MAIN_WINDOW_POS_X 50
+#define DEFAULT_CONF_MAIN_WINDOW_POS_Y 50
+#define DEFAULT_CONF_MAIN_WINDOW_MAXIMIZED FALSE
/* get the last working directory from gconf */
void rs_set_last_working_directory(const char *lwd);
Modified: trunk/src/gtk-interface.c
===================================================================
--- trunk/src/gtk-interface.c 2010-05-28 16:54:49 UTC (rev 3402)
+++ trunk/src/gtk-interface.c 2010-05-28 17:00:42 UTC (rev 3403)
@@ -774,6 +774,36 @@
}
static void
+window_state_event(GtkWidget *widget, GdkEventWindowState *event, gpointer
user_data)
+{
+ GtkWindow *window = GTK_WINDOW(widget);
+ gint width,height,pos_x,pos_y;
+ gboolean maximized;
+
+ switch (event->type)
+ {
+ case GDK_WINDOW_STATE:
+ {
+ maximized = !!(event->new_window_state &
GDK_WINDOW_STATE_MAXIMIZED);
+ rs_conf_set_boolean(CONF_MAIN_WINDOW_MAXIMIZED,
maximized);
+ if (!maximized)
+ {
+ gtk_window_get_size(window, &width, &height);
+ gtk_window_get_position(window, &pos_x, &pos_y);
+ rs_conf_set_integer(CONF_MAIN_WINDOW_WIDTH,
width);
+ rs_conf_set_integer(CONF_MAIN_WINDOW_HEIGHT,
height);
+ rs_conf_set_integer(CONF_MAIN_WINDOW_POS_X,
pos_x);
+ rs_conf_set_integer(CONF_MAIN_WINDOW_POS_Y,
pos_y);
+ }
+ break;
+ }
+ default:
+ break;
+ }
+}
+
+
+static void
drag_data_received(GtkWidget *widget, GdkDragContext *drag_context,
gint x, gint y, GtkSelectionData *selection_data, guint info, guint t,
RS_BLOB *rs)
@@ -821,14 +851,36 @@
{
static const GtkTargetEntry targets[] = { { "text/uri-list", 0, 0 } };
+ gint width = DEFAULT_CONF_MAIN_WINDOW_WIDTH;
+ gint height = DEFAULT_CONF_MAIN_WINDOW_HEIGHT;
+ gint pos_x = DEFAULT_CONF_MAIN_WINDOW_POS_X;
+ gint pos_y = DEFAULT_CONF_MAIN_WINDOW_POS_Y;
+ gboolean maximized;
+ rs_conf_get_integer(CONF_MAIN_WINDOW_WIDTH, &width);
+ rs_conf_get_integer(CONF_MAIN_WINDOW_HEIGHT, &height);
+ rs_conf_get_integer(CONF_MAIN_WINDOW_POS_X, &pos_x);
+ rs_conf_get_integer(CONF_MAIN_WINDOW_POS_Y, &pos_y);
+ rs_conf_get_boolean_with_default(CONF_MAIN_WINDOW_MAXIMIZED,
&maximized, DEFAULT_CONF_MAIN_WINDOW_MAXIMIZED);
+
rawstudio_window = GTK_WINDOW(gtk_window_new (GTK_WINDOW_TOPLEVEL));
- gtk_window_resize((GtkWindow *) rawstudio_window, 800, 600);
+ if (!maximized)
+ {
+// gtk_window_set_position((GtkWindow *) rawstudio_window,
GTK_WIN_POS_NONE);
+// gtk_window_move((GtkWindow *) rawstudio_window, pos_x, pos_y);
+ gtk_window_resize((GtkWindow *) rawstudio_window, width,
height);
+ }
+ else
+ {
+ gtk_window_maximize((GtkWindow *) rawstudio_window);
+ }
+
rs_window_set_title(NULL);
g_signal_connect((gpointer) rawstudio_window, "delete_event",
G_CALLBACK(gui_window_delete), NULL);
g_signal_connect((gpointer) rawstudio_window, "key_press_event",
G_CALLBACK(window_key_press_event), NULL);
gtk_drag_dest_set(GTK_WIDGET(rawstudio_window), GTK_DEST_DEFAULT_ALL,
targets, 1, GDK_ACTION_COPY);
g_signal_connect((gpointer) rawstudio_window, "drag_data_received",
G_CALLBACK(drag_data_received), rs);
+ g_signal_connect((gpointer) rawstudio_window, "window-state-event",
G_CALLBACK(window_state_event), rs);
gtk_widget_set_name (GTK_WIDGET(rawstudio_window), "rawstudio-widget");
_______________________________________________
Rawstudio-commit mailing list
[email protected]
http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-commit