📄 gui_common.c
字号:
rg = gtk_radio_button_group(GTK_RADIO_BUTTON(gui_cfg.post_update)); gtk_widget_show(gui_cfg.post_update); gtk_box_pack_start(GTK_BOX(brow2), gui_cfg.post_update, FALSE, TRUE, 1);/***/ frame = gtk_frame_new(gettext("Tuning of HTML rewriting engine")); gtk_widget_show(frame); gtk_table_attach(GTK_TABLE(brow), frame, 1, 2, 0, 1, GTK_FILL, GTK_FILL, 2, 2); ptab = gtk_table_new(2, 4, FALSE); gtk_container_add(GTK_CONTAINER(frame), ptab); gtk_widget_show(ptab); gui_cfg.dont_touch_url_pattern = guitl_tab_add_edit_entry(ptab, gettext("Don't touch URL wildcard pattern: "), NULL, 0, 0, FALSE);#ifdef HAVE_REGEX gui_cfg.dont_touch_url_rpattern = guitl_tab_add_edit_entry(ptab, gettext("Don't touch URL RE pattern: "), NULL, 0, 1, TRUE); gui_cfg.dont_touch_tag_rpattern = guitl_tab_add_edit_entry(ptab, gettext("Don't touch HTML tag RE pattern: "), NULL, 0, 2, TRUE);#endif}/*** NET ***/static void FTPHSSelectRow(void){ char *p; int row = GPOINTER_TO_INT(GTK_CLIST(gui_cfg.ftp_login_hs)->selection->data); gtk_clist_get_text(GTK_CLIST(gui_cfg.ftp_login_hs), row, 0, &p); gtk_entry_set_text(GTK_ENTRY(gui_cfg.ftp_login_hs_host), p); gtk_clist_get_text(GTK_CLIST(gui_cfg.ftp_login_hs), row, 1, &p); gtk_entry_set_text(GTK_ENTRY(gui_cfg.ftp_login_hs_handshake), p);}static void FTPHSNew(int row){ char *pp[2]; ftp_handshake_info *fhi; pp[0] = (gchar *) gtk_entry_get_text(GTK_ENTRY(gui_cfg.ftp_login_hs_host)); pp[1] = (gchar *) gtk_entry_get_text(GTK_ENTRY(gui_cfg.ftp_login_hs_handshake)); if(!(fhi = ftp_handshake_info_parse(pp[0], pp[1]))) { gdk_beep(); return; } ftp_handshake_info_free(fhi); if(row < 0) gtk_clist_append(GTK_CLIST(gui_cfg.ftp_login_hs), pp); else { int i; for(i = 0; i < 2; i++) gtk_clist_set_text(GTK_CLIST(gui_cfg.ftp_login_hs), row, i, pp[i]); }}static void FTPHSModify(void){ if(!GTK_CLIST(gui_cfg.ftp_login_hs)->selection) { gdk_beep(); return; } FTPHSNew(GPOINTER_TO_INT(GTK_CLIST(gui_cfg.ftp_login_hs)->selection->data));}static void FTPHSAppend(void){ FTPHSNew(-1);}static void cfgtab_net(GtkWidget * notebook){ GtkWidget *col, *brow, *box, *frame, *label, *rb, *vbox; GtkWidget *swin, *ptab, *bbox, *button; GSList *rg; const char *hssamples[] = { "", "user %u\\331\\pass %p\\230", "user %u@%h %s\\331\\pass %p\\230", "user %U\\331\\pass %P\\230\\user %u@%h %s\\331\\pass %p\\230", NULL, }; box = gtk_hbox_new(0, 5); gtk_widget_show(box); label = gtk_label_new(gettext("Net")); gtk_notebook_append_page(GTK_NOTEBOOK(notebook), box, label); col = gtk_table_new(11, 3, FALSE); gtk_widget_show(col); gtk_container_add(GTK_CONTAINER(box), col); frame = gtk_frame_new(gettext("Allowed protocols")); gtk_widget_show(frame); gtk_table_attach(GTK_TABLE(col), frame, 1, 2, 0, 1, GTK_FILL, GTK_FILL, 5, 5); brow = gtk_table_new(3, 2, FALSE); gtk_widget_show(brow); gtk_container_add(GTK_CONTAINER(frame), brow); gui_cfg.http_sw = gtk_check_button_new_with_label(gettext("HTTP")); gtk_widget_show(gui_cfg.http_sw); gtk_table_attach(GTK_TABLE(brow), gui_cfg.http_sw, 0, 1, 0, 1, GTK_FILL, GTK_FILL, 5, 5); gui_cfg.ftp_sw = gtk_check_button_new_with_label(gettext("FTP")); gtk_widget_show(gui_cfg.ftp_sw); gtk_table_attach(GTK_TABLE(brow), gui_cfg.ftp_sw, 0, 1, 1, 2, GTK_FILL, GTK_FILL, 5, 5); gui_cfg.gopher_sw = gtk_check_button_new_with_label(gettext("Gopher")); gtk_widget_show(gui_cfg.gopher_sw); gtk_table_attach(GTK_TABLE(brow), gui_cfg.gopher_sw, 1, 2, 0, 1, GTK_FILL, GTK_FILL, 5, 5);#ifdef USE_SSL gui_cfg.https_sw = gtk_check_button_new_with_label(gettext("HTTPS")); gtk_widget_show(gui_cfg.https_sw); gtk_table_attach(GTK_TABLE(brow), gui_cfg.https_sw, 1, 2, 1, 2, GTK_FILL, GTK_FILL, 5, 5); gui_cfg.ftps_sw = gtk_check_button_new_with_label(gettext("FTPS")); gtk_widget_show(gui_cfg.ftps_sw); gtk_table_attach(GTK_TABLE(brow), gui_cfg.ftps_sw, 2, 3, 0, 1, GTK_FILL, GTK_FILL, 5, 5);#endif frame = gtk_frame_new(gettext("FTP data connection type ")); gtk_widget_show(frame); gtk_table_attach(GTK_TABLE(col), frame, 0, 1, 0, 1, GTK_FILL, GTK_FILL, 5, 5); brow = gtk_table_new(2, 1, FALSE); gtk_widget_show(brow); gtk_container_add(GTK_CONTAINER(frame), brow); rb = gtk_radio_button_new_with_label(NULL, gettext("Active")); rg = gtk_radio_button_group(GTK_RADIO_BUTTON(rb)); gtk_widget_show(rb); gtk_table_attach(GTK_TABLE(brow), rb, 0, 1, 0, 1, GTK_FILL, GTK_FILL, 5, 5); gui_cfg.ftpmodegr[1] = rb; rb = gtk_radio_button_new_with_label(rg, gettext("Passive")); rg = gtk_radio_button_group(GTK_RADIO_BUTTON(rb)); gtk_widget_show(rb); gtk_table_attach(GTK_TABLE(brow), rb, 0, 1, 1, 2, GTK_FILL, GTK_FILL, 5, 5); gui_cfg.ftpmodegr[0] = rb; label = gtk_label_new(gettext("Communication timeout: ")); gtk_table_attach(GTK_TABLE(col), label, 0, 1, 1, 2, GTK_FILL, GTK_FILL, 2, 5); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); gtk_widget_show(label); gui_cfg.timeout_label = gtk_spin_button_new( (GtkAdjustment *) gtk_adjustment_new(0.0, 0.0, 9999, 1.0, 10.0, 0.0), 0, 2); gtk_table_attach(GTK_TABLE(col), gui_cfg.timeout_label, 1, 2, 1, 2, GTK_FILL, GTK_FILL, 2, 5); gtk_widget_show(gui_cfg.timeout_label); label = gtk_label_new(gettext(" min.")); gtk_table_attach(GTK_TABLE(col), label, 2, 3, 1, 2, GTK_FILL, GTK_FILL, 2, 5); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); gtk_widget_show(label); label = gtk_label_new(gettext("Maximal transfer rate: ")); gtk_table_attach(GTK_TABLE(col), label, 0, 1, 3, 4, GTK_FILL, GTK_FILL, 2, 5); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); gtk_widget_show(label); gui_cfg.maxrate = gtk_spin_button_new( (GtkAdjustment *) gtk_adjustment_new(0.0, 0.0, 1000000.0, 1.0, 10.0, 0.0), 0, 3); gtk_table_attach(GTK_TABLE(col), gui_cfg.maxrate, 1, 2, 3, 4, GTK_FILL, GTK_FILL, 2, 5); gtk_widget_show(gui_cfg.maxrate); label = gtk_label_new(gettext(" kB/s")); gtk_table_attach(GTK_TABLE(col), label, 2, 3, 3, 4, GTK_FILL, GTK_FILL, 2, 5); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); gtk_widget_show(label); label = gtk_label_new(gettext("Minimal transfer rate: ")); gtk_table_attach(GTK_TABLE(col), label, 0, 1, 4, 5, GTK_FILL, GTK_FILL, 2, 5); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); gtk_widget_show(label); gui_cfg.minrate = gtk_spin_button_new( (GtkAdjustment *) gtk_adjustment_new(0.0, 0.0, 1000000.0, 1.0, 10.0, 0.0), 0, 3); gtk_table_attach(GTK_TABLE(col), gui_cfg.minrate, 1, 2, 4, 5, GTK_FILL, GTK_FILL, 2, 5); gtk_widget_show(gui_cfg.minrate); label = gtk_label_new(gettext(" kB/s")); gtk_table_attach(GTK_TABLE(col), label, 2, 3, 4, 5, GTK_FILL, GTK_FILL, 2, 5); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); gtk_widget_show(label); label = gtk_label_new(gettext("Local interface address: ")); gtk_table_attach(GTK_TABLE(col), label, 0, 1, 5, 6, GTK_FILL, GTK_FILL, 2, 5); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); gtk_widget_show(label); gui_cfg.local_ip = gtk_entry_new(); gtk_table_attach(GTK_TABLE(col), gui_cfg.local_ip, 1, 3, 5, 6, GTK_FILL, GTK_FILL, 2, 5); gtk_widget_show(gui_cfg.local_ip); label = gtk_label_new(gettext("Additional HTTP headers: ")); gtk_table_attach(GTK_TABLE(col), label, 0, 1, 6, 7, GTK_FILL, GTK_FILL, 2, 5); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); gtk_widget_show(label); gui_cfg.http_headers = gtk_entry_new(); gtk_table_attach(GTK_TABLE(col), gui_cfg.http_headers, 1, 3, 6, 7, GTK_FILL, GTK_FILL, 2, 5); gtk_widget_show(gui_cfg.http_headers); label = gtk_label_new(gettext("Additional FTP list options: ")); gtk_table_attach(GTK_TABLE(col), label, 0, 1, 7, 8, GTK_FILL, GTK_FILL, 2, 5); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); gtk_widget_show(label); gui_cfg.ftp_list_options = gtk_entry_new(); gtk_table_attach(GTK_TABLE(col), gui_cfg.ftp_list_options, 1, 3, 7, 8, GTK_FILL, GTK_FILL, 2, 5); gtk_widget_show(gui_cfg.ftp_list_options); gui_cfg.ftp_list = gtk_check_button_new_with_label(gettext ("Use wide listing of FTP directories")); gtk_widget_show(gui_cfg.ftp_list); gtk_table_attach(GTK_TABLE(col), gui_cfg.ftp_list, 0, 3, 8, 9, GTK_FILL, GTK_FILL, 5, 5); gui_cfg.fix_wuftpd = gtk_check_button_new_with_label(gettext ("Fix detection of nonexisting FTP directories on WuFTPD FTP servers")); gtk_widget_show(gui_cfg.fix_wuftpd); gtk_table_attach(GTK_TABLE(col), gui_cfg.fix_wuftpd, 0, 3, 9, 10, GTK_FILL, GTK_FILL, 5, 5); gui_cfg.use_http11 = gtk_check_button_new_with_label(gettext ("Use HTTP/1.1 protocol for HTTP communication")); gtk_widget_show(gui_cfg.use_http11); gtk_table_attach(GTK_TABLE(col), gui_cfg.use_http11, 0, 3, 10, 11, GTK_FILL, GTK_FILL, 5, 5);/*******/ frame = gtk_frame_new(gettext("FTP login handshake rules")); gtk_box_pack_start(GTK_BOX(box), frame, FALSE, FALSE, 1); gtk_widget_show(frame); vbox = gtk_vbox_new(0, 5); gtk_container_add(GTK_CONTAINER(frame), vbox); gtk_widget_show(vbox); swin = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(swin), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_box_pack_start(GTK_BOX(vbox), swin, TRUE, TRUE, 5); gtk_widget_show(swin); gui_cfg.ftp_login_hs = gtk_clist_new(2); gtk_clist_set_column_title(GTK_CLIST(gui_cfg.ftp_login_hs), 0, gettext("Host")); gtk_clist_set_column_title(GTK_CLIST(gui_cfg.ftp_login_hs), 1, gettext("Login handshake")); gtk_clist_column_titles_show(GTK_CLIST(gui_cfg.ftp_login_hs)); gtk_clist_set_reorderable(GTK_CLIST(gui_cfg.ftp_login_hs), TRUE); gtk_clist_set_column_auto_resize(GTK_CLIST(gui_cfg.ftp_login_hs), 0, TRUE); gtk_clist_set_column_auto_resize(GTK_CLIST(gui_cfg.ftp_login_hs), 1, TRUE); gtk_signal_connect(GTK_OBJECT(gui_cfg.ftp_login_hs), "select_row", GTK_SIGNAL_FUNC(FTPHSSelectRow), NULL); gtk_container_add(GTK_CONTAINER(swin), gui_cfg.ftp_login_hs); gtk_widget_show(gui_cfg.ftp_login_hs); ptab = gtk_table_new(2, 5, FALSE); gtk_box_pack_start(GTK_BOX(vbox), ptab, FALSE, TRUE, 2); gtk_widget_show(ptab); gui_cfg.ftp_login_hs_host = guitl_tab_add_entry(ptab, gettext("Host: "), 0, 0, FALSE); gui_cfg.ftp_login_hs_handshake = guitl_tab_add_enum(ptab, gettext("Handshake: "), 0, 1, hssamples, TRUE); bbox = gtk_hbutton_box_new(); gtk_widget_show(bbox); gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_SPREAD); gtk_box_pack_start(GTK_BOX(vbox), bbox, FALSE, TRUE, 5); button = guitl_pixmap_button(append_xpm, NULL, gettext("Append")); gtk_container_add(GTK_CONTAINER(bbox), button); gtk_widget_show(button); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(FTPHSAppend), NULL); button = guitl_pixmap_button(modify_xpm, NULL, gettext("Modify")); gtk_container_add(GTK_CONTAINER(bbox), button); gtk_widget_show(button); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(FTPHSModify), NULL); button = guitl_pixmap_button(clear_xpm, NULL, gettext("Clear")); gtk_container_add(GTK_CONTAINER(bbox), button); gtk_widget_show(button); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(guitl_ListClear), gui_cfg.js_transform); button = guitl_pixmap_button(delete_xpm, NULL, gettext("Delete")); gtk_container_add(GTK_CONTAINER(bbox), button); gtk_widget_show(button); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(guitl_ListDeleteSelected), gui_cfg.js_transform);}/*** PROXY ***/static void cfgtab_proxy(GtkWidget * notebook){ GtkWidget *col, *brow, *label, *box, *frame; box = gtk_vbox_new(0, 5); gtk_widget_show(box); label = gtk_label_new(gettext("Proxy")); gtk_notebook_append_page(GTK_NOTEBOOK(notebook), box, label); col = gtk_table_new(3, 2, FALSE); gtk_widget_show(col); gtk_container_add(GTK_CONTAINER(box), col); frame = gtk_frame_new(gettext("Gopher proxy")); gtk_widget_show(frame); gtk_table_attach(GTK_TABLE(col), frame, 0, 1, 0, 1, GTK_FILL, GTK_FILL, 5, 5); brow = gtk_table_new(3, 2, FALSE); gtk_widget_show(brow); gtk_container_add(GTK_CONTAINER(frame), brow); gui_cfg.gopher_proxyh_label = guitl_tab_add_entry(brow, gettext("Host: "), 0, 0, FALSE); gui_cfg.gopher_proxyp_label = guitl_tab_add_numentry(brow, gettext("Port: "), 0, 1, USHRT_MAX); gui_cfg.gopher_httpgw = gtk_check_button_new_with_label(gettext("Gopher via HTTP proxy")); gtk_widget_show(gui_cfg.gopher_httpgw); gtk_table_attach(GTK_TABLE(brow), gui_cfg.gopher_httpgw, 0, 2, 2, 3, GTK_FILL, GTK_FILL, 5, 5); frame = gtk_frame_new(gettext("FTP proxy")); gtk_widget_show(frame); gtk_table_attach(GTK_TABLE(col), frame, 1, 2, 0, 1, GTK_FILL, GTK_FILL, 5, 5); brow = gtk_table_new(4, 2, FALSE); gtk_widget_show(brow); gtk_container_add(GTK_CONTAINER(frame), brow); gui_cfg.ftp_proxyh_label = guitl_tab_add_entry(brow, gettext("Host: "), 0, 0, FALSE); gui_cfg.ftp_proxyp_label = guitl_tab_add_numentry(brow, gettext("Port: "), 0, 1, USHRT_MAX); gui_cfg.ftp_httpgw = gtk_check_button_new_with_label(gettext("FTP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -