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

📄 saveload.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 "list.h"#include "edit.h"#include "misc.h"#include "mywidget.h"#include "../savelog.h"#include "../var.h"#include "../ntlocale.h"#include "../eff.h"#include "../main.h"extern tMain aa;GtkWidget *LoadSaveWindow=(GtkWidget *)NULL;GtkWidget *load_save_entry;GtkWidget *LoadingStatusWindow=(GtkWidget *)NULL;gint load_save_list_cancel() {	if (LoadSaveWindow) gtk_widget_destroy(LoadSaveWindow);	LoadSaveWindow=(GtkWidget *)NULL;	return TRUE;};void load_list_ok(GtkWidget *parent,GtkWidget *who) {	read_list_from_file_current(text_from_combo(MY_GTK_FILESEL(load_save_entry)->combo));	ALL_HISTORIES[LOAD_SAVE_HISTORY]->add(text_from_combo(MY_GTK_FILESEL(load_save_entry)->combo));	load_save_list_cancel();};static void _tmp_foreach_(d4xLinksSel *sel,GtkTreeIter *iter,const gchar *s,gpointer rd,gpointer ud){	aa.add_downloading((char*)s);};static void d4x_links_sel_ok(GtkWidget *button, d4xLinksSel *sel){	d4x_links_sel_foreach(sel,_tmp_foreach_,NULL);	gtk_widget_destroy(GTK_WIDGET(sel));};static gint time_for_load_refresh(GtkWidget *pbar){	if (thread_for_parse_txt_status()==1){		char text[100];		float p=thread_for_parse_percent();		sprintf(text,"%p%%",p);		gtk_progress_bar_set_text (GTK_PROGRESS_BAR(pbar),text);		gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(pbar),p);		return 1;	};	if (thread_for_parse_full()){		d4xLinksSel *sel=(d4xLinksSel *)d4x_links_sel_new();		g_signal_connect(G_OBJECT(sel->ok),"clicked",				   G_CALLBACK(d4x_links_sel_ok),				   sel);		thread_for_parse_add(sel);	};	gtk_widget_destroy(LoadingStatusWindow);	LoadingStatusWindow=(GtkWidget *)NULL;	return 0;};static gint try_to_stop_load_thread(GtkWindow *window,GdkEvent *event,gpointer data){	thread_for_parse_stop();	return(TRUE);};void load_txt_list_ok(GtkWidget *parent,GtkWidget *who) {	tUrlParser *parser=new tUrlParser(text_from_combo(MY_GTK_FILESEL(load_save_entry)->combo));	ALL_HISTORIES[LOAD_SAVE_HISTORY]->add(text_from_combo(MY_GTK_FILESEL(load_save_entry)->combo));	load_save_list_cancel();        LoadingStatusWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);	gtk_window_set_wmclass(GTK_WINDOW(LoadingStatusWindow),			       "D4X_LoadStatus","D4X");	g_signal_connect(G_OBJECT(LoadingStatusWindow),			   "delete_event",			   G_CALLBACK(try_to_stop_load_thread), NULL);	gtk_window_set_resizable(GTK_WINDOW(LoadingStatusWindow), FALSE);	gtk_window_set_position(GTK_WINDOW(LoadingStatusWindow),GTK_WIN_POS_CENTER);	gtk_window_set_title(GTK_WINDOW (LoadingStatusWindow), _("Loading"));	gtk_container_set_border_width(GTK_CONTAINER(LoadingStatusWindow),5);	GtkWidget *pbar = gtk_progress_bar_new();	gtk_widget_set_size_request(pbar,200,-1);	gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(pbar),0);	gtk_container_add(GTK_CONTAINER(LoadingStatusWindow),pbar);	gtk_widget_show_all(LoadingStatusWindow);	gtk_window_set_modal (GTK_WINDOW(LoadingStatusWindow),TRUE);	gtk_window_set_transient_for (GTK_WINDOW (LoadingStatusWindow), GTK_WINDOW (MainWindow));	gint timeout=gtk_timeout_add (100, GtkFunction(time_for_load_refresh) , pbar);	if (thread_for_parse_txt(parser)){		gtk_timeout_remove(timeout);		gtk_widget_destroy(LoadingStatusWindow);		LoadingStatusWindow=(GtkWidget *)NULL;	};/*	tStringList *list=parser->parse();	tString *tmp=list->last();	while (tmp){		aa.add_downloading(tmp->body);		tmp=list->next();	};	delete(parser);	delete(list);*/};void save_list_ok(GtkWidget *parent,GtkWidget *who) {	save_list_to_file_current(text_from_combo(MY_GTK_FILESEL(load_save_entry)->combo));	ALL_HISTORIES[LOAD_SAVE_HISTORY]->add(text_from_combo(MY_GTK_FILESEL(load_save_entry)->combo));	ALL_HISTORIES[SAVE_HISTORY]->add(text_from_combo(MY_GTK_FILESEL(load_save_entry)->combo));	load_save_list_cancel();	init_load_accelerators();};static void _sl_set_modal(){	gtk_window_set_modal (GTK_WINDOW(LoadSaveWindow),TRUE);	gtk_window_set_transient_for (GTK_WINDOW (LoadSaveWindow), GTK_WINDOW (MainWindow));};void init_save_list(...) {	if (LoadSaveWindow) {		gdk_window_show(LoadSaveWindow->window);		return;	};	LoadSaveWindow=gtk_window_new(GTK_WINDOW_TOPLEVEL);	gtk_window_set_wmclass(GTK_WINDOW(LoadSaveWindow),			       "D4X_Save","D4X");	gtk_window_set_title(GTK_WINDOW(LoadSaveWindow),_("Save list"));	gtk_window_set_position(GTK_WINDOW(LoadSaveWindow),GTK_WIN_POS_CENTER);	gtk_window_set_resizable(GTK_WINDOW(LoadSaveWindow), FALSE);	gtk_container_set_border_width(GTK_CONTAINER(LoadSaveWindow),5);	g_signal_connect(G_OBJECT(LoadSaveWindow),"delete_event",G_CALLBACK(load_save_list_cancel), NULL);	d4x_eschandler_init(LoadSaveWindow,NULL);	load_save_entry=my_gtk_filesel_new(ALL_HISTORIES[LOAD_SAVE_HISTORY]);	gtk_widget_set_size_request(GTK_COMBO(MY_GTK_FILESEL(load_save_entry)->combo)->entry,400,-1);	MY_GTK_FILESEL(load_save_entry)->modal=GTK_WINDOW(LoadSaveWindow);	GtkWidget *vbox=gtk_vbox_new(FALSE,0);	gtk_box_set_spacing(GTK_BOX(vbox),5);	gtk_box_pack_start(GTK_BOX(vbox),load_save_entry,FALSE,FALSE,0);	GtkWidget *hbox=gtk_hbutton_box_new();	gtk_button_box_set_layout(GTK_BUTTON_BOX(hbox),GTK_BUTTONBOX_END);	gtk_box_set_spacing(GTK_BOX(hbox),5);	gtk_box_pack_start(GTK_BOX(vbox),hbox,FALSE,FALSE,0);	GtkWidget *button_ok=gtk_button_new_with_label(_("Ok"));	g_signal_connect(G_OBJECT(button_ok),"clicked",G_CALLBACK(save_list_ok),NULL);	GtkWidget *button_cancel=gtk_button_new_with_label(_("Cancel"));	g_signal_connect(G_OBJECT(button_cancel),"clicked",G_CALLBACK(load_save_list_cancel),NULL);	GTK_WIDGET_SET_FLAGS(button_cancel,GTK_CAN_DEFAULT);	GTK_WIDGET_SET_FLAGS(button_ok,GTK_CAN_DEFAULT);	gtk_box_pack_start(GTK_BOX(hbox),button_ok,TRUE,TRUE,0);	gtk_box_pack_start(GTK_BOX(hbox),button_cancel,TRUE,TRUE,0);	gtk_container_add(GTK_CONTAINER(LoadSaveWindow),vbox);	gtk_window_set_default(GTK_WINDOW(LoadSaveWindow),button_ok);	gtk_widget_show_all(LoadSaveWindow);	_sl_set_modal();};void init_load_list(...) {	if (LoadSaveWindow) {		gdk_window_show(LoadSaveWindow->window);		return;	};	LoadSaveWindow=gtk_window_new(GTK_WINDOW_TOPLEVEL);	gtk_window_set_wmclass(GTK_WINDOW(LoadSaveWindow),			       "D4X_Load","D4X");	gtk_window_set_title(GTK_WINDOW(LoadSaveWindow),_("Load list"));	gtk_window_set_position(GTK_WINDOW(LoadSaveWindow),GTK_WIN_POS_CENTER);	gtk_window_set_resizable(GTK_WINDOW(LoadSaveWindow), FALSE);	gtk_container_set_border_width(GTK_CONTAINER(LoadSaveWindow),5);	g_signal_connect(G_OBJECT(LoadSaveWindow),"delete_event",G_CALLBACK(load_save_list_cancel), NULL);	d4x_eschandler_init(LoadSaveWindow,NULL);	load_save_entry=my_gtk_filesel_new(ALL_HISTORIES[LOAD_SAVE_HISTORY]);	gtk_widget_set_size_request(GTK_COMBO(MY_GTK_FILESEL(load_save_entry)->combo)->entry,400,-1);	GtkWidget *vbox=gtk_vbox_new(FALSE,0);	gtk_box_set_spacing(GTK_BOX(vbox),5);	gtk_box_pack_start(GTK_BOX(vbox),load_save_entry,FALSE,FALSE,0);	MY_GTK_FILESEL(load_save_entry)->modal=GTK_WINDOW(LoadSaveWindow);	GtkWidget *hbox=gtk_hbutton_box_new();	gtk_button_box_set_layout(GTK_BUTTON_BOX(hbox),GTK_BUTTONBOX_END);	gtk_box_set_spacing(GTK_BOX(hbox),5);	gtk_box_pack_start(GTK_BOX(vbox),hbox,FALSE,FALSE,0);	GtkWidget *button_ok=gtk_button_new_with_label(_("Ok"));	g_signal_connect(G_OBJECT(button_ok),"clicked",G_CALLBACK(load_list_ok),NULL);	GtkWidget *button_cancel=gtk_button_new_with_label(_("Cancel"));	g_signal_connect(G_OBJECT(button_cancel),"clicked",G_CALLBACK(load_save_list_cancel),NULL);	GTK_WIDGET_SET_FLAGS(button_cancel,GTK_CAN_DEFAULT);	GTK_WIDGET_SET_FLAGS(button_ok,GTK_CAN_DEFAULT);	gtk_box_pack_start(GTK_BOX(hbox),button_ok,TRUE,TRUE,0);	gtk_box_pack_start(GTK_BOX(hbox),button_cancel,TRUE,TRUE,0);	gtk_container_add(GTK_CONTAINER(LoadSaveWindow),vbox);	gtk_window_set_default(GTK_WINDOW(LoadSaveWindow),button_ok);	gtk_widget_show_all(LoadSaveWindow);	_sl_set_modal();};void init_load_txt_list(...) {	if (LoadSaveWindow) {		gdk_window_show(LoadSaveWindow->window);		return;	};	LoadSaveWindow=gtk_window_new(GTK_WINDOW_TOPLEVEL);	gtk_window_set_wmclass(GTK_WINDOW(LoadSaveWindow),			       "D4X_ParseTxt","D4X");	gtk_window_set_title(GTK_WINDOW(LoadSaveWindow),_("Find links in txt file"));	gtk_window_set_position(GTK_WINDOW(LoadSaveWindow),GTK_WIN_POS_CENTER);	gtk_window_set_resizable(GTK_WINDOW(LoadSaveWindow), FALSE);	gtk_container_set_border_width(GTK_CONTAINER(LoadSaveWindow),5);	g_signal_connect(G_OBJECT(LoadSaveWindow),"delete_event",G_CALLBACK(load_save_list_cancel), NULL);	d4x_eschandler_init(LoadSaveWindow,NULL);	load_save_entry=my_gtk_filesel_new(ALL_HISTORIES[LOAD_SAVE_HISTORY]);	gtk_widget_set_size_request(GTK_COMBO(MY_GTK_FILESEL(load_save_entry)->combo)->entry,400,-1);	GtkWidget *vbox=gtk_vbox_new(FALSE,0);	gtk_box_set_spacing(GTK_BOX(vbox),5);	gtk_box_pack_start(GTK_BOX(vbox),load_save_entry,FALSE,FALSE,0);	MY_GTK_FILESEL(load_save_entry)->modal=GTK_WINDOW(LoadSaveWindow);	GtkWidget *hbox=gtk_hbutton_box_new();	gtk_button_box_set_layout(GTK_BUTTON_BOX(hbox),GTK_BUTTONBOX_END);	gtk_box_set_spacing(GTK_BOX(hbox),5);	gtk_box_pack_start(GTK_BOX(vbox),hbox,FALSE,FALSE,0);	GtkWidget *button_ok=gtk_button_new_with_label(_("Ok"));	g_signal_connect(G_OBJECT(button_ok),"clicked",G_CALLBACK(load_txt_list_ok),NULL);	GtkWidget *button_cancel=gtk_button_new_with_label(_("Cancel"));	g_signal_connect(G_OBJECT(button_cancel),"clicked",G_CALLBACK(load_save_list_cancel),NULL);	GTK_WIDGET_SET_FLAGS(button_cancel,GTK_CAN_DEFAULT);	GTK_WIDGET_SET_FLAGS(button_ok,GTK_CAN_DEFAULT);	gtk_box_pack_start(GTK_BOX(hbox),button_ok,TRUE,TRUE,0);	gtk_box_pack_start(GTK_BOX(hbox),button_cancel,TRUE,TRUE,0);	gtk_container_add(GTK_CONTAINER(LoadSaveWindow),vbox);	gtk_window_set_default(GTK_WINDOW(LoadSaveWindow),button_ok);	gtk_widget_show_all(LoadSaveWindow);	_sl_set_modal();};

⌨️ 快捷键说明

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