/** gnomeprocbar.c **/ #include gint eventDelete(GtkWidget *widget, GdkEvent *event,gpointer data); gint eventDestroy(GtkWidget *widget, GdkEvent *event,gpointer data); static GtkWidget *makeWidget(); static gint updateValue(); static GdkColor barColors[5] = { {0, 0x4fff, 0x0fff, 0xffff}, {0, 0xffff, 0xffff, 0x4fff}, {0, 0xdfff, 0xdfff, 0xdfff}, {0, 0xafff, 0xafff, 0xafff}, {0, 0, 0, 0}, }; int main(int argc,char *argv[]) { GtkWidget *app; GtkWidget *widget; gnome_init("gnomeprocbar","1.0",argc,argv); app = gnome_app_new("gnomeprocbar","GnomeProcBar"); 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 *procbar; static GtkWidget *makeWidget() { GtkWidget *label; label = gtk_label_new("Label Text"); procbar = gnome_proc_bar_new( label,4,barColors,updateValue); gtk_widget_set_usize(procbar,400,15); gnome_proc_bar_start(GNOME_PROC_BAR(procbar),1000,NULL); return(procbar); } static gint updateValue() { static gint values[4] = { 0, 0, 0, 0}; values[0]++; values[1] += 2; values[2] += 3; values[3] = 200 - values[0] - values[1] - values[2]; if(values[3] < 0) { values[0] = 0; values[1] = 0; values[2] = 0; values[3] = 200; } gnome_proc_bar_set_values(GNOME_PROC_BAR(procbar),values); return(TRUE); }