Fix referencing template by ID

This commit is contained in:
James Westman 2022-07-16 21:16:45 -05:00
parent 664fa2250b
commit 08da6f79c7
No known key found for this signature in database
GPG key ID: CE2DBA0ADB654EA6
3 changed files with 10 additions and 3 deletions

View file

@ -26,7 +26,7 @@ from .types import ClassName
class Template(Object):
grammar = [
"template",
UseIdent("name").expected("template class name"),
UseIdent("id").expected("template class name"),
Optional([
Match(":"),
to_parse_node(ClassName).expected("parent class"),
@ -40,7 +40,7 @@ class Template(Object):
if len(self.children[ClassName]):
return self.children[ClassName][0].gir_type
@validate("name")
@validate("id")
def unique_in_parent(self):
self.validate_unique_in_parent(f"Only one template may be defined per file, but this file contains {len(self.parent.children[Template])}",)
@ -52,7 +52,7 @@ class Template(Object):
xml.start_tag(
"template",
**{"class": self.tokens["name"]},
**{"class": self.tokens["id"]},
parent=parent
)

View file

@ -4,3 +4,7 @@ template TestTemplate : ApplicationWindow {
test-property: "Hello, world";
test-signal => on_test_signal();
}
Dialog {
transient-for: TestTemplate;
}

View file

@ -5,4 +5,7 @@
<property name="test-property">Hello, world</property>
<signal name="test-signal" handler="on_test_signal"/>
</template>
<object class="GtkDialog">
<property name="transient-for">TestTemplate</property>
</object>
</interface>