From: Andrea Zagli Date: Fri, 4 Sep 2009 18:03:18 +0000 (+0200) Subject: Bugfixes and added function GtkFormFieldDateTime::get_str_from_tm. X-Git-Tag: 0.1.0~21 X-Git-Url: https://saetta.ns0.it/gitweb?a=commitdiff_plain;h=597549b89be293ebae929e8bd7b1af5062e5a013;p=libgtkform Bugfixes and added function GtkFormFieldDateTime::get_str_from_tm. --- diff --git a/docs/reference/libgtkform-decl-list.txt b/docs/reference/libgtkform-decl-list.txt index 7be037d..3811719 100644 --- a/docs/reference/libgtkform-decl-list.txt +++ b/docs/reference/libgtkform-decl-list.txt @@ -50,6 +50,7 @@ gtk_form_field_boolean_get_value_sql gtk_form_field_boolean_clear gtk_form_field_boolean_is_empty gtk_form_filed_boolean_is_changed +gtk_form_field_boolean_set_as_origin gtk_form_field_boolean_set_from_datamodel gtk_form_field_boolean_str_to_boolean @@ -69,6 +70,8 @@ gtk_form_widget_new gtk_form_widget_set_from_gtkbuilder gtk_form_widget_get_widget gtk_form_widget_get_widget_name +gtk_form_widget_get_label +gtk_form_widget_set_label gtk_form_widget_get_value_stringify gtk_form_widget_set_value_stringify gtk_form_widget_set_editable @@ -92,6 +95,7 @@ gtk_form_field_text_get_value_sql gtk_form_field_text_clear gtk_form_field_text_is_empty gtk_form_field_text_is_changed +gtk_form_field_text_set_as_origin gtk_form_field_text_set_from_datamodel @@ -113,8 +117,10 @@ gtk_form_field_datetime_get_value_sql gtk_form_field_datetime_clear gtk_form_field_datetime_is_empty gtk_form_field_datetime_is_changed +gtk_form_field_datetime_set_as_origin gtk_form_field_datetime_set_from_datamodel gtk_form_field_datetime_get_tm_from_str +gtk_form_field_datetime_get_str_from_tm
@@ -151,6 +157,7 @@ gtk_form_field_float_get_value_sql gtk_form_field_float_clear gtk_form_field_float_is_empty gtk_form_field_float_is_changed +gtk_form_field_float_set_as_origin gtk_form_field_float_set_from_datamodel
@@ -205,13 +212,14 @@ gtk_form_field_get_type gtk_form_field_new gtk_form_field_new_from_gtk_form_widget gtk_form_field_get_field_name -gtk_form_field_get_gtk_form_widget +gtk_form_field_get_form_widget gtk_form_field_get_value_stringify gtk_form_field_get_value gtk_form_field_get_value_sql gtk_form_field_clear gtk_form_field_is_empty gtk_form_field_is_changed +gtk_form_field_set_as_origin gtk_form_field_set_from_datamodel @@ -244,7 +252,9 @@ gtk_form_get_objects_by_name gtk_form_clear gtk_form_check gtk_form_is_changed +gtk_form_set_as_origin gtk_form_set_sensitive +gtk_form_set_sensitive_by_name gtk_form_set_editable GtkFormSqlType gtk_form_get_sql @@ -303,6 +313,7 @@ gtk_form_field_integer_get_value_sql gtk_form_field_integer_clear gtk_form_field_integer_is_empty gtk_form_field_integer_is_changed +gtk_form_field_integer_set_as_origin gtk_form_field_integer_set_from_datamodel diff --git a/docs/reference/libgtkform-decl.txt b/docs/reference/libgtkform-decl.txt index 49ca085..e418092 100644 --- a/docs/reference/libgtkform-decl.txt +++ b/docs/reference/libgtkform-decl.txt @@ -221,6 +221,11 @@ GtkFormField *field GtkFormField *field +gtk_form_field_boolean_set_as_origin +void +GtkFormField *field + + gtk_form_field_boolean_set_from_datamodel gboolean GtkFormField *field, GdaDataModel *dm, gint row @@ -306,6 +311,16 @@ GtkFormWidget *fwidget GtkFormWidget *fwidget +gtk_form_widget_get_label +GtkWidget * +GtkFormWidget *fwidget + + +gtk_form_widget_set_label +void +GtkFormWidget *fwidget, GtkLabel *label + + gtk_form_widget_get_value_stringify const gchar * GtkFormWidget *fwidget @@ -405,6 +420,11 @@ GtkFormField *field GtkFormField *field +gtk_form_field_text_set_as_origin +void +GtkFormField *field + + gtk_form_field_text_set_from_datamodel gboolean GtkFormField *field, GdaDataModel *dm, gint row @@ -494,6 +514,11 @@ GtkFormField *field GtkFormField *field +gtk_form_field_datetime_set_as_origin +void +GtkFormField *field + + gtk_form_field_datetime_set_from_datamodel gboolean GtkFormField *field, GdaDataModel *dm, gint row @@ -503,6 +528,11 @@ GtkFormField *field, GdaDataModel *dm, gint row struct tm * const gchar *str + +gtk_form_field_datetime_get_str_from_tm +gchar * +struct tm *datetime, const gchar *format + TYPE_GTK_FORM_WIDGET_LABEL #define TYPE_GTK_FORM_WIDGET_LABEL (gtk_form_widget_label_get_type ()) @@ -652,6 +682,11 @@ GtkFormField *field GtkFormField *field +gtk_form_field_float_set_as_origin +void +GtkFormField *field + + gtk_form_field_float_set_from_datamodel gboolean GtkFormField *field, GdaDataModel *dm, gint row @@ -728,7 +763,7 @@ GtkFormKey *gtk_form_key, ... gtk_form_key_check gboolean -GtkFormKey *gtk_form_key +GtkFormKey *gtk_form_key, GtkFormWidget **form_widget gtk_form_key_get_sql @@ -859,6 +894,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); }; @@ -883,7 +919,7 @@ GtkFormWidget *fwidget GtkFormField *field -gtk_form_field_get_gtk_form_widget +gtk_form_field_get_form_widget GtkFormWidget * GtkFormField *field @@ -918,6 +954,11 @@ GtkFormField *field GtkFormField *field +gtk_form_field_set_as_origin +void +GtkFormField *field + + gtk_form_field_set_from_datamodel gboolean GtkFormField *field, GdaDataModel *dm, gint row @@ -1054,7 +1095,7 @@ GtkForm *form gtk_form_check gboolean -GtkForm *form +GtkForm *form, gboolean with_key,GtkFormWidget **form_widget,gboolean show_error_dialog, GtkWidget *parent_window,gboolean set_focus gtk_form_is_changed @@ -1062,11 +1103,21 @@ GtkForm *form GtkForm *form +gtk_form_set_as_origin +void +GtkForm *form + + gtk_form_set_sensitive void GtkForm *form, gboolean sensitive +gtk_form_set_sensitive_by_name +void +GtkForm *form, gboolean sensitive, ... + + gtk_form_set_editable void GtkForm *form, gboolean editable @@ -1314,6 +1365,11 @@ GtkFormField *field GtkFormField *field +gtk_form_field_integer_set_as_origin +void +GtkFormField *field + + gtk_form_field_integer_set_from_datamodel gboolean GtkFormField *field, GdaDataModel *dm, gint row diff --git a/docs/reference/libgtkform-undeclared.txt b/docs/reference/libgtkform-undeclared.txt index a47720b..fe0d0b1 100644 --- a/docs/reference/libgtkform-undeclared.txt +++ b/docs/reference/libgtkform-undeclared.txt @@ -1,2 +1,3 @@ +gtk_form_field_get_gtk_form_widget gtk_form_get_field_from_name gtk_form_get_widget_from_name diff --git a/docs/reference/libgtkform-undocumented.txt b/docs/reference/libgtkform-undocumented.txt index a85e31d..fcb0787 100644 --- a/docs/reference/libgtkform-undocumented.txt +++ b/docs/reference/libgtkform-undocumented.txt @@ -1,7 +1,7 @@ -6% symbol docs coverage. -17 symbols documented. -2 symbols incomplete. -261 not documented. +7% symbol docs coverage. +19 symbols documented. +1 symbols incomplete. +271 not documented. GTK_FORM @@ -121,10 +121,12 @@ gtk_form_field_boolean_get_value_sql gtk_form_field_boolean_get_value_stringify gtk_form_field_boolean_is_empty gtk_form_field_boolean_new +gtk_form_field_boolean_set_as_origin gtk_form_field_boolean_set_from_datamodel gtk_form_field_boolean_str_to_boolean (value) gtk_form_field_clear gtk_form_field_datetime_clear +gtk_form_field_datetime_get_str_from_tm gtk_form_field_datetime_get_tm_from_str gtk_form_field_datetime_get_type gtk_form_field_datetime_get_value @@ -133,6 +135,8 @@ gtk_form_field_datetime_get_value_stringify gtk_form_field_datetime_is_changed gtk_form_field_datetime_is_empty gtk_form_field_datetime_new +gtk_form_field_datetime_replace_str +gtk_form_field_datetime_set_as_origin gtk_form_field_datetime_set_from_datamodel gtk_form_field_float_clear gtk_form_field_float_get_type @@ -142,9 +146,9 @@ gtk_form_field_float_get_value_stringify gtk_form_field_float_is_changed gtk_form_field_float_is_empty gtk_form_field_float_new +gtk_form_field_float_set_as_origin gtk_form_field_float_set_from_datamodel gtk_form_field_get_field_name -gtk_form_field_get_gtk_form_widget (Returns) gtk_form_field_get_str_format gtk_form_field_get_type gtk_form_field_get_value @@ -158,6 +162,7 @@ gtk_form_field_integer_get_value_stringify gtk_form_field_integer_is_changed gtk_form_field_integer_is_empty gtk_form_field_integer_new +gtk_form_field_integer_set_as_origin gtk_form_field_integer_set_from_datamodel gtk_form_field_is_changed gtk_form_field_is_empty @@ -172,6 +177,7 @@ gtk_form_field_text_get_value_stringify gtk_form_field_text_is_changed gtk_form_field_text_is_empty gtk_form_field_text_new +gtk_form_field_text_set_as_origin gtk_form_field_text_set_from_datamodel gtk_form_filed_boolean_is_changed gtk_form_fill_from_datamodel @@ -200,6 +206,7 @@ gtk_form_remove_field gtk_form_set_editable gtk_form_set_key gtk_form_set_sensitive +gtk_form_set_sensitive_by_name gtk_form_set_table gtk_form_widget_check_get_type gtk_form_widget_check_get_value_stringify @@ -216,6 +223,7 @@ gtk_form_widget_entry_get_value_stringify gtk_form_widget_entry_new gtk_form_widget_entry_set_editable gtk_form_widget_entry_set_value_stringify +gtk_form_widget_get_label gtk_form_widget_get_type gtk_form_widget_get_value_stringify gtk_form_widget_get_widget @@ -227,6 +235,7 @@ gtk_form_widget_label_set_value_stringify gtk_form_widget_new gtk_form_widget_set_editable gtk_form_widget_set_from_gtkbuilder +gtk_form_widget_set_label gtk_form_widget_set_value_stringify gtk_form_widget_spin_get_type gtk_form_widget_spin_get_value_stringify diff --git a/docs/reference/libgtkform-unused.txt b/docs/reference/libgtkform-unused.txt index bac144f..ba1e695 100644 --- a/docs/reference/libgtkform-unused.txt +++ b/docs/reference/libgtkform-unused.txt @@ -13,13 +13,21 @@ GtkFormWidgetEntryClass GtkFormWidgetLabelClass GtkFormWidgetSpinClass GtkFormWidgetTextviewClass +gtk_form_field_boolean_set_as_origin gtk_form_field_boolean_str_to_boolean +gtk_form_field_datetime_get_str_from_tm gtk_form_field_datetime_get_tm_from_str gtk_form_field_datetime_is_changed +gtk_form_field_datetime_set_as_origin gtk_form_field_float_is_changed +gtk_form_field_float_set_as_origin +gtk_form_field_get_form_widget gtk_form_field_integer_is_changed +gtk_form_field_integer_set_as_origin gtk_form_field_is_changed +gtk_form_field_set_as_origin gtk_form_field_text_is_changed +gtk_form_field_text_set_as_origin gtk_form_filed_boolean_is_changed gtk_form_get_form_field_from_name gtk_form_get_form_widget_from_name @@ -31,5 +39,9 @@ gtk_form_get_widgets gtk_form_is_changed gtk_form_new_from_file gtk_form_new_from_xml +gtk_form_set_as_origin gtk_form_set_key +gtk_form_set_sensitive_by_name gtk_form_set_table +gtk_form_widget_get_label +gtk_form_widget_set_label diff --git a/docs/reference/tmpl/field.sgml b/docs/reference/tmpl/field.sgml index a14e282..88dbc6c 100644 --- a/docs/reference/tmpl/field.sgml +++ b/docs/reference/tmpl/field.sgml @@ -119,15 +119,6 @@ FormField @Returns: - - - - - -@field: -@Returns: - - diff --git a/docs/reference/tmpl/form.sgml b/docs/reference/tmpl/form.sgml index 9871812..5f05ef9 100644 --- a/docs/reference/tmpl/form.sgml +++ b/docs/reference/tmpl/form.sgml @@ -141,6 +141,11 @@ Form @form: +@with_key: +@form_widget: +@show_error_dialog: +@parent_window: +@set_focus: @Returns: diff --git a/docs/reference/tmpl/key.sgml b/docs/reference/tmpl/key.sgml index af9f081..f16cbd3 100644 --- a/docs/reference/tmpl/key.sgml +++ b/docs/reference/tmpl/key.sgml @@ -122,6 +122,7 @@ FormKey @gtk_form_key: +@form_widget: @Returns: diff --git a/docs/reference/tmpl/libgtkform-unused.sgml b/docs/reference/tmpl/libgtkform-unused.sgml index 6d3df27..c3b0b85 100644 --- a/docs/reference/tmpl/libgtkform-unused.sgml +++ b/docs/reference/tmpl/libgtkform-unused.sgml @@ -908,6 +908,14 @@ @value: @Returns: + + + + + +@field: +@Returns: + diff --git a/src/fielddatetime.c b/src/fielddatetime.c index e63ad50..5af6a41 100644 --- a/src/fielddatetime.c +++ b/src/fielddatetime.c @@ -46,6 +46,10 @@ static gboolean gtk_form_field_datetime_set_value_stringify (GtkFormField *field static gchar *gtk_form_field_get_str_format (GtkFormField *field); +static gchar *gtk_form_field_datetime_str_replace (const gchar *string, + const gchar *origin, + const gchar *replace); + #define GTK_FORM_FIELD_DATETIME_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), TYPE_GTK_FORM_FIELD_DATETIME, GtkFormFieldDateTimePrivate)) typedef struct _GtkFormFieldDateTimePrivate GtkFormFieldDateTimePrivate; @@ -53,6 +57,7 @@ struct _GtkFormFieldDateTimePrivate { struct tm *default_value; struct tm *original_value; + gint type; }; @@ -149,15 +154,12 @@ const GValue { struct tm *datetime; GValue *ret; - const gchar *format; const gchar *value; g_return_val_if_fail (IS_GTK_FORM_FIELD_DATETIME (field), NULL); ret = NULL; - format = gtk_form_field_get_str_format (field); - value = gtk_form_field_datetime_get_value_stringify (field); datetime = gtk_form_field_datetime_get_tm_from_str (value); @@ -196,15 +198,13 @@ const gchar datetime = gtk_form_field_datetime_get_tm_from_str (value); if (datetime != NULL) { - char *buf; - - buf = g_malloc (20); + gchar *value; - if (strftime (buf, 20, format, datetime) != 0) + value = gtk_form_field_datetime_get_str_from_tm (datetime, format); + if (value != NULL) { - ret = g_strconcat ("'", buf, "'", NULL); + ret = g_strconcat ("'", value, "'", NULL); } - g_free (buf); } } @@ -232,13 +232,12 @@ gtk_form_field_datetime_clear (GtkFormField *field) if (priv->default_value != NULL) { - char *buf; + gchar *value; - buf = malloc (30); - - if (strftime (buf, 30, format, priv->default_value) != '\0') + value = gtk_form_field_datetime_get_str_from_tm (priv->default_value, format); + if (value != NULL) { - ret = gtk_form_field_datetime_set_value_stringify (field, buf); + ret = gtk_form_field_datetime_set_value_stringify (field, value); } } else @@ -359,7 +358,6 @@ gtk_form_field_datetime_set_from_datamodel (GtkFormField *field, GdaDataModel *d struct tm *gtk_form_field_datetime_get_tm_from_str (const gchar *str) { - /* TO DO * check if it is a valid date/time */ @@ -412,6 +410,44 @@ struct tm return tm; } +/** + * gtk_form_field_datetime_get_str_from_tm: + * @datetime: a tm struct. + * @format: + * + * Returns: a string representation of @datetime based on the format in @format. + * It interprets a very little subset of format identifier from strftime. + * %Y: the year with 4 digits. + * %m: the month with 2 digits. + * %d: the day with 2 digits. + * %H: the hours with 2 digits 00-24. + * %M: the minutes with 2 digits 00-59. + * %S: the seconds with 2 digits 00-59. + */ +gchar +*gtk_form_field_datetime_get_str_from_tm (struct tm *datetime, + const gchar *format) +{ + gchar *ret; + + g_return_val_if_fail (datetime != NULL, ""); + + ret = gtk_form_field_datetime_str_replace (format, "%Y", + g_strdup_printf ("%04u", datetime->tm_year + 1900)); + ret = gtk_form_field_datetime_str_replace (ret, "%m", + g_strdup_printf ("%02u", datetime->tm_mon + 1)); + ret = gtk_form_field_datetime_str_replace (ret, "%d", + g_strdup_printf ("%02u", datetime->tm_mday)); + ret = gtk_form_field_datetime_str_replace (ret, "%H", + g_strdup_printf ("%02u", datetime->tm_hour)); + ret = gtk_form_field_datetime_str_replace (ret, "%M", + g_strdup_printf ("%02u", datetime->tm_min)); + ret = gtk_form_field_datetime_str_replace (ret, "%S", + g_strdup_printf ("%02u", datetime->tm_sec)); + + return ret; +} + /* PRIVATE */ static void gtk_form_field_datetime_set_property (GObject *object, @@ -495,17 +531,47 @@ static gchar switch (priv->type) { case GTK_FORM_FIELD_DATETIME_TYPE_DATETIME: - format = g_strdup ("%F %T"); + format = g_strdup ("%Y-%m-%d %H-%M-%S"); break; case GTK_FORM_FIELD_DATETIME_TYPE_DATE: - format = g_strdup ("%F"); + format = g_strdup ("%Y-%m-%d"); break; case GTK_FORM_FIELD_DATETIME_TYPE_TIME: - format = g_strdup ("%T"); + format = g_strdup ("%H-%M-%S"); break; } return format; } + +/** + * gtk_form_field_datetime_replace_str: + * @string: the string where make the replace. + * @origin: the string to replace. + * @replace: the string to insert. + * + * Returns: a string with replaced string. + */ +static gchar +*gtk_form_field_datetime_str_replace (const gchar *string, + const gchar *origin, + const gchar *replace) +{ + gchar *ret; + gchar *p; + + p = g_strstr_len (string, -1, origin); + + if (p == NULL) + { + return (gchar *)string; + } + + ret = g_strndup (string, p - string); + + ret = g_strdup_printf ("%s%s%s", ret, replace, p + strlen (origin)); + + return ret; +} diff --git a/src/fielddatetime.h b/src/fielddatetime.h index b2007da..f56f5b5 100644 --- a/src/fielddatetime.h +++ b/src/fielddatetime.h @@ -73,6 +73,7 @@ void gtk_form_field_datetime_set_as_origin (GtkFormField *field); gboolean gtk_form_field_datetime_set_from_datamodel (GtkFormField *field, GdaDataModel *dm, gint row); struct tm *gtk_form_field_datetime_get_tm_from_str (const gchar *str); +gchar *gtk_form_field_datetime_get_str_from_tm (struct tm *datetime, const gchar *format); G_END_DECLS