2006-08-18

GtkCheckButton stuff

main.c:
#include <gtk/gtk.h>

static gboolean window_delete_event( GtkWidget *widget, GdkEvent *event, gpointer data);
static void cbcb( GtkWidget *widget, gpointer data);

GtkWidget *label;

char deny[] ="You live in denial!";
char admit[] ="That's right.";

int main( int argc, char **argv)
{
 GtkWidget *window, *vbox, *checkbutton;

 gtk_set_locale( );

 gtk_init( &argc, &argv);

 window =gtk_window_new( GTK_WINDOW_TOPLEVEL);
 gtk_window_set_title( GTK_WINDOW( window), "I am the Walrus");
 g_signal_connect( G_OBJECT( window),
     "delete_event",
     G_CALLBACK( window_delete_event), NULL);

 vbox =gtk_vbox_new( FALSE, 8);
 gtk_container_add( GTK_CONTAINER( window), vbox);

 checkbutton =gtk_check_button_new_with_label( "Soylent Green is made of people?");
 gtk_box_pack_start( GTK_BOX( vbox), checkbutton, FALSE, TRUE, 8);

 // "toggled" inherited from GtkToggleButton
 g_signal_connect( checkbutton, "toggled", G_CALLBACK( cbcb), NULL);

 label =gtk_label_new( deny);
 gtk_box_pack_start( GTK_BOX( vbox), label, FALSE, TRUE, 8);

 gtk_widget_show_all( window);

 gtk_main( );

 return 0;
}

static gboolean window_delete_event( GtkWidget *widget, GdkEvent *event, gpointer data)
{
 exit( 0);
}

static void cbcb( GtkWidget *widget, gpointer data)
{
 if( FALSE ==gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( widget)))
   gtk_label_set_text( GTK_LABEL( label), deny);
 else
   gtk_label_set_text( GTK_LABEL( label), admit);
}