diff --git a/gtkblueprinttool/ast.py b/gtkblueprinttool/ast.py index 4b93cd3..886369d 100644 --- a/gtkblueprinttool/ast.py +++ b/gtkblueprinttool/ast.py @@ -408,7 +408,10 @@ class FlagsValue(Value): class IdentValue(Value): def emit_xml(self, xml: XmlEmitter): - xml.put_text(self.tokens["value"]) + if isinstance(self.parent.value_type, gir.Enumeration): + xml.put_text(self.parent.value_type.members[self.tokens["value"]].nick) + else: + xml.put_text(self.tokens["value"]) @validate() def validate_for_type(self): diff --git a/gtkblueprinttool/gir.py b/gtkblueprinttool/gir.py index 77dc81c..2eb8ff0 100644 --- a/gtkblueprinttool/gir.py +++ b/gtkblueprinttool/gir.py @@ -291,6 +291,10 @@ class EnumMember(GirNode): def value(self): return self._value + @property + def nick(self): + return self.xml["glib:nick"] + @property def signature(self): return f"enum member {self.full_name} = {self.value}" diff --git a/tests/samples/enum.blp b/tests/samples/enum.blp new file mode 100644 index 0000000..e0daba8 --- /dev/null +++ b/tests/samples/enum.blp @@ -0,0 +1,5 @@ +using Gtk 4.0; + +ScrolledWindow { + window-placement: top_left; +} diff --git a/tests/samples/enum.ui b/tests/samples/enum.ui new file mode 100644 index 0000000..acad161 --- /dev/null +++ b/tests/samples/enum.ui @@ -0,0 +1,7 @@ + + + + + top-left + + diff --git a/tests/test_samples.py b/tests/test_samples.py index 5ae3e0b..13f61b3 100644 --- a/tests/test_samples.py +++ b/tests/test_samples.py @@ -96,6 +96,7 @@ class TestSamples(unittest.TestCase): self.assert_sample("binding") self.assert_sample("child_type") self.assert_sample("combo_box_text") + self.assert_sample("enum") self.assert_sample("file_filter") self.assert_sample("flags") self.assert_sample("id_prop")