📄 gui_common.c
字号:
"xterm -e lynx", "rxvt -e links", NULL, }; const char *sample_identity[] = { "", PACKAGE "/" VERSION " (" HOSTTYPE ")", "Mozilla/4.0 (compatible; " PACKAGE " " VERSION "; Linux 2.2.14 i486; X11)", "Mozilla/4.7 [en] (X11; Linux 2.2.14 i486; I)", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)", "Lynx/2.7 libWWW-FM/2.14", "NCSA_Mosaic/2.7b5 (X11;Linux 2.0.31 i486) libwww/2.12 modified", "Opera/3.0", NULL, }; tbox = gtk_vbox_new(FALSE, 0); gtk_widget_show(tbox); label = gtk_label_new(gettext("Grabber I")); gtk_notebook_append_page(GTK_NOTEBOOK(notebook), tbox, label); box = gtk_table_new(2, 11, FALSE); gtk_box_pack_start(GTK_BOX(tbox), box, FALSE, FALSE, 0); gtk_widget_show(box); gui_cfg.cdir_label = guitl_tab_add_path_entry(box, gettext("Cache Directory: "), 0, 0, TRUE); gui_cfg.default_prefix = guitl_tab_add_entry(box, gettext("Default URL prefix: "), 0, 1, FALSE); gui_cfg.info_dir = guitl_tab_add_path_entry(box, gettext("Separate info directory: "), 0, 2, TRUE); gui_cfg.index_name = guitl_tab_add_enum(box, gettext("Index file name: "), 0, 3, sample_index_names, TRUE); gui_cfg.store_name = guitl_tab_add_entry(box, gettext("Store file name: "), 0, 4, FALSE); gui_cfg.identity = guitl_tab_add_enum(box, gettext("Identity string: "), 0, 5, sample_identity, TRUE);#ifdef HAVE_BDB_18x gui_cfg.ns_cache_dir = guitl_tab_add_path_entry(box, gettext("Netscape browser cache directory: "), 0, 6, TRUE); gui_cfg.moz_cache_dir = guitl_tab_add_path_entry(box, gettext("Mozilla browser cache directory: "), 0, 7, TRUE);#endif#ifdef WITH_TREE gui_cfg.browser_label = guitl_tab_add_enum(box, gettext("Browser: "), 0, 8, sample_browsers, FALSE);#endif gui_cfg.remind_cmd = guitl_tab_add_entry(box, gettext("Reminder command: "), 0, 9, FALSE); gui_cfg.post_cmd = guitl_tab_add_entry(box, gettext("Post command: "), 0, 10, FALSE);/*********/ box = gtk_table_new(1, 2, TRUE); gtk_box_pack_start(GTK_BOX(tbox), box, FALSE, FALSE, 0); gtk_widget_show(box); frame = gtk_frame_new(NULL); gtk_table_attach(GTK_TABLE(box), frame, 0, 1, 0, 1, GTK_FILL, GTK_FILL, 1, 1); gtk_widget_show(frame); ptab = gtk_table_new(6, 3, FALSE); gtk_container_add(GTK_CONTAINER(frame), ptab); gtk_widget_show(ptab); gui_cfg.retry_label = guitl_tab_add_numentry(ptab, gettext("How many times retry on fail: "), 0, 0, USHRT_MAX); gui_cfg.redir_label = guitl_tab_add_numentry(ptab, gettext("How many moved links to follow: "), 0, 1, USHRT_MAX); gui_cfg.reget_label = guitl_tab_add_numentry(ptab, gettext("How many times to reget file: "), 0, 2, USHRT_MAX); gui_cfg.ddays_label = guitl_tab_add_numentry(ptab, gettext("Document age before syncing with server: "), 0, 3, USHRT_MAX); label = gtk_label_new(gettext(" days ")); gtk_table_attach(GTK_TABLE(ptab), label, 2, 3, 3, 4, GTK_SHRINK, GTK_FILL, 2, 2); gtk_widget_show(label); gui_cfg.bufsize = guitl_tab_add_numentry(ptab, gettext("Read buffer size: "), 0, 4, 10000); gtk_adjustment_clamp_page(GTK_ADJUSTMENT(GTK_SPIN_BUTTON(gui_cfg.bufsize)-> adjustment), 1.0, 1024.0); label = gtk_label_new(gettext(" kB ")); gtk_table_attach(GTK_TABLE(ptab), label, 2, 3, 4, 5, GTK_SHRINK, GTK_FILL, 2, 2); gtk_widget_show(label); gui_cfg.hash_size = guitl_tab_add_numentry(ptab, gettext("Hash tables size: "), 0, 5, SHRT_MAX); label = gtk_label_new(gettext(" entries ")); gtk_table_attach(GTK_TABLE(ptab), label, 2, 3, 5, 6, GTK_SHRINK, GTK_FILL, 2, 2); gtk_widget_show(label);/*****/ frame = gtk_frame_new(NULL); gtk_table_attach(GTK_TABLE(box), frame, 1, 2, 0, 1, GTK_FILL, GTK_FILL, 1, 1); gtk_widget_show(frame); ptab = gtk_table_new(6, 4, FALSE); gtk_container_add(GTK_CONTAINER(frame), ptab); gtk_widget_show(ptab); gui_cfg.sleep_label = guitl_tab_add_numentry(ptab, gettext("Sleep time between transfers: "), 0, 0, INT_MAX); label = gtk_label_new(gettext(" sec.")); gtk_table_attach(GTK_TABLE(ptab), label, 2, 3, 0, 1, GTK_SHRINK, GTK_FILL, 2, 2); gtk_widget_show(label); gui_cfg.rsleep = gtk_check_button_new_with_label(gettext("randomize")); gtk_table_attach(GTK_TABLE(ptab), gui_cfg.rsleep, 3, 4, 0, 1, GTK_SHRINK, GTK_FILL, 2, 2); gtk_widget_show(gui_cfg.rsleep); gui_cfg.rollback_label = guitl_tab_add_numentry(ptab, gettext("Rollback amount on reget: "), 0, 1, INT_MAX); label = gtk_label_new(gettext(" bytes")); gtk_table_attach(GTK_TABLE(ptab), label, 2, 3, 1, 2, GTK_SHRINK, GTK_FILL, 2, 2); gtk_widget_show(label); gui_cfg.trans_quota = guitl_tab_add_numentry(ptab, gettext("Transfer quota: "), 0, 2, INT_MAX); label = gtk_label_new(gettext(" kB")); gtk_table_attach(GTK_TABLE(ptab), label, 2, 3, 2, 3, GTK_SHRINK, GTK_FILL, 2, 2); gtk_widget_show(label); gui_cfg.file_quota = guitl_tab_add_numentry(ptab, gettext("File size quota: "), 0, 3, INT_MAX); label = gtk_label_new(gettext(" kB")); gtk_table_attach(GTK_TABLE(ptab), label, 2, 3, 3, 4, GTK_SHRINK, GTK_FILL, 2, 2); gtk_widget_show(label);#if defined HAVE_FSTATFS || HAVE_FSTATVFS gui_cfg.fs_quota = guitl_tab_add_numentry(ptab, gettext("Filesystem freespace quota: "), 0, 4, INT_MAX); label = gtk_label_new(gettext(" kB")); gtk_table_attach(GTK_TABLE(ptab), label, 2, 3, 4, 5, GTK_SHRINK, GTK_FILL, 2, 2); gtk_widget_show(label);#endif#ifdef HAVE_MT { int n = 61;#ifdef PTHREAD_THREADS_MAX n = PTHREAD_THREADS_MAX - 3;#elif defined _POSIX_THREADS_THREAD_MAX n = _POSIX_THREADS_THREAD_MAX - 3;#endif gui_cfg.nthr = guitl_tab_add_numentry(ptab, gettext("Number of downloading threads: "), 0, 5, n); }#endif}/*** GRABER II ***/static void cfgtab_graberII(GtkWidget * notebook){ GtkWidget *brow, *label, *frame, *ptab; GtkWidget *menu, *mi; int i; brow = gtk_hbox_new(FALSE, 5); gtk_widget_show(brow); label = gtk_label_new(gettext("Grabber II")); gtk_notebook_append_page(GTK_NOTEBOOK(notebook), brow, label); frame = gtk_frame_new(gettext("Misc settings")); gtk_widget_show(frame); gtk_box_pack_start(GTK_BOX(brow), frame, FALSE, TRUE, 1); brow = gtk_vbox_new(0, 1); gtk_widget_show(brow); gtk_container_add(GTK_CONTAINER(frame), brow); gui_cfg.unique_doc = gtk_check_button_new_with_label(gettext ("Always generate unique name for document")); gtk_widget_show(gui_cfg.unique_doc); gtk_box_pack_start(GTK_BOX(brow), gui_cfg.unique_doc, FALSE, TRUE, 1); gui_cfg.del_after = gtk_check_button_new_with_label(gettext ("Delete FTP document after succesful download")); gtk_widget_show(gui_cfg.del_after); gtk_box_pack_start(GTK_BOX(brow), gui_cfg.del_after, FALSE, TRUE, 1); gui_cfg.ptime = gtk_check_button_new_with_label(gettext ("Preserve document modification time")); gtk_widget_show(gui_cfg.ptime); gtk_box_pack_start(GTK_BOX(brow), gui_cfg.ptime, FALSE, TRUE, 1); gui_cfg.preserve_perm = gtk_check_button_new_with_label(gettext ("Preserve FTP document permissions")); gtk_widget_show(gui_cfg.preserve_perm); gtk_box_pack_start(GTK_BOX(brow), gui_cfg.preserve_perm, FALSE, TRUE, 1); gui_cfg.preserve_links = gtk_check_button_new_with_label(gettext ("Preserve FTP symbolic links paths")); gtk_widget_show(gui_cfg.preserve_links); gtk_box_pack_start(GTK_BOX(brow), gui_cfg.preserve_links, FALSE, TRUE, 1); gui_cfg.retrieve_slink = gtk_check_button_new_with_label(gettext ("Retrieve FTP symbolic links like files")); gtk_widget_show(gui_cfg.retrieve_slink); gtk_box_pack_start(GTK_BOX(brow), gui_cfg.retrieve_slink, FALSE, TRUE, 1); gui_cfg.freget_sw = gtk_check_button_new_with_label(gettext ("Whole reget when partial not supported")); gtk_widget_show(gui_cfg.freget_sw); gtk_box_pack_start(GTK_BOX(brow), gui_cfg.freget_sw, FALSE, TRUE, 1); gui_cfg.enc_sw = gtk_check_button_new_with_label(gettext ("Use gzip encoding for transfer")); gtk_widget_show(gui_cfg.enc_sw); gtk_box_pack_start(GTK_BOX(brow), gui_cfg.enc_sw, FALSE, TRUE, 1); gui_cfg.oldrm_sw = gtk_check_button_new_with_label(gettext("Remove improper documents")); gtk_widget_show(gui_cfg.oldrm_sw); gtk_box_pack_start(GTK_BOX(brow), gui_cfg.oldrm_sw, FALSE, TRUE, 1); gui_cfg.check_size = gtk_check_button_new_with_label(gettext ("Check transferred size of document")); gtk_widget_show(gui_cfg.check_size); gtk_box_pack_start(GTK_BOX(brow), gui_cfg.check_size, FALSE, TRUE, 1); gui_cfg.store_index = gtk_check_button_new_with_label(gettext ("Store directory URLs as index files")); gtk_widget_show(gui_cfg.store_index); gtk_box_pack_start(GTK_BOX(brow), gui_cfg.store_index, FALSE, TRUE, 1); gui_cfg.enable_info = gtk_check_button_new_with_label(gettext ("Store info files with each document")); gtk_widget_show(gui_cfg.enable_info); gtk_box_pack_start(GTK_BOX(brow), gui_cfg.enable_info, FALSE, TRUE, 1); gui_cfg.auto_referer = gtk_check_button_new_with_label(gettext ("Send self URL as Referer for starting URLs")); gtk_widget_show(gui_cfg.auto_referer); gtk_box_pack_start(GTK_BOX(brow), gui_cfg.auto_referer, FALSE, TRUE, 1); gui_cfg.referer = gtk_check_button_new_with_label(gettext ("Send Referer with HTTP requests")); gtk_widget_show(gui_cfg.referer); gtk_box_pack_start(GTK_BOX(brow), gui_cfg.referer, FALSE, TRUE, 1); gui_cfg.read_css = gtk_check_button_new_with_label(gettext ("Fetch objects mentioned in style sheets")); gtk_widget_show(gui_cfg.read_css); gtk_box_pack_start(GTK_BOX(brow), gui_cfg.read_css, FALSE, TRUE, 1); gui_cfg.send_if_range = gtk_check_button_new_with_label(gettext ("Send If-Range header field when regeting")); gtk_widget_show(gui_cfg.send_if_range); gtk_box_pack_start(GTK_BOX(brow), gui_cfg.send_if_range, FALSE, TRUE, 1); gui_cfg.show_time = gtk_check_button_new_with_label(gettext ("Show time of start and end of downloading")); gtk_widget_show(gui_cfg.show_time); gtk_box_pack_start(GTK_BOX(brow), gui_cfg.show_time, FALSE, TRUE, 1); ptab = gtk_table_new(2, 1, FALSE); gtk_box_pack_start(GTK_BOX(brow), ptab, FALSE, FALSE, 1); gtk_widget_show(ptab); label = gtk_label_new(gettext("URL scheduling strategy: ")); gtk_table_attach(GTK_TABLE(ptab), label, 0, 1, 0, 1, GTK_FILL, GTK_FILL, 1, 1); gtk_widget_show(label); gui_cfg.scheduling_strategie = gtk_option_menu_new(); menu = gtk_menu_new(); for(i = 0; i < SSTRAT_LAST; i++) { mi = gtk_menu_item_new_with_label(get_strategie_label(i)); gtk_object_set_user_data(GTK_OBJECT(mi), (gpointer) i); gtk_menu_append(GTK_MENU(menu), mi); gtk_widget_show(mi); } gtk_option_menu_set_menu(GTK_OPTION_MENU(gui_cfg.scheduling_strategie), menu); gtk_table_attach(GTK_TABLE(ptab), gui_cfg.scheduling_strategie, 1, 2, 0, 1, GTK_FILL, GTK_FILL, 1, 1); gtk_widget_show(gui_cfg.scheduling_strategie);}/*** HTML ***/static void HtmlswSens(GtkWidget * w, gpointer data){ gboolean act = GTK_TOGGLE_BUTTON(w)->active; gtk_widget_set_sensitive(gui_cfg.all_to_local, act); gtk_widget_set_sensitive(gui_cfg.sel_to_local, act); gtk_widget_set_sensitive(gui_cfg.url_to_local, act); gtk_widget_set_sensitive(gui_cfg.all_to_remote, act); gtk_widget_set_sensitive(gui_cfg.post_update, act);}static void cfgtab_html(GtkWidget * notebook){ GtkWidget *brow, *label, *frame, *ptab, *brow2; GSList *rg; brow = gtk_table_new(2, 2, FALSE); gtk_widget_show(brow); label = gtk_label_new(gettext("HTML")); gtk_notebook_append_page(GTK_NOTEBOOK(notebook), brow, label); frame = gtk_frame_new(gettext("HTML document URL rewriting rules")); gtk_widget_show(frame); gtk_table_attach(GTK_TABLE(brow), frame, 0, 1, 0, 1, GTK_FILL, GTK_FILL, 2, 2); brow2 = gtk_vbox_new(0, 1); gtk_widget_show(brow2); gtk_container_add(GTK_CONTAINER(frame), brow2); gui_cfg.noreloc_sw = gtk_check_button_new_with_label(gettext("Rewrite URLs inside HTML doc.")); gtk_widget_show(gui_cfg.noreloc_sw); gtk_box_pack_start(GTK_BOX(brow2), gui_cfg.noreloc_sw, FALSE, TRUE, 2); gtk_signal_connect(GTK_OBJECT(gui_cfg.noreloc_sw), "toggled", GTK_SIGNAL_FUNC(HtmlswSens), NULL); rg = NULL; gui_cfg.url_to_local = gtk_radio_button_new_with_label(rg, gettext("Rewrite URLs to local when stored locally")); rg = gtk_radio_button_group(GTK_RADIO_BUTTON(gui_cfg.url_to_local)); gtk_widget_show(gui_cfg.url_to_local); gtk_box_pack_start(GTK_BOX(brow2), gui_cfg.url_to_local, FALSE, TRUE, 1); gui_cfg.sel_to_local = gtk_radio_button_new_with_label(rg, gettext("Rewrite all suitable URLs to local")); rg = gtk_radio_button_group(GTK_RADIO_BUTTON(gui_cfg.sel_to_local)); gtk_widget_show(gui_cfg.sel_to_local); gtk_box_pack_start(GTK_BOX(brow2), gui_cfg.sel_to_local, FALSE, TRUE, 1); gui_cfg.all_to_local = gtk_radio_button_new_with_label(rg, gettext("Rewrite all URLs to local immediately")); rg = gtk_radio_button_group(GTK_RADIO_BUTTON(gui_cfg.all_to_local)); gtk_widget_show(gui_cfg.all_to_local); gtk_box_pack_start(GTK_BOX(brow2), gui_cfg.all_to_local, FALSE, TRUE, 1); gui_cfg.all_to_remote = gtk_radio_button_new_with_label(rg, gettext("Rewrite all URLs to remote immediately")); rg = gtk_radio_button_group(GTK_RADIO_BUTTON(gui_cfg.all_to_remote)); gtk_widget_show(gui_cfg.all_to_remote); gtk_box_pack_start(GTK_BOX(brow2), gui_cfg.all_to_remote, FALSE, TRUE, 1); gui_cfg.post_update = gtk_radio_button_new_with_label(rg, gettext("Rewrite only one currently download URL"));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -