/** simsignal.c **/ #include GtkWidget *makeButtonBox(); gint eventDelete(GtkWidget *widget, GdkEvent *event,gpointer data); gint eventDestroy(GtkWidget *widget, GdkEvent *event,gpointer data); void buttonFirstCallback(GtkWidget *widget, GdkEvent *event,gpointer data); void buttonSecondCallback(GtkWidget *widget, GdkEvent *event,gpointer data); GtkWidget *buttonFirst; GtkWidget *buttonSecond; int main(int argc,char *argv[]) { GtkWidget *window; GtkWidget *buttonbox; gnome_init("simsignal","1.0",argc,argv); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_signal_connect(GTK_OBJECT(window),"delete_event", GTK_SIGNAL_FUNC(eventDelete),NULL); gtk_signal_connect(GTK_OBJECT(window),"destroy", GTK_SIGNAL_FUNC(eventDestroy),NULL); buttonbox = makeButtonBox(); gtk_container_add(GTK_CONTAINER(window),buttonbox); gtk_widget_show_all(window); gtk_main(); exit(0); } GtkWidget *makeButtonBox() { GtkWidget *buttonbox; buttonbox = gtk_hbutton_box_new(); gtk_container_set_border_width( GTK_CONTAINER(buttonbox),10); buttonFirst = gtk_button_new_with_label("First"); gtk_container_add(GTK_CONTAINER(buttonbox), buttonFirst); gtk_signal_connect(GTK_OBJECT(buttonFirst), "clicked", GTK_SIGNAL_FUNC(buttonFirstCallback), NULL); buttonSecond = gtk_button_new_with_label("Second"); gtk_container_add(GTK_CONTAINER(buttonbox), buttonSecond); gtk_signal_connect(GTK_OBJECT(buttonSecond), "clicked", GTK_SIGNAL_FUNC(buttonSecondCallback), NULL); return(buttonbox); } void buttonFirstCallback(GtkWidget *widget, GdkEvent *event,gpointer data) { g_print("Clicked: First\n"); } void buttonSecondCallback(GtkWidget *widget, GdkEvent *event,gpointer data) { gtk_signal_emit_by_name(GTK_OBJECT(buttonFirst), "clicked"); g_print("Clicked: Second\n"); } gint eventDelete(GtkWidget *widget, GdkEvent *event,gpointer data) { return(FALSE); } gint eventDestroy(GtkWidget *widget, GdkEvent *event,gpointer data) { gtk_main_quit(); return(0); }