void gaugelist_set_gauge(GAUGELIST *gl, gchar *variable, gchar *maxvariable, GdkColor color) { VARLIST *vl = (VARLIST *) gl->sess->variables; GAUGE *g = gaugelist_get_gauge (gl, variable); if (!g) { g = gauge_new (); gl->list = g_list_append (gl->list, g); } gauge_set_var (g, variable); gauge_set_maxvar (g, maxvariable); g->color = color; g->cur = varlist_get_int_value (vl, variable); g->max = varlist_get_int_value (vl, maxvariable); update_gaugelist (gl); }
void file_op_context_create_ui_without_init (FileOpContext * ctx, gboolean with_eta, filegui_dialog_type_t dialog_type) { FileOpContextUI *ui; int minus = 0, total_reserve = 0; const char *abort_button_label = N_("&Abort"); const char *skip_button_label = N_("&Skip"); int abort_button_width, skip_button_width, buttons_width; int dlg_width; g_return_if_fail (ctx != NULL); g_return_if_fail (ctx->ui == NULL); #ifdef ENABLE_NLS abort_button_label = _(abort_button_label); skip_button_label = _(skip_button_label); #endif abort_button_width = str_term_width1 (abort_button_label) + 3; skip_button_width = str_term_width1 (skip_button_label) + 3; buttons_width = abort_button_width + skip_button_width + 2; dlg_width = max (WX, buttons_width + 6); ui = g_new0 (FileOpContextUI, 1); ctx->ui = ui; ctx->dialog_type = dialog_type; switch (dialog_type) { case FILEGUI_DIALOG_ONE_ITEM: total_reserve = 0; minus = verbose ? 0 : 2; break; case FILEGUI_DIALOG_MULTI_ITEM: total_reserve = 5; minus = verbose ? 0 : 7; break; case FILEGUI_DIALOG_DELETE_ITEM: total_reserve = -5; minus = 0; break; } ctx->recursive_result = RECURSIVE_YES; ui->replace_result = REPLACE_YES; ui->showing_eta = with_eta; ui->showing_bps = with_eta; ui->op_dlg = create_dlg (TRUE, 0, 0, WY - minus + 1 + total_reserve, dlg_width, dialog_colors, NULL, NULL, op_names[ctx->operation], DLG_CENTER | DLG_REVERSE); add_widget (ui->op_dlg, button_new (WY - minus - 2 + total_reserve, dlg_width / 2 + 1, FILE_ABORT, NORMAL_BUTTON, abort_button_label, NULL)); add_widget (ui->op_dlg, button_new (WY - minus - 2 + total_reserve, dlg_width / 2 - 1 - skip_button_width, FILE_SKIP, NORMAL_BUTTON, skip_button_label, NULL)); if (verbose && dialog_type == FILEGUI_DIALOG_MULTI_ITEM) { add_widget (ui->op_dlg, hline_new (8, 1, dlg_width - 2)); add_widget (ui->op_dlg, ui->total_bytes_label = label_new (8, FCOPY_LABEL_X + 15, "")); add_widget (ui->op_dlg, ui->progress_total_gauge = gauge_new (9, FCOPY_LABEL_X + 3, 0, 100, 0)); add_widget (ui->op_dlg, ui->total_files_processed_label = label_new (11, FCOPY_LABEL_X, "")); add_widget (ui->op_dlg, ui->time_label = label_new (12, FCOPY_LABEL_X, "")); } add_widget (ui->op_dlg, ui->progress_file_label = label_new (7, FCOPY_LABEL_X, "")); add_widget (ui->op_dlg, ui->progress_file_gauge = gauge_new (6, FCOPY_LABEL_X + 3, 0, 100, 0)); add_widget (ui->op_dlg, ui->file_string[1] = label_new (5, FCOPY_LABEL_X, "")); add_widget (ui->op_dlg, ui->file_label[1] = label_new (4, FCOPY_LABEL_X, "")); add_widget (ui->op_dlg, ui->file_string[0] = label_new (3, FCOPY_LABEL_X, "")); add_widget (ui->op_dlg, ui->file_label[0] = label_new (2, FCOPY_LABEL_X, "")); if ((right_panel == current_panel) && !classic_progressbar) { ui->progress_file_gauge->from_left_to_right = FALSE; if (verbose && dialog_type == FILEGUI_DIALOG_MULTI_ITEM) ui->progress_total_gauge->from_left_to_right = FALSE; } }
void file_op_context_create_ui (file_op_context_t * ctx, gboolean with_eta, filegui_dialog_type_t dialog_type) { file_op_context_ui_t *ui; int buttons_width; int dlg_width = 58, dlg_height = 17; int y = 2, x = 3; if (ctx == NULL || ctx->ui != NULL) return; #ifdef ENABLE_NLS if (progress_buttons[0].len == -1) { size_t i; for (i = 0; i < G_N_ELEMENTS (progress_buttons); i++) progress_buttons[i].text = _(progress_buttons[i].text); } #endif ctx->dialog_type = dialog_type; ctx->recursive_result = RECURSIVE_YES; ctx->ui = g_new0 (file_op_context_ui_t, 1); ui = ctx->ui; ui->replace_result = REPLACE_YES; ui->op_dlg = dlg_create (TRUE, 0, 0, dlg_height, dlg_width, dialog_colors, NULL, NULL, NULL, op_names[ctx->operation], DLG_CENTER); if (dialog_type != FILEGUI_DIALOG_DELETE_ITEM) { ui->showing_eta = with_eta && ctx->progress_totals_computed; ui->showing_bps = with_eta; ui->src_file_label = label_new (y++, x, ""); add_widget (ui->op_dlg, ui->src_file_label); ui->src_file = label_new (y++, x, ""); add_widget (ui->op_dlg, ui->src_file); ui->tgt_file_label = label_new (y++, x, ""); add_widget (ui->op_dlg, ui->tgt_file_label); ui->tgt_file = label_new (y++, x, ""); add_widget (ui->op_dlg, ui->tgt_file); ui->progress_file_gauge = gauge_new (y++, x + 3, dlg_width - (x + 3) * 2, FALSE, 100, 0); if (!classic_progressbar && (current_panel == right_panel)) ui->progress_file_gauge->from_left_to_right = FALSE; add_widget_autopos (ui->op_dlg, ui->progress_file_gauge, WPOS_KEEP_TOP | WPOS_KEEP_HORZ, NULL); ui->progress_file_label = label_new (y++, x, ""); add_widget (ui->op_dlg, ui->progress_file_label); if (verbose && dialog_type == FILEGUI_DIALOG_MULTI_ITEM) { ui->total_bytes_label = hline_new (y++, -1, -1); add_widget (ui->op_dlg, ui->total_bytes_label); if (ctx->progress_totals_computed) { ui->progress_total_gauge = gauge_new (y++, x + 3, dlg_width - (x + 3) * 2, FALSE, 100, 0); if (!classic_progressbar && (current_panel == right_panel)) ui->progress_total_gauge->from_left_to_right = FALSE; add_widget_autopos (ui->op_dlg, ui->progress_total_gauge, WPOS_KEEP_TOP | WPOS_KEEP_HORZ, NULL); } ui->total_files_processed_label = label_new (y++, x, ""); add_widget (ui->op_dlg, ui->total_files_processed_label); ui->time_label = label_new (y++, x, ""); add_widget (ui->op_dlg, ui->time_label); } } else { ui->src_file = label_new (y++, x, ""); add_widget (ui->op_dlg, ui->src_file); ui->total_files_processed_label = label_new (y++, x, ""); add_widget (ui->op_dlg, ui->total_files_processed_label); } add_widget (ui->op_dlg, hline_new (y++, -1, -1)); progress_buttons[0].w = WIDGET (button_new (y, 0, progress_buttons[0].action, progress_buttons[0].flags, progress_buttons[0].text, progress_button_callback)); if (progress_buttons[0].len == -1) progress_buttons[0].len = button_get_len (BUTTON (progress_buttons[0].w)); progress_buttons[1].w = WIDGET (button_new (y, 0, progress_buttons[1].action, progress_buttons[1].flags, progress_buttons[1].text, progress_button_callback)); if (progress_buttons[1].len == -1) progress_buttons[1].len = button_get_len (BUTTON (progress_buttons[1].w)); if (progress_buttons[2].len == -1) { /* create and destroy button to get it length */ progress_buttons[2].w = WIDGET (button_new (y, 0, progress_buttons[2].action, progress_buttons[2].flags, progress_buttons[2].text, progress_button_callback)); progress_buttons[2].len = button_get_len (BUTTON (progress_buttons[2].w)); send_message (progress_buttons[2].w, NULL, MSG_DESTROY, 0, NULL); g_free (progress_buttons[2].w); } progress_buttons[2].w = progress_buttons[1].w; progress_buttons[3].w = WIDGET (button_new (y, 0, progress_buttons[3].action, progress_buttons[3].flags, progress_buttons[3].text, NULL)); if (progress_buttons[3].len == -1) progress_buttons[3].len = button_get_len (BUTTON (progress_buttons[3].w)); add_widget (ui->op_dlg, progress_buttons[0].w); add_widget (ui->op_dlg, progress_buttons[1].w); add_widget (ui->op_dlg, progress_buttons[3].w); buttons_width = 2 + progress_buttons[0].len + max (progress_buttons[1].len, progress_buttons[2].len) + progress_buttons[3].len; /* adjust dialog sizes */ dlg_set_size (ui->op_dlg, y + 3, max (COLS * 2 / 3, buttons_width + 6)); place_progress_buttons (ui->op_dlg, FALSE); dlg_select_widget (progress_buttons[0].w); /* We will manage the dialog without any help, that's why we have to call dlg_init */ dlg_init (ui->op_dlg); }
void create_op_win (FileOperation op, int with_eta) { int i, x_size; int minus = verbose ? 0 : 3; int eta_offset = with_eta ? (WX_ETA_EXTRA) / 2 : 0; char *sixty = ""; char *fifteen = ""; file_progress_replace_result = 0; file_progress_recursive_result = 0; showing_eta = with_eta; showing_bps = with_eta; eta_extra = with_eta ? WX_ETA_EXTRA : 0; x_size = (WX + 4) + eta_extra; op_dlg = create_dlg (0, 0, WY-minus+4, x_size, dialog_colors, op_win_callback, "", "opwin", DLG_CENTER); #ifndef HAVE_X last_hint_line = the_hint->widget.y; if ((op_dlg->y + op_dlg->lines) > last_hint_line) the_hint->widget.y = op_dlg->y + op_dlg->lines+1; #endif x_set_dialog_title (op_dlg, ""); add_widgetl (op_dlg, button_new (BY-minus, WX - 19 + eta_offset, FILE_ABORT, NORMAL_BUTTON, _("&Abort"), 0, 0, "abort"), XV_WLAY_RIGHTOF); add_widgetl (op_dlg, button_new (BY-minus, 14 + eta_offset, FILE_SKIP, NORMAL_BUTTON, _("&Skip"), 0, 0, "skip"), XV_WLAY_CENTERROW); add_widgetl (op_dlg, ProgressGauge [2] = gauge_new (7, FCOPY_GAUGE_X, 0, 100, 0, "g-1"), XV_WLAY_RIGHTOF); add_widgetl (op_dlg, ProgressLabel [2] = label_new (7, FCOPY_LABEL_X, fifteen, "l-1"), XV_WLAY_NEXTROW); add_widgetl (op_dlg, bps_label = label_new (7, WX, "", "bps-label"), XV_WLAY_NEXTROW); add_widgetl (op_dlg, ProgressGauge [1] = gauge_new (8, FCOPY_GAUGE_X, 0, 100, 0, "g-2"), XV_WLAY_RIGHTOF); add_widgetl (op_dlg, ProgressLabel [1] = label_new (8, FCOPY_LABEL_X, fifteen, "l-2"), XV_WLAY_RIGHTOF); add_widgetl (op_dlg, stalled_label = label_new (8, WX, "", "stalled"), XV_WLAY_NEXTROW); add_widgetl (op_dlg, ProgressGauge [0] = gauge_new (6, FCOPY_GAUGE_X, 0, 100, 0, "g-3"), XV_WLAY_RIGHTOF); add_widgetl (op_dlg, ProgressLabel [0] = label_new (6, FCOPY_LABEL_X, fifteen, "l-3"), XV_WLAY_RIGHTOF); add_widgetl (op_dlg, eta_label = label_new (6, WX, "", "eta_label"), XV_WLAY_NEXTROW); add_widgetl (op_dlg, FileString [1] = label_new (4, FCOPY_GAUGE_X, sixty, "fs-l-1"), XV_WLAY_RIGHTOF); add_widgetl (op_dlg, FileLabel [1] = label_new (4, FCOPY_LABEL_X, fifteen, "fs-l-2"), XV_WLAY_NEXTROW); add_widgetl (op_dlg, FileString [0] = label_new (3, FCOPY_GAUGE_X, sixty, "fs-x-1"), XV_WLAY_RIGHTOF); add_widgetl (op_dlg, FileLabel [0] = label_new (3, FCOPY_LABEL_X, fifteen, "fs-x-2"), XV_WLAY_NEXTROW); /* We will manage the dialog without any help, that's why we have to call init_dlg */ init_dlg (op_dlg); op_dlg->running = 1; selected_button = FILE_SKIP; for (i = 0; i < 3; i++) last_percentage [i] = -99; }
void file_op_context_create_ui_without_init (FileOpContext * ctx, gboolean with_eta, filegui_dialog_type_t dialog_type) { FileOpContextUI *ui; const char *abort_button_label = N_("&Abort"); const char *skip_button_label = N_("&Skip"); int abort_button_width, skip_button_width, buttons_width; int dlg_width, dlg_height; g_return_if_fail (ctx != NULL); g_return_if_fail (ctx->ui == NULL); #ifdef ENABLE_NLS abort_button_label = _(abort_button_label); skip_button_label = _(skip_button_label); #endif abort_button_width = str_term_width1 (abort_button_label) + 3; skip_button_width = str_term_width1 (skip_button_label) + 3; buttons_width = abort_button_width + skip_button_width + 2; dlg_width = max (58, buttons_width + 6); dlg_height = 17; /* to make compiler happy :) */ ui = g_new0 (FileOpContextUI, 1); ctx->ui = ui; ctx->dialog_type = dialog_type; switch (dialog_type) { case FILEGUI_DIALOG_ONE_ITEM: dlg_height = verbose ? 12 : 10; break; case FILEGUI_DIALOG_MULTI_ITEM: dlg_height = !verbose ? 10 : file_op_compute_totals ? 17 : 15; break; case FILEGUI_DIALOG_DELETE_ITEM: dlg_height = 7; break; } ctx->recursive_result = RECURSIVE_YES; ui->replace_result = REPLACE_YES; ui->showing_eta = with_eta && file_op_compute_totals; ui->showing_bps = with_eta; ui->op_dlg = create_dlg (TRUE, 0, 0, dlg_height, dlg_width, dialog_colors, NULL, NULL, NULL, op_names[ctx->operation], DLG_CENTER | DLG_REVERSE); add_widget (ui->op_dlg, button_new (dlg_height - 3, dlg_width / 2 + 1, FILE_ABORT, NORMAL_BUTTON, abort_button_label, NULL)); add_widget (ui->op_dlg, button_new (dlg_height - 3, dlg_width / 2 - 1 - skip_button_width, FILE_SKIP, NORMAL_BUTTON, skip_button_label, NULL)); if (verbose && dialog_type == FILEGUI_DIALOG_MULTI_ITEM) { int dy = file_op_compute_totals ? 2 : 0; if (file_op_compute_totals) add_widget (ui->op_dlg, ui->progress_total_gauge = gauge_new (7 + dy, 3 + 3, 0, 100, 0)); add_widget (ui->op_dlg, ui->total_files_processed_label = label_new (9 + dy, 3, "")); add_widget (ui->op_dlg, ui->time_label = label_new (10 + dy, 3, "")); add_widget (ui->op_dlg, ui->total_bytes_label = label_new (8, 3 + 15, "")); add_widget (ui->op_dlg, hline_new (8, 1, dlg_width - 2)); } add_widget (ui->op_dlg, ui->progress_file_label = label_new (7, 3, "")); add_widget (ui->op_dlg, ui->progress_file_gauge = gauge_new (6, 3 + 3, 0, 100, 0)); add_widget (ui->op_dlg, ui->file_string[1] = label_new (5, 3, "")); add_widget (ui->op_dlg, ui->file_label[1] = label_new (4, 3, "")); add_widget (ui->op_dlg, ui->file_string[0] = label_new (3, 3, "")); add_widget (ui->op_dlg, ui->file_label[0] = label_new (2, 3, "")); if ((right_panel == current_panel) && !classic_progressbar) { ui->progress_file_gauge->from_left_to_right = FALSE; if (verbose && file_op_compute_totals && dialog_type == FILEGUI_DIALOG_MULTI_ITEM) ui->progress_total_gauge->from_left_to_right = FALSE; } }