📄 prefs.cc
字号:
/* first box inside window */ GtkWidget *tmphbox=gtk_hbox_new(FALSE,0); GtkWidget *tmpvbox=gtk_vbox_new(FALSE,0); gtk_box_set_spacing(GTK_BOX(tmphbox),5); gtk_box_set_spacing(GTK_BOX(tmpvbox),5); gtk_container_set_border_width(GTK_CONTAINER(d4x_prefs_window),5); gtk_container_add(GTK_CONTAINER(d4x_prefs_window),tmpvbox); /* container for tree */ GtkWidget *scroll_win=gtk_scrolled_window_new((GtkAdjustment*)NULL,(GtkAdjustment*)NULL); gtk_widget_set_size_request(scroll_win,150,-1); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll_win), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_box_pack_start (GTK_BOX (tmphbox), scroll_win, FALSE, TRUE, 0); gtk_box_pack_start (GTK_BOX (tmpvbox), tmphbox, TRUE, TRUE, 0); gtk_widget_show (scroll_win); /* containder for all other */ d4x_prefs_frame=gtk_frame_new("test");// gtk_widget_set_size_request(d4x_prefs_frame,480,-1); gtk_box_pack_start (GTK_BOX (tmphbox), d4x_prefs_frame, TRUE, TRUE, 0); gtk_container_set_border_width(GTK_CONTAINER(d4x_prefs_frame),5); /* create tree of options */ D4XPWS.root_model=gtk_tree_store_new(1,G_TYPE_STRING); GtkWidget *root_tree=D4XPWS.root_tree=gtk_tree_view_new_with_model(GTK_TREE_MODEL(D4XPWS.root_model)); gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(D4XPWS.root_tree),FALSE); GtkTreeSelection *sel=gtk_tree_view_get_selection(GTK_TREE_VIEW(D4XPWS.root_tree)); gtk_tree_selection_set_select_function(sel,d4x_prefs_select_func,NULL,NULL); GtkCellRenderer *renderer = gtk_cell_renderer_text_new (); GtkTreeViewColumn *column = gtk_tree_view_column_new_with_attributes ("Category", renderer, "text",0, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (D4XPWS.root_tree), column);// gtk_widget_set_size_request(root_tree,150,-1); gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW (scroll_win), root_tree); gtk_widget_show(root_tree); GtkTreeIter iter,child_iter; gtk_tree_store_append(D4XPWS.root_model,&iter,NULL); gtk_tree_store_set(D4XPWS.root_model,&iter,0,_("Download"),-1); gtk_tree_store_append(D4XPWS.root_model,&child_iter,&iter); gtk_tree_store_set(D4XPWS.root_model,&child_iter,0,_("Limits"),-1); gtk_tree_store_append(D4XPWS.root_model,&child_iter,&iter); gtk_tree_store_set(D4XPWS.root_model,&child_iter,0,_("FTP"),-1); gtk_tree_store_append(D4XPWS.root_model,&child_iter,&iter); gtk_tree_store_set(D4XPWS.root_model,&child_iter,0,_("HTTP"),-1); gtk_tree_store_append(D4XPWS.root_model,&(D4XPWS.iter_download_proxy),&iter); gtk_tree_store_set(D4XPWS.root_model,&(D4XPWS.iter_download_proxy),0,_("Proxy"),-1); gtk_tree_store_append(D4XPWS.root_model,&iter,NULL); gtk_tree_store_set(D4XPWS.root_model,&iter,0,_("Interface"),-1); gtk_tree_store_append(D4XPWS.root_model,&child_iter,&iter); gtk_tree_store_set(D4XPWS.root_model,&child_iter,0,_("Main window"),-1); gtk_tree_store_append(D4XPWS.root_model,&child_iter,&iter); gtk_tree_store_set(D4XPWS.root_model,&child_iter,0,_("Confirmation"),-1); gtk_tree_store_append(D4XPWS.root_model,&child_iter,&iter); gtk_tree_store_set(D4XPWS.root_model,&child_iter,0,_("Graph"),-1); gtk_tree_store_append(D4XPWS.root_model,&(D4XPWS.iter_interface_sound),&iter); gtk_tree_store_set(D4XPWS.root_model,&(D4XPWS.iter_interface_sound),0,_("Sounds"),-1); gtk_tree_store_append(D4XPWS.root_model,&child_iter,&iter); gtk_tree_store_set(D4XPWS.root_model,&child_iter,0,_("Themes"),-1); gtk_tree_store_append(D4XPWS.root_model,&iter,NULL); gtk_tree_store_set(D4XPWS.root_model,&iter,0,_("Integration"),-1); gtk_tree_store_append(D4XPWS.root_model,&child_iter,&iter); gtk_tree_store_set(D4XPWS.root_model,&child_iter,0,_("Clipboard"),-1); gtk_tree_store_append(D4XPWS.root_model,&(D4XPWS.iter_main),NULL); gtk_tree_store_set(D4XPWS.root_model,&(D4XPWS.iter_main),0,_("Main"),-1); gtk_tree_store_append(D4XPWS.root_model,&(D4XPWS.iter_main_log),&(D4XPWS.iter_main)); gtk_tree_store_set(D4XPWS.root_model,&(D4XPWS.iter_main_log),0,_("Main log"),-1); gtk_tree_store_append(D4XPWS.root_model,&child_iter,&(D4XPWS.iter_main)); gtk_tree_store_set(D4XPWS.root_model,&child_iter,0,_("FTP search"),-1); /* show window */ GtkWidget *buttons_hbox=gtk_hbutton_box_new(); gtk_button_box_set_layout(GTK_BUTTON_BOX(buttons_hbox),GTK_BUTTONBOX_END); gtk_box_set_spacing(GTK_BOX(buttons_hbox),5); gtk_box_pack_start (GTK_BOX (tmpvbox), buttons_hbox, FALSE, FALSE, 0); GtkWidget *ok_button=gtk_button_new_with_label(_("Ok")); GtkWidget *cancel_button=gtk_button_new_with_label(_("Cancel")); GtkWidget *apply_button=gtk_button_new_with_label(_("Apply")); g_signal_connect(G_OBJECT(cancel_button),"clicked",G_CALLBACK(d4x_prefs_cancel),NULL); g_signal_connect(G_OBJECT(apply_button),"clicked",G_CALLBACK(d4x_prefs_apply),NULL); g_signal_connect(G_OBJECT(ok_button),"clicked",G_CALLBACK(d4x_prefs_ok),NULL); GTK_WIDGET_SET_FLAGS(ok_button,GTK_CAN_DEFAULT); GTK_WIDGET_SET_FLAGS(cancel_button,GTK_CAN_DEFAULT); GTK_WIDGET_SET_FLAGS(apply_button,GTK_CAN_DEFAULT); gtk_box_pack_start(GTK_BOX(buttons_hbox),ok_button,TRUE,TRUE,0); gtk_box_pack_start(GTK_BOX(buttons_hbox),apply_button,TRUE,TRUE,0); gtk_box_pack_start(GTK_BOX(buttons_hbox),cancel_button,TRUE,TRUE,0); gtk_window_set_default(GTK_WINDOW(d4x_prefs_window),ok_button); gtk_tree_view_expand_all(GTK_TREE_VIEW (D4XPWS.root_tree)); gtk_widget_show_all(d4x_prefs_window); gtk_widget_set_size_request(d4x_prefs_window,-1,-1);};void d4x_prefs_init_page(int page){ d4x_prefs_init_pre(); GtkTreeSelection *sel=gtk_tree_view_get_selection(GTK_TREE_VIEW(D4XPWS.root_tree)); switch (page){ case PREFS_PAGE_MAINLOG: gtk_tree_selection_select_iter(sel,&(D4XPWS.iter_main_log)); break; case PREFS_PAGE_MAIN: gtk_tree_selection_select_iter(sel,&(D4XPWS.iter_main)); break; }; gtk_widget_queue_draw(D4XPWS.root_tree);};void d4x_prefs_init(){ d4x_prefs_init_page(PREFS_PAGE_MAIN);};static void d4x_prefs_get_field(GtkWidget *widget,char **where,tHistory *history){ if (where==NULL) return; if (*where) delete[] (*where); *where=copy_string(text_from_combo(widget)); if (history!=NULL) history->add(*where);};void d4x_prefs_apply_tmp(){ char *label=(char *)gtk_frame_get_label(GTK_FRAME(d4x_prefs_frame)); if (equal(label,_("Download"))){ TMPCFG.DEFAULT_CFG.get_date=GTK_TOGGLE_BUTTON(D4XPWS.get_date_check)->active; TMPCFG.DEFAULT_CFG.retry=GTK_TOGGLE_BUTTON(D4XPWS.retry_check)->active; TMPCFG.DEFAULT_CFG.sleep_before_complete=GTK_TOGGLE_BUTTON(D4XPWS.sleep_check)->active; TMPCFG.RECURSIVE_OPTIMIZE=GTK_TOGGLE_BUTTON(D4XPWS.recursive)->active; TMPCFG.PAUSE_AFTER_ADDING=GTK_TOGGLE_BUTTON(D4XPWS.pause_check)->active; TMPCFG.DEFAULT_CFG.check_time=GTK_TOGGLE_BUTTON(D4XPWS.check_time_check)->active; sscanf(gtk_entry_get_text(GTK_ENTRY(D4XPWS.permissions)),"%u",&(TMPCFG.DEFAULT_PERMISIONS)); d4x_prefs_get_field(MY_GTK_FILESEL(D4XPWS.savepath)->combo, &TMPCFG.GLOBAL_SAVE_PATH, ALL_HISTORIES[PATH_HISTORY]); return; }; if (equal(label,_("Limits"))){ sscanf(gtk_entry_get_text(GTK_ENTRY(D4XPWS.timeout_entry)),"%u",&TMPCFG.DEFAULT_CFG.timeout); sscanf(gtk_entry_get_text(GTK_ENTRY(D4XPWS.sleep_entry)),"%u",&TMPCFG.DEFAULT_CFG.time_for_sleep); sscanf(gtk_entry_get_text(GTK_ENTRY(D4XPWS.attempts_entry)),"%u",&TMPCFG.DEFAULT_CFG.number_of_attempts); sscanf(gtk_entry_get_text(GTK_ENTRY(D4XPWS.limits_log)),"%u",&TMPCFG.MAX_LOG_LENGTH); sscanf(gtk_entry_get_text(GTK_ENTRY(D4XPWS.rollback_entry)),"%u",&TMPCFG.DEFAULT_CFG.rollback); sscanf(gtk_entry_get_text(GTK_ENTRY(D4XPWS.speed_entry)),"%u",&TMPCFG.DEFAULT_CFG.speed); sscanf(gtk_entry_get_text(GTK_ENTRY(D4XPWS.split_entry)),"%u",&TMPCFG.NUMBER_OF_PARTS); return; }; if (equal(label,_("FTP"))){ TMPCFG.DEFAULT_CFG.passive=GTK_TOGGLE_BUTTON(D4XPWS.ftp_passive_check)->active; TMPCFG.DEFAULT_CFG.permisions=GTK_TOGGLE_BUTTON(D4XPWS.permisions_check)->active; TMPCFG.DEFAULT_CFG.dont_send_quit=GTK_TOGGLE_BUTTON(D4XPWS.dont_send_quit_check)->active; TMPCFG.DEFAULT_CFG.follow_link=0; if (GTK_TOGGLE_BUTTON(D4XPWS.follow_link_check)->active) TMPCFG.DEFAULT_CFG.follow_link=1; if (GTK_TOGGLE_BUTTON(D4XPWS.link_as_file_check)->active) TMPCFG.DEFAULT_CFG.follow_link=2; TMPCFG.FTP_DIR_IN_LOG=GTK_TOGGLE_BUTTON(D4XPWS.ftp_dir_in_log)->active; TMPCFG.DEFAULT_CFG.ftp_dirontop=GTK_TOGGLE_BUTTON(D4XPWS.ftp_dirontop)->active; sscanf(gtk_entry_get_text(GTK_ENTRY(D4XPWS.ftp_recurse_depth_entry)),"%u",&TMPCFG.DEFAULT_CFG.ftp_recurse_depth); if (TMPCFG.ANONYMOUS_PASS) delete[] TMPCFG.ANONYMOUS_PASS; TMPCFG.ANONYMOUS_PASS=copy_string(text_from_combo(D4XPWS.ftp_anonymous_pass)); return; }; if (equal(label,_("HTTP"))){ TMPCFG.DEFAULT_CFG.leave_server=GTK_TOGGLE_BUTTON(D4XPWS.leave_server_check)->active; TMPCFG.DEFAULT_CFG.dont_leave_dir=GTK_TOGGLE_BUTTON(D4XPWS.leave_dir_check)->active; TMPCFG.DEFAULT_CFG.change_links=GTK_TOGGLE_BUTTON(D4XPWS.change_links_check)->active; TMPCFG.DEFAULT_CFG.ihate_etag=GTK_TOGGLE_BUTTON(D4XPWS.ihate_etag_check)->active;// TMPCFG.DEFAULT_CFG.=GTK_TOGGLE_BUTTON(D4XPWS.)->active; sscanf(gtk_entry_get_text(GTK_ENTRY(D4XPWS.http_recurse_depth_entry)),"%u",&TMPCFG.DEFAULT_CFG.http_recurse_depth); d4x_prefs_get_field(D4XPWS.user_agent_entry, &TMPCFG.USER_AGENT, ALL_HISTORIES[USER_AGENT_HISTORY]); d4x_prefs_get_field(MY_GTK_FILESEL(D4XPWS.unknown_filename)->combo, &TMPCFG.DEFAULT_NAME, ALL_HISTORIES[FILE_HISTORY]); if (TMPCFG.DEFAULT_FILTER) delete[] TMPCFG.DEFAULT_FILTER; TMPCFG.DEFAULT_FILTER=copy_string(text_from_combo(D4XPWS.default_filter)); return; }; if (equal(label,_("Proxy"))){ D4XPWS.proxy.apply_changes(&TMPCFG); return; }; if (equal(label,_("Interface"))){ TMPCFG.DND_TRASH=GTK_TOGGLE_BUTTON(D4XPWS.dnd_trash)->active; TMPCFG.FIXED_LOG_FONT=GTK_TOGGLE_BUTTON(D4XPWS.fixed_font_log)->active; return; }; if (equal(label,_("Main window"))){ TMPCFG.USE_MAINWIN_TITLE=GTK_TOGGLE_BUTTON(D4XPWS.mw_use_title)->active; TMPCFG.USE_MAINWIN_TITLE2=GTK_TOGGLE_BUTTON(D4XPWS.mw_use_title2)->active; TMPCFG.SCROLL_MAINWIN_TITLE=GTK_TOGGLE_BUTTON(D4XPWS.mw_scroll_title)->active; TMPCFG.WINDOW_LOWER=GTK_TOGGLE_BUTTON(D4XPWS.window_lower)->active; TMPCFG.DONOTSET_WINPOS=GTK_TOGGLE_BUTTON(D4XPWS.winpos)->active; return; }; if (equal(label,_("Confirmation"))){ TMPCFG.CONFIRM_DELETE=GTK_TOGGLE_BUTTON(D4XPWS.confirm_delete)->active; TMPCFG.CONFIRM_DELETE_ALL=GTK_TOGGLE_BUTTON(D4XPWS.confirm_delete_all)->active; TMPCFG.CONFIRM_DELETE_COMPLETED=GTK_TOGGLE_BUTTON(D4XPWS.confirm_delete_completed)->active; TMPCFG.CONFIRM_DELETE_FATALED=GTK_TOGGLE_BUTTON(D4XPWS.confirm_delete_fataled)->active; TMPCFG.CONFIRM_EXIT=GTK_TOGGLE_BUTTON(D4XPWS.confirm_exit)->active; TMPCFG.CONFIRM_OPENING_MANY=GTK_TOGGLE_BUTTON(D4XPWS.confirm_opening_many)->active; return; }; if (equal(label,_("Graph"))){ TMPCFG.GRAPH_BACK=my_gtk_colorsel_get_color(MY_GTK_COLORSEL(D4XPWS.speed_color_back)); TMPCFG.GRAPH_FORE1=my_gtk_colorsel_get_color(MY_GTK_COLORSEL(D4XPWS.speed_color_fore1)); TMPCFG.GRAPH_FORE2=my_gtk_colorsel_get_color(MY_GTK_COLORSEL(D4XPWS.speed_color_fore2)); TMPCFG.GRAPH_PICK=my_gtk_colorsel_get_color(MY_GTK_COLORSEL(D4XPWS.speed_color_pick)); TMPCFG.GRAPH_ORDER=GTK_TOGGLE_BUTTON(D4XPWS.graph_order)->active; TMPCFG.GRAPH_MODE=GTK_TOGGLE_BUTTON(D4XPWS.graph_mode)->active; return; }; if (equal(label,_("Sounds"))){ TMPCFG.ENABLE_SOUNDS=GTK_TOGGLE_BUTTON(D4XPWS.snd_enable)->active;#ifdef HAVE_ESD TMPCFG.ESD_SOUND=GTK_TOGGLE_BUTTON(D4XPWS.esd_sound)->active;#endif //HAVE_ESD d4x_prefs_get_field(MY_GTK_FILESEL(D4XPWS.snd_startup)->combo, &TMPCFG.SOUND_STARTUP, ALL_HISTORIES[SOUNDS_HISTORY]); d4x_prefs_get_field(MY_GTK_FILESEL(D4XPWS.snd_fail)->combo, &TMPCFG.SOUND_FAIL, ALL_HISTORIES[SOUNDS_HISTORY]); d4x_prefs_get_field(MY_GTK_FILESEL(D4XPWS.snd_complete)->combo, &TMPCFG.SOUND_COMPLETE, ALL_HISTORIES[SOUNDS_HISTORY]); d4x_prefs_get_field(MY_GTK_FILESEL(D4XPWS.snd_add)->combo, &TMPCFG.SOUND_ADD, ALL_HISTORIES[SOUNDS_HISTORY]); d4x_prefs_get_field(MY_GTK_FILESEL(D4XPWS.snd_dnd_drop)->combo, &TMPCFG.SOUND_DND_DROP, ALL_HISTORIES[SOUNDS_HISTORY]); d4x_prefs_get_field(MY_GTK_FILESEL(D4XPWS.snd_queue_finish)->combo, &TMPCFG.SOUND_QUEUE_FINISH, ALL_HISTORIES[SOUNDS_HISTORY]); }; if (equal(label,_("Integration"))){ TMPCFG.EXIT_COMPLETE=GTK_TOGGLE_BUTTON(D4XPWS.exit_complete)->active; TMPCFG.NEED_DIALOG_FOR_DND=GTK_TOGGLE_BUTTON(D4XPWS.dnd_dialog)->active; sscanf(gtk_entry_get_text(GTK_ENTRY(D4XPWS.exit_complete_time)),"%u",&TMPCFG.EXIT_COMPLETE_TIME); d4x_prefs_get_field(MY_GTK_FILESEL(D4XPWS.exec_on_exit)->combo, &TMPCFG.EXEC_WHEN_QUIT, ALL_HISTORIES[EXEC_HISTORY]); return; }; if (equal(label,_("Clipboard"))){ TMPCFG.CLIPBOARD_SKIP_OR_CATCH=GTK_TOGGLE_BUTTON(D4XPWS.clipboard_catch_button)->active; TMPCFG.CLIPBOARD_MONITOR=GTK_TOGGLE_BUTTON(D4XPWS.clipboard_monitor)->active; d4x_prefs_get_field(D4XPWS.clipboard_skip, &TMPCFG.SKIP_IN_CLIPBOARD, ALL_HISTORIES[SKIP_HISTORY]); d4x_prefs_get_field(D4XPWS.clipboard_catch, &TMPCFG.CATCH_IN_CLIPBOARD, ALL_HISTORIES[SKIP_HISTORY]); return; }; if (equal(label,_("FTP search"))){ sscanf(gtk_entry_get_text(GTK_ENTRY(D4XPWS.search_ping_times)),"%u",&TMPCFG.SEARCH_PING_TIMES); sscanf(gtk_entry_get_text(GTK_ENTRY(D4XPWS.search_entries)),"%u",&TMPCFG.SEARCH_ENTRIES); GSList *group=gtk_radio_menu_item_group((GtkRadioMenuItem *)((GtkOptionMenu *)D4XPWS.search_host)->menu_item); int i=D4X_SEARCH_ENGINES.count()-1; if (i<0) i=0; while(group && !((GtkCheckMenuItem *)(group->data))->active){ group = group->next; i--; }; TMPCFG.SEARCH_HOST=i; return; }; if (equal(label,_("Main"))){ sscanf(gtk_entry_get_text(GTK_ENTRY(D4XPWS.speed_limit_1)),"%u",&TMPCFG.SPEED_LIMIT_1); sscanf(gtk_entry_get_text(GTK_ENTRY(D4XPWS.speed_limit_2)),"%u",&TMPCFG.SPEED_LIMIT_2); sscanf(gtk_entry_get_text(GTK_ENTRY(D4XPWS.save_list_entry)),"%u",&TMPCFG.SAVE_LIST_INTERVAL); TMPCFG.SAVE_LIST=GTK_TOGGLE_BUTTON(D4XPWS.save_list_check)->active; TMPCFG.WRITE_DESCRIPTION=GTK_TOGGLE_BUTTON(D4XPWS.description)->active; TMPCFG.ALLOW_FORCE_RUN=GTK_TOGGLE_BUTTON(D4XPWS.allow_force_run)->active; TMPCFG.REMEMBER_PASS=GTK_TOGGLE_BUTTON(D4XPWS.remember_pass)->active; return; }; if (equal(label,_("Main log"))){ sscanf(gtk_entry_get_text(GTK_ENTRY(D4XPWS.log_length)),"%u",&TMPCFG.MAX_MAIN_LOG_LENGTH); sscanf(gtk_entry_get_text(GTK_ENTRY(D4XPWS.log_fsize)),"%li",&TMPCFG.MAIN_LOG_FILE_LIMIT); TMPCFG.MAIN_LOG_DETAILED=GTK_TOGGLE_BUTTON(D4XPWS.log_detailed)->active; TMPCFG.APPEND_REWRITE_LOG=GTK_TO
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -