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

📄 mywidget.cc

📁 一个功能比较强的下载软件
💻 CC
📖 第 1 页 / 共 3 页
字号:
		      "head",		      "iframe",		      "img",		      "input",		      "ins",		      "layer",		      "link",		      "meta",		      "object",		      "overlay",		      "q",		      "table",		      "tbody",		      "td",		      "tfoot",		      "th",		      "thead",		      "script",		      "sound",		      "span"	};	for (unsigned int i=0;i<sizeof(tags)/sizeof(char*);i++)		list = g_list_append (list, tags[i]);	gtk_combo_set_popdown_strings (GTK_COMBO (edit->tag), list);	g_list_free(list);	gtk_editable_set_editable(GTK_EDITABLE(GTK_COMBO(edit->tag)->entry),FALSE);	gtk_box_pack_start(GTK_BOX(hbox),edit->tag,TRUE,TRUE,0);	gtk_box_pack_start(GTK_BOX(hbox),label,FALSE,FALSE,0);	gtk_box_pack_start(GTK_BOX(edit->vbox),hbox,FALSE,FALSE,0);		hbox=gtk_hbox_new(FALSE,0);	edit->include=gtk_radio_button_new_with_label((GSList *)NULL,						      _("include"));	edit->exclude=gtk_radio_button_new_with_label(gtk_radio_button_get_group(GTK_RADIO_BUTTON(edit->include)),						      _("exclude"));	gtk_box_pack_start(GTK_BOX(hbox),edit->include,FALSE,FALSE,0);	gtk_box_pack_start(GTK_BOX(hbox),edit->exclude,FALSE,FALSE,0);	gtk_box_pack_start(GTK_BOX(edit->vbox),hbox,FALSE,FALSE,0);		edit->ok_button=gtk_button_new_with_label(_("Ok"));	edit->cancel_button=gtk_button_new_with_label(_("Cancel"));	GTK_WIDGET_SET_FLAGS(edit->ok_button,GTK_CAN_DEFAULT);	GTK_WIDGET_SET_FLAGS(edit->cancel_button,GTK_CAN_DEFAULT);	hbox=gtk_hbutton_box_new();	gtk_box_set_spacing(GTK_BOX(hbox),5);	gtk_box_pack_start(GTK_BOX(hbox),edit->ok_button,TRUE,TRUE,0);	gtk_box_pack_start(GTK_BOX(hbox),edit->cancel_button,TRUE,TRUE,0);	gtk_box_pack_start(GTK_BOX(edit->vbox),hbox,TRUE,FALSE,0);	gtk_container_add(GTK_CONTAINER(edit),edit->vbox);	gtk_window_set_default(GTK_WINDOW(edit),edit->cancel_button);};guint d4x_rule_edit_get_type(){	static guint d4x_rule_edit_type=0;	if (!d4x_rule_edit_type){		GTypeInfo info={			sizeof(d4xRuleEditClass),			NULL,NULL,			(GClassInitFunc) d4x_rule_edit_class_init,			NULL,NULL,			sizeof(d4xRuleEdit),			0,			(GInstanceInitFunc)d4x_rule_edit_init		};		d4x_rule_edit_type=g_type_register_static(GTK_TYPE_WINDOW,"d4xRuleEdit",&info,(GTypeFlags)0);	};	return d4x_rule_edit_type;};GtkWidget *d4x_rule_edit_new(d4xRule *rule){	d4xRuleEdit *edit=(d4xRuleEdit *)g_object_new(d4x_rule_edit_get_type(),NULL);	edit->rule=rule;	if (rule){		if (rule->host.get())			text_to_combo(edit->host,rule->host.get());		if (rule->proto)			text_to_combo(edit->proto,get_name_by_proto(rule->proto));		if (rule->path.get())			text_to_combo(edit->path,rule->path.get());		if (rule->file.get())			text_to_combo(edit->file,rule->file.get());		if (rule->params.get())			text_to_combo(edit->params,rule->params.get());		if (rule->tag.get())			text_to_combo(edit->tag,rule->tag.get());		GTK_TOGGLE_BUTTON(edit->include)->active=rule->include;		GTK_TOGGLE_BUTTON(edit->exclude)->active=!rule->include;	};	return GTK_WIDGET(edit);};void d4x_rule_edit_delete(GtkWidget *widget, GdkEvent *event,GtkWidget *edit){	gtk_widget_destroy(edit);};GtkWidget *d4x_rule_edit_new_full(d4xRule *rule){	d4xRuleEdit *edit=(d4xRuleEdit *)d4x_rule_edit_new(rule);	g_signal_connect(G_OBJECT(edit->ok_button),"clicked",			   G_CALLBACK(d4x_rule_edit_ok),edit);	g_signal_connect(G_OBJECT(edit->cancel_button),"clicked",			   G_CALLBACK(d4x_rule_edit_cancel),edit);	g_signal_connect(G_OBJECT(edit),"delete_event",			   G_CALLBACK(d4x_rule_edit_delete), edit);	d4x_eschandler_init(GTK_WIDGET(edit),edit);	return GTK_WIDGET(edit);};/************************************************************/enum {	FE_COL_INC,	FE_COL_PROTO,	FE_COL_HOST,	FE_COL_PATH,	FE_COL_FILE,	FE_COL_PARAMS,	FE_COL_TAG,	FE_COL_RULE,	FE_COL_LAST};static void d4x_filter_edit_destroy(GtkObject *widget){	g_return_if_fail(widget!=NULL);	if (GTK_OBJECT_CLASS (filter_parent_class)->destroy)		(* GTK_OBJECT_CLASS (filter_parent_class)->destroy) (widget);};void d4x_filter_edit_add_rule(d4xFilterEdit *edit,d4xRule *rule){	gtk_list_store_append(edit->store,&(rule->iter));	gtk_list_store_set(edit->store,&(rule->iter),			   FE_COL_INC,rule->include?(char*)"+":(char*)("-"),			   FE_COL_PROTO,rule->proto?get_name_by_proto(rule->proto):(char*)(""),			   FE_COL_HOST,rule->host.get()?rule->host.get():(char*)(""),			   FE_COL_PATH,rule->path.get()?rule->path.get():(char*)(""),			   FE_COL_FILE,rule->file.get()?rule->file.get():(char*)(""),			   FE_COL_PARAMS,rule->params.get()?rule->params.get():(char*)(""),			   FE_COL_TAG,rule->tag.get()?rule->tag.get():(char*)(""),			   FE_COL_RULE,rule,			   -1);};static void d4x_filter_edit_add_ok(GtkWidget *widget,d4xRuleEdit *edit){	((d4xFilterEdit *)(edit->filter_edit))->node->filter->insert(edit->rule);	d4x_rule_edit_apply(edit);	d4x_filter_edit_add_rule((d4xFilterEdit *)(edit->filter_edit),				 edit->rule);	gtk_widget_destroy(GTK_WIDGET(edit));};static void d4x_filter_edit_add_cancel(GtkWidget *widget,d4xRuleEdit *edit){	delete(edit->rule);	gtk_widget_destroy(GTK_WIDGET(edit));};static void d4x_filter_edit_add_delete(GtkWidget *widget,				  GdkEvent *event,				  d4xRuleEdit *edit){	delete(edit->rule);	gtk_widget_destroy(GTK_WIDGET(edit));};void d4x_filter_edit_add(GtkWidget *widget,d4xFilterEdit *edit){	d4xRule *rule=new d4xRule;	d4xRuleEdit *ruleedit=(d4xRuleEdit *)d4x_rule_edit_new(rule);	gtk_widget_show_all(GTK_WIDGET(ruleedit));	gtk_window_set_modal (GTK_WINDOW(ruleedit),TRUE);	gtk_window_set_transient_for (GTK_WINDOW (ruleedit),				      GTK_WINDOW (edit));	ruleedit->filter_edit=(GtkWidget *)edit;	g_signal_connect(G_OBJECT(ruleedit->ok_button),"clicked",			   G_CALLBACK(d4x_filter_edit_add_ok),			   ruleedit);	g_signal_connect(G_OBJECT(ruleedit->cancel_button),"clicked",			   G_CALLBACK(d4x_filter_edit_add_cancel),			   ruleedit);	g_signal_connect(G_OBJECT(ruleedit),"delete_event",			   G_CALLBACK(d4x_filter_edit_add_delete),			   ruleedit);	d4x_eschandler_init(GTK_WIDGET(ruleedit),ruleedit);};static void d4x_filter_edit_edit_ok(GtkWidget *widget,d4xRuleEdit *edit){	d4xFilterEdit *filtedit=(d4xFilterEdit *)(edit->filter_edit);	d4x_rule_edit_apply(edit);	d4xRule *rule=edit->rule;	gtk_list_store_set(filtedit->store,&(rule->iter),			   FE_COL_INC,rule->include?"+":"-",			   FE_COL_PROTO,rule->proto?get_name_by_proto(rule->proto):"",			   FE_COL_HOST,rule->host.get()?rule->host.get():"",			   FE_COL_PATH,rule->path.get()?rule->path.get():"",			   FE_COL_FILE,rule->file.get()?rule->file.get():"",			   FE_COL_PARAMS,rule->params.get()?rule->params.get():"",			   FE_COL_TAG,rule->tag.get()?rule->tag.get():"",			   -1);	gtk_widget_destroy(GTK_WIDGET(edit));};static void d4x_filter_edit_edit(GtkWidget *widget,d4xFilterEdit *edit){	GtkTreeSelection *sel=gtk_tree_view_get_selection(edit->view);	GtkTreeModel *model;	GtkTreeIter iter;	if (gtk_tree_selection_get_selected(sel,&model,&iter)){		GValue val={0,};		gtk_tree_model_get_value(model,&iter,FE_COL_RULE,&val);		d4xRule *rule=(d4xRule *)g_value_get_pointer(&val);		g_value_unset(&val);		d4xRuleEdit *ruleedit=(d4xRuleEdit *)d4x_rule_edit_new(rule);		ruleedit->filter_edit=(GtkWidget *)edit;		g_signal_connect(G_OBJECT(ruleedit->ok_button),"clicked",				   G_CALLBACK(d4x_filter_edit_edit_ok),				   ruleedit);		g_signal_connect(G_OBJECT(ruleedit->cancel_button),"clicked",				   G_CALLBACK(d4x_rule_edit_cancel),				   ruleedit);		g_signal_connect(G_OBJECT(ruleedit),"delete_event",				   G_CALLBACK(d4x_rule_edit_delete),				   ruleedit);		d4x_eschandler_init(GTK_WIDGET(ruleedit),ruleedit);		gtk_widget_show_all(GTK_WIDGET(ruleedit));		gtk_window_set_modal (GTK_WINDOW(ruleedit),TRUE);		gtk_window_set_transient_for (GTK_WINDOW (ruleedit),					      GTK_WINDOW (edit));	};};static void d4x_filter_edit_del(GtkWidget *widget,d4xFilterEdit *edit){	GtkTreeSelection *sel=gtk_tree_view_get_selection(edit->view);	GtkTreeModel *model;	GtkTreeIter iter;	if (gtk_tree_selection_get_selected(sel,&model,&iter)){		GValue val={0,};		gtk_tree_model_get_value(model,&iter,FE_COL_RULE,&val);		d4xRule *rule=(d4xRule *)g_value_get_pointer(&val);		g_value_unset(&val);		gtk_list_store_remove(edit->store,&(rule->iter));		edit->node->filter->del(rule);		delete(rule);	};};static void d4x_filter_edit_down(GtkWidget *widget,d4xFilterEdit *edit){	GtkTreeSelection *sel=gtk_tree_view_get_selection(edit->view);	GtkTreeModel *model;	GtkTreeIter iter;	if (gtk_tree_selection_get_selected(sel,&model,&iter)){		GValue val={0,};		gtk_tree_model_get_value(model,&iter,FE_COL_RULE,&val);		d4xRule *rule=(d4xRule *)g_value_get_pointer(&val);		g_value_unset(&val);		if (rule->prev){			tNode *next=rule->prev;			gtk_tree_model_swap_rows_l(GTK_TREE_MODEL(edit->store),						   &(rule->iter),&(((d4xRule*)next)->iter));			d4xFilter *filter=edit->node->filter;			filter->del(next);			filter->insert_before(next,rule);			GtkTreeIter iter_tmp;			memcpy(&iter_tmp,&(((d4xRule*)next)->iter),sizeof(rule->iter));			memcpy(&(((d4xRule*)next)->iter),&(rule->iter),sizeof(rule->iter));			memcpy(&(rule->iter),&iter_tmp,sizeof(rule->iter));			gtk_tree_selection_select_iter(sel,&(rule->iter));		};	};};static void d4x_filter_edit_up(GtkWidget *widget,d4xFilterEdit *edit){	GtkTreeSelection *sel=gtk_tree_view_get_selection(edit->view);	GtkTreeModel *model;	GtkTreeIter iter;	if (gtk_tree_selection_get_selected(sel,&model,&iter)){		GValue val={0,};		gtk_tree_model_get_value(model,&iter,FE_COL_RULE,&val);		d4xRule *rule=(d4xRule *)g_value_get_pointer(&val);		g_value_unset(&val);		if (rule->next){			tNode *next=rule->next;			gtk_tree_model_swap_rows_l(GTK_TREE_MODEL(edit->store),						   &(rule->iter),&(((d4xRule*)next)->iter));			d4xFilter *filter=edit->node->filter;			filter->del(rule);			filter->insert_before(rule,next);			GtkTreeIter iter_tmp;			memcpy(&iter_tmp,&(((d4xRule*)next)->iter),sizeof(rule->iter));			memcpy(&(((d4xRule*)next)->iter),&(rule->iter),sizeof(rule->iter));			memcpy(&(rule->iter),&iter_tmp,sizeof(rule->iter));			gtk_tree_selection_select_iter(sel,&(rule->iter));		};	};};static gboolean d4x_filter_edit_select(GtkTreeView *view,GdkEventButton *event,d4xFilterEdit *edit) {	if (event && event->type==GDK_2BUTTON_PRESS && event->button==1){		d4x_filter_edit_edit(GTK_WIDGET(view),edit);		return TRUE;	};	return FALSE;};static void d4x_filter_edit_init(d4xFilterEdit *edit){	gtk_window_set_title(GTK_WINDOW (edit),_("Modify filter"));	gtk_widget_set_size_request(GTK_WIDGET (edit),-1,400);	edit->vbox=gtk_vbox_new(FALSE,0);	gchar *titles[]={"",_("protocol"),_("host"),_("path"),_("file"),"?",_("tag")};	edit->store=gtk_list_store_new(FE_COL_LAST,				       G_TYPE_STRING,				       G_TYPE_STRING,				       G_TYPE_STRING,				       G_TYPE_STRING,				       G_TYPE_STRING,				       G_TYPE_STRING,				       G_TYPE_STRING,				       G_TYPE_POINTER);	edit->view=GTK_TREE_VIEW(gtk_tree_view_new_with_model(GTK_TREE_MODEL(edit->store)));	GtkCellRenderer *renderer;	GtkTreeViewColumn *col;	for (int i=0;i<FE_COL_RULE;i++){			renderer = gtk_cell_renderer_text_new ();			col=gtk_tree_view_column_new_with_attributes (titles[i],								      renderer,								      "text",i,								      NULL);			gtk_tree_view_append_column (edit->view, col);	};//	gtk_clist_set_selection_mode(GTK_CLIST(clist),GTK_SELECTION_EXTENDED);	g_signal_connect(G_OBJECT(edit->view),			   "event",			   G_CALLBACK(d4x_filter_edit_select),			   edit);	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(edit->view));	gtk_box_pack_start(GTK_BOX(edit->vbox),scroll_window,TRUE,TRUE,0);	edit->include=gtk_radio_button_new_with_label((GSList *)NULL,						      _("include by default"));	edit->exclude=gtk_radio_button_new_with_label(gtk_radio_button_get_group(GTK_RADIO_BUTTON(edit->include)),						      _("exclude by default"));//	edit->include=gtk_check_button_new_with_label(_("include by default"));	gtk_box_pack_start(GTK_BOX(edit->vbox),edit->include,FALSE,FALSE,0);	gtk_box_pack_start(GTK_BOX(edit->vbox),edit->exclude,FALSE,FALSE,0);	GtkWidget *hbox=gtk_hbox_new(FALSE,0);	GtkWidget *label=gtk_label_new(_("Name of filter"));	edit->name=gtk_entry_new();	gtk_box_pack_start(GTK_BOX(hbox),label,TRUE,TRUE,0);	gtk_box_pack_start(GTK_BOX(hbox),edit->name,TRUE,TRUE,0);	gtk_box_pack_start(GTK_BOX(edit->vbox),hbox,FALSE,FALSE,0);	GtkWidget *up=gtk_button_new_with_label(_("Up"));	GtkWidget *add=gtk_button_new_with_label(_("Add rule"));	GtkWidget *down=gtk_button_new_with_label(_("Down"));	hbox=gtk_hbutton_box_new();	gtk_box_set_spacing(GTK_BOX(hbox),5);	gtk_box_pack_start(GTK_BOX(hbox),up,TRUE,TRUE,0);	gtk_box_pack_start(GTK_BOX(hbox),down,TRUE,TRUE,0);	gtk_box_pack_start(GTK_BOX(hbox),add,TRUE,TRUE,0);	gtk_box_pack_start(GTK_BOX(edit->vbox),hbox,FALSE,FALSE,0);	edit->ok=gtk_button_new_with_label(_("Ok"));	GtkWidget *del=gtk_button_new_with_label(_("Remove"));	edit->edit=gtk_button_new_with_label(_("Edit"));	GTK_WIDGET_SET_FLAGS(edit->ok,GTK_CAN_DEFAULT);	GTK_WIDGET_SET_FLAGS(del,GTK_CAN_DEFAULT);	GTK_WIDGET_SET_FLAGS(edit->edit,GTK_CAN_DEFAULT);	hbox=gtk_hbutton_box_new();	gtk_box_set_spacing(GTK_BOX(hbox),5);	gtk_box_pack_start(GTK_BOX(hbox),edit->ok,TRUE,TRUE,0);	gtk_box_pack_start(GTK_BOX(hbox),del,TRUE,TRUE,0);	gtk_box_pack_start(GTK_BOX(hbox),edit->edit,TRUE,TRUE,0);	gtk_box_pack_start(GTK_BOX(edit->vbox),hbox,FALSE,FALSE,0);		gtk_container_add(GTK_CONTAINER(edit),edit->vbox);	gtk_window_set_default(GTK_WINDOW(edit),edit->ok);	g_signal_connect(G_OBJECT(edit->edit),"clicked",			   G_CALLBACK(d4x_filter_edit_edit),edit);	g_signal_connect(G_OBJECT(del),"clicked",			   G_CALLBACK(d4x_filter_edit_del),edit);	g_signal_connect(G_OBJECT(add),"clicked",			   G_CALLBACK(d4x_filter_edit_add),edit);	g_signal_connect(G_OBJECT(up),"clicked",			   G_CALLBACK(d4x_filter_edit_up),edit);	g_signal_connect(G_OBJECT(down),"clicked",			   G_CALLBACK(d4x_filter_edit_down),edit);};static void d4x_filter_edit_class_init(d4xFilterEditClass *klass){	GtkObjectClass *object_class=(GtkObjectClass *)klass;		object_class->destroy=d4x_filter_edit_destroy;	filter_parent_class=(GtkWidgetClass *)gtk_type_class(gtk_window_get_type());};guint d4x_filter_edit_get_type(){	static guint d4x_filter_edit_type=0;	if (!d4x_filter_edit_type){		GTypeInfo info={			sizeof(d4xFilterEditClass),			NULL,NULL,			(GClassInitFunc) d4x_filter_edit_class_init,			NULL,NULL,			sizeof(d4xFilterEdit),			0,			(GInstanceInitFunc)d4x_filter_edit_init

⌨️ 快捷键说明

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