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

📄 addd.cc

📁 一个功能比较强的下载软件
💻 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 <stdio.h>#include "../main.h"#include "../var.h"#include "../locstr.h"#include "edit.h"#include "list.h"#include "../ntlocale.h"#include <gdk/gdkkeysyms.h>#include "../sndserv.h"#include "../autoadd.h"#include "misc.h"#include "dndtrash.h"extern tMain aa;tDownload *OneDownload=(tDownload *)NULL;tDList *list_for_adding=(tDList *)NULL;void add_window_cancel(GtkWidget *widget, tDownload *what) {	if (what){		list_for_adding->del(what);		delete(what);	};};void add_window_delete(GtkWidget *widget,GdkEvent *event,tDownload *what) {	if (what){		list_for_adding->del(what);		delete(what);	};};void add_window_ok(GtkWidget *widget, tDownload *what) {	if (what->editor->apply_changes()) return;	list_for_adding->del(what);	int tmp=what->editor->get_pause_check();	int to_top=what->editor->get_to_top_check();	d4xDownloadQueue *tmpq=D4X_QUEUE;	if (what->editor->dnd && dnd_trash_target_queue)		D4X_QUEUE=dnd_trash_target_queue;	what->delete_editor();	if (what->config->isdefault){		delete(what->config);		what->config=NULL;	};	if (tmp){		what->status=DL_PAUSE;		tDownload *dwn=aa.add_downloading_to(what,to_top);		SOUND_SERVER->add_event(SND_ADD);		D4X_QUEUE=tmpq;		if (dwn)			D4X_QVT->move_to(dwn);	}else{		if (aa.add_downloading(what,to_top)){			D4X_QUEUE=tmpq;			tDownload *dwn=ALL_DOWNLOADS->find(what);			delete(what);			if (dwn)				D4X_QVT->move_to(dwn);		}else{			D4X_QUEUE=tmpq;			aa.add_download_message(what);			SOUND_SERVER->add_event(SND_ADD);		};	};};void init_add_window(...) {	if (list_for_adding==NULL) {		list_for_adding=new tDList(DL_TEMP);		list_for_adding->init(0);	};	tDownload *what=new tDownload;	tAddr *info=new tAddr("ftp://somesite.org");	what->info=info;	what->config=new tCfg;	what->set_default_cfg();	what->config->isdefault=CFG.USE_DEFAULT_CFG;	what->config->save_path.set(D4X_QUEUE->save_path.get());	what->editor=new tDEdit;	what->editor->add_or_edit=1;	what->editor->init(what);	gtk_window_set_title(GTK_WINDOW(what->editor->window),_("Add new download"));	g_signal_connect(G_OBJECT(what->editor->cancel_button),"clicked",G_CALLBACK(add_window_cancel), what);	g_signal_connect(G_OBJECT(what->editor->ok_button),"clicked",G_CALLBACK(add_window_ok),what);	g_signal_connect(G_OBJECT(what->editor->window),"delete_event",G_CALLBACK(add_window_delete), what);	d4x_eschandler_init(what->editor->window,what);	what->editor->clear_url();	list_for_adding->insert(what);};void init_add_clipboard_window(...) {	init_add_window();	tDownload *what=list_for_adding->last();	what->editor->paste_url();	gtk_widget_grab_focus(what->editor->ok_button);};void init_add_dnd_window(char *url,char *desc) {	if (!url) return;	init_add_window();	tDownload *what=list_for_adding->last();	what->editor->dnd=1;	what->editor->set_url(url);	what->editor->set_description(desc);	gtk_widget_grab_focus(what->editor->ok_button);};/* automated adding */void d4x_automated_ok(GtkWidget *widget, tDownload *what) {	if (what->editor->apply_changes()) return;	int to_top=what->editor->get_to_top_check();	int to_pause=what->editor->get_pause_check();	list_for_adding->del(what);	d4xAutoGenerator *gen=new d4xAutoGenerator;	if (gen->init(what->editor->get_url())){		delete(gen);		delete(what);		return;	};	int i=0;	char *tmp=gen->first();	while(tmp){		tDownload *dwn=new tDownload;		dwn->info=new tAddr(tmp);		dwn->info->username.set(what->info->username.get());		dwn->info->pass.set(what->info->pass.get());		if (what->config->isdefault==0){			dwn->config=new tCfg;			dwn->config->copy(what->config);			dwn->restart_from_begin=what->restart_from_begin;			dwn->config->referer.set(what->config->referer.get());			dwn->Name2Save.set(what->Name2Save.get());			dwn->config->save_path.set(what->config->save_path.get());			dwn->config->log_save_path.set(what->config->log_save_path.get());		};		if (to_pause){			dwn->status=DL_PAUSE;			aa.add_downloading_to(dwn,to_top);		}else			aa.add_downloading(dwn,to_top);		delete[] tmp;		i+=1;		tmp=gen->next();		if (i>1000){			delete[] tmp;			break;		};	};	delete(gen);	delete(what);};void d4x_automated_add(){	if (list_for_adding==NULL) {		list_for_adding=new tDList(DL_TEMP);		list_for_adding->init(0);	};	tDownload *what=new tDownload;	tAddr *info=new tAddr("ftp://somesite.org");	what->info=info;	what->config=new tCfg;	what->set_default_cfg();	what->config->save_path.set(D4X_QUEUE->save_path.get());	what->editor=new tDEdit;	what->editor->add_or_edit=1;	what->editor->not_url_history=1;	what->editor->init(what);	gtk_window_set_title(GTK_WINDOW(what->editor->window),_("Automated adding"));	g_signal_connect(G_OBJECT(what->editor->cancel_button),"clicked",G_CALLBACK(add_window_cancel), what);	g_signal_connect(G_OBJECT(what->editor->ok_button),"clicked",G_CALLBACK(d4x_automated_ok),what);	g_signal_connect(G_OBJECT(what->editor->window),"delete_event",G_CALLBACK(add_window_delete), what);	d4x_eschandler_init(what->editor->window,what);	what->editor->clear_url();	what->editor->paste_url();	list_for_adding->insert(what);};/*******************************************/static gint _tmp_compare_(gconstpointer a,gconstpointer b){	gint aa=GPOINTER_TO_INT(a);	gint bb=GPOINTER_TO_INT(b);	return(bb-aa);};static void _apply_common_properties_(GtkTreeModel *model,GtkTreePath *path,				      GtkTreeIter *iter,gpointer data){	GValue val={0,};	gtk_tree_model_get_value(model,iter,NOTHING_COL,&val);	tDownload *tmp=(tDownload *)g_value_peek_pointer(&val);	g_value_unset(&val);	tDownload *what=(tDownload *)data;	if (tmp && tmp->owner()!=DL_RUN && tmp->owner()!=DL_STOPWAIT){		if (tmp->config==NULL){			tmp->config=new tCfg;			tmp->set_default_cfg();			tmp->config->isdefault=0;		};		what->editor->set_parent(tmp);		tmp->editor->apply_enabled_changes();		tmp->editor->set_parent(what);	};};void edit_common_properties_ok(GtkWidget *widget, tDownload *what){	/* FIXME: too deep access via 'D4X_QUEUE->qv.' */	GtkTreeSelection *sel=gtk_tree_view_get_selection(GTK_TREE_VIEW(D4X_QUEUE->qv.ListOfDownloads));	gtk_tree_selection_selected_foreach(sel,_apply_common_properties_,what);	what->editor->set_parent(what);	what->delete_editor();	list_for_adding->del(what);	delete(what);};void init_edit_common_properties_window(int *array) {	if (list_for_adding==NULL) {		list_for_adding=new tDList(DL_TEMP);		list_for_adding->init(0);	};	tDownload *what=new tDownload;	tAddr *info=new tAddr("ftp://somesite.org");	what->info=info;	what->config=new tCfg;	what->config->isdefault=0;	what->config->save_path.set(CFG.GLOBAL_SAVE_PATH);	what->set_default_cfg();	what->editor=new tDEdit;	what->editor->init(what);	gtk_widget_hide(what->editor->isdefault_check);	what->editor->disable_items(array);	gtk_window_set_title(GTK_WINDOW(what->editor->window),_("Add new download"));	g_signal_connect(G_OBJECT(what->editor->cancel_button),"clicked",G_CALLBACK(add_window_cancel), what);	g_signal_connect(G_OBJECT(what->editor->ok_button),"clicked",G_CALLBACK(edit_common_properties_ok),what);	g_signal_connect(G_OBJECT(what->editor->window),"delete_event",G_CALLBACK(add_window_delete), what);	d4x_eschandler_init(what->editor->window,what);	what->editor->clear_url();	list_for_adding->insert(what);		gtk_window_set_transient_for (GTK_WINDOW (what->editor->window), GTK_WINDOW (MainWindow));	gtk_window_set_modal (GTK_WINDOW(what->editor->window),TRUE);};

⌨️ 快捷键说明

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