[gnome-color-manager] Add a small thumbnail of the target type if it is available



commit d53672d82fdfffb272b1e753254b7520b95bd2e8
Author: Richard Hughes <richard hughsie com>
Date:   Mon Feb 8 09:17:21 2010 +0000

    Add a small thumbnail of the target type if it is available

 configure.ac             |    1 +
 data/Makefile.am         |    1 +
 data/targets/Makefile.am |    8 ++++++
 data/targets/it8.png     |  Bin 0 -> 28517 bytes
 data/targets/unknown.png |  Bin 0 -> 2223 bytes
 src/gcm-prefs.c          |   63 +++++++++++++++++++++++++++++++++++++++++++++-
 6 files changed, 72 insertions(+), 1 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 889107c..bf4e31f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -249,6 +249,7 @@ data/icons/48x48/Makefile
 data/icons/64x64/Makefile
 data/icons/scalable/Makefile
 data/tests/Makefile
+data/targets/Makefile
 help/Makefile
 man/Makefile
 policy/Makefile
diff --git a/data/Makefile.am b/data/Makefile.am
index 7052a60..9aca271 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -1,5 +1,6 @@
 SUBDIRS = 						\
 	tests						\
+	targets						\
 	icons
 
 @INTLTOOL_SCHEMAS_RULE@
diff --git a/data/targets/Makefile.am b/data/targets/Makefile.am
new file mode 100644
index 0000000..018b96d
--- /dev/null
+++ b/data/targets/Makefile.am
@@ -0,0 +1,8 @@
+targetsdir = $(datadir)/gnome-color-manager/targets
+targets_DATA =					\
+	unknown.png				\
+	it8.png
+
+EXTRA_DIST =					\
+	$(targets_DATA)
+
diff --git a/data/targets/it8.png b/data/targets/it8.png
new file mode 100644
index 0000000..500551e
Binary files /dev/null and b/data/targets/it8.png differ
diff --git a/data/targets/unknown.png b/data/targets/unknown.png
new file mode 100644
index 0000000..b5ba1e6
Binary files /dev/null and b/data/targets/unknown.png differ
diff --git a/src/gcm-prefs.c b/src/gcm-prefs.c
index 5c5e5df..daeae73 100644
--- a/src/gcm-prefs.c
+++ b/src/gcm-prefs.c
@@ -579,6 +579,58 @@ gcm_prefs_reference_kind_to_localised_string (GcmCalibrateArgyllReferenceKind ki
 }
 
 /**
+ * gcm_prefs_reference_kind_to_image_filename:
+ **/
+static const gchar *
+gcm_prefs_reference_kind_to_image_filename (GcmCalibrateArgyllReferenceKind kind)
+{
+	if (kind == GCM_CALIBRATE_ARGYLL_REFERENCE_KIND_CMP_DIGITAL_TARGET_3)
+		return NULL;
+	if (kind == GCM_CALIBRATE_ARGYLL_REFERENCE_KIND_CMP_DT_003)
+		return NULL;
+	if (kind == GCM_CALIBRATE_ARGYLL_REFERENCE_KIND_COLOR_CHECKER)
+		return NULL;
+	if (kind == GCM_CALIBRATE_ARGYLL_REFERENCE_KIND_COLOR_CHECKER_DC)
+		return NULL;
+	if (kind == GCM_CALIBRATE_ARGYLL_REFERENCE_KIND_COLOR_CHECKER_SG)
+		return NULL;
+	if (kind == GCM_CALIBRATE_ARGYLL_REFERENCE_KIND_HUTCHCOLOR)
+		return NULL;
+	if (kind == GCM_CALIBRATE_ARGYLL_REFERENCE_KIND_I1_RGB_SCAN_1_4)
+		return NULL;
+	if (kind == GCM_CALIBRATE_ARGYLL_REFERENCE_KIND_IT8)
+		return "it8.png";
+	if (kind == GCM_CALIBRATE_ARGYLL_REFERENCE_KIND_LASER_SOFT_DC_PRO)
+		return NULL;
+	if (kind == GCM_CALIBRATE_ARGYLL_REFERENCE_KIND_QPCARD_201)
+		return NULL;
+	return NULL;
+}
+
+/**
+ * gcm_prefs_reference_kind_combobox_cb:
+ **/
+static void
+gcm_prefs_reference_kind_combobox_cb (GtkComboBox *combo_box, GtkImage *image)
+{
+	GcmCalibrateArgyllReferenceKind reference_kind;
+	const gchar *filename;
+	gchar *path;
+
+	/* not sorted so we can just use the index */
+	reference_kind = gtk_combo_box_get_active (GTK_COMBO_BOX (combo_box));
+	filename = gcm_prefs_reference_kind_to_image_filename (reference_kind);
+
+	/* fallback */
+	if (filename == NULL)
+		filename = "unknown.png";
+
+	path = g_build_filename (GCM_DATA, "targets", filename, NULL);
+	gtk_image_set_from_file (GTK_IMAGE (image), path);
+	g_free (path);
+}
+
+/**
  * gcm_prefs_get_reference_kind:
  **/
 static GcmCalibrateArgyllReferenceKind
@@ -589,6 +641,7 @@ gcm_prefs_get_reference_kind ()
 	GtkWidget *dialog;
 	GtkWidget *vbox;
 	GtkWidget *combo_box;
+	GtkWidget *image;
 	const gchar *title;
 	const gchar *message;
 	guint i;
@@ -608,8 +661,13 @@ gcm_prefs_get_reference_kind ()
 	/* TRANSLATORS: button, confirm the chart type */
 	gtk_dialog_add_button (GTK_DIALOG (dialog), _("Use this type"), GTK_RESPONSE_YES);
 
+	/* use image to display a picture of the target */
+	image = gtk_image_new ();
+	gtk_widget_set_size_request (image, 100, 200);
+
 	/* create the combobox */
 	combo_box = gtk_combo_box_new_text ();
+	g_signal_connect (combo_box, "changed", G_CALLBACK (gcm_prefs_reference_kind_combobox_cb), image);
 
 	/* add the list of charts */
 	for (i = 0; i < GCM_CALIBRATE_ARGYLL_REFERENCE_KIND_UNKNOWN; i++) {
@@ -622,8 +680,11 @@ gcm_prefs_get_reference_kind ()
 
 	/* pack it */
 	vbox = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
-	gtk_box_pack_end (GTK_BOX(vbox), combo_box, TRUE, TRUE, 12);
+
+	gtk_box_pack_start (GTK_BOX(vbox), image, TRUE, TRUE, 6);
+	gtk_box_pack_start (GTK_BOX(vbox), combo_box, TRUE, TRUE, 6);
 	gtk_widget_show (combo_box);
+	gtk_widget_show (image);
 
 	/* run the dialog */
 	response = gtk_dialog_run (GTK_DIALOG (dialog));



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]