Separate output into its own module

This commit is contained in:
James Westman 2022-10-14 21:04:37 -05:00
parent 8cf793023d
commit a24f16109f
No known key found for this signature in database
GPG key ID: CE2DBA0ADB654EA6
33 changed files with 407 additions and 291 deletions

View file

@ -34,28 +34,27 @@ class Template(Object):
ObjectContent,
]
@property
def id(self) -> str:
return self.tokens["id"]
@property
def class_name(self) -> ClassName | None:
if len(self.children[ClassName]):
return self.children[ClassName][0]
else:
return None
@property
def gir_class(self):
# Templates might not have a parent class defined
if len(self.children[ClassName]):
return self.children[ClassName][0].gir_type
if class_name := self.class_name:
return class_name.gir_type
@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])}",)
def emit_start_tag(self, xml: XmlEmitter):
if len(self.children[ClassName]):
parent = self.children[ClassName][0].glib_type_name
else:
parent = None
xml.start_tag(
"template",
**{"class": self.tokens["id"]},
parent=parent
)
@decompiler("template")
def decompile_template(ctx: DecompileCtx, gir, klass, parent="Widget"):