⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 menu.c

📁 ELinks is an advanced and well-established feature-rich text mode web (HTTP/FTP/..) browser. ELinks
💻 C
📖 第 1 页 / 共 5 页
字号:
	{		d->items[a].type = D_FIELD;		d->items[a].dlen = 8;		d->items[a].data = ic_str;		d->items[a].fn = check_number;		d->items[a].gid = 0;		d->items[a].gnum = MAXINT;		a++;	}#endif	d->items[a].type = D_FIELD;	d->items[a].dlen = 4;	d->items[a].data = doc_str;	d->items[a].fn = check_number;	d->items[a].gid = 0;	d->items[a].gnum = 256;	a++;	d->items[a].type = D_CHECKBOX;	d->items[a].gid = 0;	d->items[a].dlen = sizeof(int);	d->items[a].data = (void *)&http_bugs.aggressive_cache;	a++;	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);	a++;	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);	a++;	d->items[a].type = D_END;	do_dialog(term, d, getml(d, NULL));}void menu_shell(struct terminal *term, void *xxx, void *yyy){	unsigned char *sh;	if (!(sh = GETSHELL)) sh = DEFAULT_SHELL;	exec_on_terminal(term, sh, "", 1);}void menu_kill_background_connections(struct terminal *term, void *xxx, void *yyy){	abort_background_connections();}void menu_kill_all_connections(struct terminal *term, void *xxx, void *yyy){	abort_all_connections();}void menu_save_html_options(struct terminal *term, void *xxx, struct session *ses){	memcpy(&dds, &ses->ds, sizeof(struct document_setup));	write_html_config(term);}unsigned char marg_str[2];#ifdef Gunsigned char html_font_str[4];unsigned char image_scale_str[6];#endifvoid html_refresh(struct session *ses){	ses->ds.margin = atoi(marg_str);#ifdef G	if (F)	{		ses->ds.font_size = atoi(html_font_str);		ses->ds.image_scale = atoi(image_scale_str);	}#endif	html_interpret_recursive(ses->screen);	draw_formatted(ses);}#ifdef Gunsigned char *html_texts_g[] = { TEXT(T_DISPLAY_TABLES),	TEXT(T_DISPLAY_FRAMES), TEXT(T_DISPLAY_LINKS_TO_IMAGES),	TEXT(T_DISPLAY_IMAGE_FILENAMES), TEXT(T_DISPLAY_IMAGES),	TEXT(T_AUTO_REFRESH), TEXT(T_TARGET_IN_NEW_WINDOW), TEXT(T_TEXT_MARGIN),	"", TEXT(T_IGNORE_CHARSET_INFO_SENT_BY_SERVER), TEXT(T_USER_FONT_SIZE),	TEXT(T_SCALE_ALL_IMAGES_BY), TEXT(T_PORN_ENABLE)};#endifunsigned char *html_texts[] = { TEXT(T_DISPLAY_TABLES), TEXT(T_DISPLAY_FRAMES), TEXT(T_DISPLAY_LINKS_TO_IMAGES), TEXT(T_DISPLAY_IMAGE_FILENAMES), TEXT(T_LINK_ORDER_BY_COLUMNS), TEXT(T_NUMBERED_LINKS), TEXT(T_AUTO_REFRESH), TEXT(T_TARGET_IN_NEW_WINDOW), TEXT(T_TEXT_MARGIN), "", TEXT(T_IGNORE_CHARSET_INFO_SENT_BY_SERVER) };int dlg_assume_cp(struct dialog_data *dlg, struct dialog_item_data *di){	charset_sel_list(dlg->win->term, dlg->dlg->udata2, (int *)di->cdata, 0);	return 0;}int dlg_kb_cp(struct dialog_data *dlg, struct dialog_item_data *di){	charset_sel_list(dlg->win->term, dlg->dlg->udata2, (int *)di->cdata, 1);	return 0;}void menu_html_options(struct terminal *term, void *xxx, struct session *ses){	struct dialog *d;	int a;		snprint(marg_str, 2, ses->ds.margin);	if (!F){		d = mem_calloc(sizeof(struct dialog) + 14 * sizeof(struct dialog_item));#ifdef G	}else{		d = mem_calloc(sizeof(struct dialog) + 17 * sizeof(struct dialog_item));		snprintf(html_font_str,4,"%d",ses->ds.font_size);		snprintf(image_scale_str,6,"%d",ses->ds.image_scale);#endif	}	d->title = TEXT(T_HTML_OPTIONS);	d->fn = group_fn;	d->udata = gf_val(html_texts, html_texts_g);	d->udata2 = ses;	d->refresh = (void (*)(void *))html_refresh;	d->refresh_data = ses;	a=0;	d->items[a].type = D_CHECKBOX;	d->items[a].data = (unsigned char *) &ses->ds.tables;	d->items[a].dlen = sizeof(int);	a++;	d->items[a].type = D_CHECKBOX;	d->items[a].data = (unsigned char *) &ses->ds.frames;	d->items[a].dlen = sizeof(int);	a++;	d->items[a].type = D_CHECKBOX;	d->items[a].data = (unsigned char *) &ses->ds.images;	d->items[a].dlen = sizeof(int);	a++;	d->items[a].type = D_CHECKBOX;	d->items[a].data = (unsigned char *) &ses->ds.image_names;	d->items[a].dlen = sizeof(int);	a++;#ifdef G	if (F)	{		d->items[a].type = D_CHECKBOX;		d->items[a].data = (unsigned char *) &ses->ds.display_images;		d->items[a].dlen = sizeof(int);		a++;	}#endif	if (!F) {		d->items[a].type = D_CHECKBOX;		d->items[a].data = (unsigned char *) &ses->ds.table_order;		d->items[a].dlen = sizeof(int);		a++;		d->items[a].type = D_CHECKBOX;		d->items[a].data = (unsigned char *) &ses->ds.num_links;		d->items[a].dlen = sizeof(int);		a++;	}	d->items[a].type = D_CHECKBOX;	d->items[a].data = (unsigned char *) &ses->ds.auto_refresh;	d->items[a].dlen = sizeof(int);	a++;	d->items[a].type = D_CHECKBOX;	d->items[a].data = (unsigned char *) &ses->ds.target_in_new_window;	d->items[a].dlen = sizeof(int);	a++;	d->items[a].type = D_FIELD;	d->items[a].dlen = 2;	d->items[a].data = marg_str;	d->items[a].fn = check_number;	d->items[a].gid = 0;	d->items[a].gnum = 9;	a++;	d->items[a].type = D_BUTTON;	d->items[a].gid = 0;	d->items[a].fn = dlg_assume_cp;	d->items[a].text = TEXT(T_DEFAULT_CODEPAGE);	d->items[a].data = (unsigned char *) &ses->ds.assume_cp;	d->items[a].dlen = sizeof(int);	a++;	d->items[a].type = D_CHECKBOX;	d->items[a].data = (unsigned char *) &ses->ds.hard_assume;	d->items[a].dlen = sizeof(int);	a++;	if (!F){		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);		a++;		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);		a++;		d->items[a].type = D_END;#ifdef G	}else{		d->items[a].type = D_FIELD;		d->items[a].dlen = 4;		d->items[a].data = html_font_str;		d->items[a].fn = check_number;		d->items[a].gid = 1;		d->items[a].gnum = 999;		a++;		d->items[a].type = D_FIELD;		d->items[a].dlen = 6;		d->items[a].data = image_scale_str;		d->items[a].fn = check_number;		d->items[a].gid = 1;		d->items[a].gnum = 500;		a++;		d->items[a].type = D_CHECKBOX;		d->items[a].data = (unsigned char *) &ses->ds.porn_enable;		d->items[a].dlen = sizeof(int);		a++;		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);		a++;		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);		a++;		d->items[a].type = D_END;#endif	}	do_dialog(term, d, getml(d, NULL));}static unsigned char new_bookmarks_file[MAX_STR_LEN];static int new_bookmarks_codepage;#ifdef Gstatic unsigned char menu_font_str[4];static unsigned char bg_color_str[7];static unsigned char fg_color_str[7];static unsigned char scroll_area_color_str[7];static unsigned char scroll_bar_color_str[7];static unsigned char scroll_frame_color_str[7];void refresh_misc(void *ignore){	if (F)	{		struct session *ses;		menu_font_size=strtol(menu_font_str,0,10);		G_BFU_FG_COLOR=strtol(fg_color_str,0,16);		G_BFU_BG_COLOR=strtol(bg_color_str,0,16);		G_SCROLL_BAR_AREA_COLOR=strtol(scroll_area_color_str,0,16);		G_SCROLL_BAR_BAR_COLOR=strtol(scroll_bar_color_str,0,16);		G_SCROLL_BAR_FRAME_COLOR=strtol(scroll_frame_color_str,0,16);		shutdown_bfu();		init_bfu();		init_grview();		foreach(ses, sessions) {			ses->term->dev->resize_handler(ses->term->dev);		}	}	if (strcmp(new_bookmarks_file,bookmarks_file)||new_bookmarks_codepage!=bookmarks_codepage)	{		save_bookmarks();		strncpy(bookmarks_file,new_bookmarks_file,MAX_STR_LEN - 1);		bookmarks_file[MAX_STR_LEN - 1] = 0;		bookmarks_codepage=new_bookmarks_codepage;		reinit_bookmarks();	}}unsigned char *miscopt_labels_g[] = { TEXT(T_MENU_FONT_SIZE), TEXT(T_ENTER_COLORS_AS_RGB_TRIPLETS), TEXT(T_MENU_FOREGROUND_COLOR), TEXT(T_MENU_BACKGROUND_COLOR), TEXT(T_SCROLL_BAR_AREA_COLOR), TEXT(T_SCROLL_BAR_BAR_COLOR), TEXT(T_SCROLL_BAR_FRAME_COLOR), TEXT(T_BOOKMARKS_FILE), NULL };#endifunsigned char *miscopt_labels[] = { TEXT(T_BOOKMARKS_FILE), NULL };void miscopt_fn(struct dialog_data *dlg){	struct terminal *term = dlg->win->term;	unsigned char **labels=dlg->dlg->udata;	int max = 0, min = 0;	int w, rw;	int y = 0;	int a=0;	int bmk=!anonymous;#ifdef G	if (F&&((drv->flags)&GD_NEED_CODEPAGE))a=1;#endif	max_text_width(term, labels[F?7:0], &max, AL_LEFT);	min_text_width(term, labels[F?7:0], &min, AL_LEFT);	if (F)	{		max_text_width(term, labels[1], &max, AL_LEFT);		min_text_width(term, labels[1], &min, AL_LEFT);		max_group_width(term, labels, dlg->items, 1, &max);		min_group_width(term, labels, dlg->items, 1, &min);		max_group_width(term, labels, dlg->items+2, 5, &max);		min_group_width(term, labels, dlg->items+2, 5, &min);	}	if (bmk)	{		max_buttons_width(term, dlg->items + dlg->n - 3 - a, 1, &max);		min_buttons_width(term, dlg->items + dlg->n - 3 - a, 1, &min);	}	if (a)	{		max_buttons_width(term, dlg->items + dlg->n - 3, 1, &max);		min_buttons_width(term, dlg->items + dlg->n - 3, 1, &min);	}	max_buttons_width(term, dlg->items + dlg->n - 2, 2, &max);	min_buttons_width(term, dlg->items + dlg->n - 2, 2, &min);	w = term->x * 9 / 10 - 2 * DIALOG_LB;	if (w > max) w = max;	if (w < min) w = min;	if (w > term->x - 2 * DIALOG_LB) w = term->x - 2 * DIALOG_LB;	if (w < 5) w = 5;	rw = 0;	if (F)	{		dlg_format_group(dlg, NULL, labels, dlg->items,1,dlg->x + DIALOG_LB, &y, w, &rw);		y += gf_val(1, G_BFU_FONT_SIZE);		dlg_format_text(dlg, NULL, labels[1], dlg->x + DIALOG_LB, &y, w, &rw, COLOR_DIALOG_TEXT, AL_LEFT);		y += gf_val(1, G_BFU_FONT_SIZE);		dlg_format_group(dlg, NULL, labels+2, dlg->items+1,5,dlg->x + DIALOG_LB, &y, w, &rw);		y += gf_val(1, G_BFU_FONT_SIZE);	}	if (bmk)	{		dlg_format_text_and_field(dlg, NULL, labels[F?7:0], dlg->items + dlg->n - 4 - a, 0, &y, w, &rw, COLOR_DIALOG_TEXT, AL_LEFT);	}	if (bmk) {		y += gf_val(1, G_BFU_FONT_SIZE);		dlg_format_buttons(dlg, NULL, dlg->items + dlg->n - 3 - a, 1, 0, &y, w, &rw, AL_LEFT);	}	if (a) dlg_format_buttons(dlg, NULL, dlg->items + dlg->n - 3, 1, 0, &y, w, &rw, AL_LEFT);	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 (F)	{		y += gf_val(1, G_BFU_FONT_SIZE);		dlg_format_group(dlg, term, labels, dlg->items,1,dlg->x + DIALOG_LB, &y, w, NULL);		y += gf_val(1, G_BFU_FONT_SIZE);		dlg_format_text(dlg, term, labels[1], dlg->x + DIALOG_LB, &y, w, NULL, COLOR_DIALOG_TEXT, AL_LEFT);		y += gf_val(1, G_BFU_FONT_SIZE);		dlg_format_group(dlg, term, labels+2, dlg->items+1,5,dlg->x + DIALOG_LB, &y, w, NULL);		y += gf_val(1, G_BFU_FONT_SIZE);	} else y += gf_val(1, G_BFU_FONT_SIZE);	if (bmk)	{		dlg_format_text_and_field(dlg, term, labels[F?7:0], dlg->items + dlg->n - 4 - a, dlg->x + DIALOG_LB, &y, w, NULL, COLOR_DIALOG_TEXT, AL_LEFT);		y += gf_val(1, G_BFU_FONT_SIZE);		dlg_format_buttons(dlg, term, dlg->items + dlg->n - 3 - a, 1, dlg->x + DIALOG_LB, &y, w, NULL, AL_CENTER);	}	if (a) dlg_format_buttons(dlg, term, dlg->items + dlg->n - 3, 1, dlg->x + DIALOG_LB, &y, w, NULL, AL_CENTER);	dlg_format_buttons(dlg, term, dlg->items+dlg->n-2, 2, dlg->x + DIALOG_LB, &y, w, NULL, AL_CENTER);}void miscelaneous_options(struct terminal *term, void *xxx, struct session *ses){	struct dialog *d;	int a=0;	if (anonymous&&!F) return;	/* if you add something into text mode (or both text and graphics), remove this (and enable also miscelaneous_options in setip_menu_anon) */	strncpy(new_bookmarks_file,bookmarks_file,MAX_STR_LEN);	new_bookmarks_codepage=bookmarks_codepage;	if (!F)	{		d = mem_calloc(sizeof(struct dialog) + 5 * sizeof(struct dialog_item));#ifdef G	}	else	{		d = mem_calloc(sizeof(struct dialog) + 12 * sizeof(struct dialog_item));		snprintf(menu_font_str,4,"%d",menu_font_size);		snprintf(fg_color_str,7,"%06x",(unsigned) G_BFU_FG_COLOR);		snprintf(bg_color_str,7,"%06x",(unsigned) G_BFU_BG_COLOR);		snprintf(scroll_bar_color_str,7,"%06

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -