📄 mywidget.cc
字号:
}; d4x_filter_edit_type=g_type_register_static(GTK_TYPE_WINDOW,"d4xFilterEdit",&info,(GTypeFlags)0); }; return d4x_filter_edit_type;};GtkWidget *d4x_filter_edit_new(d4xFNode *node){ d4xFilterEdit *edit=(d4xFilterEdit *)g_object_new(d4x_filter_edit_get_type(),NULL); edit->node=node; node->filter->print(edit); if (node->filter->name.get()) text_to_combo(edit->name,node->filter->name.get()); GTK_TOGGLE_BUTTON(edit->include)->active=node->filter->default_inc; GTK_TOGGLE_BUTTON(edit->exclude)->active=!node->filter->default_inc; return GTK_WIDGET(edit);};/**********************************************************/static void d4x_filter_sel_destroy(GtkObject *widget){ g_return_if_fail(widget!=NULL); if (GTK_OBJECT_CLASS (filtersel_parent_class)->destroy) (* GTK_OBJECT_CLASS (filtersel_parent_class)->destroy) (widget);};static void d4x_filter_sel_init(d4xFilterSel *sel){ gtk_window_set_wmclass(GTK_WINDOW(sel), "D4X_FilterSel","D4X"); gtk_widget_set_size_request(GTK_WIDGET(sel),-1,300); gtk_window_set_title(GTK_WINDOW(sel),_("Select filter")); GtkListStore *list_store = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_POINTER); sel->view = GTK_TREE_VIEW(gtk_tree_view_new_with_model(GTK_TREE_MODEL(list_store))); GtkCellRenderer *renderer; GtkTreeViewColumn *col; renderer = gtk_cell_renderer_text_new(); col=gtk_tree_view_column_new_with_attributes(_("filter name"), renderer, "text",0, NULL); gtk_tree_view_set_headers_visible(sel->view,TRUE); gtk_tree_view_column_set_visible(col,TRUE); gtk_tree_view_append_column(sel->view,col); 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(sel->view)); sel->ok=gtk_button_new_with_label(_("Ok")); sel->cancel=gtk_button_new_with_label(_("Cancel")); GTK_WIDGET_SET_FLAGS(sel->ok,GTK_CAN_DEFAULT); GTK_WIDGET_SET_FLAGS(sel->cancel,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),sel->ok,FALSE,FALSE,0); gtk_box_pack_end(GTK_BOX(hbox),sel->cancel,FALSE,FALSE,0); gtk_container_add(GTK_CONTAINER(sel),vbox); gtk_window_set_default(GTK_WINDOW(sel),sel->ok); FILTERS_DB->print(sel);};static void d4x_filter_sel_class_init(d4xFilterSelClass *klass){ GtkObjectClass *object_class=(GtkObjectClass *)klass; object_class->destroy=d4x_filter_sel_destroy; filtersel_parent_class=(GtkWidgetClass *)gtk_type_class(gtk_window_get_type());};guint d4x_filter_sel_get_type(){ static guint d4x_filter_sel_type=0; if (!d4x_filter_sel_type){ GTypeInfo info={ sizeof(d4xFilterSelClass), NULL,NULL, (GClassInitFunc) d4x_filter_sel_class_init, NULL,NULL, sizeof(d4xFilterSel), 0, (GInstanceInitFunc)d4x_filter_sel_init }; d4x_filter_sel_type=g_type_register_static (GTK_TYPE_WINDOW,"d4xFilterSel",&info,(GTypeFlags)0); }; return d4x_filter_sel_type;};GtkWidget *d4x_filter_sel_new(){ d4xFilterSel *sel=(d4xFilterSel *)g_object_new(d4x_filter_sel_get_type(),NULL); gtk_widget_show_all(GTK_WIDGET(sel)); return GTK_WIDGET(sel);};void d4x_filter_sel_add(d4xFilterSel *sel,d4xFNode *node){ GtkListStore *list_store=GTK_LIST_STORE(gtk_tree_view_get_model(sel->view)); GtkTreeIter iter; gtk_list_store_append(list_store, &iter); gtk_list_store_set(list_store, &iter, 0,node->filter->name.get(), 1,node, -1);};void d4x_filter_sel_to_combo(d4xFilterSel *sel,GtkWidget *combo){ GtkTreeSelection *s=gtk_tree_view_get_selection(sel->view); GtkTreeIter iter; GtkTreeModel *model; if (gtk_tree_selection_get_selected(s,&model,&iter)){ GValue val={0,}; gtk_tree_model_get_value(model,&iter,0,&val); const char *name=g_value_get_string(&val); text_to_combo(combo,(char*)name); g_value_unset(&val); }else text_to_combo(combo,"");};/********************************************************/static void d4x_links_sel_destroy(GtkObject *widget){ g_return_if_fail(widget!=NULL); if (GTK_OBJECT_CLASS (linkssel_parent_class)->destroy) (* GTK_OBJECT_CLASS (linkssel_parent_class)->destroy) (widget);};static void _foreach_remove_prepare_(GtkTreeModel *model,GtkTreePath *path, GtkTreeIter *iter,gpointer p){ tQueue *q=(tQueue*)p; tmpIterNode *i=new tmpIterNode(iter); q->insert(i);};void d4x_links_sel_del(d4xLinksSel *sel,GtkTreeIter *iter){ GtkListStore *store=GTK_LIST_STORE(gtk_tree_view_get_model(sel->view)); gtk_list_store_remove(store,iter);};static void d4x_links_sel_remove(GtkWidget *button,d4xLinksSel *sel){ GtkTreeSelection *s=gtk_tree_view_get_selection(sel->view); tQueue q; gtk_tree_selection_selected_foreach(s, _foreach_remove_prepare_, &q); tNode *t=q.last(); while(t){ d4x_links_sel_del(sel,((tmpIterNode*)t)->iter); t=t->next; };};void d4x_links_sel_set(d4xLinksSel *sel,GtkTreeIter *iter,char *url,gpointer p){ GtkListStore *list_store=GTK_LIST_STORE(gtk_tree_view_get_model(sel->view)); gtk_list_store_set(list_store, iter, 0,url, 1,p, -1);};gpointer d4x_links_sel_get_data(d4xLinksSel *sel,GtkTreeIter *iter){ GtkTreeModel *model=gtk_tree_view_get_model(sel->view); GValue val={0,}; gtk_tree_model_get_value(model,iter,1,&val); gpointer p=g_value_get_pointer(&val); g_value_unset(&val); return(p);};void d4x_links_sel_selected_foreach(d4xLinksSel *sel,d4xLinksSelForeachFunc func,gpointer data){ GtkTreeSelection *s=gtk_tree_view_get_selection(sel->view); GtkTreeModel *model=gtk_tree_view_get_model(sel->view); tQueue q; gtk_tree_selection_selected_foreach(s, _foreach_remove_prepare_, &q); tNode *t=q.last(); while(t){ GValue val={0,}; gtk_tree_model_get_value(model,((tmpIterNode*)t)->iter,1,&val); gpointer p=g_value_get_pointer(&val); g_value_unset(&val); gtk_tree_model_get_value(model,((tmpIterNode*)t)->iter,0,&val); const gchar *s=g_value_get_string(&val); func(sel,((tmpIterNode*)t)->iter,s,p,data); g_value_unset(&val); t=t->next; };};static void d4x_links_sel_cancel(GtkWidget *button,d4xLinksSel *sel){ gtk_widget_destroy(GTK_WIDGET(sel));}static void d4x_links_sel_delete(GtkWindow *window, GdkEvent *event, d4xLinksSel *sel){ gtk_widget_destroy(GTK_WIDGET(sel));};static void d4x_links_sel_init(d4xLinksSel *sel){ gtk_window_set_wmclass(GTK_WINDOW(sel), "D4X_LinksSel","D4X"); d4x_eschandler_init(GTK_WIDGET(sel),sel); gtk_widget_set_size_request(GTK_WIDGET(sel),-1,300); gtk_window_set_title(GTK_WINDOW(sel),_("List of links")); GtkListStore *list_store = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_POINTER); sel->view = GTK_TREE_VIEW(gtk_tree_view_new_with_model(GTK_TREE_MODEL(list_store))); GtkCellRenderer *renderer; GtkTreeViewColumn *col; renderer = gtk_cell_renderer_text_new(); col=gtk_tree_view_column_new_with_attributes(_("URL"), renderer, "text",0, NULL); gtk_tree_view_set_headers_visible(sel->view,TRUE); gtk_tree_view_column_set_visible(col,TRUE); gtk_tree_view_append_column(sel->view,col); col=gtk_tree_view_get_column(sel->view,0); GtkWidget *scroll_window=gtk_scrolled_window_new((GtkAdjustment*)NULL,(GtkAdjustment*)NULL); gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW (scroll_window), GTK_SHADOW_IN); 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(sel->view)); sel->ok=gtk_button_new_with_label(_("Ok")); sel->remove=gtk_button_new_with_label(_("Remove")); sel->cancel=gtk_button_new_with_label(_("Cancel")); GTK_WIDGET_SET_FLAGS(sel->ok,GTK_CAN_DEFAULT); GTK_WIDGET_SET_FLAGS(sel->remove,GTK_CAN_DEFAULT); GTK_WIDGET_SET_FLAGS(sel->cancel,GTK_CAN_DEFAULT); GtkWidget *vbox=gtk_vbox_new(FALSE,0); sel->hbbox=gtk_hbutton_box_new(); gtk_box_set_spacing(GTK_BOX(vbox),5); gtk_box_set_spacing(GTK_BOX(sel->hbbox),5); gtk_box_pack_start(GTK_BOX(vbox),scroll_window,TRUE,TRUE,0); gtk_box_pack_start(GTK_BOX(vbox),sel->hbbox,FALSE,FALSE,0); gtk_box_pack_end(GTK_BOX(sel->hbbox),sel->ok,FALSE,FALSE,0); gtk_box_pack_end(GTK_BOX(sel->hbbox),sel->remove,FALSE,FALSE,0); gtk_container_add(GTK_CONTAINER(sel),vbox); gtk_window_set_default(GTK_WINDOW(sel),sel->ok);};static void d4x_links_sel_class_init(d4xLinksSelClass *klass){ GtkObjectClass *object_class=(GtkObjectClass *)klass; object_class->destroy=d4x_links_sel_destroy; linkssel_parent_class=(GtkWidgetClass *)gtk_type_class(gtk_window_get_type());};guint d4x_links_sel_get_type(){ static guint d4x_links_sel_type=0; if (!d4x_links_sel_type){ GTypeInfo info={ sizeof(d4xLinksSelClass), NULL,NULL, (GClassInitFunc) d4x_links_sel_class_init, NULL,NULL, sizeof(d4xLinksSel), 0, (GInstanceInitFunc)d4x_links_sel_init }; d4x_links_sel_type = g_type_register_static (GTK_TYPE_WINDOW,"d4xLinksSel",&info,(GTypeFlags)0); }; return d4x_links_sel_type;};GtkWidget *d4x_links_sel_new_with_add(){ d4xLinksSel *sel=(d4xLinksSel *)g_object_new(d4x_links_sel_get_type(),NULL); sel->find=gtk_button_new_with_label(_("Find")); GTK_WIDGET_SET_FLAGS(sel->find,GTK_CAN_DEFAULT); gtk_box_pack_end(GTK_BOX(sel->hbbox),sel->find,FALSE,FALSE,0); gtk_box_pack_end(GTK_BOX(sel->hbbox),sel->cancel,FALSE,FALSE,0); GList *c=gtk_container_get_children(GTK_CONTAINER(sel->cancel)); GtkLabel *label=(GtkLabel *)(c->data); gtk_label_set_text(label,_("Add")); g_list_free(c); gtk_widget_show_all(GTK_WIDGET(sel)); return GTK_WIDGET(sel);};GtkWidget *d4x_links_sel_new(){ d4xLinksSel *sel=(d4xLinksSel *)g_object_new(d4x_links_sel_get_type(),NULL); gtk_box_pack_end(GTK_BOX(sel->hbbox),sel->cancel,FALSE,FALSE,0); g_signal_connect(G_OBJECT(sel),"delete_event", G_CALLBACK(d4x_links_sel_delete), sel); g_signal_connect(G_OBJECT(sel->remove),"clicked", G_CALLBACK(d4x_links_sel_remove), sel); g_signal_connect(G_OBJECT(sel->cancel),"clicked", G_CALLBACK(d4x_links_sel_cancel), sel); gtk_widget_show_all(GTK_WIDGET(sel)); return GTK_WIDGET(sel);};void d4x_links_sel_add(d4xLinksSel *sel,char *url,gpointer p){ GtkListStore *list_store=GTK_LIST_STORE(gtk_tree_view_get_model(sel->view)); GtkTreeIter iter; gtk_list_store_append(list_store, &iter); gtk_list_store_set(list_store, &iter, 0,url, 1,p, -1);};struct d4xSelTmp{ gpointer data; d4xLinksSelForeachFunc func; d4xLinksSel *sel;};static gboolean _tmp_sel_foreach_(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data){ d4xSelTmp *tmp=(d4xSelTmp *)data; GValue val={0,}; gtk_tree_model_get_value(model,iter,1,&val); gpointer p=g_value_get_pointer(&val); g_value_unset(&val); gtk_tree_model_get_value(model,iter,0,&val); const gchar *s=g_value_get_string(&val); tmp->func(tmp->sel,iter,s,p,tmp->data); g_value_unset(&val); return FALSE;};void d4x_links_sel_foreach(d4xLinksSel *sel,d4xLinksSelForeachFunc func,gpointer data){ GtkTreeModel *store=gtk_tree_view_get_model(sel->view); d4xSelTmp a={data,func,sel}; gtk_tree_model_foreach(store,_tmp_sel_foreach_,&a);};void d4x_links_sel_clear(d4xLinksSel *sel){ GtkListStore *store=GTK_LIST_STORE(gtk_tree_view_get_model(sel->view)); gtk_list_store_clear(store);};/********************************************************/static void d4x_string_edit_destroy(GtkObject *widget){ g_return_if_fail(widget!=NULL); if (GTK_OBJECT_CLASS (stringedit_parent_class)->destroy) (* GTK_OBJECT_CLASS (stringedit_parent_class)->destroy) (widget);};static void d4x_string_edit_class_init(d4xStringEditClass *klass){ GtkObjectClass *object_class=(GtkObjectClass *)klass; object_class->destroy=d4x_string_edit_destroy; stringedit_parent_class=(GtkWidgetClass *)gtk_type_class(gtk_window_get_type());};static void d4x_string_edit_init(d4xStringEdit *sel){ gtk_window_set_wmclass(GTK_WINDOW(sel), "D4X_EditString","D4X"); d4x_eschandler_init(GTK_WIDGET(sel),sel); gtk_widget_set_size_request(GTK_WIDGET(sel),400,-1); GtkWidget *vbox=gtk_vbox_new(FALSE,0); GtkWidget *hbbox=gtk_hbutton_box_new(); sel->ok=gtk_button_new_with_label(_("Ok")); sel->cancel=gtk_button_new_with_label(_("Cancel")); GTK_WIDGET_SET_FLAGS(sel->ok,GTK_CAN_DEFAULT); GTK_WIDGET_SET_FLAGS(sel->cancel,GTK_CAN_DEFAULT); gtk_box_set_spacing(GTK_BOX(vbox),5); gtk_box_set_spacing(GTK_BOX(hbbox),5); sel->entry=(GtkEntry*)gtk_entry_new(); gtk_box_pack_start(GTK_BOX(vbox),GTK_WIDGET(sel->entry),TRUE,FALSE,0); gtk_box_pack_start(GTK_BOX(vbox),hbbox,TRUE,FALSE,0); gtk_box_pack_end(GTK_BOX(hbbox),sel->ok,FALSE,FALSE,0); gtk_box_pack_end(GTK_BOX(hbbox),sel->cancel,FALSE,FALSE,0); gtk_container_add(GTK_CONTAINER(sel),vbox); gtk_window_set_default(GTK_WINDOW(sel),sel->cancel);};guint d4x_string_edit_get_type(){ static guint d4x_string_edit_type=0; if (!d4x_string_edit_type){ GTypeInfo info={ sizeof(d4xStringEditClass), NULL,NULL, (GClassInitFunc) d4x_string_edit_class_init, NULL,NULL, sizeof(d4xStringEdit), 0, (GInstanceInitFunc)d4x_string_edit_init }; d4x_string_edit_type = g_type_register_static (GTK_TYPE_WINDOW,"d4xStringEdit",&info,(GTypeFlags)0); }; return d4x_string_edit_type;};GtkWidget *d4x_string_edit_new(){ d4xStringEdit *edit=(d4xStringEdit *)g_object_new(d4x_string_edit_get_type(),NULL); gtk_widget_show_all(GTK_WIDGET(edit)); return GTK_WIDGET(edit);};/********************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -