这篇教程C++ str_term_width1函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中str_term_width1函数的典型用法代码示例。如果您正苦于以下问题:C++ str_term_width1函数的具体用法?C++ str_term_width1怎么用?C++ str_term_width1使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了str_term_width1函数的25个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: setup_cmdlinevoidsetup_cmdline (void){ int prompt_width; int y; char *tmp_prompt = (char *) mc_prompt;#ifdef ENABLE_SUBSHELL if (mc_global.tty.use_subshell) { tmp_prompt = g_string_free (subshell_prompt, FALSE); (void) strip_ctrl_codes (tmp_prompt); }#endif prompt_width = str_term_width1 (tmp_prompt); /* Check for prompts too big */ if (COLS > 8 && prompt_width > COLS - 8) { int prompt_len; prompt_width = COLS - 8; prompt_len = str_offset_to_pos (tmp_prompt, prompt_width); tmp_prompt[prompt_len] = '/0'; }#ifdef ENABLE_SUBSHELL if (mc_global.tty.use_subshell) { subshell_prompt = g_string_new (tmp_prompt); g_free (tmp_prompt); mc_prompt = subshell_prompt->str; }#endif y = LINES - 1 - mc_global.keybar_visible; widget_set_size (WIDGET (the_prompt), y, 0, 1, prompt_width); label_set_text (the_prompt, mc_prompt); widget_set_size (WIDGET (cmdline), y, prompt_width, 1, COLS - prompt_width);}
开发者ID:iNode,项目名称:mc,代码行数:42,
示例2: edit_get_titlestatic char *edit_get_title (const WDialog * h, size_t len){ const WEdit *edit = find_editor (h); const char *modified = edit->modified ? "(*) " : " "; const char *file_label; char *filename; len -= 4; if (edit->filename_vpath == NULL) filename = g_strdup (_("[NoName]")); else filename = g_strdup (vfs_path_as_str (edit->filename_vpath)); file_label = str_term_trim (filename, len - str_term_width1 (_("Edit: "))); g_free (filename); return g_strconcat (_("Edit: "), modified, file_label, (char *) NULL);}
开发者ID:MidnightCommander,项目名称:mc,代码行数:20,
示例3: help_print_wordstatic voidhelp_print_word (WDialog * h, GString * word, int *col, int *line, gboolean add_space){ if (*line >= help_lines) g_string_set_size (word, 0); else { int w; w = str_term_width1 (word->str); if (*col + w >= HELP_WINDOW_WIDTH) { *col = 0; (*line)++; } if (*line >= help_lines) g_string_set_size (word, 0); else { widget_move (h, *line + 2, *col + 2); tty_print_string (word->str); g_string_set_size (word, 0); *col += w; } } if (add_space) { if (*col < HELP_WINDOW_WIDTH - 1) { tty_print_char (' '); (*col)++; } else { *col = 0; (*line)++; } }}
开发者ID:GarothLongint,项目名称:mc,代码行数:41,
示例4: common_dialog_repaint/** Clean the dialog area, draw the frame and the title */voidcommon_dialog_repaint (Dlg_head * h){ int space; if (h->state != DLG_ACTIVE) return; space = (h->flags & DLG_COMPACT) ? 0 : 1; tty_setcolor (h->color[DLG_COLOR_NORMAL]); dlg_erase (h); draw_box (h, space, space, h->lines - 2 * space, h->cols - 2 * space, FALSE); if (h->title != NULL) { tty_setcolor (h->color[DLG_COLOR_TITLE]); dlg_move (h, space, (h->cols - str_term_width1 (h->title)) / 2); tty_print_string (h->title); }}
开发者ID:ryanlee,项目名称:mc,代码行数:22,
示例5: editcmd_dialog_raw_key_queryinteditcmd_dialog_raw_key_query (const char *heading, const char *query, int cancel){ int w = str_term_width1 (query) + 7; struct Dlg_head *raw_dlg = create_dlg (0, 0, 7, w, dialog_colors, editcmd_dialog_raw_key_query_cb, NULL, heading, DLG_CENTER | DLG_TRYUP | DLG_WANT_TAB); add_widget (raw_dlg, input_new (3 - cancel, w - 5, INPUT_COLOR, 2, "", 0, INPUT_COMPLETE_DEFAULT)); add_widget (raw_dlg, label_new (3 - cancel, 2, query)); if (cancel) add_widget (raw_dlg, button_new (4, w / 2 - 5, B_CANCEL, NORMAL_BUTTON, _("Cancel"), 0)); w = run_dlg (raw_dlg); destroy_dlg (raw_dlg); if (cancel) { if (w == XCTRL ('g') || w == XCTRL ('c') || w == ESC_CHAR || w == B_CANCEL) return 0; } return w;}
开发者ID:sfionov,项目名称:mc-dev,代码行数:22,
示例6: str_msg_term_sizevoidstr_msg_term_size (const char *text, int *lines, int *columns){ char *p, *tmp; char *q; char c = '/0'; *lines = 1; *columns = 0; tmp = g_strdup (text); p = tmp; while (TRUE) { int width; q = strchr (p, '/n'); if (q != NULL) { c = q[0]; q[0] = '/0'; } width = str_term_width1 (p); if (width > *columns) *columns = width; if (q == NULL) break; q[0] = c; p = q + 1; (*lines)++; } g_free (tmp);}
开发者ID:CTU-OSP,项目名称:mc,代码行数:38,
示例7: dlg_default_repaint/** Clean the dialog area, draw the frame and the title */voiddlg_default_repaint (WDialog * h){ Widget *wh = WIDGET (h); int space; if (h->state != DLG_ACTIVE) return; space = (h->flags & DLG_COMPACT) ? 0 : 1; tty_setcolor (h->color[DLG_COLOR_NORMAL]); dlg_erase (h); tty_draw_box (wh->y + space, wh->x + space, wh->lines - 2 * space, wh->cols - 2 * space, FALSE); if (h->title != NULL) { tty_setcolor (h->color[DLG_COLOR_TITLE]); widget_move (h, space, (wh->cols - str_term_width1 (h->title)) / 2); tty_print_string (h->title); }}
开发者ID:GalaxyTab4,项目名称:workbench,代码行数:24,
示例8: tree_framestatic voidtree_frame (Dlg_head * h, WTree * tree){ tty_setcolor (NORMAL_COLOR); widget_erase ((Widget *) tree); if (tree->is_panel) { const char *title = _("Directory tree"); const int len = str_term_width1 (title); draw_box (h, tree->widget.y, tree->widget.x, tree->widget.lines, tree->widget.cols, FALSE); widget_move (&tree->widget, 0, (tree->widget.cols - len - 2) / 2); tty_printf (" %s ", title); if (panels_options.show_mini_info) widget_move (&tree->widget, tlines (tree) + 1, 0); tty_print_alt_char (ACS_LTEE, FALSE); widget_move (&tree->widget, tlines (tree) + 1, tree->widget.cols - 1); tty_print_alt_char (ACS_RTEE, FALSE); tty_draw_hline (tree->widget.y + tlines (tree) + 1, tree->widget.x + 1, ACS_HLINE, tree->widget.cols - 2); }}
开发者ID:ryanlee,项目名称:mc,代码行数:24,
示例9: menu_arrangestatic voidmenu_arrange (menu_t * menu, dlg_shortcut_str get_shortcut){ if (menu != NULL) { GList *i; size_t max_shortcut_len = 0; menu->max_entry_len = 1; menu->max_hotkey_len = 1; for (i = menu->entries; i != NULL; i = g_list_next (i)) { menu_entry_t *entry = MENUENTRY (i->data); if (entry != NULL) { size_t len; len = (size_t) hotkey_width (entry->text); menu->max_hotkey_len = max (menu->max_hotkey_len, len); if (get_shortcut != NULL) entry->shortcut = get_shortcut (entry->command); if (entry->shortcut != NULL) { len = (size_t) str_term_width1 (entry->shortcut); max_shortcut_len = max (max_shortcut_len, len); } } } menu->max_entry_len = menu->max_hotkey_len + max_shortcut_len; }}
开发者ID:BpArCuCTeMbI,项目名称:mc,代码行数:36,
示例10: dlg_default_repaint/** Clean the dialog area, draw the frame and the title */voiddlg_default_repaint (WDialog * h){ Widget *wh = WIDGET (h); int space; if (!widget_get_state (wh, WST_ACTIVE)) return; space = h->compact ? 0 : 1; tty_setcolor (h->color[DLG_COLOR_NORMAL]); dlg_erase (h); tty_draw_box (wh->y + space, wh->x + space, wh->lines - 2 * space, wh->cols - 2 * space, FALSE); if (h->title != NULL) { /* TODO: truncate long title */ tty_setcolor (h->color[DLG_COLOR_TITLE]); widget_move (h, space, (wh->cols - str_term_width1 (h->title)) / 2); tty_print_string (h->title); }}
开发者ID:MidnightCommander,项目名称:mc,代码行数:25,
示例11: jobs_cmdvoidjobs_cmd (void){ struct { const char *name; int flags; int value; int len; bcback_fn callback; } job_but[] = { /* *INDENT-OFF* */ { N_("&Stop"), NORMAL_BUTTON, B_STOP, 0, task_cb }, { N_("&Resume"), NORMAL_BUTTON, B_RESUME, 0, task_cb }, { N_("&Kill"), NORMAL_BUTTON, B_KILL, 0, task_cb }, { N_("&OK"), DEFPUSH_BUTTON, B_CANCEL, 0, NULL } /* *INDENT-ON* */ }; size_t i; const size_t n_but = G_N_ELEMENTS (job_but); WDialog *jobs_dlg; int cols = 60; int lines = 15; int x = 0; for (i = 0; i < n_but; i++) {#ifdef ENABLE_NLS job_but[i].name = _(job_but[i].name);#endif /* ENABLE_NLS */ job_but[i].len = str_term_width1 (job_but[i].name) + 3; if (job_but[i].flags == DEFPUSH_BUTTON) job_but[i].len += 2; x += job_but[i].len; } x += (int) n_but - 1; cols = max (cols, x + 6); jobs_dlg = dlg_create (TRUE, 0, 0, lines, cols, dialog_colors, NULL, NULL, "[Background jobs]", _("Background jobs"), DLG_CENTER); bg_list = listbox_new (2, 2, lines - 6, cols - 6, FALSE, NULL); jobs_fill_listbox (bg_list); add_widget (jobs_dlg, bg_list); add_widget (jobs_dlg, hline_new (lines - 4, -1, -1)); x = (cols - x) / 2; for (i = 0; i < n_but; i++) { add_widget (jobs_dlg, button_new (lines - 3, x, job_but[i].value, job_but[i].flags, job_but[i].name, job_but[i].callback)); x += job_but[i].len + 1; } (void) dlg_run (jobs_dlg); dlg_destroy (jobs_dlg);}
开发者ID:ActionLuzifer,项目名称:mc,代码行数:65,
示例12: quick_dialog_skipintquick_dialog_skip (quick_dialog_t * quick_dlg, int nskip){ int len; int blen = 0; int x, y; /* current positions */ int y1 = 0; /* bottom of 1st column in case of two columns */ int y2 = -1; /* start of two columns */ int width1 = 0; /* width of single column */ int width2 = 0; /* width of each of two columns */ gboolean have_groupbox = FALSE; gboolean two_columns = FALSE; gboolean put_buttons = FALSE; /* x position of 1st column is 3 */ const int x1 = 3; /* x position of 2nd column is 4 and it will be fixed later, after creation of all widgets */ int x2 = 4; GArray *widgets; size_t i; quick_widget_t *quick_widget; WGroupbox *g = NULL; WDialog *dd; int return_val; len = str_term_width1 (I18N (quick_dlg->title)) + 6; quick_dlg->cols = max (quick_dlg->cols, len); y = 1; x = x1; /* create widgets */ widgets = g_array_sized_new (FALSE, FALSE, sizeof (quick_widget_item_t), 8); for (quick_widget = quick_dlg->widgets; quick_widget->widget_type != quick_end; quick_widget++) { quick_widget_item_t item = { NULL, quick_widget }; int width = 0; switch (quick_widget->widget_type) { case quick_checkbox: item.widget = WIDGET (check_new (++y, x, *quick_widget->u.checkbox.state, I18N (quick_widget->u.checkbox.text))); g_array_append_val (widgets, item); width = item.widget->cols; if (g != NULL) width += 2; if (two_columns) width2 = max (width2, width); else width1 = max (width1, width); break; case quick_button: /* single button */ item.widget = WIDGET (button_new (++y, x, quick_widget->u.button.action, quick_widget->u.button.action == B_ENTER ? DEFPUSH_BUTTON : NORMAL_BUTTON, I18N (quick_widget->u.button.text), quick_widget->u.button.callback)); g_array_append_val (widgets, item); width = item.widget->cols; if (g != NULL) width += 2; if (two_columns) width2 = max (width2, width); else width1 = max (width1, width); break; case quick_input: *quick_widget->u.input.result = NULL; y++; if (quick_widget->u.input.label_location != input_label_none) quick_create_labeled_input (widgets, &y, x, quick_widget, &width); else { item.widget = WIDGET (quick_create_input (y, x, quick_widget)); g_array_append_val (widgets, item); width = item.widget->cols; } if (g != NULL) width += 2; if (two_columns) width2 = max (width2, width); else width1 = max (width1, width); break; case quick_label: item.widget = WIDGET (label_new (++y, x, I18N (quick_widget->u.label.text))); g_array_append_val (widgets, item); y += item.widget->lines - 1; width = item.widget->cols; if (g != NULL) width += 2;//.........这里部分代码省略.........
开发者ID:rutsky,项目名称:mc,代码行数:101,
示例13: init_learnstatic voidinit_learn (void){ const int dlg_width = 78; const int dlg_height = 23; /* buttons */ int bx0, bx1; const char *b0 = N_("&Save"); const char *b1 = N_("&Cancel"); int bl0, bl1; int x, y, i; const key_code_name_t *key;#ifdef ENABLE_NLS static gboolean i18n_flag = FALSE; if (!i18n_flag) { learn_title = _(learn_title); i18n_flag = TRUE; } b0 = _(b0); b1 = _(b1);#endif /* ENABLE_NLS */ do_refresh (); learn_dlg = dlg_create (TRUE, 0, 0, dlg_height, dlg_width, WPOS_CENTER, FALSE, dialog_colors, learn_callback, NULL, "[Learn keys]", learn_title); /* find first unshown button */ for (key = key_name_conv_tab, learn_total = 0; key->name != NULL && strcmp (key->name, "kpleft") != 0; key++, learn_total++) ; learnok = 0; learnchanged = FALSE; learnkeys = g_new (learnkey_t, learn_total); x = UX; y = UY; /* add buttons and "OK" labels */ for (i = 0; i < learn_total; i++) { char buffer[BUF_TINY]; const char *label; int padding; learnkeys[i].ok = FALSE; learnkeys[i].sequence = NULL; label = _(key_name_conv_tab[i].longname); padding = 16 - str_term_width1 (label); padding = MAX (0, padding); g_snprintf (buffer, sizeof (buffer), "%s%*s", label, padding, ""); learnkeys[i].button = WIDGET (button_new (y, x, B_USER + i, NARROW_BUTTON, buffer, learn_button)); learnkeys[i].label = WIDGET (label_new (y, x + 19, "")); add_widget (learn_dlg, learnkeys[i].button); add_widget (learn_dlg, learnkeys[i].label); y++; if (y == UY + ROWS) { x += COLSHIFT; y = UY; } } add_widget (learn_dlg, hline_new (dlg_height - 8, -1, -1)); add_widget (learn_dlg, label_new (dlg_height - 7, 5, _("Press all the keys mentioned here. After you have done it, check/n" "which keys are not marked with OK. Press space on the missing/n" "key, or click with the mouse to define it. Move around with Tab."))); add_widget (learn_dlg, hline_new (dlg_height - 4, -1, -1)); /* buttons */ bl0 = str_term_width1 (b0) + 5; /* default button */ bl1 = str_term_width1 (b1) + 3; /* normal button */ bx0 = (dlg_width - (bl0 + bl1 + 1)) / 2; bx1 = bx0 + bl0 + 1; add_widget (learn_dlg, button_new (dlg_height - 3, bx0, B_ENTER, DEFPUSH_BUTTON, b0, NULL)); add_widget (learn_dlg, button_new (dlg_height - 3, bx1, B_CANCEL, NORMAL_BUTTON, b1, NULL));}
开发者ID:MidnightCommander,项目名称:mc,代码行数:90,
示例14: file_mask_dialogchar *file_mask_dialog (file_op_context_t * ctx, FileOperation operation, gboolean only_one, const char *format, const void *text, const char *def_text, gboolean * do_bg){ size_t fmd_xlen; vfs_path_t *vpath; int source_easy_patterns = easy_patterns; char fmd_buf[BUF_MEDIUM]; char *dest_dir, *tmp; char *def_text_secure; if (ctx == NULL) return NULL; /* unselect checkbox if target filesystem don't support attributes */ ctx->op_preserve = filegui__check_attrs_on_fs (def_text); ctx->stable_symlinks = FALSE; *do_bg = FALSE; /* filter out a possible password from def_text */ vpath = vfs_path_from_str_flags (def_text, only_one ? VPF_NO_CANON : VPF_NONE); tmp = vfs_path_to_str_flags (vpath, 0, VPF_STRIP_PASSWORD); vfs_path_free (vpath); if (source_easy_patterns) def_text_secure = strutils_glob_escape (tmp); else def_text_secure = strutils_regex_escape (tmp); g_free (tmp); if (only_one) { int format_len, text_len; int max_len; format_len = str_term_width1 (format); text_len = str_term_width1 (text); max_len = COLS - 2 - 6; if (format_len + text_len <= max_len) { fmd_xlen = format_len + text_len + 6; fmd_xlen = max (fmd_xlen, 68); } else { text = str_trunc ((const char *) text, max_len - format_len); fmd_xlen = max_len + 6; } g_snprintf (fmd_buf, sizeof (fmd_buf), format, (const char *) text); } else { fmd_xlen = COLS * 2 / 3; fmd_xlen = max (fmd_xlen, 68); g_snprintf (fmd_buf, sizeof (fmd_buf), format, *(const int *) text); } { char *source_mask, *orig_mask; int val; struct stat buf; quick_widget_t quick_widgets[] = { /* *INDENT-OFF* */ QUICK_LABELED_INPUT (fmd_buf, input_label_above, easy_patterns ? "*" : "^(.*)$", "input-def", &source_mask, NULL, FALSE, FALSE, INPUT_COMPLETE_FILENAMES), QUICK_START_COLUMNS, QUICK_SEPARATOR (FALSE), QUICK_NEXT_COLUMN, QUICK_CHECKBOX (N_("&Using shell patterns"), &source_easy_patterns, NULL), QUICK_STOP_COLUMNS, QUICK_LABELED_INPUT (N_("to:"), input_label_above, def_text_secure, "input2", &dest_dir, NULL, FALSE, FALSE, INPUT_COMPLETE_FILENAMES), QUICK_SEPARATOR (TRUE), QUICK_START_COLUMNS, QUICK_CHECKBOX (N_("Follow &links"), &ctx->follow_links, NULL), QUICK_CHECKBOX (N_("Preserve &attributes"), &ctx->op_preserve, NULL), QUICK_NEXT_COLUMN, QUICK_CHECKBOX (N_("Di&ve into subdir if exists"), &ctx->dive_into_subdirs, NULL), QUICK_CHECKBOX (N_("&Stable symlinks"), &ctx->stable_symlinks, NULL), QUICK_STOP_COLUMNS, QUICK_START_BUTTONS (TRUE, TRUE), QUICK_BUTTON (N_("&OK"), B_ENTER, NULL, NULL),#ifdef ENABLE_BACKGROUND QUICK_BUTTON (N_("&Background"), B_USER, NULL, NULL),#endif /* ENABLE_BACKGROUND */ QUICK_BUTTON (N_("&Cancel"), B_CANCEL, NULL, NULL), QUICK_END /* *INDENT-ON* */ }; quick_dialog_t qdlg = { -1, -1, fmd_xlen, op_names[operation], "[Mask Copy/Rename]", quick_widgets, NULL, NULL };//.........这里部分代码省略.........
开发者ID:CTU-OSP,项目名称:mc,代码行数:101,
示例15: file_op_context_create_ui_without_initvoidfile_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; }}
开发者ID:artzub,项目名称:mc,代码行数:98,
示例16: help_showstatic voidhelp_show (WDialog * h, const char *paint_start){ const char *p, *n; int col, line, c; gboolean painting = TRUE; gboolean acs; /* Flag: Alternate character set active? */ gboolean repeat_paint; int active_col, active_line; /* Active link position */ char buff[MB_LEN_MAX + 1]; GString *word; word = g_string_sized_new (32); tty_setcolor (HELP_NORMAL_COLOR); do { line = col = active_col = active_line = 0; repeat_paint = FALSE; acs = FALSE; clear_link_areas (); if ((int) (selected_item - paint_start) < 0) selected_item = NULL; p = paint_start; n = paint_start; while ((n[0] != '/0') && (n[0] != CHAR_NODE_END) && (line < help_lines)) { p = n; n = str_cget_next_char (p); memcpy (buff, p, n - p); buff[n - p] = '/0'; c = (unsigned char) buff[0]; switch (c) { case CHAR_LINK_START: if (selected_item == NULL) selected_item = p; if (p != selected_item) tty_setcolor (HELP_LINK_COLOR); else { tty_setcolor (HELP_SLINK_COLOR); /* Store the coordinates of the link */ active_col = col + 2; active_line = line + 2; } start_link_area (col, line, p); break; case CHAR_LINK_POINTER: painting = FALSE; break; case CHAR_LINK_END: painting = TRUE; help_print_word (h, word, &col, &line, FALSE); end_link_area (col - 1, line); tty_setcolor (HELP_NORMAL_COLOR); break; case CHAR_ALTERNATE: acs = TRUE; break; case CHAR_NORMAL: acs = FALSE; break; case CHAR_VERSION: widget_move (h, line + 2, col + 2); tty_print_string (VERSION); col += str_term_width1 (VERSION); break; case CHAR_FONT_BOLD: tty_setcolor (HELP_BOLD_COLOR); break; case CHAR_FONT_ITALIC: tty_setcolor (HELP_ITALIC_COLOR); break; case CHAR_FONT_NORMAL: help_print_word (h, word, &col, &line, FALSE); tty_setcolor (HELP_NORMAL_COLOR); break; case '/n': if (painting) help_print_word (h, word, &col, &line, FALSE); line++; col = 0; break; case '/t': col = (col / 8 + 1) * 8; if (col >= HELP_WINDOW_WIDTH) { line++; col = 8; } break; case ' ': /* word delimiter */ if (painting) help_print_word (h, word, &col, &line, TRUE);//.........这里部分代码省略.........
开发者ID:GarothLongint,项目名称:mc,代码行数:101,
示例17: init_chown_advancedstatic voidinit_chown_advanced (void){ int i; int dlg_h = 12; int dlg_w = 74; int y; static gboolean i18n = FALSE; if (!i18n) { for (i = BUTTONS_PERM; i < BUTTONS; i++) {#ifdef ENABLE_NLS chown_advanced_but[i].text = _(chown_advanced_but[i].text);#endif /* ENABLE_NLS */ chown_advanced_but[i].len = str_term_width1 (chown_advanced_but[i].text) + 3; if (chown_advanced_but[i].flags == DEFPUSH_BUTTON) chown_advanced_but[i].len += 2; /* "<>" */ } i18n = TRUE; } do_refresh (); sf_stat = g_new (struct stat, 1); current_file = 0; end_chown = need_update = FALSE; single_set = (current_panel->marked < 2); memset (ch_flags, '=', 11); flag_pos = 0; x_toggle = 070; if (!single_set) dlg_h += 2; ch_dlg = dlg_create (TRUE, 0, 0, dlg_h, dlg_w, WPOS_CENTER, FALSE, dialog_colors, advanced_chown_callback, NULL, "[Advanced Chown]", _("Chown advanced command")); l_filename = label_new (2, 3, ""); add_widget (ch_dlg, l_filename); add_widget (ch_dlg, hline_new (3, -1, -1));#define XTRACT(i,y) y, BX+chown_advanced_but[i].x, / chown_advanced_but[i].ret_cmd, chown_advanced_but[i].flags, / (chown_advanced_but[i].text), NULL b_att[0] = button_new (XTRACT (0, BY)); chown_advanced_but[0].id = add_widget (ch_dlg, b_att[0]); b_att[1] = button_new (XTRACT (1, BY)); chown_advanced_but[1].id = add_widget (ch_dlg, b_att[1]); b_att[2] = button_new (XTRACT (2, BY)); chown_advanced_but[2].id = add_widget (ch_dlg, b_att[2]); b_user = button_new (XTRACT (3, BY)); chown_advanced_but[3].id = add_widget (ch_dlg, b_user); b_group = button_new (XTRACT (4, BY)); chown_advanced_but[4].id = add_widget (ch_dlg, b_group);#undef XTRACT l_mode = label_new (BY + 2, 3, ""); add_widget (ch_dlg, l_mode); y = BY + 3; if (!single_set) { i = BUTTONS_PERM; add_widget (ch_dlg, hline_new (y++, -1, -1)); chown_advanced_but[i].id = add_widget (ch_dlg, button_new (y, WIDGET (ch_dlg)->cols / 2 - chown_advanced_but[i].len, chown_advanced_but[i].ret_cmd, chown_advanced_but[i].flags, chown_advanced_but[i].text, NULL)); i++; chown_advanced_but[i].id = add_widget (ch_dlg, button_new (y, WIDGET (ch_dlg)->cols / 2 + 1, chown_advanced_but[i].ret_cmd, chown_advanced_but[i].flags, chown_advanced_but[i].text, NULL)); y++; } i = BUTTONS_PERM + 2; add_widget (ch_dlg, hline_new (y++, -1, -1)); chown_advanced_but[i].id = add_widget (ch_dlg, button_new (y, WIDGET (ch_dlg)->cols / 2 - chown_advanced_but[i].len, chown_advanced_but[i].ret_cmd, chown_advanced_but[i].flags, chown_advanced_but[i].text, NULL)); i++; chown_advanced_but[i].id = add_widget (ch_dlg, button_new (y, WIDGET (ch_dlg)->cols / 2 + 1,//.........这里部分代码省略.........
开发者ID:jskDr,项目名称:mc,代码行数:101,
示例18: overwrite_query_dialog//.........这里部分代码省略......... char buffer[BUF_SMALL]; char fsize_buffer[BUF_SMALL]; Widget *label1, *label2; const char *title; vfs_path_t *stripped_vpath; const char *stripped_name; char *stripped_name_orig; int result; widgets_len = g_new0 (int, num); if (mode == Foreground) title = _("File exists"); else title = _("Background process: File exists"); stripped_vpath = vfs_path_from_str (ui->replace_filename); stripped_name = stripped_name_orig = vfs_path_to_str_flags (stripped_vpath, 0, VPF_STRIP_HOME | VPF_STRIP_PASSWORD); vfs_path_free (stripped_vpath); { size_t i; int l1, l2, l, row; int stripped_name_len; for (i = 0; i < num; i++) {#ifdef ENABLE_NLS if (i != 1) /* skip filename */ rd_widgets[i].text = _(rd_widgets[i].text);#endif /* ENABLE_NLS */ widgets_len[i] = str_term_width1 (rd_widgets[i].text); } /* * longest of "Overwrite..." labels * (assume "Target date..." are short enough) */ l1 = max (widgets_len[9], widgets_len[4]); /* longest of button rows */ l = l2 = 0; row = 0; for (i = 1; i < num - 1; i++) if (rd_widgets[i].value != 0) { if (row != rd_widgets[i].ypos) { row = rd_widgets[i].ypos; l2 = max (l2, l); l = 0; } l += widgets_len[i] + 4; } l2 = max (l2, l); /* last row */ rd_xlen = max (rd_xlen, l1 + l2 + 8); /* rd_xlen = max (rd_xlen, str_term_width1 (title) + 2); */ stripped_name_len = str_term_width1 (stripped_name); rd_xlen = max (rd_xlen, min (COLS, stripped_name_len + 8)); /* Now place widgets */ l1 += 5; /* start of first button in the row */ l = l1;
开发者ID:CTU-OSP,项目名称:mc,代码行数:67,
示例19: mcview_dialog_gotogbooleanmcview_dialog_goto (mcview_t * view, off_t * offset){ typedef enum { MC_VIEW_GOTO_LINENUM = 0, MC_VIEW_GOTO_PERCENT = 1, MC_VIEW_GOTO_OFFSET_DEC = 2, MC_VIEW_GOTO_OFFSET_HEX = 3 } mcview_goto_type_t; const char *mc_view_goto_str[] = { N_("&Line number (decimal)"), N_("Pe&rcents"), N_("&Decimal offset"), N_("He&xadecimal offset") }; const int goto_dlg_height = 12; int goto_dlg_width = 40; static mcview_goto_type_t current_goto_type = MC_VIEW_GOTO_LINENUM; size_t i; size_t num_of_types = sizeof (mc_view_goto_str) / sizeof (mc_view_goto_str[0]); char *exp = NULL; int qd_result; gboolean res = FALSE; QuickWidget quick_widgets[] = { QUICK_BUTTON (6, 10, goto_dlg_height - 3, goto_dlg_height, N_("&Cancel"), B_CANCEL, NULL), QUICK_BUTTON (2, 10, goto_dlg_height - 3, goto_dlg_height, N_("&OK"), B_ENTER, NULL), QUICK_RADIO (3, goto_dlg_width, 4, goto_dlg_height, num_of_types, (const char **) mc_view_goto_str, (int *) ¤t_goto_type), QUICK_INPUT (3, goto_dlg_width, 2, goto_dlg_height, INPUT_LAST_TEXT, goto_dlg_width - 6, 0, MC_HISTORY_VIEW_GOTO, &exp), QUICK_END }; QuickDialog Quick_input = { goto_dlg_width, goto_dlg_height, -1, -1, N_("Goto"), "[Input Line Keys]", quick_widgets, NULL, NULL, FALSE };#ifdef ENABLE_NLS for (i = 0; i < num_of_types; i++) mc_view_goto_str[i] = _(mc_view_goto_str[i]); quick_widgets[0].u.button.text = _(quick_widgets[0].u.button.text); quick_widgets[1].u.button.text = _(quick_widgets[1].u.button.text);#endif /* calculate widget coordinates */ { int b0_len, b1_len, len; const int button_gap = 2; /* preliminary dialog width */ goto_dlg_width = max (goto_dlg_width, str_term_width1 (Quick_input.title) + 4); /* length of radiobuttons */ for (i = 0; i < num_of_types; i++) goto_dlg_width = max (goto_dlg_width, str_term_width1 (mc_view_goto_str[i]) + 10); /* length of buttons */ b0_len = str_term_width1 (quick_widgets[0].u.button.text) + 3; b1_len = str_term_width1 (quick_widgets[1].u.button.text) + 5; /* default button */ len = b0_len + b1_len + button_gap * 2; /* dialog width */ Quick_input.xlen = max (goto_dlg_width, len + 6); /* correct widget coordinates */ for (i = sizeof (quick_widgets) / sizeof (quick_widgets[0]); i > 0; i--) quick_widgets[i - 1].x_divisions = Quick_input.xlen; /* input length */ quick_widgets[3].u.input.len = Quick_input.xlen - 6; /* button positions */ quick_widgets[1].relative_x = Quick_input.xlen / 2 - len / 2; quick_widgets[0].relative_x = quick_widgets[1].relative_x + b1_len + button_gap; } /* run dialog */ qd_result = quick_dialog (&Quick_input); *offset = -1; /* check input line value */ if ((qd_result != B_CANCEL) && (exp != NULL) && (exp[0] != '/0')) { int base = (current_goto_type == MC_VIEW_GOTO_OFFSET_HEX) ? 16 : 10; off_t addr; char *error; res = TRUE;//.........这里部分代码省略.........
开发者ID:BrEacK,项目名称:mc,代码行数:101,
示例20: va_start if (count > 0) { va_start (ap, count); for (i = 0; i < count; i++) { char *cp = va_arg (ap, char *); win_len += str_term_width1 (cp) + 6; if (strchr (cp, '&') != NULL) win_len--; } va_end (ap); } /* count coordinates */ str_msg_term_size (text, &lines, &cols); cols = 6 + max (win_len, max (str_term_width1 (header), cols)); lines += 4 + (count > 0 ? 2 : 0); /* prepare dialog */ query_dlg = create_dlg (TRUE, 0, 0, lines, cols, query_colors, default_query_callback, "[QueryBox]", header, dlg_flags); if (count > 0) { cols = (cols - win_len - 2) / 2 + 2; va_start (ap, count); for (i = 0; i < count; i++) { int xpos;
开发者ID:ryanlee,项目名称:mc,代码行数:30,
示例21: init_panelizestatic voidinit_panelize (void){ struct { int ret_cmd; button_flags_t flags; const char *text; } panelize_but[] = { /* *INDENT-OFF* */ { B_ENTER, DEFPUSH_BUTTON, N_("Pane&lize") }, { B_REMOVE, NORMAL_BUTTON, N_("&Remove") }, { B_ADD, NORMAL_BUTTON, N_("&Add new") }, { B_CANCEL, NORMAL_BUTTON, N_("&Cancel") } /* *INDENT-ON* */ }; size_t i; int blen; int panelize_cols; struct panelize *current; int x, y; last_listitem = 0; do_refresh (); i = G_N_ELEMENTS (panelize_but); blen = i - 1; /* gaps between buttons */ while (i-- != 0) {#ifdef ENABLE_NLS panelize_but[i].text = _(panelize_but[i].text);#endif blen += str_term_width1 (panelize_but[i].text) + 3 + 1; if (panelize_but[i].flags == DEFPUSH_BUTTON) blen += 2; } panelize_cols = COLS - 6; panelize_cols = max (panelize_cols, blen + 4); panelize_dlg = dlg_create (TRUE, 0, 0, 20, panelize_cols, dialog_colors, panelize_callback, NULL, "[External panelize]", _("External panelize"), DLG_CENTER); /* add listbox to the dialogs */ y = UY; add_widget (panelize_dlg, groupbox_new (y++, UX, 12, panelize_cols - UX * 2, "")); l_panelize = listbox_new (y, UX + 1, 10, panelize_cols - UX * 2 - 2, FALSE, NULL); for (current = panelize; current != NULL; current = current->next) listbox_add_item (l_panelize, LISTBOX_APPEND_AT_END, 0, current->label, current); listbox_select_entry (l_panelize, listbox_search_text (l_panelize, _("Other command"))); add_widget (panelize_dlg, l_panelize); y += WIDGET (l_panelize)->lines + 1; add_widget (panelize_dlg, label_new (y++, UX, _("Command"))); pname = input_new (y++, UX, input_colors, panelize_cols - UX * 2, "", "in", INPUT_COMPLETE_FILENAMES | INPUT_COMPLETE_HOSTNAMES | INPUT_COMPLETE_COMMANDS | INPUT_COMPLETE_VARIABLES | INPUT_COMPLETE_USERNAMES | INPUT_COMPLETE_CD | INPUT_COMPLETE_SHELL_ESC); add_widget (panelize_dlg, pname); add_widget (panelize_dlg, hline_new (y++, -1, -1)); x = (panelize_cols - blen) / 2; for (i = 0; i < G_N_ELEMENTS (panelize_but); i++) { WButton *b; b = button_new (y, x, panelize_but[i].ret_cmd, panelize_but[i].flags, panelize_but[i].text, NULL); add_widget (panelize_dlg, b); x += button_get_len (b) + 1; } dlg_select_widget (l_panelize);}
开发者ID:andi5,项目名称:mc,代码行数:84,
示例22: overwrite_query_dialog/* * FIXME: probably it is better to replace this with quick dialog machinery, * but actually I'm not familiar with it and have not much time :( * alex */static replace_action_toverwrite_query_dialog (FileOpContext * ctx, enum OperationMode mode){#define ADD_RD_BUTTON(i) / add_widget (ui->replace_dlg, / button_new (rd_widgets [i].ypos, rd_widgets [i].xpos, rd_widgets [i].value, / NORMAL_BUTTON, rd_widgets [i].text, 0))#define ADD_RD_LABEL(i, p1, p2) / g_snprintf (buffer, sizeof (buffer), rd_widgets [i].text, p1, p2); / add_widget (ui->replace_dlg, label_new (rd_widgets [i].ypos, rd_widgets [i].xpos, buffer)) /* dialog sizes */ const int rd_ylen = 17; int rd_xlen = 60; struct { const char *text; int ypos, xpos; int value; /* 0 for labels */ } rd_widgets[] = { /* *INDENT-OFF* */ /* 0 */ { N_("Target file already exists!"), 3, 4, 0 }, /* 1 */ { "%s", 4, 4, 0 }, /* 2 */ /* cannot use PRIuMAX here; %llu is used instead */ { N_("Source date: %s, size %llu"), 6, 4, 0 }, /* 3 */ /* cannot use PRIuMAX here; %llu is used instead */ { N_("Target date: %s, size %llu"), 7, 4, 0 }, /* 4 */ { N_("&Abort"), 14, 25, REPLACE_ABORT }, /* 5 */ { N_("If &size differs"), 12, 28, REPLACE_SIZE }, /* 6 */ { N_("Non&e"), 11, 47, REPLACE_NEVER }, /* 7 */ { N_("&Update"), 11, 36, REPLACE_UPDATE }, /* 8 */ { N_("A&ll"), 11, 28, REPLACE_ALWAYS }, /* 9 */ { N_("Overwrite all targets?"), 11, 4, 0 }, /* 10 */ { N_("&Reget"), 10, 28, REPLACE_REGET }, /* 11 */ { N_("A&ppend"), 9, 45, REPLACE_APPEND }, /* 12 */ { N_("&No"), 9, 37, REPLACE_NO }, /* 13 */ { N_("&Yes"), 9, 28, REPLACE_YES }, /* 14 */ { N_("Overwrite this target?"), 9, 4, 0 } /* *INDENT-ON* */ }; const int num = sizeof (rd_widgets) / sizeof (rd_widgets[0]); int *widgets_len; FileOpContextUI *ui = ctx->ui; char buffer[BUF_SMALL]; const char *title; const char *stripped_name = strip_home_and_password (ui->replace_filename); int stripped_name_len; int result; widgets_len = g_new0 (int, num); if (mode == Foreground) title = _("File exists"); else title = _("Background process: File exists"); stripped_name_len = str_term_width1 (stripped_name); { int i, l1, l2, l, row; for (i = 0; i < num; i++) {#ifdef ENABLE_NLS if (i != 1) /* skip filename */ rd_widgets[i].text = _(rd_widgets[i].text);#endif /* ENABLE_NLS */ widgets_len[i] = str_term_width1 (rd_widgets[i].text); } /* * longest of "Overwrite..." labels * (assume "Target date..." are short enough) */ l1 = max (widgets_len[9], widgets_len[14]);//.........这里部分代码省略.........
开发者ID:artzub,项目名称:mc,代码行数:101,
示例23: fg_input_dialog_help/** * Show dialog, not background safe. * * If the arguments "header" and "text" should be translated, * that MUST be done by the caller of fg_input_dialog_help(). * * The argument "history_name" holds the name of a section * in the history file. Data entered in the input field of * the dialog box will be stored there. * */static char *fg_input_dialog_help (const char *header, const char *text, const char *help, const char *history_name, const char *def_text, gboolean strip_password){ char *my_str; int flags = (strip_password) ? 4 : 0; QuickWidget quick_widgets[] = { /* 0 */ QUICK_BUTTON (6, 64, 1, 0, N_("&Cancel"), B_CANCEL, NULL), /* 1 */ QUICK_BUTTON (3, 64, 1, 0, N_("&OK"), B_ENTER, NULL), /* 2 */ QUICK_INPUT (3, 64, 0, 0, def_text, 58, flags, NULL, &my_str), /* 3 */ QUICK_LABEL (3, 64, 2, 0, ""), QUICK_END }; int b0_len, b1_len, b_len, gap; char histname[64] = "inp|"; int lines, cols; int len; int i; char *p_text; int ret; /* buttons */#ifdef ENABLE_NLS quick_widgets[0].u.button.text = _(quick_widgets[0].u.button.text); quick_widgets[1].u.button.text = _(quick_widgets[1].u.button.text);#endif /* ENABLE_NLS */ b0_len = str_term_width1 (quick_widgets[0].u.button.text) + 3; b1_len = str_term_width1 (quick_widgets[1].u.button.text) + 5; /* default button */ b_len = b0_len + b1_len + 2; /* including gap */ /* input line */ if (history_name != NULL && *history_name != '/0') { g_strlcpy (histname + 3, history_name, sizeof (histname) - 3); quick_widgets[2].u.input.histname = histname; } /* The special value of def_text is used to identify password boxes and hide characters with "*". Don't save passwords in history! */ if (def_text == INPUT_PASSWORD) { quick_widgets[2].u.input.flags = 1; histname[3] = '/0'; quick_widgets[2].u.input.text = ""; } /* text */ p_text = g_strstrip (g_strdup (text)); str_msg_term_size (p_text, &lines, &cols); quick_widgets[3].u.label.text = p_text; /* dialog width */ len = str_term_width1 (header); len = max (max (len, cols) + 4, 64); len = min (max (len, b_len + 6), COLS); /* button locations */ gap = (len - 8 - b_len) / 3; quick_widgets[1].relative_x = 3 + gap; quick_widgets[0].relative_x = quick_widgets[1].relative_x + b1_len + gap + 2; { QuickDialog Quick_input = { len, lines + 6, -1, -1, header, help, quick_widgets, NULL, TRUE }; for (i = 0; i < 4; i++) { quick_widgets[i].x_divisions = Quick_input.xlen; quick_widgets[i].y_divisions = Quick_input.ylen; } for (i = 0; i < 3; i++) quick_widgets[i].relative_y += 2 + lines; /* input line length */ quick_widgets[2].u.input.len = Quick_input.xlen - 6; ret = quick_dialog (&Quick_input); } g_free (p_text); return (ret != B_CANCEL) ? my_str : NULL;}
开发者ID:ryanlee,项目名称:mc,代码行数:99,
示例24: file_mask_dialogchar *file_mask_dialog (FileOpContext * ctx, FileOperation operation, gboolean only_one, const char *format, const void *text, const char *def_text, gboolean * do_bg){ const size_t FMDY = 13; const size_t FMDX = 68; size_t fmd_xlen; /* buttons */ const size_t gap = 1; size_t b0_len, b2_len; size_t b1_len = 0; int source_easy_patterns = easy_patterns; size_t i, len; char fmd_buf[BUF_MEDIUM]; char *source_mask, *orig_mask, *dest_dir, *tmp; char *def_text_secure; int val; QuickWidget fmd_widgets[] = { /* 0 */ QUICK_BUTTON (42, 64, 10, FMDY, N_("&Cancel"), B_CANCEL, NULL),#ifdef WITH_BACKGROUND /* 1 */ QUICK_BUTTON (25, 64, 10, FMDY, N_("&Background"), B_USER, NULL),#define OFFSET 0#else#define OFFSET 1#endif /* WITH_BACKGROUND */ /* 2 - OFFSET */ QUICK_BUTTON (14, FMDX, 10, FMDY, N_("&OK"), B_ENTER, NULL), /* 3 - OFFSET */ QUICK_CHECKBOX (42, FMDX, 8, FMDY, N_("&Stable Symlinks"), &ctx->stable_symlinks), /* 4 - OFFSET */ QUICK_CHECKBOX (31, FMDX, 7, FMDY, N_("Di&ve into subdir if exists"), &ctx->dive_into_subdirs), /* 5 - OFFSET */ QUICK_CHECKBOX (3, FMDX, 8, FMDY, N_("Preserve &attributes"), &ctx->op_preserve), /* 6 - OFFSET */ QUICK_CHECKBOX (3, FMDX, 7, FMDY, N_("Follow &links"), &ctx->follow_links), /* 7 - OFFSET */ QUICK_INPUT (3, FMDX, 6, FMDY, "", 58, 0, "input2", &dest_dir), /* 8 - OFFSET */ QUICK_LABEL (3, FMDX, 5, FMDY, N_("to:")), /* 9 - OFFSET */ QUICK_CHECKBOX (37, FMDX, 4, FMDY, N_("&Using shell patterns"), &source_easy_patterns), /* 10 - OFFSET */ QUICK_INPUT (3, FMDX, 3, FMDY, easy_patterns ? "*" : "^(.*)$", 58, 0, "input-def", &source_mask), /* 11 - OFFSET */ QUICK_LABEL (3, FMDX, 2, FMDY, fmd_buf), QUICK_END }; g_return_val_if_fail (ctx != NULL, NULL);#ifdef ENABLE_NLS /* buttons */ for (i = 0; i <= 2 - OFFSET; i++) fmd_widgets[i].u.button.text = _(fmd_widgets[i].u.button.text); /* checkboxes */ for (i = 3 - OFFSET; i <= 9 - OFFSET; i++) if (i != 7 - OFFSET) fmd_widgets[i].u.checkbox.text = _(fmd_widgets[i].u.checkbox.text);#endif /* !ENABLE_NLS */ fmd_xlen = max (FMDX, (size_t) COLS * 2 / 3); len = str_term_width1 (fmd_widgets[6 - OFFSET].u.checkbox.text) + str_term_width1 (fmd_widgets[4 - OFFSET].u.checkbox.text) + 15; fmd_xlen = max (fmd_xlen, len); len = str_term_width1 (fmd_widgets[5 - OFFSET].u.checkbox.text) + str_term_width1 (fmd_widgets[3 - OFFSET].u.checkbox.text) + 15; fmd_xlen = max (fmd_xlen, len); /* buttons */ b2_len = str_term_width1 (fmd_widgets[2 - OFFSET].u.button.text) + 6 + gap; /* OK */#ifdef WITH_BACKGROUND b1_len = str_term_width1 (fmd_widgets[1].u.button.text) + 4 + gap; /* Background */#endif b0_len = str_term_width1 (fmd_widgets[0].u.button.text) + 4; /* Cancel */ len = b0_len + b1_len + b2_len; fmd_xlen = min (max (fmd_xlen, len + 6), (size_t) COLS); if (only_one) { int flen; flen = str_term_width1 (format); i = fmd_xlen - flen - 4; /* FIXME */ g_snprintf (fmd_buf, sizeof (fmd_buf), format, str_trunc ((const char *) text, i)); } else { g_snprintf (fmd_buf, sizeof (fmd_buf), format, *(const int *) text); fmd_xlen = max (fmd_xlen, (size_t) str_term_width1 (fmd_buf) + 6); }//.........这里部分代码省略.........
开发者ID:artzub,项目名称:mc,代码行数:101,
示例25: compare_word_to_rightstatic longcompare_word_to_right (WEdit * edit, long i, const char *text, const char *whole_left, const char *whole_right, int line_start){ const unsigned char *p, *q; int c, d, j; if (*text == '/0') return -1; c = xx_tolower (edit, edit_get_byte (edit, i - 1)); if (line_start != 0 && c != '/n') return -1; if (whole_left != NULL && strchr (whole_left, c) != NULL) return -1; for (p = (unsigned char *) text, q = p + str_term_width1 ((char *) p); p < q; p++, i++) { switch (*p) { case SYNTAX_TOKEN_STAR: if (++p > q) return -1; for (;;) { c = xx_tolower (edit, edit_get_byte (edit, i)); if (*p == '/0' && whole_right != NULL && strchr (whole_right, c) == NULL) break; if (c == *p) break; if (c == '/n') return -1; i++; } break; case SYNTAX_TOKEN_PLUS: if (++p > q) return -1; j = 0; for (;;) { c = xx_tolower (edit, edit_get_byte (edit, i)); if (c == *p) { j = i; if (*p == *text && p[1] == '/0') /* handle eg '+' and @[email C++ str_to_int函数代码示例 C++ str_sprintf函数代码示例
|