Fix action widgets in templates

Fixes #69.
This commit is contained in:
James Westman 2022-07-09 14:47:07 -05:00
parent f6eacaa3d9
commit b9fdc5a5f1
No known key found for this signature in database
GPG key ID: CE2DBA0ADB654EA6
4 changed files with 9 additions and 10 deletions

View file

@ -97,13 +97,15 @@ class Object(AstNode):
if child.response_id
]
def emit_xml(self, xml: XmlEmitter):
from .gtkbuilder_child import Child
def emit_start_tag(self, xml: XmlEmitter):
xml.start_tag("object", **{
"class": self.gir_class or self.tokens["class_name"],
"id": self.tokens["id"],
})
def emit_xml(self, xml: XmlEmitter):
self.emit_start_tag(xml)
for child in self.children:
child.emit_xml(xml)

View file

@ -41,15 +41,12 @@ class Template(Object):
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])}",)
def emit_xml(self, xml: XmlEmitter):
def emit_start_tag(self, xml: XmlEmitter):
xml.start_tag(
"template",
**{"class": self.tokens["name"]},
parent=self.gir_class or self.tokens["class_name"]
)
for child in self.children:
child.emit_xml(xml)
xml.end_tag()
@decompiler("template")

View file

@ -1,6 +1,6 @@
using Gtk 4.0;
Dialog {
template MyDialog : Dialog {
[action response=cancel]
Button cancel_button {
label: _("Cancel");

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"/>
<object class="GtkDialog">
<template class="MyDialog" parent="GtkDialog">
<child type="action">
<object class="GtkButton" id="cancel_button">
<property name="label" translatable="true">Cancel</property>
@ -22,7 +22,7 @@
<action-widget response="9">custom_response_button</action-widget>
<action-widget response="ok" default="True">ok_button</action-widget>
</action-widgets>
</object>
</template>
<object class="GtkInfoBar">
<child type="action">
<object class="GtkButton" id="ok_info_button">