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;
} |