📄 prefs.cc
字号:
/* WebDownloader for X-Window * Copyright (C) 1999-2002 Koshelev Maxim * This Program is free but not GPL!!! You can't modify it * without agreement with author. You can't distribute modified * program but you can distribute unmodified program. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */#include <gtk/gtk.h>#include <gdk/gdkkeysyms.h>#include "../ntlocale.h"#include "../var.h"#include "../locstr.h"#include "../main.h"#include "misc.h"#include "prefs.h"#include "mywidget.h"#include "buttons.h"#include "edit.h"#include "graph.h"#include "dndtrash.h"#include "../config.h"#include "../sndserv.h"#include <dirent.h>#include <sys/stat.h>#include "../xml.h"#include "lod.h"extern tMain aa;GtkWidget *d4x_prefs_window=(GtkWidget *)NULL;GtkWidget *d4x_prefs_frame=(GtkWidget *)NULL;/* initialisation only for NULL in 'char*' */tMainCfg TMPCFG={ {300,5,0,100,0,1,0,0, 0,0,0,0,0,1,1,1,0,0,0,0,1,0,0, 0,0}, 100,NULL,NULL,NULL,NULL,NULL,NULL,0,0, 100,0,0,0,NULL,0,0, //Log 5,0, //List 1,600,0,0, //flags 1,0,0,40,40,500,400,300,300,1,0,1,0,20,30,0,5,1,1,0,0,100,0,//interface 0,1,NULL,NULL, //clipboard 0xFFFFFF,0x555555,0xAAAAAA,0,0, /* Proxy */ NULL,0,NULL,NULL,1,NULL,0,NULL,NULL,0,0,0,0,0, /* SOCKS */ NULL,0,NULL,NULL, 1,1,1,1,1,1, 3,1024,10*1024, NULL,0, 0x0FFFFFFF, 0,0,1,1, 1,0,15, 1,0,(char*)NULL,(char*)NULL,(char*)NULL,(char*)NULL,(char*)NULL,(char*)NULL, 0,(char*)NULL,(char*)NULL};struct D4xPrefsWidget{ /* TREE ITEMS */ GtkWidget *root_tree; GtkTreeStore *root_model;// GtkTreeIter *tree_download; GtkTreeIter iter_download_proxy; GtkTreeIter iter_interface_sound; GtkTreeIter iter_main; GtkTreeIter iter_main_log; /* DOWNLOAD */ GtkWidget *savepath; GtkWidget *sleep_check; GtkWidget *get_date_check; GtkWidget *retry_check; GtkWidget *recursive; GtkWidget *pause_check; GtkWidget *check_time_check; GtkWidget *change_links_check; GtkWidget *permissions; /* FTP */ GtkWidget *ftp_passive_check; GtkWidget *dont_send_quit_check; GtkWidget *permisions_check; GtkWidget *follow_link_check; GtkWidget *link_as_file_check; GtkWidget *load_link_check; GtkWidget *ftp_dir_in_log; GtkWidget *ftp_dirontop; GtkWidget *ftp_recurse_depth_entry; GtkWidget *ftp_anonymous_pass; /* LIMITS */ GtkWidget *limits_log; GtkWidget *timeout_entry; GtkWidget *sleep_entry; GtkWidget *attempts_entry; GtkWidget *rollback_entry; GtkWidget *speed_entry; GtkWidget *split_entry; /* HTTP */ GtkWidget *leave_dir_check; GtkWidget *leave_server_check; GtkWidget *ihate_etag_check; GtkWidget *http_recurse_depth_entry; GtkWidget *user_agent_entry; GtkWidget *unknown_filename; GtkWidget *default_filter; d4xFilterSel *filter_sel; /* PROXY */ tProxyWidget proxy; /* Main window */ GtkWidget *mw_use_title; GtkWidget *mw_use_title2; GtkWidget *mw_scroll_title; GtkWidget *window_lower; GtkWidget *winpos; /* CONFIRM */ GtkWidget *confirm_delete; GtkWidget *confirm_delete_all; GtkWidget *confirm_delete_fataled; GtkWidget *confirm_delete_completed; GtkWidget *confirm_exit; GtkWidget *confirm_opening_many; /* CLIPBOARD */ GtkWidget *clipboard_monitor; GtkWidget *clipboard_skip; GtkWidget *clipboard_skip_button; GtkWidget *clipboard_catch_button; GtkWidget *clipboard_catch; /* MAINLOG */ GtkWidget *log_rewrite; GtkWidget *log_append; GtkWidget *log_save; GtkWidget *log_save_path; GtkWidget *log_detailed; GtkWidget *log_length; GtkWidget *log_fsize; GtkWidget *log_fslabel; /* INTEGRATION */ GtkWidget *exit_complete; GtkWidget *exit_complete_time; GtkWidget *exec_on_exit; GtkWidget *dnd_dialog; /* MAIN */ GtkWidget *allow_force_run; GtkWidget *remember_pass; GtkWidget *description; GtkWidget *save_list_entry; GtkWidget *save_list_check; GtkWidget *speed_limit_1; GtkWidget *speed_limit_2; /* FTP SEARCH */ GtkWidget *search_ping_times; GtkWidget *search_host; GtkWidget *search_entries; /* INTERFACE */ GtkWidget *dnd_trash; GtkWidget *fixed_font_log; /* GRAPH */ GtkWidget *graph_order; GtkWidget *graph_mode; GtkWidget *speed_color_pick; GtkWidget *speed_color_fore1; GtkWidget *speed_color_fore2; GtkWidget *speed_color_back; /* SOUNDS */ GtkWidget *snd_enable; GtkWidget *esd_sound; GtkWidget *snd_dnd_drop; GtkWidget *snd_startup; GtkWidget *snd_add; GtkWidget *snd_complete; GtkWidget *snd_fail; GtkWidget *snd_queue_finish; /* THEMES */ GtkWidget *themes_dir; GtkWidget *themes_list; GtkWidget *theme_info; GtkTextBuffer *theme_text;// GtkWidget *;};static D4xPrefsWidget D4XPWS;void d4x_prefs_apply_tmp();void d4x_prefs_apply();void d4x_prefs_ok();void toggle_button_set_state(GtkToggleButton *tb,gboolean state) {#if (GTK_MAJOR_VERSION==1) && (GTK_MINOR_VERSION==1) && (GTK_MICRO_VERSION<=12) gtk_toggle_button_set_state(tb,state);#else gtk_toggle_button_set_active(tb,state);#endif}static void prefs_filter_sel_delete();gint d4x_prefs_cancel() { if (d4x_prefs_window){ gtk_widget_destroy(d4x_prefs_window); d4x_prefs_window=(GtkWidget *)NULL; if (D4XPWS.filter_sel) prefs_filter_sel_delete(); }; return TRUE;};static gint d4x_prefs_esc_handler(GtkWidget *window,GdkEvent *event){ if (event && event->type == GDK_KEY_PRESS) { GdkEventKey *kevent=(GdkEventKey *)event; switch(kevent->keyval) { case GDK_Escape:{ d4x_prefs_cancel(); return TRUE; break; }; }; }; return FALSE;};GtkWidget *d4x_prefs_child_destroy(char *title){ GtkWidget *child=GTK_BIN(d4x_prefs_frame)->child; if (child){ d4x_prefs_apply_tmp(); gtk_widget_destroy(child);// gtk_container_remove(GTK_CONTAINER(d4x_prefs_frame),child);// gtk_widget_destroy(child); }; gtk_frame_set_label(GTK_FRAME(d4x_prefs_frame),title); GtkWidget *tmpbox=gtk_vbox_new(FALSE,0); gtk_box_set_spacing(GTK_BOX(tmpbox),5); gtk_container_add(GTK_CONTAINER(d4x_prefs_frame),tmpbox); return(tmpbox);};void d4x_prefs_download(){ GtkWidget *tmpbox=d4x_prefs_child_destroy(_("Download")); D4XPWS.get_date_check=gtk_check_button_new_with_label(_("Get date from the server")); GTK_TOGGLE_BUTTON(D4XPWS.get_date_check)->active=TMPCFG.DEFAULT_CFG.get_date; gtk_box_pack_start(GTK_BOX(tmpbox),D4XPWS.get_date_check,FALSE,FALSE,0); D4XPWS.retry_check=gtk_check_button_new_with_label(_("Retry if resuming is not supported")); GTK_TOGGLE_BUTTON(D4XPWS.retry_check)->active=TMPCFG.DEFAULT_CFG.retry; gtk_box_pack_start(GTK_BOX(tmpbox),D4XPWS.retry_check,FALSE,FALSE,0); D4XPWS.sleep_check=gtk_check_button_new_with_label(_("Sleep before completing")); GTK_TOGGLE_BUTTON(D4XPWS.sleep_check)->active=TMPCFG.DEFAULT_CFG.sleep_before_complete; gtk_box_pack_start(GTK_BOX(tmpbox),D4XPWS.sleep_check,FALSE,FALSE,0); D4XPWS.recursive=gtk_check_button_new_with_label(_("Optimize recursive downloads")); gtk_box_pack_start(GTK_BOX(tmpbox),D4XPWS.recursive,FALSE,FALSE,0); GTK_TOGGLE_BUTTON(D4XPWS.recursive)->active=TMPCFG.RECURSIVE_OPTIMIZE; D4XPWS.pause_check=gtk_check_button_new_with_label(_("Pause this just after adding")); GTK_TOGGLE_BUTTON(D4XPWS.pause_check)->active=TMPCFG.PAUSE_AFTER_ADDING; gtk_box_pack_start(GTK_BOX(tmpbox),D4XPWS.pause_check,FALSE,FALSE,0); D4XPWS.check_time_check=gtk_check_button_new_with_label(_("Compare date/time of remote file with local one")); GTK_TOGGLE_BUTTON(D4XPWS.check_time_check)->active=TMPCFG.DEFAULT_CFG.check_time; gtk_box_pack_start(GTK_BOX(tmpbox),D4XPWS.check_time_check,FALSE,FALSE,0); GtkWidget *tbox=gtk_hbox_new(FALSE,0); gtk_box_set_spacing(GTK_BOX(tbox),5); D4XPWS.permissions=my_gtk_entry_new_with_max_length(3,TMPCFG.DEFAULT_PERMISIONS); gtk_box_pack_start(GTK_BOX(tbox),D4XPWS.permissions,FALSE,FALSE,0); GtkWidget *tlabel=gtk_label_new(_("Default permissions of local file")); gtk_box_pack_start(GTK_BOX(tbox),tlabel,FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(tmpbox),tbox,FALSE,FALSE,0); GtkWidget *prefs_other_sbox=gtk_vbox_new(FALSE,0); D4XPWS.savepath=my_gtk_filesel_new(ALL_HISTORIES[PATH_HISTORY]); MY_GTK_FILESEL(D4XPWS.savepath)->modal=GTK_WINDOW(d4x_prefs_window); MY_GTK_FILESEL(D4XPWS.savepath)->only_dirs=TRUE; if (TMPCFG.GLOBAL_SAVE_PATH) text_to_combo(MY_GTK_FILESEL(D4XPWS.savepath)->combo,TMPCFG.GLOBAL_SAVE_PATH); GtkWidget *prefs_other_slabel=gtk_label_new(_("Save downloads to folder")); gtk_box_pack_start(GTK_BOX(prefs_other_sbox),prefs_other_slabel,FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(prefs_other_sbox),D4XPWS.savepath,FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(tmpbox),prefs_other_sbox,FALSE,FALSE,0); gtk_widget_show_all(tmpbox);};void d4x_prefs_download_limits(){ GtkWidget *tmpbox=d4x_prefs_child_destroy(_("Limits")); D4XPWS.timeout_entry=my_gtk_entry_new_with_max_length(3,TMPCFG.DEFAULT_CFG.timeout); D4XPWS.sleep_entry=my_gtk_entry_new_with_max_length(3,TMPCFG.DEFAULT_CFG.time_for_sleep); D4XPWS.attempts_entry=my_gtk_entry_new_with_max_length(3,TMPCFG.DEFAULT_CFG.number_of_attempts); D4XPWS.rollback_entry=my_gtk_entry_new_with_max_length(5,TMPCFG.DEFAULT_CFG.rollback); D4XPWS.speed_entry=my_gtk_entry_new_with_max_length(5,TMPCFG.DEFAULT_CFG.speed); D4XPWS.split_entry=my_gtk_entry_new_with_max_length(2,TMPCFG.NUMBER_OF_PARTS); GtkWidget *other_hbox=gtk_hbox_new(FALSE,0); gtk_box_set_spacing(GTK_BOX(other_hbox),5); GtkWidget *other_label=gtk_label_new(_("Timeout for reading from socket (in seconds)")); gtk_box_pack_start(GTK_BOX(other_hbox),D4XPWS.timeout_entry,FALSE,FALSE,0);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -