[gtk/convert-dialog: 1/3] builder-tool: Rewrite GtkDialog
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/convert-dialog: 1/3] builder-tool: Rewrite GtkDialog
- Date: Fri, 31 May 2019 19:45:30 +0000 (UTC)
commit 8799e5798bdc222e9b571a8e39057e4492f82244
Author: Lubomir Rintel <lkundrak v3 sk>
Date: Thu May 30 09:44:44 2019 +0200
builder-tool: Rewrite GtkDialog
Changes
<object class="GtkDialog">
<child internal-child="vbox">
<...>
<child internal-child="action_area">...</child>
...
</...>
<packing />
</child>
<object>
to
<object class="GtkDialog">
<child internal-child="content_area">
<...>
...
</...>
</child>
<child internal-child="action_area">...</child>
<object>
gtk/tools/gtk-builder-tool-simplify.c | 64 +++++++++++++++++++++++++++++++++++
1 file changed, 64 insertions(+)
---
diff --git a/gtk/tools/gtk-builder-tool-simplify.c b/gtk/tools/gtk-builder-tool-simplify.c
index eed27b29b5..a7f7ecbcbb 100644
--- a/gtk/tools/gtk-builder-tool-simplify.c
+++ b/gtk/tools/gtk-builder-tool-simplify.c
@@ -1265,6 +1265,66 @@ rewrite_paned (Element *element,
rewrite_paned_child (element, data, child2, "child2");
}
+static void
+rewrite_dialog (Element *element,
+ MyParserData *data)
+{
+ Element *content_area = NULL;
+ Element *vbox = NULL;
+ Element *action_area = NULL;
+ GList *l;
+
+ for (l = element->children; l; l = l->next)
+ {
+ Element *elt = l->data;
+
+ if (g_str_equal (elt->element_name, "child") &&
+ g_strcmp0 (get_attribute_value (elt, "internal-child"), "vbox") == 0)
+ {
+ content_area = elt;
+ break;
+ }
+ }
+
+ if (!content_area || !content_area->children)
+ return;
+
+ vbox = content_area->children->data;
+
+ for (l = vbox->children; l; l = l->next)
+ {
+ Element *elt = l->data;
+
+ if (g_str_equal (elt->element_name, "child") &&
+ g_strcmp0 (get_attribute_value (elt, "internal-child"), "action_area") == 0)
+ {
+ action_area = elt;
+ break;
+ }
+ }
+
+ if (!action_area)
+ return;
+
+ set_attribute_value (content_area, "internal-child", "content_area");
+ vbox->children = g_list_remove (vbox->children, action_area);
+ action_area->parent = element;
+ element->children = g_list_append (element->children, action_area);
+
+ for (l = action_area->children; l; l = l->next)
+ {
+ Element *elt = l->data;
+
+ if (g_str_equal (elt->element_name, "packing"))
+ {
+ action_area->children = g_list_remove (action_area->children, elt);
+ free_element (elt);
+ break;
+ }
+ }
+
+}
+
static void
rewrite_layout_props (Element *element,
MyParserData *data)
@@ -1487,6 +1547,10 @@ rewrite_element (Element *element,
g_str_equal (get_class_name (element), "GtkPaned"))
rewrite_paned (element, data);
+ if (element_is_object_or_template (element) &&
+ g_str_equal (get_class_name (element), "GtkDialog"))
+ rewrite_dialog (element, data);
+
if (element_is_object_or_template (element) &&
g_str_equal (get_class_name (element), "GtkOverlay"))
rewrite_layout_props (element, data);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]