📄 menu.c
字号:
TEXT(T_SOCKS_4A_PROXY__USER_HOST_PORT), TEXT(T_ONLY_PROXIES),};#define N_N 3void proxy_fn(struct dialog_data *dlg){ struct terminal *term = dlg->win->term; int max = 0, min = 0; int w, rw; int y = gf_val(-1, -G_BFU_FONT_SIZE); if (dlg->win->term->spec->braille) y += gf_val(1, G_BFU_FONT_SIZE); max_text_width(term, proxy_msg[0], &max, AL_LEFT); min_text_width(term, proxy_msg[0], &min, AL_LEFT); max_text_width(term, proxy_msg[1], &max, AL_LEFT); min_text_width(term, proxy_msg[1], &min, AL_LEFT); max_text_width(term, proxy_msg[2], &max, AL_LEFT); min_text_width(term, proxy_msg[2], &min, AL_LEFT); max_group_width(term, proxy_msg + N_N, dlg->items + N_N, dlg->n - 2 - N_N, &max); min_group_width(term, proxy_msg + N_N, dlg->items + N_N, dlg->n - 2 - N_N, &min); max_buttons_width(term, dlg->items + dlg->n - 2, 2, &max); min_buttons_width(term, dlg->items + dlg->n - 2, 2, &min); w = dlg->win->term->x * 9 / 10 - 2 * DIALOG_LB; if (w > max) w = max; if (w < min) w = min; if (w > dlg->win->term->x - 2 * DIALOG_LB) w = dlg->win->term->x - 2 * DIALOG_LB; if (w < 1) w = 1; rw = 0; dlg_format_text_and_field(dlg, NULL, proxy_msg[0], &dlg->items[0], 0, &y, w, &rw, COLOR_DIALOG_TEXT, AL_LEFT); if (!dlg->win->term->spec->braille) y += gf_val(1, G_BFU_FONT_SIZE * 1); dlg_format_text_and_field(dlg, NULL, proxy_msg[1], &dlg->items[1], 0, &y, w, &rw, COLOR_DIALOG_TEXT, AL_LEFT); if (!dlg->win->term->spec->braille) y += gf_val(1, G_BFU_FONT_SIZE * 1); dlg_format_text_and_field(dlg, NULL, proxy_msg[2], &dlg->items[2], 0, &y, w, &rw, COLOR_DIALOG_TEXT, AL_LEFT); if (!dlg->win->term->spec->braille) y += gf_val(1, G_BFU_FONT_SIZE * 1); dlg_format_group(dlg, NULL, proxy_msg + N_N, dlg->items + N_N, dlg->n - 2 - N_N, 0, &y, w, &rw); y += gf_val(1, G_BFU_FONT_SIZE); dlg_format_buttons(dlg, NULL, dlg->items + dlg->n - 2, 2, 0, &y, w, &rw, AL_CENTER); w = rw; dlg->xw = w + 2 * DIALOG_LB; dlg->yw = y + 2 * DIALOG_TB; center_dlg(dlg); draw_dlg(dlg); y = dlg->y + DIALOG_TB; if (dlg->win->term->spec->braille) y += gf_val(1, G_BFU_FONT_SIZE); dlg_format_text_and_field(dlg, term, proxy_msg[0], &dlg->items[0], dlg->x + DIALOG_LB, &y, w, NULL, COLOR_DIALOG_TEXT, AL_LEFT); if (!dlg->win->term->spec->braille) y += gf_val(1, G_BFU_FONT_SIZE); dlg_format_text_and_field(dlg, term, proxy_msg[1], &dlg->items[1], dlg->x + DIALOG_LB, &y, w, NULL, COLOR_DIALOG_TEXT, AL_LEFT); if (!dlg->win->term->spec->braille) y += gf_val(1, G_BFU_FONT_SIZE); dlg_format_text_and_field(dlg, term, proxy_msg[2], &dlg->items[2], dlg->x + DIALOG_LB, &y, w, NULL, COLOR_DIALOG_TEXT, AL_LEFT); if (!dlg->win->term->spec->braille) y += gf_val(1, G_BFU_FONT_SIZE); dlg_format_group(dlg, term, proxy_msg + N_N, &dlg->items[N_N], dlg->n - 2 - N_N, dlg->x + DIALOG_LB, &y, w, NULL); y += gf_val(1, G_BFU_FONT_SIZE); dlg_format_buttons(dlg, term, &dlg->items[dlg->n - 2], 2, dlg->x + DIALOG_LB, &y, w, NULL, AL_CENTER);}int dlg_proxy_options(struct dialog_data *dlg, struct dialog_item_data *di){ struct proxies *p = (struct proxies *)di->cdata; struct dialog *d; snprint(max_c_str, 3, max_connections); snprint(max_cth_str, 3, max_connections_to_host); snprint(max_t_str, 3, max_tries); snprint(time_str, 5, receive_timeout); snprint(unrtime_str, 5, unrestartable_receive_timeout); d = mem_calloc(sizeof(struct dialog) + 7 * sizeof(struct dialog_item)); d->title = TEXT(T_PROXIES); d->fn = proxy_fn; d->refresh = (void (*)(void *))refresh_net; d->items[0].type = D_FIELD; d->items[0].dlen = MAX_STR_LEN; d->items[0].data = p->http_proxy; d->items[1].type = D_FIELD; d->items[1].dlen = MAX_STR_LEN; d->items[1].data = p->ftp_proxy; d->items[2].type = D_FIELD; d->items[2].dlen = MAX_STR_LEN; d->items[2].data = p->socks_proxy; d->items[3].type = D_CHECKBOX; d->items[3].data = (unsigned char *)&p->only_proxies; d->items[3].dlen = sizeof(int); d->items[4].type = D_BUTTON; d->items[4].gid = B_ENTER; d->items[4].fn = ok_dialog; d->items[4].text = TEXT(T_OK); d->items[5].type = D_BUTTON; d->items[5].gid = B_ESC; d->items[5].fn = cancel_dialog; d->items[5].text = TEXT(T_CANCEL); d->items[6].type = D_END; do_dialog(dlg->win->term, d, getml(d, NULL)); return 0;}unsigned char *net_msg[] = { TEXT(T_MAX_CONNECTIONS), TEXT(T_MAX_CONNECTIONS_TO_ONE_HOST), TEXT(T_RETRIES), TEXT(T_RECEIVE_TIMEOUT_SEC), TEXT(T_TIMEOUT_WHEN_UNRESTARTABLE), TEXT(T_ASYNC_DNS_LOOKUP), TEXT(T_SET_TIME_OF_DOWNLOADED_FILES), "", "", "",};void net_options(struct terminal *term, void *xxx, void *yyy){ struct dialog *d; snprint(max_c_str, 3, max_connections); snprint(max_cth_str, 3, max_connections_to_host); snprint(max_t_str, 3, max_tries); snprint(time_str, 5, receive_timeout); snprint(unrtime_str, 5, unrestartable_receive_timeout); d = mem_calloc(sizeof(struct dialog) + 12 * sizeof(struct dialog_item)); d->title = TEXT(T_NETWORK_OPTIONS); d->fn = group_fn; d->udata = net_msg; d->refresh = (void (*)(void *))refresh_net; d->items[0].type = D_FIELD; d->items[0].data = max_c_str; d->items[0].dlen = 3; d->items[0].fn = check_number; d->items[0].gid = 1; d->items[0].gnum = 99; d->items[1].type = D_FIELD; d->items[1].data = max_cth_str; d->items[1].dlen = 3; d->items[1].fn = check_number; d->items[1].gid = 1; d->items[1].gnum = 99; d->items[2].type = D_FIELD; d->items[2].data = max_t_str; d->items[2].dlen = 3; d->items[2].fn = check_number; d->items[2].gid = 0; d->items[2].gnum = 16; d->items[3].type = D_FIELD; d->items[3].data = time_str; d->items[3].dlen = 5; d->items[3].fn = check_number; d->items[3].gid = 1; d->items[3].gnum = 1800; d->items[4].type = D_FIELD; d->items[4].data = unrtime_str; d->items[4].dlen = 5; d->items[4].fn = check_number; d->items[4].gid = 1; d->items[4].gnum = 1800; d->items[5].type = D_CHECKBOX; d->items[5].data = (unsigned char *)&async_lookup; d->items[5].dlen = sizeof(int); d->items[6].type = D_CHECKBOX; d->items[6].data = (unsigned char *)&download_utime; d->items[6].dlen = sizeof(int); d->items[7].type = D_BUTTON; d->items[7].gid = 0; d->items[7].fn = dlg_proxy_options; d->items[7].text = TEXT(T_PROXIES); d->items[7].data = (unsigned char *)&proxies; d->items[7].dlen = sizeof(struct proxies); d->items[8].type = D_BUTTON; d->items[8].gid = 0; d->items[8].fn = dlg_http_options; d->items[8].text = TEXT(T_HTTP_OPTIONS); d->items[8].data = (unsigned char *)&http_bugs; d->items[8].dlen = sizeof(struct http_bugs); d->items[9].type = D_BUTTON; d->items[9].gid = 0; d->items[9].fn = dlg_ftp_options; d->items[9].text = TEXT(T_FTP_OPTIONS); d->items[9].data = (unsigned char *)&ftp_options; d->items[9].dlen = sizeof(struct ftp_options); d->items[10].type = D_BUTTON; d->items[10].gid = B_ENTER; d->items[10].fn = ok_dialog; d->items[10].text = TEXT(T_OK); d->items[11].type = D_BUTTON; d->items[11].gid = B_ESC; d->items[11].fn = cancel_dialog; d->items[11].text = TEXT(T_CANCEL); d->items[12].type = D_END; do_dialog(term, d, getml(d, NULL));}#undef N_Nunsigned char *prg_msg[] = { TEXT(T_MAILTO_PROG), TEXT(T_TELNET_PROG), TEXT(T_TN3270_PROG), TEXT(T_MMS_PROG), TEXT(T_SHELL_PROG), ""};void netprog_fn(struct dialog_data *dlg){ struct terminal *term = dlg->win->term; int max = 0, min = 0; int w, rw; int y = gf_val(-1, -G_BFU_FONT_SIZE); int a; a=0; max_text_width(term, prg_msg[a], &max, AL_LEFT); min_text_width(term, prg_msg[a++], &min, AL_LEFT); max_text_width(term, prg_msg[a], &max, AL_LEFT); min_text_width(term, prg_msg[a++], &min, AL_LEFT); max_text_width(term, prg_msg[a], &max, AL_LEFT); min_text_width(term, prg_msg[a++], &min, AL_LEFT); max_text_width(term, prg_msg[a], &max, AL_LEFT); min_text_width(term, prg_msg[a++], &min, AL_LEFT);#ifdef G if (F && drv->exec) { max_text_width(term, prg_msg[a], &max, AL_LEFT); min_text_width(term, prg_msg[a++], &min, AL_LEFT); }#endif max_buttons_width(term, dlg->items + a, 2, &max); min_buttons_width(term, dlg->items + a, 2, &min); w = dlg->win->term->x * 9 / 10 - 2 * DIALOG_LB; if (w > max) w = max; if (w < min) w = min; if (w > dlg->win->term->x - 2 * DIALOG_LB) w = dlg->win->term->x - 2 * DIALOG_LB; if (w < 1) w = 1; rw = 0; a=0; if (term->spec->braille) y += gf_val(1, G_BFU_FONT_SIZE); dlg_format_text_and_field(dlg, NULL, prg_msg[a], &dlg->items[a], 0, &y, w, &rw, COLOR_DIALOG_TEXT, AL_LEFT); a++; if (!term->spec->braille) y += gf_val(1, G_BFU_FONT_SIZE); dlg_format_text_and_field(dlg, NULL, prg_msg[a], &dlg->items[a], 0, &y, w, &rw, COLOR_DIALOG_TEXT, AL_LEFT); a++; if (!term->spec->braille) y += gf_val(1, G_BFU_FONT_SIZE); dlg_format_text_and_field(dlg, NULL, prg_msg[a], &dlg->items[a], 0, &y, w, &rw, COLOR_DIALOG_TEXT, AL_LEFT); a++; if (!term->spec->braille) y += gf_val(1, G_BFU_FONT_SIZE); dlg_format_text_and_field(dlg, NULL, prg_msg[a], &dlg->items[a], 0, &y, w, &rw, COLOR_DIALOG_TEXT, AL_LEFT); a++; if (!term->spec->braille) y += gf_val(1, G_BFU_FONT_SIZE);#ifdef G if (F && drv->exec) { dlg_format_text_and_field(dlg, NULL, prg_msg[a], &dlg->items[a], 0, &y, w, &rw, COLOR_DIALOG_TEXT, AL_LEFT); a++; if (!term->spec->braille) y += gf_val(1, G_BFU_FONT_SIZE); }#endif if (term->spec->braille) y += gf_val(1, G_BFU_FONT_SIZE); dlg_format_buttons(dlg, NULL, dlg->items + a, 2, 0, &y, w, &rw, AL_CENTER); w = rw; dlg->xw = w + 2 * DIALOG_LB; dlg->yw = y + 2 * DIALOG_TB; center_dlg(dlg); draw_dlg(dlg); y = dlg->y + DIALOG_TB; if (term->spec->braille) y += gf_val(1, G_BFU_FONT_SIZE); a=0; dlg_format_text_and_field(dlg, term, prg_msg[a], &dlg->items[a], dlg->x + DIALOG_LB, &y, w, NULL, COLOR_DIALOG_TEXT, AL_LEFT); a++; if (!term->spec->braille) y += gf_val(1, G_BFU_FONT_SIZE); dlg_format_text_and_field(dlg, term, prg_msg[a], &dlg->items[a], dlg->x + DIALOG_LB, &y, w, NULL, COLOR_DIALOG_TEXT, AL_LEFT); a++; if (!term->spec->braille) y += gf_val(1, G_BFU_FONT_SIZE); dlg_format_text_and_field(dlg, term, prg_msg[a], &dlg->items[a], dlg->x + DIALOG_LB, &y, w, NULL, COLOR_DIALOG_TEXT, AL_LEFT); a++; if (!term->spec->braille) y += gf_val(1, G_BFU_FONT_SIZE); dlg_format_text_and_field(dlg, term, prg_msg[a], &dlg->items[a], dlg->x + DIALOG_LB, &y, w, NULL, COLOR_DIALOG_TEXT, AL_LEFT); a++; if (!term->spec->braille) y += gf_val(1, G_BFU_FONT_SIZE);#ifdef G if (F && drv->exec) { dlg_format_text_and_field(dlg, term, prg_msg[a], &dlg->items[a], dlg->x + DIALOG_LB, &y, w, NULL, COLOR_DIALOG_TEXT, AL_LEFT); a++; if (!term->spec->braille) y += gf_val(1, G_BFU_FONT_SIZE); }#endif if (term->spec->braille) y += gf_val(1, G_BFU_FONT_SIZE); dlg_format_buttons(dlg, term, &dlg->items[a], 2, dlg->x + DIALOG_LB, &y, w, NULL, AL_CENTER);}void net_programs(struct terminal *term, void *xxx, void *yyy){ struct dialog *d; int a; d = mem_calloc(sizeof(struct dialog) + 8 * sizeof(struct dialog_item));#ifdef G if (F && drv->exec) d->title = TEXT(T_MAIL_TELNET_AND_SHELL_PROGRAMS); else#endif d->title = TEXT(T_MAIL_AND_TELNET_PROGRAMS); d->fn = netprog_fn; d->items[a=0].type = D_FIELD; d->items[a].dlen = MAX_STR_LEN; d->items[a++].data = get_prog(&mailto_prog); d->items[a].type = D_FIELD; d->items[a].dlen = MAX_STR_LEN; d->items[a++].data = get_prog(&telnet_prog); d->items[a].type = D_FIELD; d->items[a].dlen = MAX_STR_LEN; d->items[a++].data = get_prog(&tn3270_prog); d->items[a].type = D_FIELD; d->items[a].dlen = MAX_STR_LEN; d->items[a++].data = get_prog(&mms_prog);#ifdef G if (F && drv->exec) { d->items[a].type = D_FIELD; d->items[a].dlen = MAX_STR_LEN; d->items[a++].data = drv->shell; }#endif d->items[a].type = D_BUTTON; d->items[a].gid = B_ENTER; d->items[a].fn = ok_dialog; d->items[a++].text = TEXT(T_OK); d->items[a].type = D_BUTTON; d->items[a].gid = B_ESC; d->items[a].fn = cancel_dialog; d->items[a++].text = TEXT(T_CANCEL); d->items[a].type = D_END; do_dialog(term, d, getml(d, NULL));}/*void net_opt_ask(struct terminal *term, void *xxx, void *yyy){ if (list_empty(downloads)) { net_options(term, xxx, yyy); return; } msg_box(term, NULL, _("Network options"), AL_CENTER, _("Warning: configuring network will terminate all running downloads. Do you really want to configure network?"), term, 2, _("Yes"), (void (*)(void *))net_options, B_ENTER, _("No"), NULL, B_ESC);}*/unsigned char mc_str[8];#ifdef Gunsigned char ic_str[8];#endifunsigned char doc_str[4];void cache_refresh(void *xxx){ memory_cache_size = atoi(mc_str) * 1024;#ifdef G if (F) image_cache_size = atoi(ic_str) * 1024;#endif max_format_cache_entries = atoi(doc_str); shrink_memory(SH_CHECK_QUOTA);}unsigned char *cache_texts[] = { TEXT(T_MEMORY_CACHE_SIZE__KB), TEXT(T_NUMBER_OF_FORMATTED_DOCUMENTS), TEXT(T_AGGRESSIVE_CACHE) };#ifdef Gunsigned char *g_cache_texts[] = { TEXT(T_MEMORY_CACHE_SIZE__KB), TEXT(T_IMAGE_CACHE_SIZE__KB), TEXT(T_NUMBER_OF_FORMATTED_DOCUMENTS), TEXT(T_AGGRESSIVE_CACHE) };#endifvoid cache_opt(struct terminal *term, void *xxx, void *yyy){ struct dialog *d; int a; snprint(mc_str, 8, memory_cache_size / 1024);#ifdef G if(F)snprint(ic_str, 8, image_cache_size / 1024);#endif snprint(doc_str, 4, max_format_cache_entries);#ifdef G if (F) { d = mem_calloc(sizeof(struct dialog) + 7 * sizeof(struct dialog_item)); }else#endif { d = mem_calloc(sizeof(struct dialog) + 6 * sizeof(struct dialog_item)); } a=0; d->title = TEXT(T_CACHE_OPTIONS); d->fn = group_fn;#ifdef G if (F) d->udata = g_cache_texts; else#endif d->udata = cache_texts; d->refresh = (void (*)(void *))cache_refresh; d->items[a].type = D_FIELD; d->items[a].dlen = 8; d->items[a].data = mc_str; d->items[a].fn = check_number; d->items[a].gid = 0; d->items[a].gnum = MAXINT; a++;#ifdef G if (F)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -