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

📄 gemtreeview.c.svn-base

📁 一款Linux手机上应用的文件管理器 系统要求就安装Gtk+2.0
💻 SVN-BASE
📖 第 1 页 / 共 2 页
字号:
 	     			gtk_widget_grab_focus(view->search_entry);						new_event = gdk_event_copy ((GdkEvent *) event);      ((GdkEventKey *) new_event)->window = view->search_entry->window;			gtk_widget_event (view->search_entry, new_event);			 			ret = GDK_FILTER_REMOVE;   }  }		return ret; }static gbooleangem_tree_view_key_press_event_cb (GtkWidget			*widget,																  GdkEventKey		*event,																  GemTreeView		*view){//	GemTreeView		*view = GEM_TREE_VIEW(widget);	  if (event->keyval == GDK_Up)  {  	GtkTreeView * tree = NULL;  	GtkTreeModel * model = NULL;  	  	tree = (GtkTreeView *)view->treeview;  	model = gtk_tree_view_get_model(tree);  			if (tree && model) 		{			GtkTreePath * path = NULL;						gtk_tree_view_get_cursor(GTK_TREE_VIEW(tree), &path, NULL);	//		g_print("%s(): Up curr = %s  tree = 0x%08x  \n", __FUNCTION__, gtk_tree_path_to_string(path),GTK_TREE_VIEW(tree));						if (path)			{				GtkTreePath * p;				gint count;								count = gtk_tree_model_iter_n_children(model, NULL);				p = gtk_tree_path_copy(path);				gtk_tree_path_prev(path);				g_print("%s(): Up prev = %s\n", __FUNCTION__, gtk_tree_path_to_string(path));				        if (!gtk_tree_path_compare(path, p))        {        	path = gtk_tree_path_new_from_indices(count - 1, -1);        }        gtk_tree_path_free(p);	      gtk_tree_view_set_cursor(GTK_TREE_VIEW(tree), path, NULL, FALSE); 	 		    gtk_tree_path_free(path);  		}  		//			g_object_unref(model);      return TRUE;		}  }  else if (event->keyval == GDK_Down)  {  	GtkTreeView * tree = NULL;  	GtkTreeModel * model = NULL;  	  	tree = (GtkTreeView *)view->treeview;  	model = gtk_tree_view_get_model(tree);  			if (tree && model) 		{			GtkTreePath * path = NULL;						gtk_tree_view_get_cursor(GTK_TREE_VIEW(tree), &path, NULL);	//		g_print("%s(): Down curr = %s\n", __FUNCTION__, gtk_tree_path_to_string(path));						if (path)			{				GtkTreePath * p;				gint count;								count = gtk_tree_model_iter_n_children(model, NULL);				p = gtk_tree_path_new_from_indices(count, -1);				gtk_tree_path_next(path);//				g_print("%s(): Down next = %s\n", __FUNCTION__, gtk_tree_path_to_string(path));				        if (!gtk_tree_path_compare(path, p))        {        	path = gtk_tree_path_new_first();        }        gtk_tree_path_free(p);         			} 			else 			{ 				path = gtk_tree_path_new_first(); 			} 			      gtk_tree_view_set_cursor(GTK_TREE_VIEW(tree), path, NULL, FALSE);//			g_object_unref(model);			      return TRUE;		}  }  else if (event->keyval == GDK_Left ||  				 event->keyval == GDK_Right)	{ 	    GdkEvent *new_event; 	    			new_event = gdk_event_copy ((GdkEvent *) event);      ((GdkEventKey *) new_event)->window = GTK_WIDGET(view)->window;			gtk_widget_event(GTK_WIDGET(view), new_event);			      return TRUE;	}  else if (event->keyval != GDK_Return &&  				 event->keyval != GDK_space)  {		if (!GTK_WIDGET_HAS_FOCUS(view->search_entry))		{ 	    GdkEvent *new_event; 	     			gtk_widget_grab_focus(view->search_entry);						new_event = gdk_event_copy ((GdkEvent *) event);      ((GdkEventKey *) new_event)->window = view->search_entry->window;			gtk_widget_event (view->search_entry, new_event);			      return TRUE;    }  }		return FALSE;  }static gboolean gem_tree_view_focus_in_event_cb (GtkWidget				*widget,																 GdkEventFocus		*event,																 gpointer					 user_data){	GemTreeView * view = (GemTreeView *)widget;	gtk_widget_grab_focus(view->treeview);		return FALSE;}static void gem_tree_view_show_cb(GtkWidget *widget, gpointer user_data){	if(!searchentry_visible)	{		GtkWidget *search_box = NULL;		search_box = gem_tree_view_get_search_box(GEM_TREE_VIEW(widget));		gtk_widget_hide (search_box);	}}static voidgem_tree_view_init (GemTreeView *view){  GtkWidget * scroll_window = NULL;	GtkWidget * vbox = NULL;		view->search_entry = gtk_entry_new();		g_signal_connect_after(G_OBJECT(view->search_entry),												 "key_press_event",												 G_CALLBACK(gem_tree_view_entry_key_press_event_cb),												 view);	g_signal_connect(G_OBJECT(view->search_entry),									 "changed",									 G_CALLBACK(gem_tree_view_entry_changed_cb),									 (gpointer)view);									 //	view->treeview = gtk_tree_view_new();	view->treeview = gem_internal_tree_view_new();	gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(view->treeview), FALSE);//	g_signal_connect(G_OBJECT(view->treeview),//									 "key-press-event",//									 G_CALLBACK(gem_tree_view_key_press_event_cb),//									 (gpointer)view);									 //	g_signal_connect(G_OBJECT(view->treeview),//									 "key-press-event",//									 G_CALLBACK(GEM_TREE_VIEW(view)->key_press),//									 (gpointer)view);/*	gdk_window_add_filter(NULL,                        (GdkFilterFunc)gem_tree_view_key_press_snooper,                        (gpointer)view);									 									 */	scroll_window = gtk_auto_scrolled_window_new();		gtk_auto_scrolled_window_add(GTK_AUTO_SCROLLED_WINDOW(scroll_window),															 view->treeview);		vbox = gtk_vbox_new(FALSE, 0);	gtk_box_pack_start(GTK_BOX(vbox), 										 scroll_window,										 TRUE,										 TRUE,										 0);	if (TRUE)	{		GtkWidget *hbox = NULL;		GtkWidget *search_icon = NULL;		GtkWidget *entry = NULL; 		entry = gtk_entry_new();		hbox = gtk_hbox_new(FALSE, 0);		view->search_box = hbox;		search_icon = gtk_image_new();		if (TRUE)		{			gchar * picpath = NULL;			picpath = g_build_filename(gem_env_get_resource_path(),																 "pixmaps",																 "search.png",																 NULL);			if (gem_resource_load_pic(picpath,																GEM_PIC_NORMAL) == TRUE)			{				GdkPixbuf * pixbuf = NULL;				pixbuf = gem_resource_find_pic(picpath,																			 GEM_PIC_NORMAL);				gtk_image_set_from_pixbuf(GTK_IMAGE(search_icon),																	pixbuf);			}			g_free(picpath);		}				gtk_box_pack_start(GTK_BOX(hbox), search_icon, FALSE, FALSE, 5);		gtk_box_pack_start(GTK_BOX(hbox), view->search_entry, TRUE, TRUE, 0);		gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);	}		if (TRUE)	{		GtkWidget * eventbox = NULL;		eventbox = gtk_event_box_new();				GTK_WIDGET_SET_FLAGS(eventbox, GTK_CAN_FOCUS);		gtk_widget_set_events(eventbox, GDK_ALL_EVENTS_MASK);		gtk_event_box_set_above_child(GTK_EVENT_BOX(eventbox), FALSE);		gtk_event_box_set_visible_window(GTK_EVENT_BOX(eventbox), FALSE);				gtk_container_add(GTK_CONTAINER(eventbox), vbox);		gtk_container_add(GTK_CONTAINER(view), eventbox);	}		GTK_WIDGET_SET_FLAGS(view, GTK_CAN_FOCUS);		g_signal_connect(G_OBJECT(view),									 "focus-in-event",									 G_CALLBACK(gem_tree_view_focus_in_event_cb),									 NULL);		view->search_column = 0;		g_signal_connect(G_OBJECT(view),									 "show",									 G_CALLBACK(gem_tree_view_show_cb),									 NULL);		return;}GtkWidget*gem_tree_view_new (void){  return g_object_new(GEM_TYPE_TREE_VIEW,  										NULL);}GtkTreeModel * gem_tree_view_get_model (GemTreeView * view){	return gtk_tree_view_get_model(GTK_TREE_VIEW(view->treeview));}voidgem_tree_view_set_model (GemTreeView		*view,												 GtkTreeModel		*model){	gtk_tree_view_set_model(GTK_TREE_VIEW(view->treeview), 													model);//	g_object_ref(model);	g_print("%s(): ref = %d\n",					__FUNCTION__,					(G_OBJECT(model)->ref_count));		return;}GtkWidget * gem_tree_view_get_view (GemTreeView * view){/*	if (view->treeview)	{		g_object_ref(view->treeview);	}*/		return view->treeview;}GtkWidget * gem_tree_view_get_search_box (GemTreeView * view){	return view->search_box;}void						gem_tree_view_set_search_column(GemTreeView							*view,																guint										 colum_id,																GtkSortType							 type,																GtkTreeIterCompareFunc	 sort_func){	g_return_val_if_fail(colum_id, -1);	view->search_column = colum_id;		if (TRUE)	{		GtkTreeModel * model = NULL;				model = gtk_tree_view_get_model(GTK_TREE_VIEW(view->treeview));		if (model)		{			GtkTreeSortable *sortable = NULL;						sortable = GTK_TREE_SORTABLE(model);																							gtk_tree_sortable_set_sort_column_id(sortable,																					 view->search_column,																					 type);			if (sort_func)			{				gtk_tree_sortable_set_sort_func(sortable, 																				view->search_column,																				sort_func,																				(gpointer)view,																				NULL);			}			else			{				gtk_tree_sortable_set_sort_func(sortable, 																				view->search_column,																				gem_tree_view_sort_func,																				(gpointer)view,																				NULL);			}			//			g_object_unref(model);		}	}		return;}guintgem_tree_view_get_search_column (GemTreeView	*view){	return view->search_column;}voidgem_tree_view_searchentry_visible(gboolean visible){	searchentry_visible = visible;}/*vi:ts=2:nowrap:ai:expandtab */

⌨️ 快捷键说明

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