/** configure.c **/ #include gint eventDelete(GtkWidget *widget, GdkEvent *event,gpointer data); gint eventDestroy(GtkWidget *widget, GdkEvent *event,gpointer data); gboolean eventDraw(GtkWidget *widget, GdkEvent *event,gpointer data); gboolean eventConfigure(GtkWidget *widget, GdkEventConfigure *event,gpointer data); static int width = 20; static int height = 20; int main(int argc,char *argv[]) { GtkWidget *app; GtkWidget *area; gnome_init("configure","1.0",argc,argv); app = gnome_app_new("configure","Resizing Rectangles"); gtk_signal_connect(GTK_OBJECT(app),"delete_event", GTK_SIGNAL_FUNC(eventDelete),NULL); gtk_signal_connect(GTK_OBJECT(app),"destroy", GTK_SIGNAL_FUNC(eventDestroy),NULL); area = gtk_drawing_area_new(); gtk_widget_set_usize(area,width,height); gnome_app_set_contents(GNOME_APP(app),area); gtk_signal_connect(GTK_OBJECT(area),"expose-event", GTK_SIGNAL_FUNC(eventDraw),NULL); gtk_signal_connect(GTK_OBJECT(area),"configure-event", GTK_SIGNAL_FUNC(eventConfigure),NULL); gtk_widget_show_all(app); gtk_main(); exit(0); } gboolean eventDraw(GtkWidget *widget, GdkEvent *event,gpointer data) { gint xDelta = width / 5; gint yDelta = height / 5; gdk_draw_rectangle(widget->window, widget->style->white_gc, TRUE, 0,0, width,height); gdk_draw_rectangle(widget->window, widget->style->black_gc, TRUE, xDelta,yDelta, width - (2 * xDelta),height - (2 * yDelta)); xDelta *= 2; yDelta *= 2; gdk_draw_rectangle(widget->window, widget->style->white_gc, TRUE, xDelta,yDelta, width - (2 * xDelta),height - (2 * yDelta)); return(TRUE); } gboolean eventConfigure(GtkWidget *widget, GdkEventConfigure *event,gpointer data) { width = event->width; height = event->height; return(TRUE); } gint eventDelete(GtkWidget *widget, GdkEvent *event,gpointer data) { return(FALSE); } gint eventDestroy(GtkWidget *widget, GdkEvent *event,gpointer data) { gtk_main_quit(); return(0); }