/** set1.c **/ #include gint eventDelete(GtkWidget *widget, GdkEvent *event,gpointer data); gint eventDestroy(GtkWidget *widget, GdkEvent *event,gpointer data); void eventChange(GtkWidget *widget,GtkWidget *button); #define WIDTH 300 #define HEIGHT 200 int main(int argc,char *argv[]) { GtkWidget *app; GtkWidget *canvas; GtkWidget *button; GnomeCanvasGroup *rootGroup; GnomeCanvasItem *item; gnome_init("set1","1.0",argc,argv); app = gnome_app_new("Set 1", "Gnome Canvas Widget"); 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); canvas = gnome_canvas_new(); gtk_widget_set_usize(canvas,WIDTH,HEIGHT); gnome_canvas_set_scroll_region(GNOME_CANVAS(canvas), 0.0,0.0,WIDTH,HEIGHT); rootGroup = gnome_canvas_root(GNOME_CANVAS(canvas)); gnome_app_set_contents(GNOME_APP(app),canvas); button = gtk_button_new_with_label("Change"); gtk_signal_connect(GTK_OBJECT(button),"clicked", GTK_SIGNAL_FUNC(eventChange),button); item = gnome_canvas_item_new(rootGroup, gnome_canvas_widget_get_type(), "widget",button, "x",(double)(5), "y",(double)(5), "anchor",GTK_ANCHOR_NW, NULL); gtk_widget_show_all(app); gtk_main(); exit(0); } void eventChange(GtkWidget *widget,GtkWidget *button) { gint w; gint h; gint x; gint y; w = (gint)((random() % (WIDTH/2))+10); h = (gint)((random() % (HEIGHT/2))+10); gtk_widget_set_usize(GTK_WIDGET(button),w,h); x = (gint)((random() % (WIDTH/2))+25); y = (gint)((random() % (HEIGHT/2)))+25; gtk_widget_set_uposition(GTK_WIDGET(button),x,y); } gint eventDelete(GtkWidget *widget, GdkEvent *event,gpointer data) { return(FALSE); } gint eventDestroy(GtkWidget *widget, GdkEvent *event,gpointer data) { gtk_main_quit(); return(0); }