[libgda] GdaSet: use 'set-default' signal from GdaHolder
- From: Daniel Espinosa Ortiz <despinosa src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libgda] GdaSet: use 'set-default' signal from GdaHolder
- Date: Tue, 12 Mar 2019 00:50:02 +0000 (UTC)
commit 80ba9530c0381354d055d5a6e62cd509993a72a0
Author: Daniel Espinosa Ortiz <esodan gmail com>
Date: Mon Mar 11 11:44:21 2019 -0600
GdaSet: use 'set-default' signal from GdaHolder
This is an effort to remove GdaAttributeManager
libgda-ui/gdaui-basic-form.c | 8 ++++----
libgda-ui/gdaui-form.c | 12 +++++++-----
libgda-ui/gdaui-raw-form.c | 2 +-
libgda/gda-holder.c | 18 ++++++++++++++++--
libgda/gda-holder.h | 2 +-
libgda/gda-set.c | 30 +++++++++++++++++++++++-------
tests/value-holders/check_set.c | 2 +-
7 files changed, 53 insertions(+), 21 deletions(-)
---
diff --git a/libgda-ui/gdaui-basic-form.c b/libgda-ui/gdaui-basic-form.c
index 7f2d65a1d..857c21b44 100644
--- a/libgda-ui/gdaui-basic-form.c
+++ b/libgda-ui/gdaui-basic-form.c
@@ -482,7 +482,7 @@ paramlist_param_attr_changed_cb (G_GNUC_UNUSED GdaSet *paramlist, GdaHolder *par
sentry = get_single_entry_for_holder (form, param);
- if (!strcmp (att_name, GDA_ATTRIBUTE_IS_DEFAULT)) {
+ if (!g_strcmp0 (att_name, "to-default")) {
GtkWidget *entry = NULL;
if (sentry)
entry = (GtkWidget*) sentry->entry;
@@ -511,7 +511,7 @@ paramlist_param_attr_changed_cb (G_GNUC_UNUSED GdaSet *paramlist, GdaHolder *par
G_CALLBACK (entry_contents_modified), sentry);
}
}
- else if (!strcmp (att_name, GDAUI_ATTRIBUTE_PLUGIN)) {
+ else if (!g_strcmp0 (att_name, "plugin")) {
if (sentry) {
/* recreate an entry widget */
create_entry_widget (sentry);
@@ -521,8 +521,8 @@ paramlist_param_attr_changed_cb (G_GNUC_UNUSED GdaSet *paramlist, GdaHolder *par
else
paramlist_public_data_changed_cb (priv->set_info, form);
}
- else if (!strcmp (att_name, GDA_ATTRIBUTE_NAME) ||
- !strcmp (att_name, GDA_ATTRIBUTE_DESCRIPTION)) {
+ else if (!g_strcmp0 (att_name, "name") ||
+ !g_strcmp0 (att_name, "description")) {
if (sentry) {
gchar *str, *title;
GdaSetSource *ss;
diff --git a/libgda-ui/gdaui-form.c b/libgda-ui/gdaui-form.c
index 147e2a065..a5e4d578e 100644
--- a/libgda-ui/gdaui-form.c
+++ b/libgda-ui/gdaui-form.c
@@ -193,11 +193,13 @@ gdaui_form_dispose (GObject *object)
form = GDAUI_FORM (object);
GdauiFormPrivate *priv = gdaui_form_get_instance_private (form);
- g_signal_handlers_disconnect_by_func (priv->raw_form,
- G_CALLBACK (form_layout_changed_cb), form);
- g_signal_handlers_disconnect_by_func (priv->raw_form,
- G_CALLBACK (form_selection_changed_cb), form);
-
+ if (priv->raw_form != NULL) {
+ g_signal_handlers_disconnect_by_func (priv->raw_form,
+ G_CALLBACK (form_layout_changed_cb), form);
+ g_signal_handlers_disconnect_by_func (priv->raw_form,
+ G_CALLBACK (form_selection_changed_cb), form);
+ priv->raw_form = NULL;
+ }
/* for the parent class */
G_OBJECT_CLASS (gdaui_form_parent_class)->dispose (object);
}
diff --git a/libgda-ui/gdaui-raw-form.c b/libgda-ui/gdaui-raw-form.c
index 08d9f86ac..dbac67325 100644
--- a/libgda-ui/gdaui-raw-form.c
+++ b/libgda-ui/gdaui-raw-form.c
@@ -488,7 +488,7 @@ gdaui_raw_form_set_property (GObject *object,
if (GDA_IS_DATA_PROXY (model)) {
/* clean all */
gdaui_raw_form_clean (form);
- g_assert (!priv->proxy);
+ g_assert (priv->proxy == NULL);
}
else
g_object_set (G_OBJECT (priv->proxy), "model", model, NULL);
diff --git a/libgda/gda-holder.c b/libgda/gda-holder.c
index 7e42bd79a..509dc702c 100644
--- a/libgda/gda-holder.c
+++ b/libgda/gda-holder.c
@@ -70,6 +70,7 @@ enum
CHANGED,
SOURCE_CHANGED,
VALIDATE_CHANGE,
+ TO_DEFAULT,
LAST_SIGNAL
};
@@ -204,11 +205,24 @@ gda_holder_class_init (GdaHolderClass *class)
G_STRUCT_OFFSET (GdaHolderClass, validate_change),
validate_change_accumulator, NULL,
_gda_marshal_ERROR__VALUE, G_TYPE_ERROR, 1, G_TYPE_VALUE);
+ /**
+ * GdaHolder::to-default:
+ * @holder: the object which received the signal
+ *
+ * Gets emitted when @holder is set to its default value
+ */
+ gda_holder_signals[TO_DEFAULT] =
+ g_signal_new ("to-default",
+ G_TYPE_FROM_CLASS (object_class),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (GdaHolderClass, to_default),
+ NULL, NULL,
+ NULL, G_TYPE_NONE, 0);
class->changed = NULL;
class->source_changed = NULL;
class->validate_change = m_validate_change;
- class->att_changed = NULL;
+ class->to_default = NULL;
/* virtual functions */
object_class->dispose = gda_holder_dispose;
@@ -1463,6 +1477,7 @@ gda_holder_set_value_to_default (GdaHolder *holder)
}
g_signal_emit (holder, gda_holder_signals[CHANGED], 0);
+ g_signal_emit (holder, gda_holder_signals[TO_DEFAULT], 0);
gda_holder_unlock ((GdaLockable*) holder);
return TRUE;
@@ -1549,7 +1564,6 @@ gda_holder_set_default_value (GdaHolder *holder, const GValue *value)
}
priv->default_value = gda_value_copy ((GValue *)value);
- //g_signal_emit (holder, gda_holder_signals[CHANGED], 0);
}
/* don't emit the "changed" signal */
diff --git a/libgda/gda-holder.h b/libgda/gda-holder.h
index 72b531515..ff4ce3dc8 100644
--- a/libgda/gda-holder.h
+++ b/libgda/gda-holder.h
@@ -49,7 +49,7 @@ struct _GdaHolderClass
void (*changed) (GdaHolder *holder);
void (*source_changed) (GdaHolder *holder);
GError *(*validate_change) (GdaHolder *holder, const GValue *new_value);
- void (*att_changed) (GdaHolder *holder, const gchar *att_name, const GValue
*att_value);
+ void (*to_default) (GdaHolder *holder);
/*< private >*/
/* Padding for future expansion */
diff --git a/libgda/gda-set.c b/libgda/gda-set.c
index a1f36b021..216e23b77 100644
--- a/libgda/gda-set.c
+++ b/libgda/gda-set.c
@@ -647,7 +647,7 @@ static void gda_set_finalize (GObject *object);
static void set_remove_node (GdaSet *set, GdaSetNode *node);
static void set_remove_source (GdaSet *set, GdaSetSource *source);
-
+static void holder_to_default_cb (GdaHolder *holder, GdaSet *dataset);
static void changed_holder_cb (GdaHolder *holder, GdaSet *dataset);
static GError *validate_change_holder_cb (GdaHolder *holder, const GValue *value, GdaSet *dataset);
static void source_changed_holder_cb (GdaHolder *holder, GdaSet *dataset);
@@ -785,12 +785,11 @@ GQuark gda_set_error_quark (void)
return quark;
}
-
static gboolean
validate_accumulator (G_GNUC_UNUSED GSignalInvocationHint *ihint,
- GValue *return_accu,
- const GValue *handler_return,
- G_GNUC_UNUSED gpointer data)
+ GValue *return_accu,
+ const GValue *handler_return,
+ G_GNUC_UNUSED gpointer data)
{
GError *error;
@@ -807,7 +806,7 @@ m_validate_holder_change (G_GNUC_UNUSED GdaSet *set, G_GNUC_UNUSED GdaHolder *ho
return NULL;
}
-static GError *
+static GError*
m_validate_set (G_GNUC_UNUSED GdaSet *set)
{
return NULL;
@@ -847,7 +846,7 @@ gda_set_class_init (GdaSetClass *class)
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GdaSetClass, validate_holder_change),
validate_accumulator, NULL,
- _gda_marshal_ERROR__OBJECT_VALUE, G_TYPE_ERROR, 2,
+ _gda_marshal_ERROR__OBJECT_VALUE, G_TYPE_ERROR, 2,
GDA_TYPE_HOLDER, G_TYPE_VALUE);
/**
* GdaSet::validate-set:
@@ -1604,6 +1603,8 @@ gda_set_remove_holder (GdaSet *set, GdaHolder *holder)
}
g_signal_handlers_disconnect_by_func (holder,
G_CALLBACK (holder_notify_cb), set);
+ g_signal_handlers_disconnect_by_func (holder,
+ G_CALLBACK (holder_to_default_cb), set);
/* now destroy the GdaSetNode and the GdaSetSource if necessary */
node = gda_set_get_node (set, holder);
@@ -1869,6 +1870,12 @@ gda_set_add_holder (GdaSet *set, GdaHolder *holder)
return added;
}
+static void
+holder_to_default_cb (GdaHolder *holder, GdaSet *dataset) {
+ g_signal_emit (G_OBJECT (dataset), gda_set_signals[HOLDER_ATTR_CHANGED], 0, holder,
+ "to-default", gda_holder_get_value (holder));
+}
+
static void
holder_notify_cb (GdaHolder *holder, GParamSpec *pspec, GdaSet *dataset)
{
@@ -1895,6 +1902,13 @@ holder_notify_cb (GdaHolder *holder, GParamSpec *pspec, GdaSet *dataset)
"description", desc);
gda_value_free (desc);
}
+ else if (!strcmp (pspec->name, "plugin")) {
+ GValue *plugin = gda_value_new (G_TYPE_STRING);
+ g_object_get_property (G_OBJECT (holder), "plugin", plugin);
+ g_signal_emit (G_OBJECT (dataset), gda_set_signals[HOLDER_ATTR_CHANGED], 0, holder,
+ "plugin", plugin);
+ gda_value_free (plugin);
+ }
}
static gboolean
@@ -1937,6 +1951,8 @@ gda_set_real_add_holder (GdaSet *set, GdaHolder *holder)
}
g_signal_connect (G_OBJECT (holder), "notify",
G_CALLBACK (holder_notify_cb), set);
+ g_signal_connect (G_OBJECT (holder), "to-default",
+ G_CALLBACK (holder_to_default_cb), set);
return TRUE;
}
else if (similar == holder)
diff --git a/tests/value-holders/check_set.c b/tests/value-holders/check_set.c
index 05f45d770..8272cf78d 100644
--- a/tests/value-holders/check_set.c
+++ b/tests/value-holders/check_set.c
@@ -184,7 +184,7 @@ static GError *
t3_validate_holder_change (GdaSet *set, GdaHolder *h, const GValue *value, gchar *token)
{
/* only accept GDA_VALUE_NULL or 444 value */
- g_assert (!strcmp (token, "MyToken"));
+ g_assert (!g_strcmp0 (token, "MyToken"));
if (!strcmp (gda_holder_get_id (h), "H2")) {
if (gda_value_is_null (value) || (g_value_get_int (value) == 444)) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]