diff options
author | Matthias Clasen <mclasen@redhat.com> | 2019-02-07 15:34:54 -0500 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2019-02-08 00:09:44 -0500 |
commit | b6755970759d71cd62d14cbfff66fbc581c342ae (patch) | |
tree | efd3f4b69138b154ba46bf1ce3ca7943be605be2 /gtk/tools | |
parent | ce60089f46e765265c51bd4e4372dadffb3b8e96 (diff) | |
download | gtk+-b6755970759d71cd62d14cbfff66fbc581c342ae.tar.gz |
builder-tool: Convert assistant pages too
Do the same transformation for GtkAssistantPage that
we already do for GtkStackPage, to transform GTK 3 .ui
files to GTK 4 ways of doing things.
Diffstat (limited to 'gtk/tools')
-rw-r--r-- | gtk/tools/gtk-builder-tool-simplify.c | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/gtk/tools/gtk-builder-tool-simplify.c b/gtk/tools/gtk-builder-tool-simplify.c index 69bb028569..759f7c5884 100644 --- a/gtk/tools/gtk-builder-tool-simplify.c +++ b/gtk/tools/gtk-builder-tool-simplify.c @@ -576,6 +576,71 @@ rewrite_stack (Element *element, element->children = new_children; } +static Element * +rewrite_assistant_child (Element *child, MyParserData *data) +{ + Element *object = NULL; + Element *packing = NULL; + Element *new_object; + Element *prop; + GList *l; + + if (!g_str_equal (child->element_name, "child")) + return child; + + for (l = child->children; l; l = l->next) + { + Element *elt = l->data; + if (g_str_equal (elt->element_name, "object")) + object = elt; + else if (g_str_equal (elt->element_name, "packing")) + packing = elt; + } + + if (!packing) + return child; + + new_object = g_new0 (Element, 1); + new_object->element_name = g_strdup ("object"); + new_object->attribute_names = g_new0 (char *, 2); + new_object->attribute_names[0] = g_strdup ("class"); + new_object->attribute_values = g_new0 (char *, 2); + new_object->attribute_values[0] = g_strdup ("GtkAssistantPage"); + new_object->children = packing->children; + packing->children = NULL; + + prop = g_new0 (Element, 1); + prop->element_name = g_strdup ("property"); + prop->attribute_names = g_new0 (char *, 2); + prop->attribute_names[0] = g_strdup ("name"); + prop->attribute_values = g_new0 (char *, 2); + prop->attribute_values[0] = g_strdup ("child"); + prop->children = g_list_append (prop->children, object); + new_object->children = g_list_append (new_object->children, prop); + + g_list_free (child->children); + child->children = g_list_append (NULL, new_object); + + return child; +} + +static void +rewrite_assistant (Element *element, + MyParserData *data) +{ + GList *l, *new_children; + + new_children = NULL; + for (l = element->children; l; l = l->next) + { + Element *child = l->data; + new_children = g_list_append (new_children, rewrite_assistant_child (child, data)); + } + + g_list_free (element->children); + element->children = new_children; +} + static gboolean simplify_element (Element *element, MyParserData *data) @@ -617,6 +682,10 @@ simplify_element (Element *element, if (g_str_equal (element->element_name, "object") && g_str_equal (get_class_name (element), "GtkStack")) rewrite_stack (element, data); + + if (g_str_equal (element->element_name, "object") && + g_str_equal (get_class_name (element), "GtkAssistant")) + rewrite_assistant (element, data); if (g_str_equal (element->element_name, "property") && property_has_been_removed (element, data)) |