From: Andrea Zagli Date: Fri, 4 Sep 2009 07:36:26 +0000 (+0200) Subject: Added functions GtkForm::set_as_origin and GtkFormField*::set_as_origin. X-Git-Tag: 0.1.0~22 X-Git-Url: https://saetta.ns0.it/gitweb?a=commitdiff_plain;h=9b9c82f5d8b0322bd388cab4045213da04e7ca15;p=libgtkform Added functions GtkForm::set_as_origin and GtkFormField*::set_as_origin. --- diff --git a/src/field.c b/src/field.c index 4ed31fb..218d259 100644 --- a/src/field.c +++ b/src/field.c @@ -266,6 +266,21 @@ gtk_form_field_is_changed (GtkFormField *field) return ret; } +/** + * gtk_form_field_set_as_origin: + * @field: a #GtkFormField object. + * + * Sets the original value of #GtkFormField to the current value. + */ +void +gtk_form_field_set_as_origin (GtkFormField *field) +{ + if (IS_GTK_FORM_FIELD (field) && GTK_FORM_FIELD_GET_CLASS (field)->set_as_origin != NULL) + { + GTK_FORM_FIELD_GET_CLASS (field)->set_as_origin (field); + } +} + /** * gtk_form_field_set_from_datamodel: * @field: a #GtkFormField object. diff --git a/src/field.h b/src/field.h index 370a882..0a51a13 100644 --- a/src/field.h +++ b/src/field.h @@ -56,6 +56,7 @@ struct _GtkFormFieldClass gboolean (*clear) (GtkFormField *field); gboolean (*is_empty) (GtkFormField *field); gboolean (*is_changed) (GtkFormField *field); + void (*set_as_origin) (GtkFormField *field); gboolean (*set_from_datamodel) (GtkFormField *field, GdaDataModel *dm, gint row); }; @@ -76,6 +77,7 @@ gboolean gtk_form_field_clear (GtkFormField *field); gboolean gtk_form_field_is_empty (GtkFormField *field); gboolean gtk_form_field_is_changed (GtkFormField *field); +void gtk_form_field_set_as_origin (GtkFormField *field); gboolean gtk_form_field_set_from_datamodel (GtkFormField *field, GdaDataModel *dm, gint row); diff --git a/src/fieldboolean.c b/src/fieldboolean.c index 7528bee..6e7653c 100644 --- a/src/fieldboolean.c +++ b/src/fieldboolean.c @@ -68,6 +68,7 @@ gtk_form_field_boolean_class_init (GtkFormFieldBooleanClass *klass) field_class->clear = gtk_form_field_boolean_clear; field_class->is_empty = gtk_form_field_boolean_is_empty; field_class->is_changed = gtk_form_filed_boolean_is_changed; + field_class->set_as_origin = gtk_form_field_boolean_set_as_origin; field_class->set_from_datamodel = gtk_form_field_boolean_set_from_datamodel; g_object_class_install_property (object_class, PROP_DEFAULT, @@ -237,6 +238,26 @@ gtk_form_filed_boolean_is_changed (GtkFormField *field) return ret; } +/** + * gtk_form_field_boolean_set_as_origin: + * @field: a #GtkFormField object. + * + */ +void +gtk_form_field_boolean_set_as_origin (GtkFormField *field) +{ + GtkFormFieldBooleanPrivate *priv; + const gchar *value; + + g_return_if_fail (IS_GTK_FORM_FIELD_BOOLEAN (field)); + + priv = GTK_FORM_FIELD_BOOLEAN_GET_PRIVATE (GTK_FORM_FIELD_BOOLEAN (field)); + + value = gtk_form_field_boolean_get_value_stringify (field); + + priv->original_value = gtk_form_field_boolean_str_to_boolean (value); +} + /** * gtk_form_field_boolean_set_from_datamodel: * @field: a #GtkFormField object. diff --git a/src/fieldboolean.h b/src/fieldboolean.h index 89349db..856b566 100644 --- a/src/fieldboolean.h +++ b/src/fieldboolean.h @@ -61,6 +61,7 @@ gboolean gtk_form_field_boolean_clear (GtkFormField *field); gboolean gtk_form_field_boolean_is_empty (GtkFormField *field); gboolean gtk_form_filed_boolean_is_changed (GtkFormField *field); +void gtk_form_field_boolean_set_as_origin (GtkFormField *field); gboolean gtk_form_field_boolean_set_from_datamodel (GtkFormField *field, GdaDataModel *dm, gint row); diff --git a/src/fielddatetime.c b/src/fielddatetime.c index 5430671..e63ad50 100644 --- a/src/fielddatetime.c +++ b/src/fielddatetime.c @@ -74,6 +74,7 @@ gtk_form_field_datetime_class_init (GtkFormFieldDateTimeClass *klass) field_class->clear = gtk_form_field_datetime_clear; field_class->is_empty = gtk_form_field_datetime_is_empty; field_class->is_changed = gtk_form_field_datetime_is_changed; + field_class->set_as_origin = gtk_form_field_datetime_set_as_origin; field_class->set_from_datamodel = gtk_form_field_datetime_set_from_datamodel; g_object_class_install_property (object_class, PROP_DEFAULT, @@ -269,7 +270,7 @@ gtk_form_field_datetime_is_empty (GtkFormField *field) /** * gtk_form_field_datetime_is_changed: - * @field: + * @field: a #GtkFormField object. * */ gboolean @@ -298,6 +299,27 @@ gtk_form_field_datetime_is_changed (GtkFormField *field) return ret; } +/** + * gtk_form_field_datetime_set_as_origin: + * @field: a #GtkFormField object. + * + */ +void +gtk_form_field_datetime_set_as_origin (GtkFormField *field) +{ + gboolean ret = FALSE; + GtkFormFieldDateTimePrivate *priv; + struct tm *value; + + g_return_if_fail (IS_GTK_FORM_FIELD_DATETIME (field)); + + priv = GTK_FORM_FIELD_DATETIME_GET_PRIVATE (GTK_FORM_FIELD_DATETIME (field)); + + value = gtk_form_field_datetime_get_tm_from_str (gtk_form_field_datetime_get_value_stringify (field)); + + priv->original_value = g_memdup (value, sizeof (struct tm)); +} + /** * gtk_form_field_datetime_set_from_datamodel: * @field: a #GtkFormField object. diff --git a/src/fielddatetime.h b/src/fielddatetime.h index d28d867..b2007da 100644 --- a/src/fielddatetime.h +++ b/src/fielddatetime.h @@ -68,6 +68,7 @@ gboolean gtk_form_field_datetime_clear (GtkFormField *field); gboolean gtk_form_field_datetime_is_empty (GtkFormField *field); gboolean gtk_form_field_datetime_is_changed (GtkFormField *field); +void gtk_form_field_datetime_set_as_origin (GtkFormField *field); gboolean gtk_form_field_datetime_set_from_datamodel (GtkFormField *field, GdaDataModel *dm, gint row); diff --git a/src/fieldfloat.c b/src/fieldfloat.c index 20b4dd0..8695f4d 100644 --- a/src/fieldfloat.c +++ b/src/fieldfloat.c @@ -68,6 +68,7 @@ gtk_form_field_float_class_init (GtkFormFieldFloatClass *klass) field_class->clear = gtk_form_field_float_clear; field_class->is_empty = gtk_form_field_float_is_empty; field_class->is_changed = gtk_form_field_float_is_changed; + field_class->set_as_origin = gtk_form_field_float_set_as_origin; field_class->set_from_datamodel = gtk_form_field_float_set_from_datamodel; g_object_class_install_property (object_class, PROP_DEFAULT, @@ -248,6 +249,23 @@ gtk_form_field_float_is_changed (GtkFormField *field) return ret; } +/** + * gtk_form_field_float_set_as_origin: + * @field: a #GtkFormField object. + * + */ +void +gtk_form_field_float_set_as_origin (GtkFormField *field) +{ + GtkFormFieldFloatPrivate *priv; + + g_return_if_fail (IS_GTK_FORM_FIELD_FLOAT (field)); + + priv = GTK_FORM_FIELD_FLOAT_GET_PRIVATE (GTK_FORM_FIELD_FLOAT (field)); + + priv->original_value = g_strtod (gtk_form_field_float_get_value_stringify (field), NULL); +} + /** * gtk_form_field_float_set_from_datamodel: * @field: a #GtkFormField object. diff --git a/src/fieldfloat.h b/src/fieldfloat.h index 5f3ae5f..60a7e0e 100644 --- a/src/fieldfloat.h +++ b/src/fieldfloat.h @@ -61,6 +61,7 @@ gboolean gtk_form_field_float_clear (GtkFormField *field); gboolean gtk_form_field_float_is_empty (GtkFormField *field); gboolean gtk_form_field_float_is_changed (GtkFormField *field); +void gtk_form_field_float_set_as_origin (GtkFormField *field); gboolean gtk_form_field_float_set_from_datamodel (GtkFormField *field, GdaDataModel *dm, gint row); diff --git a/src/fieldinteger.c b/src/fieldinteger.c index 10e5dae..934e4a3 100644 --- a/src/fieldinteger.c +++ b/src/fieldinteger.c @@ -66,6 +66,7 @@ gtk_form_field_integer_class_init (GtkFormFieldIntegerClass *klass) field_class->clear = gtk_form_field_integer_clear; field_class->is_empty = gtk_form_field_integer_is_empty; field_class->is_changed = gtk_form_field_integer_is_changed; + field_class->set_as_origin = gtk_form_field_integer_set_as_origin; field_class->set_from_datamodel = gtk_form_field_integer_set_from_datamodel; g_object_class_install_property (object_class, PROP_DEFAULT, @@ -245,6 +246,22 @@ gtk_form_field_integer_is_changed (GtkFormField *field) return ret; } +/** + * gtk_form_field_integer_set_as_origin: + * @field: a #GtkFormField object. + * + */ +void +gtk_form_field_integer_set_as_origin (GtkFormField *field) +{ + GtkFormFieldIntegerPrivate *priv; + + g_return_if_fail (IS_GTK_FORM_FIELD_INTEGER (field)); + + priv = GTK_FORM_FIELD_INTEGER_GET_PRIVATE (GTK_FORM_FIELD_INTEGER (field)); + + priv->original_value = strtol (gtk_form_field_integer_get_value_stringify (field), NULL, 10); +} /** * gtk_form_field_integer_set_from_datamodel: * @field: a #GtkFormField object. diff --git a/src/fieldinteger.h b/src/fieldinteger.h index 63a43ba..0fe0afe 100644 --- a/src/fieldinteger.h +++ b/src/fieldinteger.h @@ -61,6 +61,7 @@ gboolean gtk_form_field_integer_clear (GtkFormField *field); gboolean gtk_form_field_integer_is_empty (GtkFormField *field); gboolean gtk_form_field_integer_is_changed (GtkFormField *field); +void gtk_form_field_integer_set_as_origin (GtkFormField *field); gboolean gtk_form_field_integer_set_from_datamodel (GtkFormField *field, GdaDataModel *dm, gint row); diff --git a/src/fieldtext.c b/src/fieldtext.c index b765f64..d249d87 100644 --- a/src/fieldtext.c +++ b/src/fieldtext.c @@ -66,6 +66,7 @@ gtk_form_field_text_class_init (GtkFormFieldTextClass *klass) field_class->clear = gtk_form_field_text_clear; field_class->is_empty = gtk_form_field_text_is_empty; field_class->is_changed = gtk_form_field_text_is_changed; + field_class->set_as_origin = gtk_form_field_text_set_as_origin; field_class->set_from_datamodel = gtk_form_field_text_set_from_datamodel; g_object_class_install_property (object_class, PROP_DEFAULT, @@ -228,6 +229,23 @@ gtk_form_field_text_is_changed (GtkFormField *field) return ret; } +/** + * gtk_form_field_text_set_as_origin: + * @field: a #GtkFormField object. + * + */ +void +gtk_form_field_text_set_as_origin (GtkFormField *field) +{ + GtkFormFieldTextPrivate *priv; + + g_return_if_fail (IS_GTK_FORM_FIELD_TEXT (field)); + + priv = GTK_FORM_FIELD_TEXT_GET_PRIVATE (GTK_FORM_FIELD_TEXT (field)); + + priv->original_value = (gchar *)gtk_form_field_text_get_value_stringify (field); +} + /** * gtk_form_field_text_set_from_datamodel: * @field: a #GtkFormField object. diff --git a/src/fieldtext.h b/src/fieldtext.h index a317889..b7ec022 100644 --- a/src/fieldtext.h +++ b/src/fieldtext.h @@ -61,6 +61,7 @@ gboolean gtk_form_field_text_clear (GtkFormField *field); gboolean gtk_form_field_text_is_empty (GtkFormField *field); gboolean gtk_form_field_text_is_changed (GtkFormField *field); +void gtk_form_field_text_set_as_origin (GtkFormField *field); gboolean gtk_form_field_text_set_from_datamodel (GtkFormField *field, GdaDataModel *dm, gint row); diff --git a/src/form.c b/src/form.c index 962ef24..9f67e5e 100644 --- a/src/form.c +++ b/src/form.c @@ -402,7 +402,7 @@ GtkForm else { /* TO DO */ - g_warning ("The file is not a valid gtkform definition file"); + g_warning ("The file is not a valid gtkform definition file."); } } @@ -938,6 +938,32 @@ gtk_form_is_changed (GtkForm *form) return ret; } +/** + * gtk_form_set_as_origin: + * @form: a #GtkForm object. + * + * Sets the original values of every #GtkForm #GtkFormField's to the currents + * values. + */ +void +gtk_form_set_as_origin (GtkForm *form) +{ + GtkFormPrivate *priv; + GSList *fields; + + g_return_if_fail (IS_GTK_FORM (form)); + + priv = GTK_FORM_GET_PRIVATE (form); + + fields = priv->fields; + while (fields != NULL) + { + gtk_form_field_set_as_origin ((GtkFormField *)fields->data); + + fields = g_slist_next (fields); + } +} + /** * gtk_form_set_sensitive: * @form: a #GtkForm object. @@ -947,13 +973,16 @@ gtk_form_is_changed (GtkForm *form) void gtk_form_set_sensitive (GtkForm *form, gboolean sensitive) { + GtkFormPrivate *priv; + GSList *fields; GtkFormWidget *fwidget; - GtkFormPrivate *priv = GTK_FORM_GET_PRIVATE (form); GtkWidget *widget; g_return_if_fail (IS_GTK_FORM (form)); - GSList *fields = priv->fields; + priv = GTK_FORM_GET_PRIVATE (form); + + fields = priv->fields; while (fields != NULL) { fwidget = gtk_form_field_get_form_widget ((GtkFormField *)fields->data); @@ -1016,11 +1045,14 @@ void gtk_form_set_editable (GtkForm *form, gboolean editable) { GtkFormWidget *fwidget; - GtkFormPrivate *priv = GTK_FORM_GET_PRIVATE (form); + GtkFormPrivate *priv; + GSList *fields; g_return_if_fail (IS_GTK_FORM (form)); - GSList *fields = priv->fields; + priv = GTK_FORM_GET_PRIVATE (form); + + fields = priv->fields; while (fields != NULL) { fwidget = gtk_form_field_get_form_widget ((GtkFormField *)fields->data); @@ -1041,6 +1073,8 @@ gtk_form_set_editable (GtkForm *form, gboolean editable) gchar *gtk_form_get_sql (GtkForm *form, GtkFormSqlType type) { + GtkFormPrivate *priv; + GSList *fields; GtkFormField *field; gchar *sql = ""; gchar *fields_names = ""; @@ -1051,9 +1085,9 @@ gchar g_return_val_if_fail (IS_GTK_FORM (form), NULL); - GtkFormPrivate *priv = GTK_FORM_GET_PRIVATE (form); + priv = GTK_FORM_GET_PRIVATE (form); - GSList *fields = priv->fields; + fields = priv->fields; while (fields != NULL) { @@ -1146,15 +1180,17 @@ gchar gboolean gtk_form_fill_from_datamodel (GtkForm *form, GdaDataModel *dm, gint row) { + GtkFormPrivate *priv; + GSList *fields; gboolean ret = TRUE; GtkFormField *field; gchar *field_name; g_return_val_if_fail (IS_GTK_FORM (form), FALSE); - GtkFormPrivate *priv = GTK_FORM_GET_PRIVATE (form); + priv = GTK_FORM_GET_PRIVATE (form); - GSList *fields = priv->fields; + fields = priv->fields; while (fields != NULL) { diff --git a/src/form.h b/src/form.h index 31d63e3..bdc2300 100644 --- a/src/form.h +++ b/src/form.h @@ -85,6 +85,7 @@ gboolean gtk_form_check (GtkForm *form, gboolean with_key, gboolean set_focus); gboolean gtk_form_is_changed (GtkForm *form); +void gtk_form_set_as_origin (GtkForm *form); void gtk_form_set_sensitive (GtkForm *form, gboolean sensitive); void gtk_form_set_sensitive_by_name (GtkForm *form, gboolean sensitive, ...);