decompiler: Support sub-templates

Support GtkBuilderListItemFactory syntax by decompiling the nested XML,
rather than preserving it as a string literal.
This commit is contained in:
James Westman 2024-08-24 13:04:21 -05:00
parent 25d9826aea
commit 21d5ce86e9
6 changed files with 60 additions and 20 deletions

View file

@ -0,0 +1,11 @@
using Gtk 4.0;
ListView {
factory: BuilderListItemFactory list_item_factory {
template ListItem {
child: Label {
label: bind template.item as <$MyObject>.name;
};
}
};
}

View file

@ -1,8 +1,11 @@
using Gtk 4.0;
using Adw 1;
Gtk.BuilderListItemFactory {
template ListItem {
child: Gtk.Label label {};
child: Adw.Bin {
Gtk.Label label {}
};
}
}

View file

@ -11,7 +11,11 @@ corresponding .blp file and regenerate this file with blueprint-compiler.
<interface>
<template class="GtkListItem">
<property name="child">
<object class="GtkLabel" id="label"></object>
<object class="AdwBin">
<child>
<object class="GtkLabel" id="label"></object>
</child>
</object>
</property>
</template>
</interface>]]></property>

View file

@ -0,0 +1,12 @@
using Gtk 4.0;
using Adw 1;
BuilderListItemFactory {
template ListItem {
child: Adw.Bin {
Label label {}
};
}
}
Label label {}

View file

@ -212,14 +212,8 @@ class TestSamples(unittest.TestCase):
SKIP_DECOMPILE = [
# Not implemented yet
"action_widgets",
# Not implemented yet
"gtkcolumnview",
# Comments are not preserved in either direction
"comments",
# Not implemented yet
"list_factory",
# Not implemented yet
"subscope",
]
if sample in REQUIRE_ADW_1_4 and not self.have_adw_1_4: