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 + -
显示快捷键?