1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
| #include <stdlib.h> /* Décaration de "EXIT_SUCCESS" */
#include <gtk/gtk.h>
#include "scaledvalue.h"
/* Prototypes de la fonction de callback */
static void cb_value_changed (ScaledValue *, guint *);
int main (int argc, char *argv[])
{
/* Déclaration des variables. */
int i;
guint values[12] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
/* Initialisation de GTK */
gtk_init (&argc, &argv);
/* Déclaration des objets */
GtkWindow *window;
GtkGrid *grid;
ScaledValue *scaledvalue1, *scaledvalue2, *scaledvalue3;
ScaledValue *scaledvalue4, *scaledvalue5, *scaledvalue6;
ScaledValue *scaledvalue7, *scaledvalue8, *scaledvalue9;
ScaledValue *scaledvalue10, *scaledvalue11, *scaledvalue12;
/* Initialisation des objets */
window = GTK_WINDOW (gtk_window_new (GTK_WINDOW_TOPLEVEL));
grid = GTK_GRID (gtk_grid_new ());
scaledvalue1 = SCALED_VALUE (scaled_value_new (values[0]));
scaledvalue2 = SCALED_VALUE (scaled_value_new (values[1]));
scaledvalue3 = SCALED_VALUE (scaled_value_new (values[2]));
scaledvalue4 = SCALED_VALUE (scaled_value_new (values[3]));
scaledvalue5 = SCALED_VALUE (scaled_value_new (values[4]));
scaledvalue6 = SCALED_VALUE (scaled_value_new (values[5]));
scaledvalue7 = SCALED_VALUE (scaled_value_new (values[6]));
scaledvalue8 = SCALED_VALUE (scaled_value_new (values[7]));
scaledvalue9 = SCALED_VALUE (scaled_value_new (values[8]));
scaledvalue10 = SCALED_VALUE (scaled_value_new (values[9]));
scaledvalue11 = SCALED_VALUE (scaled_value_new (values[10]));
scaledvalue12 = SCALED_VALUE (scaled_value_new (values[11]));
/* Paramétrage des objets */
gtk_window_set_title (window, "Mon exemple 4");
gtk_container_set_border_width (GTK_CONTAINER (window), 10);
gtk_widget_set_size_request (GTK_WIDGET (window), 300, 300);
gtk_grid_set_row_spacing (grid, 0);
gtk_grid_set_column_homogeneous (grid, FALSE);
gtk_grid_set_row_homogeneous (grid, FALSE);
gtk_widget_set_halign (GTK_WIDGET (grid), GTK_ALIGN_START);
gtk_widget_set_valign (GTK_WIDGET (grid), GTK_ALIGN_START);
/* Attachement des objets les uns dans les autres */
gtk_grid_attach (grid, GTK_WIDGET (scaledvalue1), 0 , 0, 1, 1);
gtk_grid_attach_next_to (grid, GTK_WIDGET (scaledvalue2), GTK_WIDGET (scaledvalue1), GTK_POS_RIGHT, 1, 1);
gtk_grid_attach_next_to (grid, GTK_WIDGET (scaledvalue3), GTK_WIDGET (scaledvalue2), GTK_POS_RIGHT, 1, 1);
gtk_grid_attach_next_to (grid, GTK_WIDGET (scaledvalue4), GTK_WIDGET (scaledvalue1), GTK_POS_BOTTOM, 1, 1);
gtk_grid_attach_next_to (grid, GTK_WIDGET (scaledvalue5), GTK_WIDGET (scaledvalue4), GTK_POS_RIGHT, 1, 1);
gtk_grid_attach_next_to (grid, GTK_WIDGET (scaledvalue6), GTK_WIDGET (scaledvalue5), GTK_POS_RIGHT, 1, 1);
gtk_grid_attach_next_to (grid, GTK_WIDGET (scaledvalue7), GTK_WIDGET (scaledvalue4), GTK_POS_BOTTOM, 1, 1);
gtk_grid_attach_next_to (grid, GTK_WIDGET (scaledvalue8), GTK_WIDGET (scaledvalue7), GTK_POS_RIGHT, 1, 1);
gtk_grid_attach_next_to (grid, GTK_WIDGET (scaledvalue9), GTK_WIDGET (scaledvalue8), GTK_POS_RIGHT, 1, 1);
gtk_grid_attach_next_to (grid, GTK_WIDGET (scaledvalue10), GTK_WIDGET (scaledvalue7), GTK_POS_BOTTOM, 1, 1);
gtk_grid_attach_next_to (grid, GTK_WIDGET (scaledvalue11), GTK_WIDGET (scaledvalue10), GTK_POS_RIGHT, 1, 1);
gtk_grid_attach_next_to (grid, GTK_WIDGET (scaledvalue12), GTK_WIDGET (scaledvalue11), GTK_POS_RIGHT, 1, 1);
gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (grid));
/* Déclaration des fonctions de callback */
g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (gtk_main_quit), NULL);
g_signal_connect (G_OBJECT (scaledvalue1), "value-changed", G_CALLBACK (cb_value_changed), &values[0]);
g_signal_connect (G_OBJECT (scaledvalue2), "value-changed", G_CALLBACK (cb_value_changed), &values[1]);
g_signal_connect (G_OBJECT (scaledvalue3), "value-changed", G_CALLBACK (cb_value_changed), &values[2]);
g_signal_connect (G_OBJECT (scaledvalue4), "value-changed", G_CALLBACK (cb_value_changed), &values[3]);
g_signal_connect (G_OBJECT (scaledvalue5), "value-changed", G_CALLBACK (cb_value_changed), &values[4]);
g_signal_connect (G_OBJECT (scaledvalue6), "value-changed", G_CALLBACK (cb_value_changed), &values[5]);
g_signal_connect (G_OBJECT (scaledvalue7), "value-changed", G_CALLBACK (cb_value_changed), &values[6]);
g_signal_connect (G_OBJECT (scaledvalue8), "value-changed", G_CALLBACK (cb_value_changed), &values[7]);
g_signal_connect (G_OBJECT (scaledvalue9), "value-changed", G_CALLBACK (cb_value_changed), &values[8]);
g_signal_connect (G_OBJECT (scaledvalue10), "value-changed", G_CALLBACK (cb_value_changed), &values[9]);
g_signal_connect (G_OBJECT (scaledvalue11), "value-changed", G_CALLBACK (cb_value_changed), &values[10]);
g_signal_connect (G_OBJECT (scaledvalue12), "value-changed", G_CALLBACK (cb_value_changed), &values[11]);
/* Affiche les widgets */
gtk_widget_show_all (GTK_WIDGET (window));
/* Et c'est parti ! */
gtk_main ();
/* Affiche les valeurs dans la console... Pour voir. */
for (i = 0; i < 12; i++)
{
g_print ("%d\n", values[i]);
}
/* Et c'est fini ! */
return EXIT_SUCCESS;
}
static void cb_value_changed (ScaledValue *scaledvalue, guint *value)
{
/* récupère la valeur du curseur et la recopie dans le label */
*value = scaled_value_get_value (scaledvalue);
} |