/** xgtkpreview.c **/ #include gint eventDelete(GtkWidget *widget, GdkEvent *event,gpointer data); gint eventDestroy(GtkWidget *widget, GdkEvent *event,gpointer data); static GtkWidget *makeWidget(); static gboolean eventDraw(GtkWidget *widget, GdkEvent *event,gpointer data); int main(int argc,char *argv[]) { GtkWidget *app; GtkWidget *widget; gnome_init("xgtkpreview","1.0",argc,argv); app = gnome_app_new("xgtkpreview","GtkPreview"); gtk_container_set_border_width(GTK_CONTAINER(app),20); 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); widget = makeWidget(); gnome_app_set_contents(GNOME_APP(app),widget); gtk_widget_show_all(app); gtk_main(); exit(0); } gint eventDelete(GtkWidget *widget, GdkEvent *event,gpointer data) { return(FALSE); } gint eventDestroy(GtkWidget *widget, GdkEvent *event,gpointer data) { gtk_main_quit(); return(0); } static GtkWidget *makeWidget() { GtkWidget *preview; preview = gtk_preview_new(GTK_PREVIEW_COLOR); gtk_preview_size(GTK_PREVIEW(preview),200,100); gtk_signal_connect(GTK_OBJECT(preview),"event", GTK_SIGNAL_FUNC(eventDraw),NULL); return(preview); } static gboolean eventDraw(GtkWidget *widget, GdkEvent *event,gpointer data) { GdkGC *gc; GdkColor foreground; GdkColormap *colormap; colormap = gdk_colormap_get_system(); gc = gdk_gc_new(widget->window); gdk_color_parse("blue",&foreground); gdk_color_alloc(colormap,&foreground); gdk_gc_set_foreground(gc,&foreground); gdk_draw_rectangle(widget->window,gc, TRUE,20,10,160,80); return(TRUE); }