diff src/preferences.c @ 2335:aa2e9d37193b

Image overlay configurable colours User configurable options to set the colours of the Image Overlay text and background
author Colin Clark <cclark@mcb.net>
date Wed, 18 May 2016 20:36:07 +0100
parents e38178f556f6
children 7ff7000c458c
line wrap: on
line diff
--- a/src/preferences.c	Wed May 18 12:13:12 2016 +0100
+++ b/src/preferences.c	Wed May 18 20:36:07 2016 +0100
@@ -44,6 +44,7 @@
 #define EDITOR_NAME_MAX_LENGTH 32
 #define EDITOR_COMMAND_MAX_LENGTH 1024
 
+static void image_overlay_set_text_colours();
 
 typedef struct _ThumbSize ThumbSize;
 struct _ThumbSize
@@ -287,6 +288,14 @@
 	if (c_options->image_overlay.font)
 		set_image_overlay_font_string(&options->image_overlay.font,
 						  c_options->image_overlay.font);
+	options->image_overlay.text_red = c_options->image_overlay.text_red;
+	options->image_overlay.text_green = c_options->image_overlay.text_green;
+	options->image_overlay.text_blue = c_options->image_overlay.text_blue;
+	options->image_overlay.text_alpha = c_options->image_overlay.text_alpha;
+	options->image_overlay.background_red = c_options->image_overlay.background_red;
+	options->image_overlay.background_green = c_options->image_overlay.background_green;
+	options->image_overlay.background_blue = c_options->image_overlay.background_blue;
+	options->image_overlay.background_alpha = c_options->image_overlay.background_alpha;
 	options->update_on_time_change = c_options->update_on_time_change;
 	options->image.exif_rotate_enable = c_options->image.exif_rotate_enable;
 	options->image.exif_proof_rotate_enable = c_options->image.exif_proof_rotate_enable;
@@ -1038,6 +1047,52 @@
 	gtk_widget_destroy(dialog);
 }
 
+static void image_overlay_set_text_colour_cb(GtkWidget *widget, gpointer data)
+{
+	GenericDialog *dialog;
+	GdkRGBA colour;
+
+	dialog = gtk_color_chooser_dialog_new("Image Overlay Text Colour", gtk_widget_get_toplevel(widget));
+	colour.red = options->image_overlay.text_red;
+	colour.green = options->image_overlay.text_green;
+	colour.blue = options->image_overlay.text_blue;
+	colour.alpha = options->image_overlay.text_alpha;
+	gtk_color_chooser_set_rgba(dialog, &colour);
+
+	if (gtk_dialog_run(GTK_DIALOG(dialog)) != GTK_RESPONSE_CANCEL)
+		{
+		gtk_color_chooser_get_rgba(dialog, &colour);
+		c_options->image_overlay.text_red = colour.red*255;
+		c_options->image_overlay.text_green = colour.green*255;
+		c_options->image_overlay.text_blue = colour.blue*255;
+		c_options->image_overlay.text_alpha = colour.alpha*255;
+		}
+	gtk_widget_destroy (dialog);
+}
+
+static void image_overlay_set_background_colour_cb(GtkWidget *widget, gpointer data)
+{
+	GenericDialog *dialog;
+	GdkRGBA colour;
+
+	dialog = gtk_color_chooser_dialog_new("Image Overlay Background Colour", gtk_widget_get_toplevel(widget));
+	colour.red = options->image_overlay.background_red;
+	colour.green = options->image_overlay.background_green;
+	colour.blue = options->image_overlay.background_blue;
+	colour.alpha = options->image_overlay.background_alpha;
+	gtk_color_chooser_set_rgba(dialog, &colour);
+
+	if (gtk_dialog_run(GTK_DIALOG(dialog)) != GTK_RESPONSE_CANCEL)
+		{
+		gtk_color_chooser_get_rgba(dialog, &colour);
+		c_options->image_overlay.background_red = colour.red*255;
+		c_options->image_overlay.background_green = colour.green*255;
+		c_options->image_overlay.background_blue = colour.blue*255;
+		c_options->image_overlay.background_alpha = colour.alpha*255;
+		}
+	gtk_widget_destroy (dialog);
+}
+
 static void accel_store_populate(void)
 {
 	LayoutWindow *lw;
@@ -1479,6 +1534,17 @@
 	gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, NULL, 0);
 	gtk_widget_show(button);
 
+	button = pref_button_new(NULL, GTK_STOCK_COLOR_PICKER, _("Text"), FALSE,
+				 G_CALLBACK(image_overlay_set_text_colour_cb), NULL);
+	gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
+	gtk_widget_show(button);
+
+	button = pref_button_new(NULL, GTK_STOCK_COLOR_PICKER, _("Background"), FALSE,
+				 G_CALLBACK(image_overlay_set_background_colour_cb), NULL);
+	gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
+	gtk_widget_show(button);
+	image_overlay_set_text_colours();
+
 	button = pref_button_new(NULL, NULL, _("Defaults"), FALSE,
 				 G_CALLBACK(image_overlay_default_template_cb), image_overlay_template_view);
 	gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 0);
@@ -2306,4 +2372,16 @@
 
 	gtk_widget_show(about);
 }
+
+static void image_overlay_set_text_colours()
+{
+	c_options->image_overlay.text_red = options->image_overlay.text_red;
+	c_options->image_overlay.text_green = options->image_overlay.text_green;
+	c_options->image_overlay.text_blue = options->image_overlay.text_blue;
+	c_options->image_overlay.text_alpha = options->image_overlay.text_alpha;
+	c_options->image_overlay.background_red = options->image_overlay.background_red;
+	c_options->image_overlay.background_green = options->image_overlay.background_green;
+	c_options->image_overlay.background_blue = options->image_overlay.background_blue;
+	c_options->image_overlay.background_alpha = options->image_overlay.background_alpha;
+}
 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */