edit.cc
来自「一个功能比较强的下载软件」· CC 代码 · 共 1,749 行 · 第 1/5 页
CC
1,749 行
a=text_from_combo(MY_GTK_FILESEL(file_entry)->combo); if (b && *b && a){ tAddr *adr=new tAddr(b); if (equal(adr->file.get(),a)) text_to_combo(MY_GTK_FILESEL(file_entry)->combo,""); delete(adr); };};void tDEdit::file_recode_from_url(){ char *a=text_from_combo(url_entry); if (a && *a){ tAddr *adr=new tAddr(a);// char *tmp=recode_from_cp1251((unsigned char*)(adr->file.get())); char *tmp=g_convert(adr->file.get(),-1,"UTF-8","CP1251",NULL,NULL,NULL); if (tmp){ text_to_combo(MY_GTK_FILESEL(file_entry)->combo,tmp); g_free(tmp); }; delete(adr); };};static gint edit_browser_file_focus(GtkWidget *widget, GdkEvent *event, tDEdit *edit){ edit->file_from_url(); return(FALSE);};static gint edit_browser_file_un_focus(GtkWidget *widget, GdkEvent *event, tDEdit *edit){ edit->file_check(); return(FALSE);};static void edit_browser_file_recode(GtkWidget *widget,tDEdit *edit){ edit->file_recode_from_url();};void tDEdit::init_main(tDownload *who) { /* initing entries */ user_entry=my_gtk_combo_new(ALL_HISTORIES[USER_HISTORY]); if (CFG.REMEMBER_PASS) pass_entry=my_gtk_combo_new(ALL_HISTORIES[PASS_HISTORY]); else{ pass_entry=gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(pass_entry),MAX_LEN); gtk_entry_set_visibility(GTK_ENTRY(pass_entry),FALSE); }; path_entry=my_gtk_filesel_new(ALL_HISTORIES[PATH_HISTORY]);//my_gtk_combo_new(ALL_HISTORIES[PATH_HISTORY]); file_entry=my_gtk_filesel_new(ALL_HISTORIES[FILE_HISTORY]);//my_gtk_combo_new(ALL_HISTORIES[FILE_HISTORY]); GtkWidget *tmp_object=GTK_COMBO(MY_GTK_FILESEL(file_entry)->combo)->entry; g_signal_connect(G_OBJECT(tmp_object),"focus_out_event", G_CALLBACK(edit_browser_file_un_focus),this); g_signal_connect(G_OBJECT(tmp_object),"focus_in_event", G_CALLBACK(edit_browser_file_focus),this); MY_GTK_FILESEL(path_entry)->modal=GTK_WINDOW(window); MY_GTK_FILESEL(file_entry)->modal=GTK_WINDOW(window); url_entry=my_gtk_combo_new(ALL_HISTORIES[URL_HISTORY]); g_signal_connect(G_OBJECT(GTK_COMBO(url_entry)->entry), "activate", G_CALLBACK(edit_window_url_activate), this); MY_GTK_FILESEL(path_entry)->only_dirs=TRUE; desc_entry=my_gtk_combo_new(ALL_HISTORIES[DESC_HISTORY]); if (who->Description.get()) set_description(who->Description.get()); else set_description(""); // char temp[MAX_LEN];// make_url_from_download(who,temp);// text_to_combo(url_entry,temp); char *URL=who->info->url_parsed(); text_to_combo(url_entry,URL); delete[] URL; text_to_combo(MY_GTK_FILESEL(path_entry)->combo,who->config->save_path.get()); if (who->Name2Save.get()) text_to_combo(MY_GTK_FILESEL(file_entry)->combo,who->Name2Save.get()); else text_to_combo(MY_GTK_FILESEL(file_entry)->combo,""); if (who->info->pass.get()) text_to_combo(pass_entry,who->info->pass.get()); else text_to_combo(pass_entry,""); if (who->info->username.get()) text_to_combo(user_entry,who->info->username.get()); /* initing labels */ GtkWidget *url_label=gtk_label_new("URL:"); GtkWidget *desc_label=gtk_label_new(_("Description")); GtkWidget *path_label=gtk_label_new(_("Save download to folder")); GtkWidget *file_label=gtk_label_new(_("Save download to file")); GtkWidget *pass_label=gtk_label_new(_("password")); GtkWidget *user_label=gtk_label_new(_("user name")); /* set as default button */ GtkWidget *path_set_as_default=gtk_button_new_with_label(_("Default")); g_signal_connect(G_OBJECT(path_set_as_default),"clicked",G_CALLBACK(edit_browser_path_set_as_default),this); /* initing boxes */ GtkWidget *url_box=gtk_hbox_new(FALSE,0); GtkWidget *path_vbox=gtk_vbox_new(FALSE,0); GtkWidget *file_vbox=gtk_vbox_new(FALSE,0); GtkWidget *desc_vbox=gtk_vbox_new(FALSE,0); GtkWidget *pass_box=gtk_hbox_new(FALSE,0); GtkWidget *user_box=gtk_hbox_new(FALSE,0); GtkWidget *file_recode=gtk_button_new_with_label(_("CP1251->UTF8")); g_signal_connect(G_OBJECT(file_recode),"clicked",G_CALLBACK(edit_browser_file_recode),this); gtk_box_set_spacing(GTK_BOX(url_box),5); gtk_box_set_spacing(GTK_BOX(path_vbox),2); gtk_box_set_spacing(GTK_BOX(file_vbox),2); gtk_box_set_spacing(GTK_BOX(desc_vbox),2); gtk_box_set_spacing(GTK_BOX(user_box),5); gtk_box_set_spacing(GTK_BOX(pass_box),5); gtk_box_pack_start(GTK_BOX(url_box),url_label,FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(url_box),url_entry,TRUE,TRUE,0); gtk_box_pack_start(GTK_BOX(desc_vbox),desc_label,FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(desc_vbox),desc_entry,TRUE,TRUE,0); gtk_box_pack_start(GTK_BOX(path_entry),path_set_as_default,FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(file_entry),file_recode,FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(path_vbox),path_label,FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(path_vbox),path_entry,FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(file_vbox),file_label,FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(file_vbox),file_entry,FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(pass_box),pass_entry,FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(pass_box),pass_label,FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(user_box),user_entry,FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(user_box),user_label,FALSE,FALSE,0); use_pass_check=gtk_check_button_new_with_label(_("Use password for this site")); g_signal_connect(G_OBJECT(use_pass_check),"clicked",G_CALLBACK(edit_window_password),this); if (who->info->username.get()) GTK_TOGGLE_BUTTON(use_pass_check)->active=TRUE; else GTK_TOGGLE_BUTTON(use_pass_check)->active=FALSE; GtkWidget *vbox=gtk_vbox_new(FALSE,0); gtk_box_set_spacing(GTK_BOX(vbox),5); gtk_box_pack_start(GTK_BOX(vbox),url_box,FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(vbox),path_vbox,FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(vbox),file_vbox,FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(vbox),desc_vbox,FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(vbox),use_pass_check,FALSE,FALSE,0); if (limit){ con_limit_entry=my_gtk_entry_new_with_max_length(5,who->config->con_limit); GtkWidget *limit_box=gtk_hbox_new(FALSE,0); gtk_box_set_spacing(GTK_BOX(limit_box),5); gtk_box_pack_start(GTK_BOX(limit_box),user_box,FALSE,FALSE,0); gtk_box_pack_end(GTK_BOX(limit_box),con_limit_entry,FALSE,FALSE,0); gtk_box_pack_end(GTK_BOX(limit_box),gtk_label_new(_("Connections limit:")),FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(vbox),limit_box,FALSE,FALSE,0); }else{ con_limit_entry=NULL; gtk_box_pack_start(GTK_BOX(vbox),user_box,FALSE,FALSE,0); }; gtk_box_pack_start(GTK_BOX(vbox),pass_box,FALSE,FALSE,0); pause_check=gtk_check_button_new_with_label(_("Pause this just after adding")); restart_from_begin_check=gtk_check_button_new_with_label(_("Restart this download from begining")); GtkWidget *tmp_hbox=gtk_hbox_new(FALSE,0); gtk_box_pack_start(GTK_BOX(tmp_hbox),restart_from_begin_check, FALSE,FALSE,0); if (add_or_edit){ to_top_check=gtk_check_button_new_with_label(_("Add to top of queue")); gtk_box_pack_end(GTK_BOX(tmp_hbox),to_top_check, FALSE,FALSE,0); }else to_top_check=NULL; if (who->owner()==DL_PAUSE) GTK_TOGGLE_BUTTON(pause_check)->active=1; else GTK_TOGGLE_BUTTON(pause_check)->active=CFG.PAUSE_AFTER_ADDING; GTK_TOGGLE_BUTTON(restart_from_begin_check)->active=who->restart_from_begin; gtk_box_pack_start(GTK_BOX(vbox),pause_check,FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(vbox),tmp_hbox,FALSE,FALSE,0); GtkWidget *frame=gtk_frame_new(_("Download")); gtk_container_set_border_width(GTK_CONTAINER(frame),5); gtk_container_add(GTK_CONTAINER(frame),vbox); gtk_notebook_append_page(GTK_NOTEBOOK(notebook),frame,gtk_label_new(_("Main")));};void tDEdit::init_other(tDownload *who) { /* initing other */ GtkWidget *other_vbox=gtk_vbox_new(FALSE,0); timeout_entry=my_gtk_entry_new_with_max_length(3,who->config->timeout); sleep_entry=my_gtk_entry_new_with_max_length(3,who->config->time_for_sleep); attempts_entry=my_gtk_entry_new_with_max_length(3,who->config->number_of_attempts); rollback_entry=my_gtk_entry_new_with_max_length(5,who->config->rollback); speed_entry=my_gtk_entry_new_with_max_length(5,who->config->speed); split_entry=my_gtk_entry_new_with_max_length(2,who->split==NULL?0:who->split->NumOfParts); 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),timeout_entry,FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(other_hbox),other_label,FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(other_vbox),other_hbox,FALSE,FALSE,0); other_hbox=gtk_hbox_new(FALSE,0); gtk_box_set_spacing(GTK_BOX(other_hbox),5); other_label=gtk_label_new(_("Timeout before reconnection (in seconds)")); gtk_box_pack_start(GTK_BOX(other_hbox),sleep_entry,FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(other_hbox),other_label,FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(other_vbox),other_hbox,FALSE,FALSE,0); other_hbox=gtk_hbox_new(FALSE,0); gtk_box_set_spacing(GTK_BOX(other_hbox),5); other_label=gtk_label_new(_("Maximum attempts (0 for unlimited)")); gtk_box_pack_start(GTK_BOX(other_hbox),attempts_entry,FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(other_hbox),other_label,FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(other_vbox),other_hbox,FALSE,FALSE,0); other_hbox=gtk_hbox_new(FALSE,0); gtk_box_set_spacing(GTK_BOX(other_hbox),5); other_label=gtk_label_new(_("Rollback after reconnecting (in bytes)")); gtk_box_pack_start(GTK_BOX(other_hbox),rollback_entry,FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(other_hbox),other_label,FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(other_vbox),other_hbox,FALSE,FALSE,0); other_hbox=gtk_hbox_new(FALSE,0); gtk_box_set_spacing(GTK_BOX(other_hbox),5); other_label=gtk_label_new(_("Speed limitation in Bytes/sec (0 for unlimited)")); gtk_box_pack_start(GTK_BOX(other_hbox),speed_entry,FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(other_hbox),other_label,FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(other_vbox),other_hbox,FALSE,FALSE,0); other_hbox=gtk_hbox_new(FALSE,0); gtk_box_set_spacing(GTK_BOX(other_hbox),5); other_label=gtk_label_new(_("Number of parts for spliting this download")); gtk_box_pack_start(GTK_BOX(other_hbox),split_entry,FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(other_hbox),other_label,FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(other_vbox),other_hbox,FALSE,FALSE,0); get_date_check=gtk_check_button_new_with_label(_("Get date from the server")); GTK_TOGGLE_BUTTON(get_date_check)->active=who->config->get_date; gtk_box_pack_start(GTK_BOX(other_vbox),get_date_check,FALSE,FALSE,0); retry_check=gtk_check_button_new_with_label(_("Retry if resuming is not supported")); GTK_TOGGLE_BUTTON(retry_check)->active=who->config->retry; gtk_box_pack_start(GTK_BOX(other_vbox),retry_check,FALSE,FALSE,0); sleep_check=gtk_check_button_new_with_label(_("Sleep before completing")); GTK_TOGGLE_BUTTON(sleep_check)->active=who->config->sleep_before_complete; gtk_box_pack_start(GTK_BOX(other_vbox),sleep_check,FALSE,FALSE,0); check_time_check=gtk_check_button_new_with_label(_("Compare date/time of remote file with local one")); GTK_TOGGLE_BUTTON(check_time_check)->active=who->config->check_time; gtk_box_pack_start(GTK_BOX(other_vbox),check_time_check,FALSE,FALSE,0); other_label=gtk_label_new(_("Save log to file")); GtkWidget *other_box=gtk_vbox_new(FALSE,0); gtk_box_set_spacing(GTK_BOX(other_box),5); log_save_entry=my_gtk_filesel_new(ALL_HISTORIES[LOG_SAVE_HISTORY]); MY_GTK_FILESEL(log_save_entry)->modal=GTK_WINDOW(window); if (who->config->log_save_path.get()) text_to_combo(MY_GTK_FILESEL(log_save_entry)->combo, who->config->log_save_path.get()); else text_to_combo(MY_GTK_FILESEL(log_save_entry)->combo,""); GtkWidget *auto_button=gtk_button_new_with_label(_("Auto")); g_signal_connect(G_OBJECT(auto_button),"clicked",G_CALLBACK(edit_auto_log_clicked),this); gtk_box_pack_start(GTK_BOX(log_save_entry),auto_button,FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(other_box),other_label,FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(other_box),log_save_entry,FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(other_vbox),other_box,FALSE,FALSE,0); GtkWidget *other_frame=common_frame=gtk_frame_new(_("Common")); gtk_container_set_border_width(GTK_CONTAINER(other_frame),5); gtk_container_add(GTK_CONTAINER(other_frame),other_vbox); gtk_notebook_append_page(GTK_NOTEBOOK(notebook),other_frame,gtk_label_new(_("Common")));};void tDEdit::init_ftp(tDownload *who){ GtkWidget *ftp_vbox=gtk_vbox_new(FALSE,0); ftp_passive_check=gtk_check_button_new_with_label(_("Use passive mode for FTP")); GTK_TOGGLE_BUTTON(ftp_passive_check)->active=who->config->passive; gtk_box_pack_start(GTK_BOX(ftp_vbox),ftp_passive_check,FALSE,FALSE,0); dont_send_quit_check=gtk_check_button_new_with_label(_("Don't send QUIT command (FTP)")); GTK_TOGGLE_BUTTON(dont_send_quit_check)->active=who->config->dont_send_quit; gtk_box_pack_start(GTK_BOX(ftp_vbox),dont_send_quit_check,FALSE,FALSE,0); permisions_check=gtk_check_button_new_with_label(_("Get permissions of the file from server (FTP only)")); GTK_TOGGLE_BUTTON(permisions_check)->active=who->config->permisions; gtk_box_pack_start(GTK_BOX(ftp_vbox),permisions_check,FALSE,FALSE,0); follow_link_check=gtk_radio_button_new_with_label(NULL,_("Follow symbolic links")); GTK_TOGGLE_BUTTON(follow_link_check)->active=who->config->follow_link==1?1:0; gtk_box_pack_start(GTK_BOX(ftp_vbox),follow_link_check,FALSE,FALSE,0); GSList *proxy_group1=gtk_radio_button_get_group(GTK_RADIO_BUTTON(follow_link_check)); load_link_check=gtk_radio_button_new_with_label(proxy_group1,_("Load links as links")); GTK_TOGGLE_BUTTON(load_link_check)->active=who->config->follow_link==0?1:0; gtk_box_pack_start(GTK_BOX(ftp_vbox),load_link_check,FALSE,FALSE,0); proxy_group1=gtk_radio_button_get_group(GTK_RADIO_BUTTON(load_link_check)); link_as_file_check=gtk_radio_button_new_with_label(proxy_group1,_("Load links as file")); GTK_TOGGLE_BUTTON(link_as_file_check)->active=who->config->follow_link==2?1:0; gtk_box_pack_start(GTK_BOX(ftp_vbox),link_as_file_check,FALSE,FALSE,0); ftp_dirontop_check=gtk_check_button_new_with_label(_("Put directories on the top of queue during recursion")); GTK_TOGGLE_BUTTON(ftp_dirontop_check)->active=who->config->ftp_dirontop; gtk_box_pack_start(GTK_BOX(ftp_vbox),ftp_dirontop_check,FALSE,FALSE,0); ftp_recurse_depth_entry=my_gtk_entry_new_with_max_length(3,who->config->ftp_recurse_depth); GtkWidget *ftp_hbox=gtk_hbox_new(FALSE,0); gtk_box_set_spacing(GTK_BOX(ftp_hbox),2); GtkWidget *other_label=gtk_label_new(_("Depth of recursing (0 unlimited,1 no recurse)")); gtk_box_pack_start(GTK_BOX(ftp_hbox),ftp_recurse_depth_entry,FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(ftp_hbox),other_label,FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(ftp_vbox),ftp_hbox,FALSE,FALSE,0); ftp_frame=gtk_frame_new("FTP"); gtk_container_set_border_width(GTK_CONTAINER(ftp_frame),5); gtk_container_add(GTK_CONTAINER(ftp_frame),ftp_vbox); gtk_notebook_append_page(GTK_NOTEBOOK(notebook),ftp_frame,gtk_label_new("FTP"));};void tDEdit::init_http(tDownload *who){ GtkWidget *http_vbox=gtk_vbox_new(FALSE,0); http_recurse_depth_entry=my_gtk_entry_new_with_max_length(3,who->config->http_recurse_depth); GtkWidget *http_hbox=gtk_hbox_new(FALSE,0); gtk_box_set_spacing(GTK_BOX(http_hbox),5); GtkWidget *other_label=gtk_label_new(_("Depth of recursing (0 unlimited,1 no recurse)")); gtk_box_pack_start(GTK_BOX(http_hbox),http_recurse_depth_entry,FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(http_hbox),other_label,FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(http_vbox),http_hbox,FALSE,FALSE,0); leave_dir_check=gtk_check_button_new_with_label(_("Only subdirs")); leave_server_check=gtk_check_button_new_with_label(_("Allow leave this server while recursing via HTTP")); change_links_check=gtk_check_button_new_with_label(_("Change links in HTML file to local")); ihate_etag_check=gtk_check_button_new_with_label(_("Ignore ETag field in reply")); quest_sign_check=gtk_check_button_new_with_label(_("Use '_' instead of '?' in stored filenames"));; GTK_TOGGLE_BUTTON(leave_server_check)->active=who->config->leave_server; GTK_TOGGLE_BUTTON(leave_dir_check)->active=who->config->dont_leave_dir; GTK_TOGGLE_BUTTON(change_links_check)->active=who->config->change_links; GTK_TOGGLE_BUTTON(ihate_etag_check)->active=who->config->ihate_etag; GTK_TOGGLE_BUTTON(quest_sign_check)->active=who->config->quest_sign_replace; gtk_box_pack_start(GTK_BOX(http_vbox),leave_server_check,FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(http_vbox),leave_dir_check,FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(http_vbox),change_links_check,FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(http_vbox),ihate_etag_check,FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(http_vbox),quest_sign_check,FALSE,FALSE,0); filter=gtk_entry_new(); gtk_editable_set_editable(GTK_EDITABLE(filter),FALSE); if (who->config->Filter.get()) text_to_combo(filter,who->config->Filter.get()); http_hbox=gtk_hbox_new(FALSE,0);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?