Fix enums with "-"/"_" in the name

This commit is contained in:
James Westman 2021-11-24 14:57:34 -06:00
parent f2b7d3bd95
commit c4beb6841c
No known key found for this signature in database
GPG key ID: CE2DBA0ADB654EA6
5 changed files with 21 additions and 1 deletions

View file

@ -408,6 +408,9 @@ class FlagsValue(Value):
class IdentValue(Value): class IdentValue(Value):
def emit_xml(self, xml: XmlEmitter): def emit_xml(self, xml: XmlEmitter):
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"]) xml.put_text(self.tokens["value"])
@validate() @validate()

View file

@ -291,6 +291,10 @@ class EnumMember(GirNode):
def value(self): def value(self):
return self._value return self._value
@property
def nick(self):
return self.xml["glib:nick"]
@property @property
def signature(self): def signature(self):
return f"enum member {self.full_name} = {self.value}" return f"enum member {self.full_name} = {self.value}"

5
tests/samples/enum.blp Normal file
View file

@ -0,0 +1,5 @@
using Gtk 4.0;
ScrolledWindow {
window-placement: top_left;
}

7
tests/samples/enum.ui Normal file
View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"/>
<object class="GtkScrolledWindow">
<property name="window-placement">top-left</property>
</object>
</interface>

View file

@ -96,6 +96,7 @@ class TestSamples(unittest.TestCase):
self.assert_sample("binding") self.assert_sample("binding")
self.assert_sample("child_type") self.assert_sample("child_type")
self.assert_sample("combo_box_text") self.assert_sample("combo_box_text")
self.assert_sample("enum")
self.assert_sample("file_filter") self.assert_sample("file_filter")
self.assert_sample("flags") self.assert_sample("flags")
self.assert_sample("id_prop") self.assert_sample("id_prop")