static void progress_cb (GtkMozEmbed *embed, gint cur, gint max, WebBrowserObject *browser) { if (max < 1) { gtk_progress_set_activity_mode(GTK_PROGRESS(browser->progressBar), FALSE); browser->loadPercent = 0; browser->bytesLoaded = cur; browser->maxBytesLoaded = 0; browser->SetStatus(0); } else { browser->bytesLoaded = cur; browser->maxBytesLoaded = max; if (cur > max) { browser->loadPercent = 100; } else { browser->loadPercent = (cur * 100) / max; } char msg[256]; if (browser->loadPercent) { snprintf(msg, sizeof(msg), "%d%% complete, %d bytes of %d loaded", browser->loadPercent, browser->bytesLoaded, browser->maxBytesLoaded); browser->SetStatus(msg); } else if (browser->bytesLoaded) { snprintf(msg, sizeof(msg), "%d bytes loaded", browser->bytesLoaded); browser->SetStatus(msg); } gtk_progress_set_percentage(GTK_PROGRESS(browser->progressBar), browser->loadPercent / 100.0); } }
void progress_change_cb (GtkMozEmbed *embed, gint cur, gint max, TestGtkBrowser *browser) { g_print("progress_change_cb cur %d max %d\n", cur, max); // avoid those pesky divide by zero errors if (max < 1) { gtk_progress_set_activity_mode(GTK_PROGRESS(browser->progressBar), FALSE); browser->loadPercent = 0; browser->bytesLoaded = cur; browser->maxBytesLoaded = 0; update_status_bar_text(browser); } else { browser->bytesLoaded = cur; browser->maxBytesLoaded = max; if (cur > max) browser->loadPercent = 100; else browser->loadPercent = (cur * 100) / max; update_status_bar_text(browser); gtk_progress_set_percentage(GTK_PROGRESS(browser->progressBar), browser->loadPercent / 100.0); } }
static int gtkProgressBarMapMethod(Ihandle* ih) { ih->handle = gtk_progress_bar_new(); if (!ih->handle) return IUP_ERROR; /* add to the parent, all GTK controls must call this. */ iupgtkAddToParent(ih); gtk_widget_realize(ih->handle); if (iupStrEqualNoCase(iupAttribGetStr(ih, "ORIENTATION"), "VERTICAL")) { #if GTK_CHECK_VERSION(3, 0, 0) gtk_orientable_set_orientation(GTK_ORIENTABLE(ih->handle), GTK_ORIENTATION_VERTICAL); gtk_progress_bar_set_inverted(GTK_PROGRESS_BAR(ih->handle), TRUE); #else gtk_progress_bar_set_orientation(GTK_PROGRESS_BAR(ih->handle), GTK_PROGRESS_BOTTOM_TO_TOP); #endif if (ih->userheight < ih->userwidth) { int tmp = ih->userheight; ih->userheight = ih->userwidth; ih->userwidth = tmp; } } else { #if GTK_CHECK_VERSION(3, 0, 0) gtk_orientable_set_orientation(GTK_ORIENTABLE(ih->handle), GTK_ORIENTATION_HORIZONTAL); #else gtk_progress_bar_set_orientation((GtkProgressBar*)ih->handle, GTK_PROGRESS_LEFT_TO_RIGHT); #endif } if (iupAttribGetBoolean(ih, "MARQUEE")) { #if GTK_CHECK_VERSION(3, 0, 0) gtk_progress_bar_pulse(GTK_PROGRESS_BAR(ih->handle)); #else gtk_progress_set_activity_mode((GtkProgress*)ih->handle, TRUE); #endif ih->data->marquee = 1; ih->data->timer = IupTimer(); IupSetCallback(ih->data->timer, "ACTION_CB", (Icallback)gtkProgressBarTimeCb); IupSetAttribute(ih->data->timer, "TIME", "100"); iupAttribSet(ih->data->timer, "_IUP_PROGRESSBAR", (char*)ih); gtk_progress_bar_set_pulse_step((GtkProgressBar*)ih->handle, 0.02); } else ih->data->marquee = 0; return IUP_NOERROR; }
/* A GtkProgress can be in one of two different modes: percentage mode (the default) * and activity mode. In activity mode, the progress is simply indicated as activity * rather than as a percentage complete. */ int clip_GTK_PROGRESSSETACTIVITYMODE(ClipMachine * cm) { C_widget *cprg = _fetch_cw_arg(cm); guint activity_mode = _clip_parl(cm,2); CHECKCWID(cprg,GTK_IS_PROGRESS); CHECKOPT(2,LOGICAL_t); if (_clip_parinfo(cm,2)==UNDEF_t) activity_mode = TRUE; gtk_progress_set_activity_mode(GTK_PROGRESS(cprg->widget), activity_mode); return 0; err: return 1; }
void progress_bar_reset (GtkWidget *pbar) { struct pbarinfo *info; info = gtk_object_get_user_data (GTK_OBJECT (pbar)); if (info->activity_mode) { gtk_timeout_remove (info->timeout_id); info->activity_mode = FALSE; } gtk_progress_set_activity_mode (GTK_PROGRESS (pbar), FALSE); gtk_progress_set_show_text (GTK_PROGRESS (pbar), FALSE); gtk_progress_set_percentage (GTK_PROGRESS (pbar), 0.0); }
void progress_bar_start (GtkWidget *pbar, int activity_mode) { struct pbarinfo *info; progress_bar_reset (pbar); if (activity_mode) { info = gtk_object_get_user_data (GTK_OBJECT (pbar)); info->activity_mode = TRUE; info->timeout_id = gtk_timeout_add (100, (GtkFunction) progress_bar_timeout_callback, pbar); gtk_progress_set_activity_mode (GTK_PROGRESS (pbar), TRUE); } else { gtk_progress_set_show_text (GTK_PROGRESS (pbar), TRUE); } }
static GtkWidget * progressbar_new(GladeXML *xml, GladeWidgetInfo *info) { GtkWidget *ret = gtk_progress_bar_new(); GList *tmp; gfloat value = 0, lower = 0, upper = 100; gfloat xalign = 0.5, yalign = 0.5; for (tmp = info->attributes; tmp; tmp = tmp->next) { GladeAttribute *attr = tmp->data; if (!strcmp(attr->name, "value")) value = g_strtod(attr->value, NULL); else if (!strcmp(attr->name, "lower")) lower = g_strtod(attr->value, NULL); else if (!strcmp(attr->name, "upper")) upper = g_strtod(attr->value, NULL); else if (!strcmp(attr->name, "activity_mode")) gtk_progress_set_activity_mode(GTK_PROGRESS(ret), attr->value[0]=='T'); else if (!strcmp(attr->name, "bar_style")) gtk_progress_bar_set_bar_style(GTK_PROGRESS_BAR(ret), glade_enum_from_string(GTK_TYPE_PROGRESS_BAR_STYLE, attr->value)); else if (!strcmp(attr->name, "orientation")) gtk_progress_bar_set_orientation(GTK_PROGRESS_BAR(ret), glade_enum_from_string( GTK_TYPE_PROGRESS_BAR_ORIENTATION, attr->value)); else if (!strcmp(attr->name, "show_text")) gtk_progress_set_show_text(GTK_PROGRESS(ret), attr->value[0] == 'T'); else if (!strcmp(attr->name, "text_xalign")) xalign = g_strtod(attr->value, NULL); else if (!strcmp(attr->name, "text_yalign")) yalign = g_strtod(attr->value, NULL); else if (!strcmp(attr->name, "format")) gtk_progress_set_format_string(GTK_PROGRESS(ret), attr->value); } gtk_progress_configure(GTK_PROGRESS(ret), value, lower, upper); gtk_progress_set_text_alignment(GTK_PROGRESS(ret), xalign, yalign); return ret; }