Programmation GTK2 en Pascal/GtkColorSelectionDialog
Programmation GTK2 en Pascal |
|
Présentation
modifierLe contrôle GtkFileSelection est une boîte de dialogue qui permet de demander à l'utilisateur de sélectionner un fichier particulier. Ce contrôle ne s'occupe de la récupération du nom du fichier.
Hiérarchie
modifierHiérarchie |
GObject └─GtkObject └─GtkWidget └─GtkContainer └─GtkBin └─GtkWindow └─GtkDialog └─GtkColorSelectionDialog |
Utilisation de base
modifierCréation
modifierLa fonction de création est simple :
function gtk_color_selection_dialog_new(title : Pgchar) : PGtkWidget;
Le paramètre title
est le titre de votre boîte de dialogue : vous pouvez ainsi l'appeler suivant vos besoins « Choisir la couleur de fond de fenêtre...», etc.
Affichage
modifierPuisque ce nouveau contrôle dérive directement du contrôle GtkDialog
, il nous suffit d'utiliser la fonction :
function gtk_dialog_run(dialog : PGtkDialog) : gint;
La valeur de retour est importante pour savoir si l'utilisateur a sélectionné une couleur ou pas.
Récupération de la couleur
modifierLa fenêtre de dialogue contient un contrôle de type GtkColorSelection
qui se nomme colorsel
. On va utiliser la fonction de ce dernier :
procedure gtk_color_selection_get_current_color(colorsel : PGtkColorSelection; color : PGdkColor);
Initialisation de la couleur
modifierUne couleur peut être donnée à la boîte de dialogue avant son affichage. Cela se fait avec la fonction :
procedure gtk_color_selection_set_current_color(colorsel : PGtkColorSelection; color : PGdkColor);
Programme exemple
modifierNous allons créer une fenêtre avec un bouton nous permettant d'ouvrir une GtkColorSelectionDialog
. Une fois la couleur sélectionnée, nous afficherons sur la console les différentes composantes de cette couleur. Ceci pour faire simple, on aurait pu repeindre le fond de la fenêtre par exemple, mais on aurait été un peu hors sujet...
Voici le fichier gtk049.pas
:
program gtk049; uses glib2, gtk2, gdk2, sysutils; procedure gtk_toolbar_insert(toolbar : PGtkToolbar; item : PGtkToolItem; pos : gint); cdecl; external gtklib name 'gtk_toolbar_insert'; procedure OnClickBtn(APWidget : PGtkwidget; AData : pgpointer); cdecl; var pSelectionCouleur : PGtkwidget; Couleur : TGdkColor; begin // Création de la fenêtre de sélection pSelectionCouleur := gtk_color_selection_dialog_new('Couleur de la fenêtre...'); // On limite les actions à cette fenêtre gtk_window_set_modal(GTK_WINDOW(pSelectionCouleur), TRUE); // Affichage fenêtre case gtk_dialog_run(GTK_DIALOG(pSelectionCouleur)) of GTK_RESPONSE_OK : begin // Récuperation du chemin gtk_color_selection_get_current_color( GTK_COLOR_SELECTION(GTK_COLOR_SELECTION_DIALOG(pSelectionCouleur)^.colorsel), @Couleur); Writeln(Format('Rouge:%d, Vert:%d, Bleu:%d', [Couleur.red, Couleur.green, Couleur.blue])); end; end; gtk_widget_destroy(pSelectionCouleur); end; var pFenetre : PGtkWidget; pVBox : PGtkWidget; pBarreOutils : PGtkWidget; pBouton : PGtkToolItem; begin gtk_init(@argc, @argv); pFenetre := gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_position(GTK_WINDOW(pFenetre), GTK_WIN_POS_CENTER); gtk_window_set_default_size(GTK_WINDOW(pFenetre), 320, 200); gtk_window_set_title(GTK_WINDOW(pFenetre), 'Gtk049 : Sélection de couleur'); gtk_signal_connect(pGTKOBJECT(pFenetre), 'destroy', G_CALLBACK(@gtk_main_quit), NULL); // Création de la GtkVBox pVBox := gtk_vbox_new(FALSE, 5); gtk_container_add(GTK_CONTAINER(pFenetre), pVBox); // Création de la barre d'outils pBarreOutils := gtk_toolbar_new; gtk_box_pack_start(GTK_BOX(pVBox), pBarreOutils, FALSE, FALSE, 0); // Création du bouton couleur pBouton := gtk_tool_button_new(NULL, 'Couleur...'); gtk_toolbar_insert(GTK_TOOLBAR(pBarreOutils), pBouton, -1); gtk_signal_connect(pGTKOBJECT(pBouton), 'clicked', G_CALLBACK(@OnClickBtn), pFenetre); gtk_widget_show_all(pFenetre); gtk_main; end.
Voila ce que donne l'exécution du programme gtk049 :
La fenêtre principale s'affiche et on clique sur le bouton « Couleur », voilà la fenêtre de dialogue qui s'ouvre :
Sélections : GtkFileSelection ~ GtkColorSelectionDialog |