builder: add support for parsing GDateTime
authorChristian Hergert <chergert@redhat.com>
Fri, 23 Jun 2023 21:11:37 +0000 (14:11 -0700)
committerChristian Hergert <chergert@redhat.com>
Fri, 23 Jun 2023 21:11:37 +0000 (14:11 -0700)
This will parse a <property/> containing the ISO 8601 format for a date
for use in GDateTime properties. For example:

  <property name="sampled-at">2023-06-23T00:00:00.00</property>

gtk/gtkbuilder.c

index 4315c655362c06a156837bef9dfb2fd64dd8749c..2b227da8da1945a5aee4f279b1ff31fbabecf501 100644 (file)
@@ -2362,6 +2362,24 @@ gtk_builder_value_from_string_type (GtkBuilder   *builder,
               ret = FALSE;
             }
         }
+      else if (G_VALUE_HOLDS (value, G_TYPE_DATE_TIME))
+        {
+          GDateTime *date_time;
+
+          date_time = g_date_time_new_from_iso8601 (string, NULL);
+
+          if (date_time)
+            g_value_take_boxed (value, date_time);
+          else
+            {
+              g_set_error (error,
+                           GTK_BUILDER_ERROR,
+                           GTK_BUILDER_ERROR_INVALID_VALUE,
+                           "Could not parse GDateTime '%s'",
+                           string);
+              ret = FALSE;
+            }
+        }
       else
         {
           g_set_error (error,