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

📄 about.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 <gdk/gdkkeysyms.h>#include <stdio.h>#include "list.h"#include "about.h"#include "misc.h"#include "../var.h"#include "../ntlocale.h"GtkWidget *AboutWindow=(GtkWidget *)NULL;GtkWidget *AboutTLabel,*AboutSLabel;char *TRANSLATORS[]={	"Thomas R. Koll",	"Gustavo D. Vranjes",	"Felix Knecht",	"Oren Held",	"Marco Martin",	"Jerome Couderc",	"Cawko Xakep",	"Iordan Pavlov",	"Gorkem Cetin",	"DJ Art",	"Mario Sergio Fujikawa Ferreira",	"Seung-young Oh",	"Grzegorz Kowal",	"Vittorio Rebecchi",	"Enrico Manfredini",	"Lubosh Holichka",	"Kyritsis Athanasios",	"Vicente Aguilar",	"Robin Verduijn",	"Dirk Moebius",	"Legnar WinShadow",	"Paulo Henrique",	"A.J.",	"Josef Jahn",	"Marlin [TLC-ML]",	"Philippe Rigaux",	"Eric Seigne",	"Priyadi Iman Nurcahyo",	"Kei Kodera",	"Guiliano Rangel Alves",	"Pavel Janousek"};char *SPECIAL_THANKS[]={	"Gene Schiavone",	"Brian Trapp"};int ABOUT_CURRENT_NAME;static gint about_window_change_names(void *a){	if (AboutWindow){		GtkScrolledWindow *w=(GtkScrolledWindow *)a;		GtkAdjustment *adj=gtk_scrolled_window_get_vadjustment(w);		gdouble val=adj->value;		switch (ABOUT_CURRENT_NAME){		case 1:{			val=adj->value+1;			if (val>adj->upper-adj->page_size){				val=adj->upper-adj->page_size;				ABOUT_CURRENT_NAME=2;			};			break;		};		case 0:{			val=adj->value-1;			if (val<adj->lower){				val=adj->lower;				ABOUT_CURRENT_NAME=15;			};			break;		};		default:{			if (ABOUT_CURRENT_NAME++==14) ABOUT_CURRENT_NAME=0;			if (ABOUT_CURRENT_NAME>28) ABOUT_CURRENT_NAME=1;		};		};		gtk_adjustment_set_value (adj,val);		return 1;	};	return 0;};static gint about_window_esc_handler(GtkWidget *window,GdkEvent *event){	if (event && event->type == GDK_KEY_PRESS) {		GdkEventKey *kevent=(GdkEventKey *)event;		switch(kevent->keyval) {		case GDK_Escape:{			destroy_about_window();			return TRUE;			break;		};		};	};	return FALSE;};void destroy_about_window() {	if (AboutWindow){		gtk_widget_destroy(AboutWindow);		AboutWindow=(GtkWidget *)NULL;		gtk_widget_set_sensitive(MainWindow,TRUE);	};};void init_about_window(...) {#include "pixmaps/dndtrash.xpm"	if (AboutWindow) {		gdk_window_show(AboutWindow->window);		return;	};	ABOUT_CURRENT_NAME=0;	AboutWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);	gtk_window_set_wmclass(GTK_WINDOW(AboutWindow),			       "D4X_About","D4X");	//    gtk_widget_set_usize( GTK_WIDGET (AboutWindow), 400, 105);	gtk_window_set_resizable(GTK_WINDOW(AboutWindow), FALSE);	gtk_window_set_position(GTK_WINDOW(AboutWindow),GTK_WIN_POS_CENTER);	gtk_window_set_title(GTK_WINDOW (AboutWindow), _("About"));	gtk_container_set_border_width(GTK_CONTAINER(AboutWindow),5);	GtkWidget *box=gtk_vbox_new(FALSE,0);	GtkWidget *label1=gtk_label_new(VERSION_NAME);	GtkWidget *label2=gtk_entry_new();/*	GtkStyle *style = gtk_widget_get_style(label2);	gint real_size=gdk_string_width(gtk_style_get_font(style),HOME_PAGE);	gtk_widget_set_size_request(label2,real_size+10,-1);*/	gtk_editable_set_editable(GTK_EDITABLE(label2),FALSE);	gtk_entry_set_text(GTK_ENTRY(label2),HOME_PAGE);	GtkWidget *label3=gtk_label_new(_("Author: Maxim Koshelev"));	GtkWidget *label4=gtk_label_new("e-mail: chuchelo@krasu.ru");	GtkWidget *label5=gtk_label_new(_("Autoconf: Zaufi"));	GtkWidget *frame=gtk_frame_new(_("Translators team"));	gtk_frame_set_shadow_type(GTK_FRAME(frame),GTK_SHADOW_IN);	GtkWidget *scroll_window=gtk_scrolled_window_new((GtkAdjustment *)NULL,							 (GtkAdjustment *)NULL);	gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW (scroll_window),GTK_SHADOW_NONE);	gtk_widget_set_size_request(scroll_window,-1,100);	gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll_window),	                                GTK_POLICY_NEVER,					GTK_POLICY_NEVER);	GtkWidget *box1=gtk_vbox_new(FALSE,0);	GtkWidget *viewport=gtk_viewport_new((GtkAdjustment *)NULL,					     (GtkAdjustment *)NULL);	gtk_viewport_set_shadow_type(GTK_VIEWPORT(viewport),GTK_SHADOW_NONE);	gtk_container_add(GTK_CONTAINER(viewport),box1);	gtk_container_add(GTK_CONTAINER(scroll_window),viewport);//	gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW (scroll_window),box1);	gtk_container_add(GTK_CONTAINER(frame),scroll_window);	for (int i=0;i<sizeof(TRANSLATORS)/sizeof(char*);i++){		AboutTLabel=gtk_label_new(TRANSLATORS[i]);		gtk_box_pack_start(GTK_BOX(box1),AboutTLabel,FALSE,FALSE,0);	}	GtkWidget *frame1=gtk_frame_new(_("Special thanks to"));	gtk_frame_set_shadow_type(GTK_FRAME(frame1),GTK_SHADOW_IN);	box1=gtk_vbox_new(FALSE,0);	gtk_container_add(GTK_CONTAINER(frame1),box1);	for (int j=0;j<sizeof(SPECIAL_THANKS)/sizeof(char*);j++){		AboutSLabel=gtk_label_new(SPECIAL_THANKS[j]);		gtk_box_pack_start(GTK_BOX(box1),AboutSLabel,FALSE,FALSE,0);	};	GtkWidget *Button=gtk_button_new_with_label(_("Ok"));	GtkWidget *box2=gtk_hbox_new(FALSE,0);	GtkWidget *box3=gtk_vbox_new(FALSE,0);	gtk_box_pack_start(GTK_BOX(box),label1,FALSE,FALSE,0);	gtk_box_pack_start(GTK_BOX(box3),label2,FALSE,FALSE,0);	gtk_box_pack_start(GTK_BOX(box3),label3,FALSE,FALSE,0);	gtk_box_pack_start(GTK_BOX(box3),label4,FALSE,FALSE,0);	gtk_box_pack_start(GTK_BOX(box3),label5,FALSE,FALSE,0);	GdkBitmap *pixmask=NULL;	gtk_widget_realize(AboutWindow);	GdkPixmap *pixmap=make_pixmap_from_xpm(&pixmask,dndtrash_xpm,AboutWindow);	GtkWidget *image = gtk_image_new_from_pixmap(pixmap,pixmask);	gtk_box_pack_start(GTK_BOX(box2),image,FALSE,FALSE,0);	gtk_box_pack_start(GTK_BOX(box2),box3,FALSE,FALSE,0);	gtk_box_pack_start(GTK_BOX(box),box2,FALSE,FALSE,0);	gtk_box_pack_start(GTK_BOX(box),frame,FALSE,FALSE,0);	gtk_box_pack_start(GTK_BOX(box),frame1,FALSE,FALSE,0);	gtk_box_pack_start(GTK_BOX(box),Button,FALSE,FALSE,0);	gtk_container_add(GTK_CONTAINER(AboutWindow),box);	g_signal_connect(G_OBJECT(Button),"clicked",	                   (GtkSignalFunc)destroy_about_window,NULL);	g_signal_connect(G_OBJECT(AboutWindow), "key_press_event",			   (GtkSignalFunc)about_window_esc_handler, NULL);	g_signal_connect(G_OBJECT(AboutWindow), "delete_event",	                   (GtkSignalFunc)destroy_about_window,NULL);	d4x_eschandler_init(AboutWindow,NULL);	GTK_WIDGET_SET_FLAGS(Button,GTK_CAN_DEFAULT);	gtk_window_set_default(GTK_WINDOW(AboutWindow),Button);	gtk_widget_show_all(AboutWindow);	gtk_window_set_modal (GTK_WINDOW(AboutWindow),TRUE);	gtk_window_set_transient_for (GTK_WINDOW (AboutWindow), GTK_WINDOW (MainWindow));//	gtk_widget_show(AboutWindow);	gtk_widget_set_sensitive(MainWindow,FALSE);	gtk_timeout_add (80, about_window_change_names , scroll_window);};/* ------------------------------------------------------------ * Dialogs... * ------------------------------------------------------------ */tDialog::tDialog() {	window=(GtkWidget *)NULL;};void tDialog::done() {	if (!window) return;	gtk_widget_destroy(window);	window=(GtkWidget *)NULL;};void tDialog::set_modal(GtkWidget *widget){	if (window && widget){		gtk_window_set_modal (GTK_WINDOW(window),TRUE);		gtk_window_set_transient_for (GTK_WINDOW (window), GTK_WINDOW (widget));	};};tDialog::~tDialog() {	done();};static void dialog_delete(GtkWidget *widget, GdkEvent *event,tDialogWidget *parent) {	parent->done();};static void dialog_delete2(GtkWidget *widget,tDialogWidget *parent) {	parent->done();};tDialogWidget::tDialogWidget():tDialog(){};void tDialogWidget::create(char *ask,char *title){	window = gtk_window_new(GTK_WINDOW_TOPLEVEL);	gtk_window_set_title(GTK_WINDOW (window),title);	gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);	gtk_container_set_border_width(GTK_CONTAINER(window),5);	label=gtk_label_new(ask);	ok_button=gtk_button_new_with_label(_("Ok"));	cancel_button=gtk_button_new_with_label(_("Cancel"));	GTK_WIDGET_SET_FLAGS(ok_button,GTK_CAN_DEFAULT);	GTK_WIDGET_SET_FLAGS(cancel_button,GTK_CAN_DEFAULT);	mainvbox=gtk_vbox_new(FALSE,0);	GtkWidget *hbox=gtk_hbutton_box_new();	gtk_box_set_spacing(GTK_BOX(mainvbox),5);	gtk_box_set_spacing(GTK_BOX(hbox),5);	gtk_box_pack_start(GTK_BOX(mainvbox),label,FALSE,FALSE,0);	gtk_box_pack_end(GTK_BOX(mainvbox),hbox,FALSE,FALSE,0);	gtk_box_pack_end(GTK_BOX(hbox),ok_button,FALSE,FALSE,0);	gtk_box_pack_end(GTK_BOX(hbox),cancel_button,FALSE,FALSE,0);	gtk_container_add(GTK_CONTAINER(window),mainvbox);	gtk_window_set_default(GTK_WINDOW(window),cancel_button);	g_signal_connect(G_OBJECT(cancel_button),"clicked",G_CALLBACK(dialog_delete2),this);	g_signal_connect(G_OBJECT(window),"delete_event",G_CALLBACK(dialog_delete), this);	d4x_eschandler_init(window,this);};int tDialogWidget::init(char *ask,char *title) {	if (window) {		gdk_window_show(window->window);		return 0;	};	create(ask,title);	gtk_widget_show_all(window);	return 1;};tDialogWidget::~tDialogWidget() {};/* -----------------------------------------------*/tConfirmedDialog::tConfirmedDialog():tDialogWidget(){};int tConfirmedDialog::init(char *ask,char *title){	if (window) {		gdk_window_show(window->window);		return 0;	};	create(ask,title);	check=gtk_check_button_new_with_label(_("Don't ask next time"));	gtk_box_pack_start(GTK_BOX(mainvbox),check,FALSE,FALSE,0);	gtk_widget_show_all(window);	return 1;};tConfirmedDialog::~tConfirmedDialog(){};/* -----------------------------------------------*/static gint string_dialog_delete_event(GtkWidget *widget, GdkEvent *event,tStringDialog *parent) {	parent->done();	return TRUE;};static void string_dialog_ok_clicked(GtkWidget *widget,tStringDialog *parent) {	parent->done();};tStringDialog::tStringDialog():tDialog(){};int tStringDialog::init(char *str,char *title,char *frame_title) {	if (window) {		gtk_entry_set_text(GTK_ENTRY(entry),str);		gtk_window_set_title(GTK_WINDOW (window), title);		gtk_window_set_default(GTK_WINDOW(window),ok_button);		gtk_frame_set_label(GTK_FRAME(frame),frame_title?frame_title:"");		gdk_window_show(window->window);		return 0;	};	window=gtk_window_new(GTK_WINDOW_TOPLEVEL);	g_signal_connect(G_OBJECT(window),"delete_event",G_CALLBACK(string_dialog_delete_event), this);	d4x_eschandler_init(window,this);	gtk_window_set_title(GTK_WINDOW (window), title);	gtk_container_set_border_width(GTK_CONTAINER(window),1);	gtk_window_set_resizable(GTK_WINDOW(window), FALSE);	GtkWidget *hbox=gtk_hbutton_box_new();	GtkWidget *vbox=gtk_vbox_new(FALSE,0);	gtk_box_set_spacing(GTK_BOX(vbox),5);	gtk_button_box_set_layout(GTK_BUTTON_BOX(hbox),GTK_BUTTONBOX_END);	ok_button=gtk_button_new_with_label(_("Ok"));	g_signal_connect(G_OBJECT(ok_button),"clicked",G_CALLBACK(string_dialog_ok_clicked),this);	GTK_WIDGET_SET_FLAGS(ok_button,GTK_CAN_DEFAULT);	entry=gtk_entry_new();	gtk_entry_set_text(GTK_ENTRY(entry),str);	gtk_editable_set_editable(GTK_EDITABLE(entry),FALSE);	gtk_widget_set_size_request(GTK_WIDGET (window), 500,-1);	gtk_box_pack_start(GTK_BOX(vbox),entry,FALSE,FALSE,0);	gtk_box_pack_start(GTK_BOX(vbox),hbox,FALSE,FALSE,0);	gtk_box_pack_end(GTK_BOX(hbox),ok_button,FALSE,FALSE,0);	frame=gtk_frame_new(frame_title?frame_title:"");	gtk_frame_set_shadow_type(GTK_FRAME(frame),GTK_SHADOW_OUT);	//	    gtk_container_border_width(GTK_CONTAINER(frame),5);	gtk_container_add(GTK_CONTAINER(frame),vbox);	gtk_container_add(GTK_CONTAINER(window),frame);	gtk_widget_show_all(window);	gtk_window_set_default(GTK_WINDOW(window),ok_button);	return 1;};tStringDialog::~tStringDialog() {};

⌨️ 快捷键说明

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