glade3 r1995 - in trunk: gladeui plugins/gtk+



Author: tvb
Date: Fri Oct 24 23:44:28 2008
New Revision: 1995
URL: http://svn.gnome.org/viewvc/glade3?rev=1995&view=rev

Log:
finished with gtkiconfactory.



Modified:
   trunk/gladeui/glade-property-class.c
   trunk/gladeui/glade-property.c
   trunk/plugins/gtk+/glade-icon-sources.c

Modified: trunk/gladeui/glade-property-class.c
==============================================================================
--- trunk/gladeui/glade-property-class.c	(original)
+++ trunk/gladeui/glade-property-class.c	Fri Oct 24 23:44:28 2008
@@ -839,12 +839,6 @@
 		g_value_set_object (value, va_arg (vl, gpointer));
 	else if (G_VALUE_HOLDS_BOXED (value))
 		g_value_set_boxed (value, va_arg (vl, gpointer));
-#if THIS_STUFF_SHOULD_BE_COVERED_BY_HOLDS_BOXED
-	else if (G_IS_PARAM_SPEC_BOXED(klass->pspec))
-		g_value_set_boxed (value, va_arg (vl, gpointer));
-	else if (GLADE_IS_PARAM_SPEC_OBJECTS(klass->pspec))
-		g_value_set_boxed (value, va_arg (vl, gpointer));
-#endif
 	else
 		g_critical ("Unsupported pspec type %s (vl -> string)",
 			    g_type_name(G_PARAM_SPEC_TYPE (klass->pspec)));
@@ -932,12 +926,6 @@
 		*(gpointer *)(va_arg (vl, gpointer *)) = g_value_get_object (value);
 	else if (G_VALUE_HOLDS_BOXED (value))
 		*(gpointer *)(va_arg (vl, gpointer *)) = g_value_get_boxed (value);
-#if THIS_STUFF_SHOULD_BE_COVERED_BY_HOLDS_BOXED
-	else if (G_IS_PARAM_SPEC_BOXED(klass->pspec))
-		*(gpointer *)(va_arg (vl, gpointer *)) = g_value_get_boxed (value);
-	else if (GLADE_IS_PARAM_SPEC_OBJECTS(klass->pspec))
-		*(gpointer *)(va_arg (vl, gpointer *)) = g_value_get_boxed (value);
-#endif
 	else
 		g_critical ("Unsupported pspec type %s (string -> vl)",
 			    g_type_name(G_PARAM_SPEC_TYPE (klass->pspec)));

Modified: trunk/gladeui/glade-property.c
==============================================================================
--- trunk/gladeui/glade-property.c	(original)
+++ trunk/gladeui/glade-property.c	Fri Oct 24 23:44:28 2008
@@ -246,13 +246,22 @@
 
 #if 0
 	{
-		gchar *str = glade_widget_adaptor_string_from_value
-			     (GLADE_WIDGET_ADAPTOR (property->klass->handle),
-			      property->klass, value, fmt);
-		g_print ("Setting property %s on %s to %s\n",
+		g_print ("***************************************************\n"); 
+		g_print ("Setting property %s on %s ..\n", 
 			 property->klass->id,
-			 property->widget ? property->widget->name : "unknown", str);
-		g_free (str);
+			 property->widget ? property->widget->name : "unknown");
+
+		gchar *str1 = glade_widget_adaptor_string_from_value
+			(GLADE_WIDGET_ADAPTOR (property->klass->handle),
+			 property->klass, property->value, 
+			 GLADE_PROJECT_FORMAT_GTKBUILDER);
+		gchar *str2 = glade_widget_adaptor_string_from_value
+			     (GLADE_WIDGET_ADAPTOR (property->klass->handle),
+			      property->klass, value,
+			      GLADE_PROJECT_FORMAT_GTKBUILDER);
+		g_print ("from %s to %s\n", str1, str2);
+		g_free (str1);
+		g_free (str2);
 	}
 #endif
 
@@ -310,7 +319,6 @@
 	}
 	
 	g_value_unset (&old_value);
-
 	return TRUE;
 }
 

Modified: trunk/plugins/gtk+/glade-icon-sources.c
==============================================================================
--- trunk/plugins/gtk+/glade-icon-sources.c	(original)
+++ trunk/plugins/gtk+/glade-icon-sources.c	Fri Oct 24 23:44:28 2008
@@ -29,6 +29,21 @@
 
 #include "glade-icon-sources.h"
 
+static GList *
+icon_set_copy (GList *set)
+{
+	GList *dup_set = NULL, *l;
+	GtkIconSource *source;
+	
+	for (l = set; l; l = l->next)
+	{
+		source = gtk_icon_source_copy ((GtkIconSource *)l->data);
+		dup_set = g_list_prepend (dup_set, source);
+	}
+	return g_list_reverse (dup_set);
+}
+
+
 static void
 icon_set_free (GList *list)
 {
@@ -36,6 +51,7 @@
 	g_list_free (list);
 }
 
+
 GladeIconSources *
 glade_icon_sources_new (void)
 {
@@ -53,15 +69,8 @@
 		  GList               *set,
 		  GladeIconSources    *dup)
 {
-	GList *dup_set = NULL, *l;
-	GtkIconSource *source;
-	
-	for (l = set; l; l = l->next)
-	{
-		source = gtk_icon_source_copy ((GtkIconSource *)l->data);
-		dup_set = g_list_prepend (dup_set, source);
-	}
-	g_hash_table_insert (dup->sources, g_strdup (icon_name), g_list_reverse (dup_set));
+	GList *dup_set = icon_set_copy (set);
+	g_hash_table_insert (dup->sources, g_strdup (icon_name), dup_set);
 }
 
 GladeIconSources *
@@ -192,8 +201,6 @@
 	GtkListStore      *icon_names_store;
 	GtkTreeViewColumn *filename_column;
 	GtkWidget         *combo;
-
-	GladeIconSources  *pending_sources;
 } GladeEPropIconSources;
 
 GLADE_MAKE_EPROP (GladeEPropIconSources, glade_eprop_icon_sources)
@@ -208,7 +215,7 @@
 {
 	/* Chain up */
 	GObjectClass *parent_class = g_type_class_peek_parent (G_OBJECT_GET_CLASS (object));
-	GladeEPropIconSources *eprop_sources = GLADE_EPROP_ICON_SOURCES (object);
+	//GladeEPropIconSources *eprop_sources = GLADE_EPROP_ICON_SOURCES (object);
 
 	G_OBJECT_CLASS (parent_class)->finalize (object);
 }
@@ -277,7 +284,7 @@
 
 		if (!gtk_icon_source_get_state_wildcarded (source))
 		{
-			GtkStateType state = gtk_icon_source_get_size (source);
+			GtkStateType state = gtk_icon_source_get_state (source);
 			str = glade_utils_enum_string_from_value_displayable (GTK_TYPE_STATE_TYPE, state);
 			gtk_tree_store_set (eprop_sources->store, &iter, 
 					    COLUMN_STATE_ACTIVE, TRUE,
@@ -286,12 +293,13 @@
 			g_free (str);
 		}
 
-		/* Make sure its all expanded */
 		if (!l->next)
 		{
-			GtkTreePath *tree_path =
-				gtk_tree_model_get_path (GTK_TREE_MODEL (eprop_sources->store), &iter);
-			gtk_tree_view_expand_to_path (eprop_sources->view, tree_path);
+			GtkTreePath *path = gtk_tree_model_get_path (GTK_TREE_MODEL (eprop_sources->store),
+								     &iter);
+			gtk_tree_view_expand_to_path (GTK_TREE_VIEW (eprop_sources->view),
+						      path);
+			gtk_tree_path_free (path);
 		}
 	}
 }
@@ -308,6 +316,7 @@
 
 	if (sources)
 		g_hash_table_foreach (sources->sources, (GHFunc)populate_store_foreach, eprop_sources);
+
 }
 
 static void
@@ -326,6 +335,12 @@
 	gtk_widget_queue_draw (GTK_WIDGET (eprop_sources->view));
 }
 
+static gboolean
+reload_icon_sources_idle (GladeEditorProperty *eprop)
+{
+	glade_editor_property_load (eprop, eprop->property);
+	return FALSE;
+}
 
 static void
 add_clicked (GtkWidget *button, 
@@ -379,6 +394,7 @@
 			    COLUMN_ICON_NAME, selected_icon_name,
 			    COLUMN_TEXT_EDITABLE, TRUE,
 			    COLUMN_TEXT_WEIGHT, PANGO_WEIGHT_NORMAL,
+			    COLUMN_LIST_INDEX, -1,
 			    -1);
 
 	new_item_path = gtk_tree_model_get_path (GTK_TREE_MODEL (eprop_sources->store), &iter);
@@ -403,7 +419,7 @@
 	if (source_list)
 	{
 		if (index < 0)
-			return (GtkIconSource *)source_list->data;
+			return NULL;
 		else 
 			return (GtkIconSource *)g_list_nth_data (source_list, index);
 	}
@@ -411,32 +427,61 @@
 }
 
 static void
-delete_clicked (GtkWidget *button, 
-		GladeEPropIconSources *eprop_sources)
-{
-
-}
-
-static gboolean
-update_icon_sources_idle (GladeEditorProperty *eprop)
+update_icon_sources (GladeEditorProperty   *eprop,
+		     GladeIconSources      *icon_sources)
 {
-	GladeEPropIconSources *eprop_sources = GLADE_EPROP_ICON_SOURCES (eprop);
-	GValue                 value = { 0, };
+	GValue value = { 0, };
 	
 	g_value_init (&value, GLADE_TYPE_ICON_SOURCES);
-	g_value_take_boxed (&value, eprop_sources->pending_sources);
+	g_value_take_boxed (&value, icon_sources);
 	glade_editor_property_commit (eprop, &value);
 	g_value_unset (&value);
-
-	eprop_sources->pending_sources = NULL;
-	return FALSE;
 }
 
-static gboolean
-reload_icon_sources_idle (GladeEditorProperty *eprop)
+static void
+delete_clicked (GtkWidget *button, 
+		GladeEditorProperty *eprop)
 {
-	glade_editor_property_load (eprop, eprop->property);
-	return FALSE;
+	GladeEPropIconSources *eprop_sources = GLADE_EPROP_ICON_SOURCES (eprop);
+	GtkTreeIter            iter;
+	GladeIconSources      *icon_sources = NULL;
+	GList                 *list, *sources, *new_list_head;
+	gchar                 *icon_name;
+	gint                   index = 0;
+
+	/* NOTE: This will trigger row-deleted below... */
+	if (!gtk_tree_selection_get_selected
+	    (gtk_tree_view_get_selection (eprop_sources->view), NULL, &iter))
+		return;
+
+	gtk_tree_model_get (GTK_TREE_MODEL (eprop_sources->store), &iter,
+			    COLUMN_ICON_NAME, &icon_name,
+			    COLUMN_LIST_INDEX, &index,
+			    -1);
+
+	glade_property_get (eprop->property, &icon_sources);
+	if (icon_sources)
+	{
+		icon_sources = glade_icon_sources_copy (icon_sources);
+
+		if ((sources = g_hash_table_lookup (icon_sources->sources, icon_name)) != NULL)
+		{
+			new_list_head = icon_set_copy (sources);
+
+			list = g_list_nth (new_list_head, index);
+			new_list_head = g_list_remove_link (new_list_head, list);
+
+			gtk_icon_source_free ((GtkIconSource *)list->data);
+			g_list_free (list);
+
+			/* We copied all that above cause this will free the old list */
+			g_hash_table_insert (icon_sources->sources, g_strdup (icon_name),
+					     new_list_head);
+			
+		}
+		update_icon_sources (eprop, icon_sources);
+	}
+	g_free (icon_name);
 }
 
 static void
@@ -450,7 +495,7 @@
 	GladeIconSources      *icon_sources = NULL;
 	GtkIconSource         *source;
 	gchar                 *icon_name;
-	gint                   index;
+	gint                   index = -1;
 	GValue                *value;
 	GdkPixbuf             *pixbuf;
 	GList                 *source_list;
@@ -480,16 +525,20 @@
 	if (icon_sources)
 	{
 		icon_sources = glade_icon_sources_copy (icon_sources);
-		if ((source = get_icon_source (icon_sources, icon_name, index)) != NULL)
+
+		if (index >= 0 && (source = get_icon_source (icon_sources, icon_name, index)) != NULL)
 			gtk_icon_source_set_pixbuf (source, pixbuf);
 		else
 		{
+
 			source = gtk_icon_source_new ();
 			gtk_icon_source_set_pixbuf (source, pixbuf);
 
 			if ((source_list = g_hash_table_lookup (icon_sources->sources,
 								icon_name)) != NULL)
-				source_list = g_list_prepend (source_list, source);
+			{
+				source_list = g_list_append (source_list, source);
+			}
 			else
 			{
 				source_list = g_list_prepend (NULL, source);
@@ -510,11 +559,7 @@
 	g_value_unset (value);
 	g_free (value);
 
-	if (eprop_sources->pending_sources)
-		glade_icon_sources_free (eprop_sources->pending_sources);
-
-	eprop_sources->pending_sources = icon_sources;
-	g_idle_add ((GSourceFunc)update_icon_sources_idle, eprop);
+	update_icon_sources (eprop, icon_sources);
 }
 
 static void
@@ -563,12 +608,7 @@
 			break;
 		}
 
-		if (eprop_sources->pending_sources)
-			glade_icon_sources_free (eprop_sources->pending_sources);
-
-		eprop_sources->pending_sources = icon_sources;
-		g_idle_add ((GSourceFunc)update_icon_sources_idle, eprop);
-
+		update_icon_sources (eprop, icon_sources);
 		g_free (icon_name);
 		return;
 	}
@@ -591,7 +631,6 @@
 	GtkIconSource         *source;
 	gchar                 *icon_name;
 	gint                   index, edit_column;
-	gboolean               edit_column_active = FALSE;
 
 	if (!new_text || !new_text[0])
 		return;
@@ -634,12 +673,7 @@
 			break;
 		}
 
-		if (eprop_sources->pending_sources)
-			glade_icon_sources_free (eprop_sources->pending_sources);
-
-		eprop_sources->pending_sources = icon_sources;
-		g_idle_add ((GSourceFunc)update_icon_sources_idle, eprop);
-
+		update_icon_sources (eprop, icon_sources);
 		g_free (icon_name);
 		return;
 	}
@@ -746,6 +780,7 @@
 	return show_now;
 }
 
+
 static GtkTreeView *
 build_view (GladeEditorProperty *eprop)
 {
@@ -780,119 +815,119 @@
 	g_object_set_data (G_OBJECT (eprop_sources->filename_column), "column-id",
 			   GINT_TO_POINTER (COLUMN_TEXT));
 
-	/********************* Direction *********************/
+	/********************* Size *********************/
 	/* Attribute active portion */
  	renderer = gtk_cell_renderer_toggle_new ();
 	g_object_set (G_OBJECT (renderer), "activatable", TRUE, NULL);
 	g_object_set_data (G_OBJECT (renderer), "attribute-column", 
-			   GINT_TO_POINTER (COLUMN_DIRECTION_ACTIVE));
+			   GINT_TO_POINTER (COLUMN_SIZE_ACTIVE));
 	g_signal_connect (G_OBJECT (renderer), "toggled",
 			  G_CALLBACK (value_attribute_toggled), eprop);
 	
 	column = gtk_tree_view_column_new_with_attributes
 		("dummy",  renderer, 
 		 "visible", COLUMN_TEXT_EDITABLE,
-		 "active", COLUMN_DIRECTION_ACTIVE,
+		 "active", COLUMN_SIZE_ACTIVE,
 		 NULL);
  	gtk_tree_view_append_column (GTK_TREE_VIEW (view), column);
 	g_object_set_data (G_OBJECT (column), "column-id", 
-			   GINT_TO_POINTER (COLUMN_DIRECTION_ACTIVE));
-
+			   GINT_TO_POINTER (COLUMN_SIZE_ACTIVE));
 
 	/* Attribute portion */
  	renderer = gtk_cell_renderer_combo_new ();
 	g_object_set (G_OBJECT (renderer), "editable", TRUE, "has-entry", FALSE, 
-		      "text-column", 0, "model", direction_store, NULL);
+		      "text-column", 0, "model", size_store, NULL);
 	g_object_set_data (G_OBJECT (renderer), "attribute-column", 
-			   GINT_TO_POINTER (COLUMN_DIRECTION));
+			   GINT_TO_POINTER (COLUMN_SIZE));
 	g_signal_connect (G_OBJECT (renderer), "edited",
 			  G_CALLBACK (value_attribute_edited), eprop);
 
 	column = gtk_tree_view_column_new_with_attributes
 		("dummy",  renderer, 
 		 "visible", COLUMN_TEXT_EDITABLE,
-		 "editable", COLUMN_DIRECTION_ACTIVE,
-		 "text", COLUMN_DIRECTION,
+		 "editable", COLUMN_SIZE_ACTIVE,
+		 "text", COLUMN_SIZE,
 		 NULL);
  	gtk_tree_view_append_column (GTK_TREE_VIEW (view), column);
 	g_object_set_data (G_OBJECT (column), "column-id", 
-			   GINT_TO_POINTER (COLUMN_DIRECTION));
-
+			   GINT_TO_POINTER (COLUMN_SIZE));
+	
 
-	/********************* Size *********************/
+	/********************* State *********************/
 	/* Attribute active portion */
  	renderer = gtk_cell_renderer_toggle_new ();
 	g_object_set (G_OBJECT (renderer), "activatable", TRUE, NULL);
 	g_object_set_data (G_OBJECT (renderer), "attribute-column", 
-			   GINT_TO_POINTER (COLUMN_SIZE_ACTIVE));
+			   GINT_TO_POINTER (COLUMN_STATE_ACTIVE));
 	g_signal_connect (G_OBJECT (renderer), "toggled",
 			  G_CALLBACK (value_attribute_toggled), eprop);
 	
 	column = gtk_tree_view_column_new_with_attributes
 		("dummy",  renderer, 
 		 "visible", COLUMN_TEXT_EDITABLE,
-		 "active", COLUMN_SIZE_ACTIVE,
+		 "active", COLUMN_STATE_ACTIVE,
 		 NULL);
  	gtk_tree_view_append_column (GTK_TREE_VIEW (view), column);
 	g_object_set_data (G_OBJECT (column), "column-id", 
-			   GINT_TO_POINTER (COLUMN_SIZE_ACTIVE));
+			   GINT_TO_POINTER (COLUMN_STATE_ACTIVE));
 
 	/* Attribute portion */
  	renderer = gtk_cell_renderer_combo_new ();
 	g_object_set (G_OBJECT (renderer), "editable", TRUE, "has-entry", FALSE, 
-		      "text-column", 0, "model", size_store, NULL);
+		      "text-column", 0, "model", state_store, NULL);
 	g_object_set_data (G_OBJECT (renderer), "attribute-column", 
-			   GINT_TO_POINTER (COLUMN_SIZE));
+			   GINT_TO_POINTER (COLUMN_STATE));
 	g_signal_connect (G_OBJECT (renderer), "edited",
 			  G_CALLBACK (value_attribute_edited), eprop);
 
 	column = gtk_tree_view_column_new_with_attributes
 		("dummy",  renderer, 
 		 "visible", COLUMN_TEXT_EDITABLE,
-		 "editable", COLUMN_SIZE_ACTIVE,
-		 "text", COLUMN_SIZE,
+		 "editable", COLUMN_STATE_ACTIVE,
+		 "text", COLUMN_STATE,
 		 NULL);
  	gtk_tree_view_append_column (GTK_TREE_VIEW (view), column);
 	g_object_set_data (G_OBJECT (column), "column-id", 
-			   GINT_TO_POINTER (COLUMN_SIZE));
-	
+			   GINT_TO_POINTER (COLUMN_STATE));
 
-	/********************* State *********************/
+
+	/********************* Direction *********************/
 	/* Attribute active portion */
  	renderer = gtk_cell_renderer_toggle_new ();
 	g_object_set (G_OBJECT (renderer), "activatable", TRUE, NULL);
 	g_object_set_data (G_OBJECT (renderer), "attribute-column", 
-			   GINT_TO_POINTER (COLUMN_STATE_ACTIVE));
+			   GINT_TO_POINTER (COLUMN_DIRECTION_ACTIVE));
 	g_signal_connect (G_OBJECT (renderer), "toggled",
 			  G_CALLBACK (value_attribute_toggled), eprop);
 	
 	column = gtk_tree_view_column_new_with_attributes
 		("dummy",  renderer, 
 		 "visible", COLUMN_TEXT_EDITABLE,
-		 "active", COLUMN_STATE_ACTIVE,
+		 "active", COLUMN_DIRECTION_ACTIVE,
 		 NULL);
  	gtk_tree_view_append_column (GTK_TREE_VIEW (view), column);
 	g_object_set_data (G_OBJECT (column), "column-id", 
-			   GINT_TO_POINTER (COLUMN_STATE_ACTIVE));
+			   GINT_TO_POINTER (COLUMN_DIRECTION_ACTIVE));
 
 	/* Attribute portion */
  	renderer = gtk_cell_renderer_combo_new ();
 	g_object_set (G_OBJECT (renderer), "editable", TRUE, "has-entry", FALSE, 
-		      "text-column", 0, "model", state_store, NULL);
+		      "text-column", 0, "model", direction_store, NULL);
 	g_object_set_data (G_OBJECT (renderer), "attribute-column", 
-			   GINT_TO_POINTER (COLUMN_STATE));
+			   GINT_TO_POINTER (COLUMN_DIRECTION));
 	g_signal_connect (G_OBJECT (renderer), "edited",
 			  G_CALLBACK (value_attribute_edited), eprop);
 
 	column = gtk_tree_view_column_new_with_attributes
 		("dummy",  renderer, 
 		 "visible", COLUMN_TEXT_EDITABLE,
-		 "editable", COLUMN_STATE_ACTIVE,
-		 "text", COLUMN_STATE,
+		 "editable", COLUMN_DIRECTION_ACTIVE,
+		 "text", COLUMN_DIRECTION,
 		 NULL);
  	gtk_tree_view_append_column (GTK_TREE_VIEW (view), column);
 	g_object_set_data (G_OBJECT (column), "column-id", 
-			   GINT_TO_POINTER (COLUMN_STATE));
+			   GINT_TO_POINTER (COLUMN_DIRECTION));
+
 
 	/* Connect ::query-tooltip here for fancy tooltips... */
 	g_object_set (G_OBJECT (view), "has-tooltip", TRUE, NULL);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]