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

📄 filtrgui.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 "filtrgui.h"#include "../ntlocale.h"#include "../var.h"#include "mywidget.h"#include "misc.h"GtkWidget *d4x_filters_window=(GtkWidget *)NULL;GtkTreeView *d4x_filters_view=(GtkTreeView *)NULL;GtkListStore *d4x_filters_store=(GtkListStore *)NULL;static int d4x_filters_changed;/******************************************************/static void d4x_filters_window_edit_ok(GtkWidget *widget,d4xFilterEdit *edit){	char *name=text_from_combo(edit->name);	if (name && *name){		d4xFNode *node=edit->node;		if (strcmp(name,node->filter->name.get())){			FILTERS_DB->del(node);			if (FILTERS_DB->find(name)){				FILTERS_DB->add(node);				return;			};			node->filter->name.set(name);			FILTERS_DB->add(node);		};		node->filter->default_inc=GTK_TOGGLE_BUTTON(edit->include)->active;		gtk_list_store_set(d4x_filters_store,&(node->iter),				   0,name,-1);		gtk_widget_destroy(GTK_WIDGET(edit));		d4x_filters_changed=1;	};};static void d4x_filters_window_edit_delete(GtkWidget *widget,					  GdkEvent *event,					  d4xFilterEdit *edit){	gtk_widget_destroy(GTK_WIDGET(edit));};void d4x_filters_window_edit(){	GtkTreeSelection *sel=gtk_tree_view_get_selection(d4x_filters_view);	GtkTreeModel *model;	GtkTreeIter iter;	if (gtk_tree_selection_get_selected(sel,&model,&iter)){		GValue val={0,};		gtk_tree_model_get_value(model,&iter,1,&val);		d4xFNode *node=(d4xFNode*)g_value_get_pointer(&val);		g_value_unset(&val);		d4xFilterEdit *edit=(d4xFilterEdit *)d4x_filter_edit_new(node);		g_signal_connect(G_OBJECT(edit->ok),"clicked",				 G_CALLBACK(d4x_filters_window_edit_ok),edit);		g_signal_connect(G_OBJECT(edit),"delete_event",				 G_CALLBACK(d4x_filters_window_edit_delete), edit);		d4x_eschandler_init(GTK_WIDGET(edit),edit);		gtk_widget_show_all(GTK_WIDGET(edit));		gtk_window_set_modal (GTK_WINDOW(edit),TRUE);		gtk_window_set_transient_for (GTK_WINDOW (edit), GTK_WINDOW(d4x_filters_window));	};};static void d4x_filters_window_add_delete(GtkWidget *widget,					  GdkEvent *event,					  d4xFilterEdit *edit){	delete(edit->node);	gtk_widget_destroy(GTK_WIDGET(edit));};static void d4x_filters_window_add_ok(GtkWidget *widget,d4xFilterEdit *edit){	char *name=text_from_combo(edit->name);	if (name && *name && FILTERS_DB->find(name)==NULL){		d4xFNode *node=edit->node;		node->filter->name.set(name);		node->filter->default_inc=GTK_TOGGLE_BUTTON(edit->include)->active;		FILTERS_DB->add(node);		d4x_filters_window_add(node);		gtk_widget_destroy(GTK_WIDGET(edit));		d4x_filters_changed=1;	};};void d4x_filters_window_add_new(){	d4xFNode *node=new d4xFNode;	node->filter=new d4xFilter;	node->filter->ref();	d4xFilterEdit *edit=(d4xFilterEdit *)d4x_filter_edit_new(node);	g_signal_connect(G_OBJECT(edit->ok),"clicked",			 G_CALLBACK(d4x_filters_window_add_ok),edit);	g_signal_connect(G_OBJECT(edit),"delete_event",			 G_CALLBACK(d4x_filters_window_add_delete), edit);	d4x_eschandler_init(GTK_WIDGET(edit),edit);	gtk_widget_show_all(GTK_WIDGET(edit));	gtk_window_set_modal (GTK_WINDOW(edit),TRUE);	gtk_window_set_transient_for (GTK_WINDOW (edit), GTK_WINDOW(d4x_filters_window));};static gboolean d4x_filters_view_event(GtkTreeView *view,GdkEventButton *event,gpointer data) {	if (event && event->type==GDK_2BUTTON_PRESS && event->button==1){		d4x_filters_window_edit();		return TRUE;	};	return FALSE;};void d4x_filters_window_delete(){	if (d4x_filters_changed) FILTERS_DB->save_to_ntrc();	gtk_widget_destroy(d4x_filters_window);	d4x_filters_window=(GtkWidget*)NULL;};void d4x_filters_window_del(){	GtkTreeSelection *sel=gtk_tree_view_get_selection(d4x_filters_view);	GtkTreeModel *model;	GtkTreeIter iter;	if (gtk_tree_selection_get_selected(sel,&model,&iter)){		GValue val={0,};		gtk_tree_model_get_value(model,&iter,1,&val);		d4xFNode *node=(d4xFNode*)g_value_get_pointer(&val);		g_value_unset(&val);		gtk_list_store_remove(GTK_LIST_STORE(model),&(node->iter));		FILTERS_DB->del(node);		delete(node);	};};void d4x_filters_window_add(d4xFNode *node){	gtk_list_store_append(d4x_filters_store,&(node->iter));	gtk_list_store_set(d4x_filters_store,&(node->iter),			   0,node->filter->name.get(),			   1,node,			   -1);};void d4x_filters_window_destroy(){	if (d4x_filters_window)		gtk_widget_destroy(d4x_filters_window);	d4x_filters_window=(GtkWidget*)NULL;};void d4x_filters_window_init(){	if (d4x_filters_window) {		gdk_window_show(d4x_filters_window->window);		return;	};	d4x_filters_changed=0;	d4x_filters_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);	gtk_window_set_title(GTK_WINDOW (d4x_filters_window),_("Filters"));	gtk_window_set_wmclass(GTK_WINDOW(d4x_filters_window),			       "D4X_Filters","D4X");	gtk_window_set_position(GTK_WINDOW(d4x_filters_window),GTK_WIN_POS_CENTER);	gtk_widget_set_size_request(d4x_filters_window,-1,450);	gtk_container_set_border_width(GTK_CONTAINER(d4x_filters_window),5);	GtkListStore *list_store=gtk_list_store_new(2,						    G_TYPE_STRING,						    G_TYPE_POINTER);	d4x_filters_store=list_store;	d4x_filters_view = GTK_TREE_VIEW(gtk_tree_view_new_with_model(GTK_TREE_MODEL(list_store)));	GtkCellRenderer *renderer = gtk_cell_renderer_text_new();	GtkTreeViewColumn *col=gtk_tree_view_column_new_with_attributes(_("filter name"),									renderer,									"text",0,									NULL);	gtk_tree_view_append_column(d4x_filters_view,col);	gtk_tree_view_column_set_visible(col,TRUE);		g_signal_connect(G_OBJECT(d4x_filters_view),			 "event",			 G_CALLBACK(d4x_filters_view_event),			 NULL);//	gtk_clist_set_selection_mode(GTK_CLIST(clist),GTK_SELECTION_EXTENDED);	GtkWidget *scroll_window=gtk_scrolled_window_new((GtkAdjustment *)NULL,(GtkAdjustment *)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(d4x_filters_view));	GtkWidget *button=gtk_button_new_with_label(_("Ok"));	GtkWidget *add_button=gtk_button_new_with_label(_("Add new"));	GtkWidget *edit_button=gtk_button_new_with_label(_("Edit"));	GtkWidget *del_button=gtk_button_new_with_label(_("Remove"));	GTK_WIDGET_SET_FLAGS(button,GTK_CAN_DEFAULT);	GTK_WIDGET_SET_FLAGS(edit_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),edit_button,FALSE,FALSE,0);	gtk_box_pack_end(GTK_BOX(hbox),button,FALSE,FALSE,0);	gtk_container_add(GTK_CONTAINER(d4x_filters_window),vbox);	gtk_window_set_default(GTK_WINDOW(d4x_filters_window),button);	FILTERS_DB->print();	gtk_widget_show_all(d4x_filters_window);//	g_signal_connect(G_OBJECT(clist),"event",G_CALLBACK(face_pass_list_event_callback),this);	g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(d4x_filters_window_delete),NULL);	g_signal_connect(G_OBJECT(del_button),"clicked",G_CALLBACK(d4x_filters_window_del),NULL);	g_signal_connect(G_OBJECT(add_button),"clicked",G_CALLBACK(d4x_filters_window_add_new),NULL);	g_signal_connect(G_OBJECT(edit_button),"clicked",G_CALLBACK(d4x_filters_window_edit),NULL);	g_signal_connect(G_OBJECT(d4x_filters_window),"delete_event",G_CALLBACK(d4x_filters_window_delete),NULL);	d4x_eschandler_init(d4x_filters_window,NULL);};

⌨️ 快捷键说明

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