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

📄 gui_common.c

📁 网络爬虫程序
💻 C
📖 第 1 页 / 共 5 页
字号:
    "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 + -