[libgda] UI corrections when displaying invalid values in grid and form



commit 0d2e459c3dea62626a35db9796f62c02e89092c4
Author: Vivien Malerba <malerba gnome-db org>
Date:   Sat Jul 3 15:56:57 2010 +0200

    UI corrections when displaying invalid values in grid and form

 .../data-entries/gdaui-data-cell-renderer-bin.c    |    2 +-
 .../gdaui-data-cell-renderer-boolean.c             |    2 +-
 .../gdaui-data-cell-renderer-textual.c             |   14 +++++---------
 .../plugins/gdaui-data-cell-renderer-password.c    |    4 +---
 .../plugins/gdaui-data-cell-renderer-pict.c        |    2 +-
 libgda-ui/gdaui-basic-form.c                       |   15 +++++++++------
 libgda-ui/gdaui-data-proxy-info.c                  |    2 +-
 libgda-ui/gdaui-raw-form.c                         |    5 -----
 libgda-ui/gdaui-raw-grid.c                         |    2 +-
 testing/gdaui-test-errors.c                        |    2 +-
 10 files changed, 21 insertions(+), 29 deletions(-)
---
diff --git a/libgda-ui/data-entries/gdaui-data-cell-renderer-bin.c b/libgda-ui/data-entries/gdaui-data-cell-renderer-bin.c
index c0497a0..1c1a514 100644
--- a/libgda-ui/data-entries/gdaui-data-cell-renderer-bin.c
+++ b/libgda-ui/data-entries/gdaui-data-cell-renderer-bin.c
@@ -272,7 +272,6 @@ gdaui_data_cell_renderer_bin_set_property (GObject *object,
 	switch (param_id) {
 	case PROP_VALUE:
 		/* Because we don't have a copy of the value, we MUST NOT free it! */
-		cell->priv->invalid = FALSE;
 		if (value) {	
                         GValue *gval = g_value_get_boxed (value);
 			if (gval && (G_VALUE_TYPE (gval) != GDA_TYPE_NULL))
@@ -290,6 +289,7 @@ gdaui_data_cell_renderer_bin_set_property (GObject *object,
 		}
 		break;
 	case PROP_VALUE_ATTRIBUTES:
+		cell->priv->invalid = g_value_get_flags (value) & GDA_VALUE_ATTR_DATA_NON_VALID ? TRUE : FALSE;
 		break;
 	case PROP_EDITABLE:
 		cell->priv->editable = g_value_get_boolean (value);
diff --git a/libgda-ui/data-entries/gdaui-data-cell-renderer-boolean.c b/libgda-ui/data-entries/gdaui-data-cell-renderer-boolean.c
index 39a922c..ad0f03e 100644
--- a/libgda-ui/data-entries/gdaui-data-cell-renderer-boolean.c
+++ b/libgda-ui/data-entries/gdaui-data-cell-renderer-boolean.c
@@ -261,7 +261,6 @@ gdaui_data_cell_renderer_boolean_set_property (GObject *object,
 	case PROP_VALUE:
 		/* Because we don't have a copy of the value, we MUST NOT free it! */
                 cell->priv->value = NULL;
-		cell->priv->invalid = FALSE;
 		if (value) {
                         GValue *gval = g_value_get_boxed (value);
 			if (gval && !gda_value_is_null (gval)) {
@@ -296,6 +295,7 @@ gdaui_data_cell_renderer_boolean_set_property (GObject *object,
                 g_object_notify (object, "value");
 		break;
 	case PROP_VALUE_ATTRIBUTES:
+		cell->priv->invalid = g_value_get_flags (value) & GDA_VALUE_ATTR_DATA_NON_VALID ? TRUE : FALSE;
 		break;
 	case PROP_EDITABLE:
 		cell->priv->editable = g_value_get_boolean (value);
diff --git a/libgda-ui/data-entries/gdaui-data-cell-renderer-textual.c b/libgda-ui/data-entries/gdaui-data-cell-renderer-textual.c
index ddcf74a..db37f07 100644
--- a/libgda-ui/data-entries/gdaui-data-cell-renderer-textual.c
+++ b/libgda-ui/data-entries/gdaui-data-cell-renderer-textual.c
@@ -420,7 +420,6 @@ gdaui_data_cell_renderer_textual_set_property (GObject *object,
 			}
 		}
 
-		datacell->priv->invalid = FALSE;
 		if (value) {
 			GValue *gval = g_value_get_pointer (value);
 			if (gval && !gda_value_is_null (gval)) {
@@ -492,22 +491,19 @@ gdaui_data_cell_renderer_textual_set_property (GObject *object,
 						      "xalign", xalign, NULL);
 			}
 			else if (gval)
-				g_object_set (G_OBJECT (object), "text", "", "xalign", xalign, NULL);
+				g_object_set (G_OBJECT (object), "text", "", NULL);
 			else {
 				datacell->priv->invalid = TRUE;
-				g_object_set (G_OBJECT (object), "text", "", "xalign", xalign, NULL);
+				g_object_set (G_OBJECT (object), "text", "", NULL);
 			}
 		}
 		else {
 			datacell->priv->invalid = TRUE;
-			g_object_set (G_OBJECT (object), "text", "", "xalign", xalign, NULL);
+			g_object_set (G_OBJECT (object), "text", "", NULL);
 		}
-
-		g_object_notify (object, "value");
 		break;
 	case PROP_VALUE_ATTRIBUTES:
-		/*if (g_value_get_flags (value) & GDA_VALUE_ATTR_IS_DEFAULT)
-		  g_object_set (G_OBJECT (object), "text", "", NULL);*/
+		datacell->priv->invalid = g_value_get_flags (value) & GDA_VALUE_ATTR_DATA_NON_VALID ? TRUE : FALSE;
 		break;
 	case PROP_TO_BE_DELETED:
 		datacell->priv->to_be_deleted = g_value_get_boolean (value);
@@ -714,7 +710,7 @@ gdaui_data_cell_renderer_textual_start_editing (GtkCellRenderer      *cell,
 
 	g_object_set (G_OBJECT (entry), "is-cell-renderer", TRUE, "actions", FALSE, NULL);
 
-	if (OPTIMIZE){
+	if (OPTIMIZE) {
 		GValue *orig;
 		gchar *text;
 
diff --git a/libgda-ui/data-entries/plugins/gdaui-data-cell-renderer-password.c b/libgda-ui/data-entries/plugins/gdaui-data-cell-renderer-password.c
index bc3808b..26b8a13 100644
--- a/libgda-ui/data-entries/plugins/gdaui-data-cell-renderer-password.c
+++ b/libgda-ui/data-entries/plugins/gdaui-data-cell-renderer-password.c
@@ -262,7 +262,6 @@ gdaui_data_cell_renderer_password_set_property (GObject *object,
 			datacell->priv->value = NULL;
 		}
 
-		datacell->priv->invalid = FALSE;
 		if (value) {
 			GValue *gval = g_value_get_pointer (value);
 			if (gval && !gda_value_is_null (gval)) {
@@ -313,8 +312,7 @@ gdaui_data_cell_renderer_password_set_property (GObject *object,
 		g_object_notify (object, "value");
 		break;
 	case PROP_VALUE_ATTRIBUTES:
-		/*if (g_value_get_flags (value) & GDA_VALUE_ATTR_IS_DEFAULT)
-		  g_object_set (G_OBJECT (object), "text", "", NULL);*/
+		datacell->priv->invalid = g_value_get_flags (value) & GDA_VALUE_ATTR_DATA_NON_VALID ? TRUE : FALSE;
 		break;
 	case PROP_TO_BE_DELETED:
 		datacell->priv->to_be_deleted = g_value_get_boolean (value);
diff --git a/libgda-ui/data-entries/plugins/gdaui-data-cell-renderer-pict.c b/libgda-ui/data-entries/plugins/gdaui-data-cell-renderer-pict.c
index eb1c5fa..d3fa4a0 100644
--- a/libgda-ui/data-entries/plugins/gdaui-data-cell-renderer-pict.c
+++ b/libgda-ui/data-entries/plugins/gdaui-data-cell-renderer-pict.c
@@ -272,7 +272,6 @@ gdaui_data_cell_renderer_pict_set_property (GObject *object,
 		/* Because we don't have a copy of the value, we MUST NOT free it! */
                 cell->priv->value = NULL;
 		g_object_set (G_OBJECT (cell), "pixbuf", NULL, "stock-id", NULL, NULL);
-		cell->priv->invalid = FALSE;
 		if (value) {
                         GValue *gval = g_value_get_boxed (value);
 			GdkPixbuf *pixbuf = NULL;
@@ -325,6 +324,7 @@ gdaui_data_cell_renderer_pict_set_property (GObject *object,
                 g_object_notify (object, "value");
 		break;
 	case PROP_VALUE_ATTRIBUTES:
+		cell->priv->invalid = g_value_get_flags (value) & GDA_VALUE_ATTR_DATA_NON_VALID ? TRUE : FALSE;
 		break;
 	case PROP_EDITABLE:
 		cell->priv->editable = g_value_get_boolean (value);
diff --git a/libgda-ui/gdaui-basic-form.c b/libgda-ui/gdaui-basic-form.c
index 13e535b..57bda2e 100644
--- a/libgda-ui/gdaui-basic-form.c
+++ b/libgda-ui/gdaui-basic-form.c
@@ -730,11 +730,8 @@ create_entry_widget (SingleEntry *sentry)
 		/* set current value */
 		if (gda_holder_is_valid (param))
 			gdaui_data_entry_set_value (GDAUI_DATA_ENTRY (entry), val);
-		else {
-			GValue value;
-			memset (&value, 0, sizeof (GValue));
-			gdaui_data_entry_set_value (GDAUI_DATA_ENTRY (entry), &value);
-		}
+		else
+			gdaui_data_entry_set_value (GDAUI_DATA_ENTRY (entry), NULL);
 
 		if (!nnul ||
 		    (nnul && value &&
@@ -1402,11 +1399,17 @@ parameter_changed_cb (GdaHolder *param, SingleEntry *sentry)
 						  sentry->entry_contents_modified_id);
 			g_signal_handler_unblock (G_OBJECT (entry),
 						  sentry->entry_contents_activated_id);
-		}
+		}		
+
+		gdaui_entry_shell_set_unknown (GDAUI_ENTRY_SHELL (entry),
+					       !gda_holder_is_valid (param));
 
 		g_signal_emit (G_OBJECT (sentry->form), gdaui_basic_form_signals[HOLDER_CHANGED], 0,
 			       param, FALSE);
 	}
+	else
+		gdaui_entry_shell_set_unknown (GDAUI_ENTRY_SHELL (entry),
+					       !gda_holder_is_valid (param));
 }
 
 /**
diff --git a/libgda-ui/gdaui-data-proxy-info.c b/libgda-ui/gdaui-data-proxy-info.c
index 74f7b03..1a444cd 100644
--- a/libgda-ui/gdaui-data-proxy-info.c
+++ b/libgda-ui/gdaui-data-proxy-info.c
@@ -446,11 +446,11 @@ modif_buttons_make (GdauiDataProxyInfo *info)
 		gtk_toolbar_set_icon_size (GTK_TOOLBAR (info->priv->buttons_bar), GTK_ICON_SIZE_SMALL_TOOLBAR);
 		g_object_set (G_OBJECT (info->priv->buttons_bar), "toolbar-style", GTK_TOOLBAR_ICONS, NULL);
 		gtk_widget_set_name (info->priv->buttons_bar, "gdaui-data-proxy-info");
-		gtk_toolbar_set_tooltips (GTK_TOOLBAR (info->priv->buttons_bar), TRUE);
 		gtk_box_pack_start (GTK_BOX (info), info->priv->buttons_bar, TRUE, TRUE, 0);
 	}
 	else {
 		info->priv->buttons_bar = gtk_toolbar_new ();
+		gtk_box_pack_start (GTK_BOX (info), info->priv->buttons_bar, TRUE, TRUE, 0);
 	}
 	gtk_widget_show (info->priv->buttons_bar);
 
diff --git a/libgda-ui/gdaui-raw-form.c b/libgda-ui/gdaui-raw-form.c
index 263a358..b8f70b0 100644
--- a/libgda-ui/gdaui-raw-form.c
+++ b/libgda-ui/gdaui-raw-form.c
@@ -628,11 +628,6 @@ action_new_cb (GtkAction *action, GdauiRawForm *form)
 		}
 		else
 			g_object_unref (param);
-
-		GtkWidget *entry;
-		entry = gdaui_basic_form_get_entry_widget (GDAUI_BASIC_FORM (form), (GdaHolder*) list->data);
-		if (entry)
-			gdaui_entry_shell_set_unknown ((GdauiEntryShell*) entry, FALSE);
 	}
 
 	g_signal_handlers_unblock_by_func (form, G_CALLBACK (form_holder_changed_cb), NULL);
diff --git a/libgda-ui/gdaui-raw-grid.c b/libgda-ui/gdaui-raw-grid.c
index 9885a76..3977604 100644
--- a/libgda-ui/gdaui-raw-grid.c
+++ b/libgda-ui/gdaui-raw-grid.c
@@ -1030,8 +1030,8 @@ cell_value_set_attributes (GtkTreeViewColumn *tree_column,
 				    col, &value,
 				    offset + col, &attributes, -1);
 		g_object_set (G_OBJECT (cell),
-			      "value", value,
 			      "value-attributes", attributes,
+			      "value", value,
 			      "editable",
 			      !cdata->data_locked && !(attributes & GDA_VALUE_ATTR_NO_MODIF),
 			      "cell-background", GDAUI_COLOR_NORMAL_MODIF,
diff --git a/testing/gdaui-test-errors.c b/testing/gdaui-test-errors.c
index 65939eb..e1ccf5e 100644
--- a/testing/gdaui-test-errors.c
+++ b/testing/gdaui-test-errors.c
@@ -31,7 +31,7 @@ main (int argc, char *argv[])
 
 	/* main form to list customers */
 	form = gdaui_form_new (model);
-	gtk_box_pack_start (GTK_BOX (vbox), form, TRUE, TRUE, 0);
+	gtk_box_pack_start (GTK_BOX (vbox), form, FALSE, FALSE, 0);
 
         g_object_set (G_OBJECT (form),
 		      "info-flags",



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