[GtkColorSelection]Loading a palette



Hi all,
I just want to change the default palette of a GtkColorSelection. The API
provides this function :
gboolean    gtk_color_selection_palette_from_string (const gchar *str,
GdkColor **colors,  gint *n_colors);
but I don't understand how to use it :-(
I search the web and this list and I dont'find any idea or suggestion.
Here is the code :

#include <stdio.h>
#include <gtk/gtk.h>

gboolean AfficheCouleur(GtkColorSelection *Sel)
{
  gdouble couleur[4];

  gtk_color_selection_get_color(Sel, couleur);
  printf("Rouge : %g, Vert : %g, Bleu : %g\n",
         couleur[0], couleur[1], couleur[2]);
  printf("Opacité : %g\n", couleur[3]);
  return TRUE;
}

int main(int argc, char *argv[])
{
  GtkColorSelectionDialog *CouleurDlg;
  gchar *user_color; /* la palette de couleur que je veux charger */
  GdkColor **colors; /* tableau des couleurs */
  gint *n_colors; /* Nombre de couleur à charger */

  /* Initialisation des bibliothèques */
  gtk_init(&argc, &argv);

  /* Création du dialogue de sélection de couleur */
  CouleurDlg = (GtkColorSelectionDialog *)
                gtk_color_selection_dialog_new(
                             "Test Sélection couleur");
  /* Connexion des signaux "delete" et "destroy" */
  gtk_signal_connect(GTK_OBJECT(CouleurDlg), "delete_event",
                     (GtkSignalFunc)gtk_exit, NULL);
  gtk_signal_connect(GTK_OBJECT(CouleurDlg), "destroy",
                     (GtkSignalFunc)gtk_exit, NULL);

  /* On n'a pas besoin du bouton 'help',
   * alors on le cache... */
  gtk_widget_hide(CouleurDlg->help_button);

  /* Par contre on veut la palette */
  gtk_color_selection_set_has_palette (CouleurDlg->colorsel, TRUE);

  /* On essaye de charger la palette des préférences utilisateur */
  sprintf(user_color,"#FFFFFF:#000000:#FFFFFF:#000000:#000000:#FFFFFF:
#000000:#000000:#FFFFFF:#000000:#000000:#FFFFFF:#000000:#000000:#FFFFFF:
#000000:#000000:#FFFFFF:#000000");
  *n_colors = 20;

  if (gtk_color_selection_palette_from_string(user_color, &colors,
&n_colors)) {
            g_print("Parsing OK\n");
  }

  /* Gestion des signaux du bouton 'OK' */
  gtk_signal_connect_object(
                 GTK_OBJECT(CouleurDlg->ok_button),
                 "clicked",
                 (GtkSignalFunc)AfficheCouleur,
                 GTK_OBJECT(CouleurDlg->colorsel));
  gtk_signal_connect_object(
                 GTK_OBJECT(CouleurDlg->ok_button),
                 "clicked",
                 (GtkSignalFunc)gtk_widget_destroy,
                 GTK_OBJECT(CouleurDlg));
  /* Gestion des signaux du bouton 'Cancel' */
  gtk_signal_connect_object(
                 GTK_OBJECT(CouleurDlg->cancel_button),
                 "clicked",
                 (GtkSignalFunc)gtk_widget_destroy,
                 GTK_OBJECT(CouleurDlg));

  /* On affiche le dialogue */
  gtk_widget_show(GTK_WIDGET(CouleurDlg));

  /* La boucle principale */
  gtk_main();
  return 0;
}

The test gtk_color_selection_palette_from_string(user_color, &colors,
&n_colors) is TRUE because i obtain the message in the console (Parsing OK)
but the palette doesn't change anymore...

Thanks, Luc.








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