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

📄 gui_limits.c

📁 网络爬虫程序
💻 C
📖 第 1 页 / 共 2 页
字号:
/***************************************************************************//*    This code is part of WWW grabber called pavuk                        *//*    Copyright (c) 1997 - 2001 Stefan Ondrejicka                          *//*    Distributed under GPL 2 or later                                     *//***************************************************************************/#include "config.h"#include "gui.h"#ifdef GTK_FACE#include <stdio.h>#include <gdk/gdkkeysyms.h>#include "gtkmulticol.h"#include "html.h"#include "uconfig.h"#include "mimetype.h"#include "tag_pattern.h"#include "icons/append.xpm"#include "icons/modify.xpm"#include "icons/clear.xpm"#include "icons/delete.xpm"#include "icons/ok.xpm"#include "icons/apply.xpm"#include "icons/common.xpm"#include "icons/cancel.xpm"static void CfgLimits(GtkObject * object, gpointer func_data){  if(!xget_cfg_values_lim())  {    if(cfg.use_prefs)      cfg_dump_pref();  }}static void limtab_tree(GtkWidget * notebook){  GtkWidget *label, *box, *ptab, *frame;  box = gtk_vbox_new(FALSE, 2);  gtk_widget_show(box);  label = gtk_label_new(gettext("Tree"));  gtk_notebook_append_page(GTK_NOTEBOOK(notebook), box, label);  frame = gtk_frame_new(NULL);  gtk_box_pack_start(GTK_BOX(box), frame, FALSE, FALSE, 2);  gtk_widget_show(frame);  ptab = gtk_table_new(2, 4, FALSE);  gtk_container_add(GTK_CONTAINER(frame), ptab);  gtk_widget_show(ptab);  gui_cfg.cgi_sw =    gtk_check_button_new_with_label(gettext("Download cgi-generated pages"));  gtk_widget_show(gui_cfg.cgi_sw);  gtk_table_attach(GTK_TABLE(ptab), gui_cfg.cgi_sw, 0, 1, 0, 1,    GTK_FILL, GTK_FILL, 5, 0);  gui_cfg.ftpd_sw =    gtk_check_button_new_with_label(gettext("Recurse through FTP directory"));  gtk_widget_show(gui_cfg.ftpd_sw);  gtk_table_attach(GTK_TABLE(ptab), gui_cfg.ftpd_sw, 0, 1, 1, 2,    GTK_FILL, GTK_FILL, 5, 0);  gui_cfg.robots_sw =    gtk_check_button_new_with_label(gettext("Allow \"robots.txt\""));  gtk_widget_show(gui_cfg.robots_sw);  gtk_table_attach(GTK_TABLE(ptab), gui_cfg.robots_sw, 0, 1, 2, 3,    GTK_FILL, GTK_FILL, 5, 0);  gui_cfg.ftp_html =    gtk_check_button_new_with_label(gettext    ("Process HTML files downloaded over FTP"));  gtk_widget_show(gui_cfg.ftp_html);  gtk_table_attach(GTK_TABLE(ptab), gui_cfg.ftp_html, 0, 1, 3, 4,    GTK_FILL, GTK_FILL, 5, 0);  gui_cfg.leaves_sw =    gtk_check_button_new_with_label(gettext("Don't leave starting site"));  gtk_widget_show(gui_cfg.leaves_sw);  gtk_table_attach(GTK_TABLE(ptab), gui_cfg.leaves_sw, 1, 2, 0, 1,    GTK_FILL, GTK_FILL, 5, 0);  gui_cfg.leaved_sw =    gtk_check_button_new_with_label(gettext    ("Don't leave starting directory"));  gtk_widget_show(gui_cfg.leaved_sw);  gtk_table_attach(GTK_TABLE(ptab), gui_cfg.leaved_sw, 1, 2, 1, 2,    GTK_FILL, GTK_FILL, 5, 0);  gui_cfg.dont_leave_site_dir =    gtk_check_button_new_with_label(gettext    ("Don't leave site enter directory"));  gtk_widget_show(gui_cfg.dont_leave_site_dir);  gtk_table_attach(GTK_TABLE(ptab), gui_cfg.dont_leave_site_dir, 1, 2, 2, 3,    GTK_FILL, GTK_FILL, 5, 0);  gui_cfg.singlepage =    gtk_check_button_new_with_label(gettext("Download just single page"));  gtk_widget_show(gui_cfg.singlepage);  gtk_table_attach(GTK_TABLE(ptab), gui_cfg.singlepage, 1, 2, 3, 4,    GTK_FILL, GTK_FILL, 5, 0);  gui_cfg.limit_inlines =    gtk_check_button_new_with_label(gettext    ("Apply limiting options on inline objects"));  gtk_widget_show(gui_cfg.limit_inlines);  gtk_table_attach(GTK_TABLE(ptab), gui_cfg.limit_inlines, 0, 1, 4, 5,    GTK_FILL, GTK_FILL, 5, 0);  frame = gtk_frame_new(NULL);  gtk_box_pack_start(GTK_BOX(box), frame, FALSE, FALSE, 2);  gtk_widget_show(frame);  ptab = gtk_table_new(4, 3, FALSE);  gtk_container_add(GTK_CONTAINER(frame), ptab);  gtk_widget_show(ptab);  gui_cfg.maxdoc_label = guitl_tab_add_numentry(ptab,    gettext("Max. count of documents: "), 0, 4, INT_MAX);  gui_cfg.maxlev_label = guitl_tab_add_numentry(ptab,    gettext("Max. depth of tree: "), 0, 5, USHRT_MAX);  gui_cfg.leave_level = guitl_tab_add_numentry(ptab,    gettext("Max. levels to leave from starting site: "), 0, 6, USHRT_MAX);  gui_cfg.maxsize_label = guitl_tab_add_numentry(ptab,    gettext("Max. document size: "), 2, 4, INT_MAX);  gui_cfg.min_size = guitl_tab_add_numentry(ptab,    gettext("Min. document size: "), 2, 5, INT_MAX);  gui_cfg.site_level = guitl_tab_add_numentry(ptab,    gettext("Max. site levels to leave from starting site: "), 2, 6, INT_MAX);  frame = gtk_frame_new(NULL);  gtk_box_pack_start(GTK_BOX(box), frame, FALSE, FALSE, 2);  gtk_widget_show(frame);  ptab = gtk_table_new(2, 3, FALSE);  gtk_container_add(GTK_CONTAINER(frame), ptab);  gtk_widget_show(ptab);  gui_cfg.subdir_label = guitl_tab_add_path_entry(ptab,    gettext("Working subdirectory :"), 0, 0, TRUE);  gui_cfg.en_uexit = guitl_tab_add_entry(ptab,    gettext("User condition script: "), 0, 1, FALSE);  gui_cfg.follow_cmd = guitl_tab_add_entry(ptab,    gettext("Follow command: "), 0, 2, FALSE);}static void limtab_patterns(GtkWidget * notebook){  GtkWidget *label, *box, *col, *ptab;  box = gtk_vbox_new(FALSE, 2);  gtk_widget_show(box);  label = gtk_label_new(gettext("Patterns"));  gtk_notebook_append_page(GTK_NOTEBOOK(notebook), box, label);  ptab = gtk_frame_new(gettext("Wildcard patterns"));  gtk_box_pack_start(GTK_BOX(box), ptab, FALSE, FALSE, 2);  gtk_widget_show(ptab);  col = gtk_table_new(4, 2, FALSE);  gtk_container_add(GTK_CONTAINER(ptab), col);  gtk_widget_show(col);  gui_cfg.pattern_label = guitl_tab_add_edit_entry(col,    gettext("Documents matching pattern: "), NULL, 0, 0, FALSE);  gui_cfg.skip_pattern = guitl_tab_add_edit_entry(col,    gettext("skip: "),    gettext("Pavuk: edit Documents matching skip pattern"), 2, 0, FALSE);  gui_cfg.url_pattern_label = guitl_tab_add_edit_entry(col,    gettext("URL matching pattern: "), NULL, 0, 1, FALSE);  gui_cfg.skip_url_pattern = guitl_tab_add_edit_entry(col,    gettext("skip: "),    gettext("Pavuk: edit URL matching skip pattern"), 2, 1, FALSE);#ifdef HAVE_REGEX  ptab = gtk_frame_new(gettext("RE patterns"));  gtk_box_pack_start(GTK_BOX(box), ptab, FALSE, FALSE, 2);  gtk_widget_show(ptab);  col = gtk_table_new(4, 2, FALSE);  gtk_container_add(GTK_CONTAINER(ptab), col);  gtk_widget_show(col);  gui_cfg.rpattern = guitl_tab_add_edit_entry(col,    gettext("Documents matching pattern: "), NULL, 0, 0, TRUE);  gui_cfg.skip_rpattern = guitl_tab_add_edit_entry(col,    gettext("skip: "),    gettext("Pavuk: edit Documents matching skip pattern"), 2, 0, TRUE);  gui_cfg.url_rpattern = guitl_tab_add_edit_entry(col,    gettext("URL matching pattern: "), NULL, 0, 1, TRUE);  gui_cfg.url_skip_rpattern = guitl_tab_add_edit_entry(col,    gettext("skip: "),    gettext("Pavuk: edit URL matching skip pattern"), 2, 1, TRUE);#endif}static void limtab_hosts(GtkWidget * notebook){  GtkWidget *brow, *label, *box, *col, *ptab;  box = gtk_table_new(2, 3, FALSE);  gtk_widget_show(box);  label = gtk_label_new(gettext("Hosts"));  gtk_notebook_append_page(GTK_NOTEBOOK(notebook), box, label);  col = gtk_table_new(2, 1, FALSE);  gtk_widget_show(col);  gtk_table_attach(GTK_TABLE(box), col, 0, 1, 0, 1,    GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 5, 5);  gui_cfg.hosts_sw =    gtk_check_button_new_with_label(gettext("Allow / Disallow sites"));  gtk_widget_show(gui_cfg.hosts_sw);  gtk_table_attach(GTK_TABLE(col), gui_cfg.hosts_sw, 0, 1, 0, 1,    GTK_FILL, GTK_FILL, 5, 5);  brow = guitl_new_edit_list(&gui_cfg.hosts_list, &gui_cfg.hosts_entry,    gettext("Site: "), NULL, NULL, NULL, NULL, TRUE, NULL);  gtk_table_attach(GTK_TABLE(col), brow, 0, 1, 1, 2,    GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 5, 5);  col = gtk_table_new(2, 1, FALSE);  gtk_widget_show(col);  gtk_table_attach(GTK_TABLE(box), col, 1, 2, 0, 1,    GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 5, 5);  gui_cfg.domain_sw =    gtk_check_button_new_with_label(gettext("Allow / Disallow domains"));  gtk_widget_show(gui_cfg.domain_sw);  gtk_table_attach(GTK_TABLE(col), gui_cfg.domain_sw, 0, 1, 0, 1,    GTK_FILL, GTK_FILL, 5, 5);  brow = guitl_new_edit_list(&gui_cfg.domain_list, &gui_cfg.domain_entry,    gettext("Domain: "), NULL, NULL, NULL, NULL, TRUE, NULL);  gtk_table_attach(GTK_TABLE(col), brow, 0, 1, 1, 2,    GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 5, 5);#ifdef HAVE_REGEX  ptab = gtk_frame_new(gettext("IP address RE patterns"));  gtk_table_attach(GTK_TABLE(box), ptab, 0, 2, 1, 2,    GTK_FILL, GTK_FILL, 5, 5);  gtk_widget_show(ptab);  col = gtk_table_new(4, 1, FALSE);  gtk_container_add(GTK_CONTAINER(ptab), col);  gtk_widget_show(col);  gui_cfg.aip = guitl_tab_add_edit_entry(col,    gettext("Server IP address matching pattern: "), NULL, 0, 0, TRUE);  gui_cfg.skipip = guitl_tab_add_edit_entry(col,    gettext("skip: "),    gettext("Pavuk: edit Server IP address matching skip pattern"),    2, 0, TRUE);#endif  ptab = gtk_frame_new(gettext("Server ports"));  gtk_table_attach(GTK_TABLE(box), ptab, 0, 2, 2, 3,    GTK_FILL, GTK_FILL, 5, 5);  gtk_widget_show(ptab);  col = gtk_table_new(3, 1, FALSE);  gtk_container_add(GTK_CONTAINER(ptab), col);  gtk_widget_show(col);  gui_cfg.allow_ports =    gtk_check_button_new_with_label(gettext("Allow/deny"));  gtk_table_attach(GTK_TABLE(col), gui_cfg.allow_ports, 0, 1, 0, 1, GTK_FILL,    GTK_FILL, 1, 1);  gtk_widget_show(gui_cfg.allow_ports);  gui_cfg.ports = guitl_tab_add_edit_entry(col, gettext("Ports: "),    NULL, 1, 0, FALSE);}static void limtab_docs(GtkWidget * notebook){  GtkWidget *brow, *label, *box, *col;  box = gtk_table_new(1, 2, FALSE);  gtk_widget_show(box);  label = gtk_label_new(gettext("Documents"));  gtk_notebook_append_page(GTK_NOTEBOOK(notebook), box, label);  col = gtk_table_new(2, 1, FALSE);  gtk_widget_show(col);  gtk_table_attach(GTK_TABLE(box), col, 0, 1, 0, 1,    GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 5, 5);  gui_cfg.sufix_sw =    gtk_check_button_new_with_label(gettext("Allow / Disallow suffix"));  gtk_widget_show(gui_cfg.sufix_sw);  gtk_table_attach(GTK_TABLE(col), gui_cfg.sufix_sw, 0, 1, 0, 1,    GTK_FILL, GTK_FILL, 5, 5);  brow = guitl_new_edit_list(&gui_cfg.sufixlist, &gui_cfg.sufix_label,    gettext("Suffix: "), NULL, NULL, NULL, NULL, TRUE, NULL);  gtk_table_attach(GTK_TABLE(col), brow, 0, 1, 1, 2,    GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 5, 5);  col = gtk_table_new(2, 1, FALSE);  gtk_widget_show(col);  gtk_table_attach(GTK_TABLE(box), col, 1, 2, 0, 1,    GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 5, 5);  gui_cfg.prefix_sw =    gtk_check_button_new_with_label(gettext("Allow / Disallow prefix"));  gtk_widget_show(gui_cfg.prefix_sw);  gtk_table_attach(GTK_TABLE(col), gui_cfg.prefix_sw, 0, 1, 0, 1,    GTK_FILL, GTK_FILL, 5, 5);  brow = guitl_new_edit_list(&gui_cfg.prefixlist, &gui_cfg.prefix_label,    gettext("Prefix: "), NULL, NULL, NULL, NULL, TRUE, NULL);  gtk_table_attach(GTK_TABLE(col), brow, 0, 1, 1, 2,    GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 5, 5);}static void limtab_mime(GtkWidget * notebook){  GtkWidget *col, *box, *label, *frame, *entry, *pbox;  box = gtk_hbox_new(0, 5);  gtk_widget_show(box);  label = gtk_label_new(gettext("MIME types"));  gtk_notebook_append_page(GTK_NOTEBOOK(notebook), box, label);  pbox = gtk_vbox_new(FALSE, 2);  gtk_box_pack_start(GTK_BOX(box), pbox, FALSE, FALSE, 5);  gtk_widget_show(pbox);  gui_cfg.mime_sw =    gtk_check_button_new_with_label(gettext("Allow / Disallow MIME type"));  gtk_box_pack_start(GTK_BOX(pbox), gui_cfg.mime_sw, FALSE, FALSE, 5);  gtk_widget_show(gui_cfg.mime_sw);  frame = gtk_frame_new(gettext("MIME types"));  gtk_box_pack_start(GTK_BOX(pbox), frame, TRUE, TRUE, 5);  gtk_widget_show(frame);  col = guitl_new_edit_list(&gui_cfg.amimelist, &entry,    gettext("MIME type: "), NULL, NULL, NULL, NULL, TRUE, mimetypes);  gtk_container_add(GTK_CONTAINER(frame), col);}static void limtab_time(GtkWidget * notebook){  GtkWidget *tbox, *box, *col, *label, *frame;  tbox = gtk_vbox_new(FALSE, 1);  gtk_widget_show(tbox);  label = gtk_label_new(gettext("Time"));  gtk_notebook_append_page(GTK_NOTEBOOK(notebook), tbox, label);  box = gtk_hbox_new(FALSE, 5);  gtk_widget_show(box);  gtk_box_pack_start(GTK_BOX(tbox), box, FALSE, FALSE, 4);  frame = gtk_frame_new(gettext("Lower document time limit"));  gtk_widget_show(frame);  gtk_box_pack_start(GTK_BOX(box), frame, FALSE, FALSE, 4);  col = guitl_timesel_new(&gui_cfg.btime_cal, &gui_cfg.btime_h_entry,    &gui_cfg.btime_min_entry, &gui_cfg.btime_mon, &gui_cfg.btime_yentry);  gtk_container_add(GTK_CONTAINER(frame), col);  gui_cfg.btime_sw =    gtk_check_button_new_with_label(gettext    ("Check if doc. time newer than this"));

⌨️ 快捷键说明

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