From 597549b89be293ebae929e8bd7b1af5062e5a013 Mon Sep 17 00:00:00 2001 From: Andrea Zagli <azagli@libero.it> Date: Fri, 4 Sep 2009 20:03:18 +0200 Subject: [PATCH] Bugfixes and added function GtkFormFieldDateTime::get_str_from_tm. --- docs/reference/libgtkform-decl-list.txt | 13 ++- docs/reference/libgtkform-decl.txt | 62 ++++++++++++- docs/reference/libgtkform-undeclared.txt | 1 + docs/reference/libgtkform-undocumented.txt | 19 +++- docs/reference/libgtkform-unused.txt | 12 +++ docs/reference/tmpl/field.sgml | 9 -- docs/reference/tmpl/form.sgml | 5 + docs/reference/tmpl/key.sgml | 1 + docs/reference/tmpl/libgtkform-unused.sgml | 8 ++ src/fielddatetime.c | 102 +++++++++++++++++---- src/fielddatetime.h | 1 + 11 files changed, 197 insertions(+), 36 deletions(-) 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 </SECTION> @@ -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 </SECTION> @@ -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 </SECTION> <SECTION> @@ -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 </SECTION> @@ -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 </SECTION> @@ -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 </SECTION> 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 </FUNCTION> <FUNCTION> +<NAME>gtk_form_field_boolean_set_as_origin</NAME> +<RETURNS>void </RETURNS> +GtkFormField *field +</FUNCTION> +<FUNCTION> <NAME>gtk_form_field_boolean_set_from_datamodel</NAME> <RETURNS>gboolean </RETURNS> GtkFormField *field, GdaDataModel *dm, gint row @@ -306,6 +311,16 @@ GtkFormWidget *fwidget GtkFormWidget *fwidget </FUNCTION> <FUNCTION> +<NAME>gtk_form_widget_get_label</NAME> +<RETURNS>GtkWidget *</RETURNS> +GtkFormWidget *fwidget +</FUNCTION> +<FUNCTION> +<NAME>gtk_form_widget_set_label</NAME> +<RETURNS>void </RETURNS> +GtkFormWidget *fwidget, GtkLabel *label +</FUNCTION> +<FUNCTION> <NAME>gtk_form_widget_get_value_stringify</NAME> <RETURNS>const gchar *</RETURNS> GtkFormWidget *fwidget @@ -405,6 +420,11 @@ GtkFormField *field GtkFormField *field </FUNCTION> <FUNCTION> +<NAME>gtk_form_field_text_set_as_origin</NAME> +<RETURNS>void </RETURNS> +GtkFormField *field +</FUNCTION> +<FUNCTION> <NAME>gtk_form_field_text_set_from_datamodel</NAME> <RETURNS>gboolean </RETURNS> GtkFormField *field, GdaDataModel *dm, gint row @@ -494,6 +514,11 @@ GtkFormField *field GtkFormField *field </FUNCTION> <FUNCTION> +<NAME>gtk_form_field_datetime_set_as_origin</NAME> +<RETURNS>void </RETURNS> +GtkFormField *field +</FUNCTION> +<FUNCTION> <NAME>gtk_form_field_datetime_set_from_datamodel</NAME> <RETURNS>gboolean </RETURNS> GtkFormField *field, GdaDataModel *dm, gint row @@ -503,6 +528,11 @@ GtkFormField *field, GdaDataModel *dm, gint row <RETURNS>struct tm *</RETURNS> const gchar *str </FUNCTION> +<FUNCTION> +<NAME>gtk_form_field_datetime_get_str_from_tm</NAME> +<RETURNS>gchar *</RETURNS> +struct tm *datetime, const gchar *format +</FUNCTION> <MACRO> <NAME>TYPE_GTK_FORM_WIDGET_LABEL</NAME> #define TYPE_GTK_FORM_WIDGET_LABEL (gtk_form_widget_label_get_type ()) @@ -652,6 +682,11 @@ GtkFormField *field GtkFormField *field </FUNCTION> <FUNCTION> +<NAME>gtk_form_field_float_set_as_origin</NAME> +<RETURNS>void </RETURNS> +GtkFormField *field +</FUNCTION> +<FUNCTION> <NAME>gtk_form_field_float_set_from_datamodel</NAME> <RETURNS>gboolean </RETURNS> GtkFormField *field, GdaDataModel *dm, gint row @@ -728,7 +763,7 @@ GtkFormKey *gtk_form_key, ... <FUNCTION> <NAME>gtk_form_key_check</NAME> <RETURNS>gboolean </RETURNS> -GtkFormKey *gtk_form_key +GtkFormKey *gtk_form_key, GtkFormWidget **form_widget </FUNCTION> <FUNCTION> <NAME>gtk_form_key_get_sql</NAME> @@ -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); }; </STRUCT> @@ -883,7 +919,7 @@ GtkFormWidget *fwidget GtkFormField *field </FUNCTION> <FUNCTION> -<NAME>gtk_form_field_get_gtk_form_widget</NAME> +<NAME>gtk_form_field_get_form_widget</NAME> <RETURNS>GtkFormWidget *</RETURNS> GtkFormField *field </FUNCTION> @@ -918,6 +954,11 @@ GtkFormField *field GtkFormField *field </FUNCTION> <FUNCTION> +<NAME>gtk_form_field_set_as_origin</NAME> +<RETURNS>void </RETURNS> +GtkFormField *field +</FUNCTION> +<FUNCTION> <NAME>gtk_form_field_set_from_datamodel</NAME> <RETURNS>gboolean </RETURNS> GtkFormField *field, GdaDataModel *dm, gint row @@ -1054,7 +1095,7 @@ GtkForm *form <FUNCTION> <NAME>gtk_form_check</NAME> <RETURNS>gboolean </RETURNS> -GtkForm *form +GtkForm *form, gboolean with_key,GtkFormWidget **form_widget,gboolean show_error_dialog, GtkWidget *parent_window,gboolean set_focus </FUNCTION> <FUNCTION> <NAME>gtk_form_is_changed</NAME> @@ -1062,11 +1103,21 @@ GtkForm *form GtkForm *form </FUNCTION> <FUNCTION> +<NAME>gtk_form_set_as_origin</NAME> +<RETURNS>void </RETURNS> +GtkForm *form +</FUNCTION> +<FUNCTION> <NAME>gtk_form_set_sensitive</NAME> <RETURNS>void </RETURNS> GtkForm *form, gboolean sensitive </FUNCTION> <FUNCTION> +<NAME>gtk_form_set_sensitive_by_name</NAME> +<RETURNS>void </RETURNS> +GtkForm *form, gboolean sensitive, ... +</FUNCTION> +<FUNCTION> <NAME>gtk_form_set_editable</NAME> <RETURNS>void </RETURNS> GtkForm *form, gboolean editable @@ -1314,6 +1365,11 @@ GtkFormField *field GtkFormField *field </FUNCTION> <FUNCTION> +<NAME>gtk_form_field_integer_set_as_origin</NAME> +<RETURNS>void </RETURNS> +GtkFormField *field +</FUNCTION> +<FUNCTION> <NAME>gtk_form_field_integer_set_from_datamodel</NAME> <RETURNS>gboolean </RETURNS> 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: -<!-- ##### FUNCTION gtk_form_field_get_gtk_form_widget ##### --> -<para> - -</para> - -@field: -@Returns: - - <!-- ##### FUNCTION gtk_form_field_get_value_stringify ##### --> <para> 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 </para> @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 </para> @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: +<!-- ##### FUNCTION gtk_form_field_get_gtk_form_widget ##### --> +<para> + +</para> + +@field: +@Returns: + <!-- ##### FUNCTION gtk_form_get_field_from_name ##### --> <para> 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 -- 2.49.0