⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 passface.cc

📁 一个功能比较强的下载软件
💻 CC
📖 第 1 页 / 共 2 页
字号:
int tFacePass::limit_check(tDownload *what){	if (what->regex_match){		tLimitDownload *dwn=(tLimitDownload *)(what->regex_match->papa);		return(dwn->cur_limit>=dwn->config->con_limit);	};	return(0);};int tFacePass::match_and_check(tDownload *what,int move){	tLimitDownload *dwn=find_match(what);	if (dwn && dwn->config->con_limit>0 && what->regex_match==NULL){		if (!move){			d4xDownloadQueue *dq=what->myowner->PAPA;			dq->del(what);			dq->add(what,DL_LIMIT);		};		what->regex_match=new d4xDwnLink(what,dwn);		what->regex_match->q=&(dwn->limited);		dwn->limited.insert(what->regex_match);	};	return(limit_check(what));};void tFacePass::addlist_add(tLimitDownload *dwn){	if (dwn->editor->apply_changes()) return;	addlist.del(dwn);	dwn->Name2Save.set(dwn->editor->get_url());	dwn->delete_editor();	dlist.insert(dwn);	if (dwn->config->con_limit>0)		calc_matched_run(dwn);	show_url(dwn);};void tFacePass::open_dialog() {	tLimitDownload *dwn=new tLimitDownload;	dwn->config=new tCfg;	dwn->config->isdefault=0;	dwn->set_default_cfg();	addlist.insert(dwn);	dwn->info=new tAddr("ftp://somesite.org");	dwn->editor=new tDEdit;	dwn->editor->add_or_edit=1;	dwn->editor->limit=1;	dwn->editor->not_url_history=1;	dwn->editor->init(dwn);	gtk_window_set_title(GTK_WINDOW(dwn->editor->window),_("Add new URL to URL-manager"));	g_signal_connect(G_OBJECT(dwn->editor->cancel_button),"clicked",G_CALLBACK(add_url_cancel), dwn);	g_signal_connect(G_OBJECT(dwn->editor->ok_button),"clicked",G_CALLBACK(add_url_ok),dwn);	g_signal_connect(G_OBJECT(dwn->editor->window),"delete_event",G_CALLBACK(add_url_delete), dwn);	d4x_eschandler_init(dwn->editor->window,dwn);	gtk_widget_set_sensitive(dwn->editor->isdefault_check,FALSE);	dwn->editor->clear_save_name();	dwn->editor->disable_time();	dwn->editor->disable_save_name();	dwn->editor->clear_url();};static void _foreach_delete_prepare_(GtkTreeModel *model,GtkTreePath *path,				     GtkTreeIter *iter,gpointer p){	tQueue *q=(tQueue*)p;	tmpIterNode *i=new tmpIterNode(iter);	q->insert(i);};void tFacePass::delete_rows() {	tQueue q;	GtkTreeSelection *sel=gtk_tree_view_get_selection(GTK_TREE_VIEW(view));	gtk_tree_selection_selected_foreach(sel,					    _foreach_delete_prepare_,					    &q);	tNode *t=q.last();	while(t){		GValue val={0,};		gtk_tree_model_get_value(GTK_TREE_MODEL(list_store),					 ((tmpIterNode*)t)->iter,					 UM_COL_DATA,&val);		tDownload *dwn=(tDownload *)g_value_get_pointer(&val);		g_value_unset(&val);		dlist.del(dwn);		free_matched((tLimitDownload*)dwn);		gtk_list_store_remove(list_store,dwn->list_iter);		delete(dwn);		t=t->next;	};};void tFacePass::edit_row(GtkTreeIter *iter) {	GValue val={0,};	gtk_tree_model_get_value(GTK_TREE_MODEL(list_store),				 iter,				 UM_COL_DATA,&val);	tDownload *dwn=(tDownload *)g_value_get_pointer(&val);	g_value_unset(&val);	if (!dwn) return;	if (dwn->editor) return;	dwn->editor=new tDEdit;	dwn->editor->add_or_edit=1;	dwn->editor->limit=1;	dwn->editor->init(dwn);	gtk_window_set_title(GTK_WINDOW(dwn->editor->window),_("Edit default preferences"));	g_signal_connect(G_OBJECT(dwn->editor->cancel_button),"clicked",G_CALLBACK(edit_url_cancel), dwn);	g_signal_connect(G_OBJECT(dwn->editor->ok_button),"clicked",G_CALLBACK(edit_url_ok),dwn);	g_signal_connect(G_OBJECT(dwn->editor->window),"delete_event",G_CALLBACK(edit_url_delete), dwn);	d4x_eschandler_init(dwn->editor->window,dwn);	gtk_widget_set_sensitive(dwn->editor->isdefault_check,FALSE);	dwn->editor->clear_save_name();	dwn->editor->disable_time();	dwn->editor->disable_save_name();	dwn->editor->set_url(dwn->Name2Save.get());};void tFacePass::apply_dialog() {};void tFacePass::init(){	if (window) {		gdk_window_show(window->window);		return;	};	window = gtk_window_new(GTK_WINDOW_TOPLEVEL);	gtk_window_set_wmclass(GTK_WINDOW(window),			       "D4X_Passwords","D4X");	gtk_window_set_title(GTK_WINDOW (window),_("URL-manager"));	gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);	gtk_widget_set_size_request(window,-1,400);	gtk_container_set_border_width(GTK_CONTAINER(window),5);	gchar *titles[]={"URL regexp",_("limit"),_("con.")};	list_store = gtk_list_store_new(UM_COL_LAST,					G_TYPE_STRING,					G_TYPE_INT,					G_TYPE_INT,					G_TYPE_POINTER);	view = GTK_TREE_VIEW(gtk_tree_view_new_with_model(GTK_TREE_MODEL(list_store)));	gtk_tree_view_set_headers_visible(view,TRUE);	GtkCellRenderer *renderer;	GtkTreeViewColumn *col;	for (int i=0;i<3;i++){		renderer = gtk_cell_renderer_text_new();		col=gtk_tree_view_column_new_with_attributes(_(titles[i]),							     renderer,							     "text",i,							     NULL);		gtk_tree_view_column_set_visible(col,TRUE);		gtk_tree_view_append_column(view,col);	};		g_signal_connect(G_OBJECT(view),"event",G_CALLBACK(face_pass_clist_handler),this);//	gtk_clist_set_selection_mode(GTK_CLIST(clist),GTK_SELECTION_EXTENDED);	GtkWidget *scroll_window=gtk_scrolled_window_new(NULL,NULL);	gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll_window),	                                GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);	gtk_container_add(GTK_CONTAINER(scroll_window),GTK_WIDGET(view));	button=gtk_button_new_with_label(_("Ok"));	add_button=gtk_button_new_with_label(_("Add new"));	del_button=gtk_button_new_with_label(_("Delete"));	GTK_WIDGET_SET_FLAGS(button,GTK_CAN_DEFAULT);	GTK_WIDGET_SET_FLAGS(add_button,GTK_CAN_DEFAULT);	GTK_WIDGET_SET_FLAGS(del_button,GTK_CAN_DEFAULT);	GtkWidget *vbox=gtk_vbox_new(FALSE,0);	GtkWidget *hbox=gtk_hbutton_box_new();	gtk_box_set_spacing(GTK_BOX(vbox),5);	gtk_box_set_spacing(GTK_BOX(hbox),5);	gtk_box_pack_start(GTK_BOX(vbox),scroll_window,TRUE,TRUE,0);	gtk_box_pack_start(GTK_BOX(vbox),hbox,FALSE,FALSE,0);	gtk_box_pack_end(GTK_BOX(hbox),add_button,FALSE,FALSE,0);	gtk_box_pack_end(GTK_BOX(hbox),del_button,FALSE,FALSE,0);	gtk_box_pack_end(GTK_BOX(hbox),button,FALSE,FALSE,0);	gtk_container_add(GTK_CONTAINER(window),vbox);	gtk_window_set_default(GTK_WINDOW(window),button);	gtk_widget_show_all(window);	g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(face_pass_ok),this);	g_signal_connect(G_OBJECT(del_button),"clicked",G_CALLBACK(face_pass_del),this);	g_signal_connect(G_OBJECT(add_button),"clicked",G_CALLBACK(face_pass_add),this);	g_signal_connect(G_OBJECT(window),"delete_event",G_CALLBACK(face_pass_delete), this);	tDownload *dwn=dlist.first();	while(dwn){		show_url((tLimitDownload*)dwn);		dwn=dlist.prev();	};	d4x_eschandler_init(window,this);};void tFacePass::close() {	if (window) {		gtk_widget_destroy(window);		window=NULL;	};	tDownload *dwn=addlist.first();	while(dwn){		addlist_del(dwn);		dwn=addlist.first();	};};static char *CFG_URLMANAGER="urlmanager";void tFacePass::save(){	if (!HOME_VARIABLE) return;	char *cfgpath=sum_strings(HOME_VARIABLE,"/",CFG_DIR,"/",CFG_URLMANAGER,NULL);	int fd=open(cfgpath,O_TRUNC | O_CREAT |O_RDWR,S_IRUSR | S_IWUSR);	delete[] cfgpath;	if (fd<0) return;	tDownload *dwn=dlist.first();	while(dwn){		dwn->save_to_config(fd);		dwn=dlist.prev();	};	::close(fd);};void tFacePass::load(){	if (!HOME_VARIABLE) return;	char *cfgpath=sum_strings(HOME_VARIABLE,"/",CFG_DIR,"/",CFG_URLMANAGER,NULL);	int fd=open(cfgpath,O_RDONLY);	delete[] cfgpath;	if (fd<0) return;	char buf[MAX_LEN];	while(f_rstr(fd,buf,MAX_LEN)>0){		if (equal_uncase(buf,"Download:")){			tLimitDownload *tmp=new tLimitDownload;			if (tmp->load_from_config(fd))				delete(tmp);			else				dlist.insert(tmp);		};	};	::close(fd);};tLimitDownload *tFacePass::find_match(tDownload *what){	char *url=what->info->url();	tDownload *dwn=dlist.first();	while(dwn){		regex_t reg;		if (regcomp(&reg,dwn->Name2Save.get(),REG_NOSUB)==0){			if (regexec(&reg,url,0,NULL,0)==0){				regfree(&reg);				break;			};			regfree(&reg);		};		dwn=dlist.prev();	};	delete[] url;	return((tLimitDownload *)(dwn));};void tFacePass::set_cfg(tDownload *what){	tLimitDownload *dwn=find_match(what);	if (dwn){		if (dwn->config){			if (what->config==NULL) what->config=new tCfg;			what->config->copy(dwn->config);			what->restart_from_begin=dwn->restart_from_begin;			what->config->referer.set(dwn->config->referer.get());			what->config->save_path.set(dwn->config->save_path.get());			what->config->log_save_path.set(dwn->config->log_save_path.get());			what->config->isdefault=0;		};		what->info->pass.set(dwn->info->pass.get());		what->info->username.set(dwn->info->username.get());		if (dwn->split==NULL && what->split)			delete(what->split);		if (dwn->split){			if (what->split==NULL) what->split=new tSplitInfo;			what->split->NumOfParts=dwn->split->NumOfParts;		};	};};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -