📄 gui_limits.c
字号:
/***************************************************************************//* 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 + -