mirror of
				https://gitlab.gnome.org/GNOME/glade.git
				synced 2025-11-04 00:03:39 -05:00 
			
		
		
		
	Add icons also in the clipboard view and
some simplification.
This commit is contained in:
		
							parent
							
								
									c79860c891
								
							
						
					
					
						commit
						4043756d49
					
				@ -4,6 +4,9 @@
 | 
			
		||||
	function which adds a pixbuf renderer to display an icon next to the
 | 
			
		||||
	widget name.
 | 
			
		||||
	(glade_project_view_init): use the above.
 | 
			
		||||
	* src/glade-clipboard-view.[ch]: swith from TreeStore to ListStore.
 | 
			
		||||
	(glade_clipboard_view_populate_model): simplifification.
 | 
			
		||||
	(glade_clipboard_view_create_tree_view): dispaly icon.
 | 
			
		||||
 | 
			
		||||
2003-08-18  Archit Baweja  <bighead@users.sourceforge.net>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -85,6 +85,26 @@ glade_clipboard_view_selection_changed_cb (GtkTreeSelection *sel,
 | 
			
		||||
		view->clipboard->curr = widget;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
glade_clipboard_view_populate_model (GladeClipboardView *view)
 | 
			
		||||
{
 | 
			
		||||
	GladeClipboard *clipboard;
 | 
			
		||||
	GtkListStore *model;
 | 
			
		||||
	GList *list;
 | 
			
		||||
	GtkTreeIter iter;
 | 
			
		||||
 | 
			
		||||
	clipboard = GLADE_CLIPBOARD (view->clipboard);
 | 
			
		||||
	model = view->model;
 | 
			
		||||
 | 
			
		||||
	for (list = clipboard->widgets; list; list = list->next) {
 | 
			
		||||
		GladeWidget *widget;
 | 
			
		||||
 | 
			
		||||
		widget = list->data;
 | 
			
		||||
		gtk_list_store_append (model, &iter);
 | 
			
		||||
		gtk_list_store_set (model, &iter, 0, widget, -1);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
glade_clipboard_view_cell_function (GtkTreeViewColumn *tree_column,
 | 
			
		||||
				    GtkCellRenderer *cell,
 | 
			
		||||
@ -92,73 +112,52 @@ glade_clipboard_view_cell_function (GtkTreeViewColumn *tree_column,
 | 
			
		||||
				    GtkTreeIter *iter,
 | 
			
		||||
				    gpointer data)
 | 
			
		||||
{
 | 
			
		||||
	gboolean is_icon = GPOINTER_TO_INT (data);
 | 
			
		||||
	GladeWidget *widget;
 | 
			
		||||
 | 
			
		||||
	gtk_tree_model_get (tree_model, iter, 0, &widget, -1);
 | 
			
		||||
 | 
			
		||||
	g_return_if_fail (GLADE_IS_WIDGET (widget));
 | 
			
		||||
	g_return_if_fail (widget->name != NULL);
 | 
			
		||||
	
 | 
			
		||||
	g_object_set (G_OBJECT (cell), "text", widget->name, NULL);
 | 
			
		||||
}
 | 
			
		||||
	g_return_if_fail (widget->class != NULL);
 | 
			
		||||
	g_return_if_fail (widget->class->icon != NULL);
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
glade_clipboard_view_populate_model_real (GtkTreeStore *model,
 | 
			
		||||
					  GList *widgets,
 | 
			
		||||
					  GtkTreeIter *parent_iter,
 | 
			
		||||
					  gboolean add_childs)
 | 
			
		||||
{
 | 
			
		||||
	GladeWidget *widget;
 | 
			
		||||
	GList *list;
 | 
			
		||||
	GtkTreeIter iter;
 | 
			
		||||
	GtkTreeIter *copy = NULL;
 | 
			
		||||
 | 
			
		||||
	list = g_list_copy (widgets);
 | 
			
		||||
	for (; list; list = list->next) {
 | 
			
		||||
		widget = list->data;
 | 
			
		||||
		gtk_tree_store_append (model, &iter, parent_iter);
 | 
			
		||||
		gtk_tree_store_set (model, &iter, 0, widget, -1);
 | 
			
		||||
		if (add_childs && widget->children != NULL) {
 | 
			
		||||
			copy = gtk_tree_iter_copy (&iter);
 | 
			
		||||
			glade_clipboard_view_populate_model_real (model,
 | 
			
		||||
								  widget->children,
 | 
			
		||||
								  copy, TRUE);
 | 
			
		||||
			gtk_tree_iter_free (copy);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	g_list_free (list);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
glade_clipboard_view_populate_model (GladeClipboardView *view)
 | 
			
		||||
{
 | 
			
		||||
	GList *list;
 | 
			
		||||
 | 
			
		||||
	view->model = gtk_tree_store_new (1, G_TYPE_POINTER);
 | 
			
		||||
	list = GLADE_CLIPBOARD (view->clipboard)->widgets;
 | 
			
		||||
 | 
			
		||||
	/* add the widgets and recurse */
 | 
			
		||||
	glade_clipboard_view_populate_model_real (view->model, list,
 | 
			
		||||
						  NULL, FALSE);
 | 
			
		||||
	if (is_icon)
 | 
			
		||||
		g_object_set (G_OBJECT (cell),
 | 
			
		||||
			      "pixbuf", gtk_image_get_pixbuf (GTK_IMAGE (widget->class->icon)),
 | 
			
		||||
			      NULL);
 | 
			
		||||
	else
 | 
			
		||||
		g_object_set (G_OBJECT (cell),
 | 
			
		||||
			      "text", widget->name,
 | 
			
		||||
			      NULL);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
glade_clipboard_view_create_tree_view (GladeClipboardView *view)
 | 
			
		||||
{
 | 
			
		||||
	GtkTreeSelection *sel;
 | 
			
		||||
	GtkCellRenderer *cell;
 | 
			
		||||
	GtkTreeViewColumn *col;
 | 
			
		||||
	GtkCellRenderer *renderer;
 | 
			
		||||
	GtkTreeViewColumn *column;
 | 
			
		||||
 | 
			
		||||
	view->widget =
 | 
			
		||||
	    gtk_tree_view_new_with_model (GTK_TREE_MODEL (view->model));
 | 
			
		||||
 | 
			
		||||
	cell = gtk_cell_renderer_text_new ();
 | 
			
		||||
	col = gtk_tree_view_column_new_with_attributes (_("Widget"),
 | 
			
		||||
							cell, NULL);
 | 
			
		||||
	gtk_tree_view_column_set_cell_data_func (col, cell,
 | 
			
		||||
	column = gtk_tree_view_column_new ();
 | 
			
		||||
	gtk_tree_view_column_set_title (column, _("Widget"));
 | 
			
		||||
 | 
			
		||||
	renderer = gtk_cell_renderer_pixbuf_new ();
 | 
			
		||||
	gtk_tree_view_column_pack_start (column, renderer, FALSE);
 | 
			
		||||
	gtk_tree_view_column_set_cell_data_func (column, renderer,
 | 
			
		||||
						 glade_clipboard_view_cell_function,
 | 
			
		||||
						 NULL, NULL);
 | 
			
		||||
	gtk_tree_view_append_column (GTK_TREE_VIEW (view->widget), col);
 | 
			
		||||
						 GINT_TO_POINTER (1), NULL);
 | 
			
		||||
 | 
			
		||||
	renderer = gtk_cell_renderer_text_new ();
 | 
			
		||||
	gtk_tree_view_column_pack_start (column, renderer, TRUE);
 | 
			
		||||
	gtk_tree_view_column_set_cell_data_func (column, renderer,
 | 
			
		||||
						 glade_clipboard_view_cell_function,
 | 
			
		||||
						 GINT_TO_POINTER (0), NULL);
 | 
			
		||||
 | 
			
		||||
	gtk_tree_view_append_column (GTK_TREE_VIEW (view->widget), column);
 | 
			
		||||
 | 
			
		||||
	sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (view->widget));
 | 
			
		||||
	g_signal_connect_data (G_OBJECT (sel), "changed",
 | 
			
		||||
@ -171,7 +170,9 @@ glade_clipboard_view_construct (GladeClipboardView *view)
 | 
			
		||||
{
 | 
			
		||||
	GtkWidget *scrolled_window;
 | 
			
		||||
 | 
			
		||||
	view->model = gtk_list_store_new (1, G_TYPE_POINTER);
 | 
			
		||||
	glade_clipboard_view_populate_model (view);
 | 
			
		||||
 | 
			
		||||
	glade_clipboard_view_create_tree_view (view);
 | 
			
		||||
 | 
			
		||||
	scrolled_window = gtk_scrolled_window_new (NULL, NULL);
 | 
			
		||||
@ -219,8 +220,8 @@ glade_clipboard_view_add (GladeClipboardView *view, GladeWidget *widget)
 | 
			
		||||
	g_return_if_fail (GLADE_IS_CLIPBOARD_VIEW (view));
 | 
			
		||||
	g_return_if_fail (GLADE_IS_WIDGET (widget));
 | 
			
		||||
 | 
			
		||||
	gtk_tree_store_append (view->model, &iter, NULL);
 | 
			
		||||
	gtk_tree_store_set (view->model, &iter, 0, widget, -1);
 | 
			
		||||
	gtk_list_store_append (view->model, &iter);
 | 
			
		||||
	gtk_list_store_set (view->model, &iter, 0, widget, -1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
@ -242,6 +243,6 @@ glade_clipboard_view_remove (GladeClipboardView *view, GladeWidget *widget)
 | 
			
		||||
		} while (gtk_tree_model_iter_next (model, &iter));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	gtk_tree_store_remove (GTK_TREE_STORE (model), &iter);
 | 
			
		||||
	gtk_list_store_remove (view->model, &iter);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -19,7 +19,7 @@ struct _GladeClipboardView {
 | 
			
		||||
	GtkWindow __parent__;
 | 
			
		||||
 | 
			
		||||
	GtkWidget *widget;	   /* The GtkTreeView widget */
 | 
			
		||||
	GtkTreeStore *model;	   /* The GtkTreeStore model for the View */
 | 
			
		||||
	GtkListStore *model;	   /* The GtkListStore model for the View */
 | 
			
		||||
	GladeClipboard *clipboard; /* The Clipboard for which this is a view */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user