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
| #include <stdlib.h>
#include <stdio.h>
#include <gtk/gtk.h>
#include <cairo.h>
gboolean on_draw (GtkWidget *widget, cairo_t *cr, gpointer data)
{
/* affiche dans la console les dimensions du widget */
printf("width = %d, height = %d\n",
gtk_widget_get_allocated_width(widget),
gtk_widget_get_allocated_height(widget));
cairo_set_source_rgb (cr, 0.0 , 0.0 , 0.0); //fond noir
cairo_paint (cr);
//cairo_destroy (cr);
return FALSE;
}
int main (int argc, char * argv [])
{
GtkWidget * win;
GtkWidget * area;
GtkWidget * table;
/* Widget nb de sommets */
GtkWidget * frame;
GtkWidget *nbSommet;
/* Widget style de sommets */
GtkWidget * styleSom;
GtkWidget * boutonP;
GtkWidget * boutonD;
/* Widget GO */
GtkWidget * Go;
gtk_init (& argc, & argv);
/* description de la fenetre */
win= gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_widget_set_size_request (win, 800, 600);
g_signal_connect (G_OBJECT(win), "destroy", G_CALLBACK(gtk_main_quit), NULL);
/* Créatione st insertion de zone de dessin dans la table */
//table = gtk_grid_new();
table = gtk_grid_new ();
gtk_grid_set_column_homogeneous(GTK_GRID(table), TRUE);
gtk_grid_set_row_homogeneous(GTK_GRID(table), TRUE);
gtk_container_add(GTK_CONTAINER(win), GTK_WIDGET(table));
/* Widget nombre de sommet */
frame = gtk_frame_new("Nombre de sommets");
nbSommet = gtk_spin_button_new_with_range(0,5000,1);
/* Widget style de points */
styleSom = gtk_label_new("Style des sommets :");
boutonP = gtk_radio_button_new_with_label(NULL, "Points");
boutonD = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(boutonP), "Disques");
Go = gtk_button_new_from_stock(GTK_STOCK_OK);
/* Création de la table */
area = gtk_drawing_area_new ();
gtk_grid_attach(GTK_GRID (table), frame, 1, 1 ,3 ,1 );
gtk_grid_attach(GTK_GRID (table), nbSommet, 1, 3 ,3 ,1 );
gtk_grid_attach_next_to(GTK_GRID (table), area, nbSommet, GTK_POS_RIGHT, 15, 13);
gtk_grid_attach_next_to(GTK_GRID (table), styleSom, nbSommet, GTK_POS_BOTTOM, 3, 1);
gtk_grid_attach_next_to(GTK_GRID (table), boutonP, styleSom, GTK_POS_BOTTOM, 1, 1);
gtk_grid_attach_next_to(GTK_GRID (table), boutonD, boutonP, GTK_POS_RIGHT, 1, 1);
gtk_grid_attach_next_to(GTK_GRID (table), Go, boutonP, GTK_POS_BOTTOM, 3, 1);
/* j'avais mis area au lieu de table comme premier paramètre mais
dans ce cas la fenetre ce colorie pas... */
//gtk_widget_set_hexpand (area, TRUE);
//gtk_widget_set_vexpand (area, TRUE);
g_signal_connect (G_OBJECT (area), "draw", G_CALLBACK (on_draw), NULL);
gtk_widget_show_all (win);
gtk_main ();
return 0;
} |
Partager