From c4beb6841cbc1e2f89d502dbccdb500cb85289d7 Mon Sep 17 00:00:00 2001 From: James Westman Date: Wed, 24 Nov 2021 14:57:34 -0600 Subject: [PATCH] Fix enums with "-"/"_" in the name --- gtkblueprinttool/ast.py | 5 ++++- gtkblueprinttool/gir.py | 4 ++++ tests/samples/enum.blp | 5 +++++ tests/samples/enum.ui | 7 +++++++ tests/test_samples.py | 1 + 5 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 tests/samples/enum.blp create mode 100644 tests/samples/enum.ui 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")