]> Pileus Git - ~andy/gtk/blobdiff - tests/testcolorchooser.c
Add gdk_frame_clock_begin/end_updating()
[~andy/gtk] / tests / testcolorchooser.c
index c07d1699314036737837c4eed548af30064923a7..4fb6354055790cd3c2f88ec384b0c83747ecf572 100644 (file)
@@ -5,7 +5,7 @@ color_changed (GObject *o, GParamSpec *pspect, gpointer data)
 {
   GdkRGBA color;
 
-  gtk_color_chooser_get_color (GTK_COLOR_CHOOSER (o), &color);
+  gtk_color_chooser_get_rgba (GTK_COLOR_CHOOSER (o), &color);
   g_print ("color changed: %g %g %g %g\n",
            color.red, color.green, color.blue, color.alpha);
 }
@@ -18,7 +18,7 @@ dialog_response (GtkDialog *dialog, gint response)
   switch (response)
     {
     case GTK_RESPONSE_OK:
-      gtk_color_chooser_get_color (GTK_COLOR_CHOOSER (dialog), &color);
+      gtk_color_chooser_get_rgba (GTK_COLOR_CHOOSER (dialog), &color);
       g_print ("color accepted: %g %g %g %g\n",
            color.red, color.green, color.blue, color.alpha);
       break;
@@ -34,15 +34,63 @@ int
 main (int argc, char *argv[])
 {
   GtkWidget *dialog;
+  gint i;
 
   gtk_init (NULL, NULL);
 
   dialog = gtk_color_chooser_dialog_new ("Select a color", NULL);
-  if (argc > 1 && strcmp (argv[1], "--no-alpha") == 0)
+
+  for (i = 1; i < argc; i++)
     {
-      g_print ("turning alpha off\n");
-      gtk_color_chooser_set_show_alpha (GTK_COLOR_CHOOSER (dialog), FALSE);
+      if (g_strcmp0 (argv[i], "--no-alpha") == 0)
+        {
+          g_print ("turning alpha off\n");
+          gtk_color_chooser_set_use_alpha (GTK_COLOR_CHOOSER (dialog), FALSE);
+        }
+      else if (g_strcmp0 (argv[i], "--edit") == 0)
+        {
+          g_print ("starting in edit mode\n");
+          g_object_set (dialog, "show-editor", TRUE, NULL);
+        }
+      else if (g_strcmp0 (argv[i], "--palette") == 0)
+        {
+          const gchar *c[9] = { "red", "maroon", "yellow", "green", "blue", "magenta", "DarkOliveGreen4", "khaki2", "thistle1" };
+          GdkRGBA color;
+          GdkRGBA colors[9*9];
+          gint i,j;
+          gdouble f[5] = { 0.2, 0.35, 0.5, 0.65, 0.8 };
+
+          g_print ("setting custom palette\n");
+          for (i = 0; i < 9; i++)
+            {
+              gdk_rgba_parse (&color, c[i]);
+              for (j = 0; j < 5; j++)
+                {
+                  colors[i*9 + j].red   = f[j]*color.red;
+                  colors[i*9 + j].green = f[j]*color.green;
+                  colors[i*9 + j].blue  = f[j]*color.blue;
+                  colors[i*9 + j].alpha = 1;
+                }
+              for (j = 5; j < 9; j++)
+                {
+                  colors[i*9 + j].red   = f[9-j]*color.red + (1-f[9-j]);
+                  colors[i*9 + j].green = f[9-j]*color.green + (1-f[9-j]);
+                  colors[i*9 + j].blue  = f[9-j]*color.blue + (1-f[9-j]);
+                  colors[i*9 + j].alpha = 1;
+                }
+            }
+          gtk_color_chooser_add_palette (GTK_COLOR_CHOOSER (dialog),
+                                         GTK_ORIENTATION_VERTICAL,
+                                         9, 9*9,
+                                         colors);
+        }
+      else if (g_strcmp0 (argv[i], "--no-palette") == 0)
+        {
+          gtk_color_chooser_add_palette (GTK_COLOR_CHOOSER (dialog), 
+                                         GTK_ORIENTATION_VERTICAL, 0, 0, NULL);
+        }
     }
+
   g_signal_connect (dialog, "notify::color", G_CALLBACK (color_changed), NULL);
   g_signal_connect (dialog, "response", G_CALLBACK (dialog_response), NULL);