2005-01-03 Matthias Clasen <mclasen@redhat.com> * examples/*: Re-extract. * docs/tutorial/gtk-tut.sgml: Small corrections.
		
			
				
	
	
		
			73 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
 | 
						|
#include <gtk/gtk.h>
 | 
						|
 | 
						|
/* I'm going to be lazy and use some global variables to
 | 
						|
 * store the position of the widget within the fixed
 | 
						|
 * container */
 | 
						|
gint x = 50;
 | 
						|
gint y = 50;
 | 
						|
 | 
						|
/* This callback function moves the button to a new position
 | 
						|
 * in the Fixed container. */
 | 
						|
static void move_button( GtkWidget *widget,
 | 
						|
                         GtkWidget *fixed )
 | 
						|
{
 | 
						|
  x = (x + 30) % 300;
 | 
						|
  y = (y + 50) % 300;
 | 
						|
  gtk_fixed_move (GTK_FIXED (fixed), widget, x, y); 
 | 
						|
}
 | 
						|
 | 
						|
int main( int   argc,
 | 
						|
          char *argv[] )
 | 
						|
{
 | 
						|
  /* GtkWidget is the storage type for widgets */
 | 
						|
  GtkWidget *window;
 | 
						|
  GtkWidget *fixed;
 | 
						|
  GtkWidget *button;
 | 
						|
  gint i;
 | 
						|
 | 
						|
  /* Initialise GTK */
 | 
						|
  gtk_init (&argc, &argv);
 | 
						|
    
 | 
						|
  /* Create a new window */
 | 
						|
  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
 | 
						|
  gtk_window_set_title (GTK_WINDOW (window), "Fixed Container");
 | 
						|
 | 
						|
  /* Here we connect the "destroy" event to a signal handler */ 
 | 
						|
  g_signal_connect (G_OBJECT (window), "destroy",
 | 
						|
		    G_CALLBACK (gtk_main_quit), NULL);
 | 
						|
 
 | 
						|
  /* Sets the border width of the window. */
 | 
						|
  gtk_container_set_border_width (GTK_CONTAINER (window), 10);
 | 
						|
 | 
						|
  /* Create a Fixed Container */
 | 
						|
  fixed = gtk_fixed_new ();
 | 
						|
  gtk_container_add (GTK_CONTAINER (window), fixed);
 | 
						|
  gtk_widget_show (fixed);
 | 
						|
  
 | 
						|
  for (i = 1 ; i <= 3 ; i++) {
 | 
						|
    /* Creates a new button with the label "Press me" */
 | 
						|
    button = gtk_button_new_with_label ("Press me");
 | 
						|
  
 | 
						|
    /* When the button receives the "clicked" signal, it will call the
 | 
						|
     * function move_button() passing it the Fixed Container as its
 | 
						|
     * argument. */
 | 
						|
    g_signal_connect (G_OBJECT (button), "clicked",
 | 
						|
		      G_CALLBACK (move_button), (gpointer) fixed);
 | 
						|
  
 | 
						|
    /* This packs the button into the fixed containers window. */
 | 
						|
    gtk_fixed_put (GTK_FIXED (fixed), button, i*50, i*50);
 | 
						|
  
 | 
						|
    /* The final step is to display this newly created widget. */
 | 
						|
    gtk_widget_show (button);
 | 
						|
  }
 | 
						|
 | 
						|
  /* Display the window */
 | 
						|
  gtk_widget_show (window);
 | 
						|
    
 | 
						|
  /* Enter the event loop */
 | 
						|
  gtk_main ();
 | 
						|
    
 | 
						|
  return 0;
 | 
						|
}
 |