davemds pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=6ef5f30a851d316a845a96cbb195cbf4d53fd58a

commit 6ef5f30a851d316a845a96cbb195cbf4d53fd58a
Author: Dave Andreoli <[email protected]>
Date:   Sat Mar 17 10:19:28 2018 +0100

    Pyolian: new API eolian_unit_state_get
---
 src/scripts/pyolian/eolian.py      | 13 ++++++++++---
 src/scripts/pyolian/eolian_lib.py  |  4 ++++
 src/scripts/pyolian/test_eolian.py |  5 +++++
 3 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/src/scripts/pyolian/eolian.py b/src/scripts/pyolian/eolian.py
index 580cc1f951..ec39443c9f 100644
--- a/src/scripts/pyolian/eolian.py
+++ b/src/scripts/pyolian/eolian.py
@@ -319,10 +319,15 @@ class Eolian_Unit(EolianBaseObject):
     def children(self):
         return Iterator(Eolian_Unit, lib.eolian_unit_children_get(self._obj))
 
-    @property
+    @cached_property
     def file(self):
         return _str_to_py(lib.eolian_unit_file_get(self._obj))
 
+    @cached_property
+    def state(self):
+        c_state = lib.eolian_unit_state_get(self._obj)
+        return Eolian_State(c_state) if c_state else None
+
     @property
     def objects(self):
         return Iterator(Object, lib.eolian_unit_objects_get(self._obj))
@@ -399,8 +404,10 @@ class Eolian_Unit(EolianBaseObject):
 
 
 class Eolian_State(Eolian_Unit):
-    def __init__(self):
-        self._obj = lib.eolian_state_new()  # Eolian_State *
+    def __init__(self, c_state=None):
+        if c_state is None:
+            c_state = lib.eolian_state_new()  # Eolian_State *
+        EolianBaseObject.__init__(self, c_state)
 
     def __del__(self):
         if not _already_halted:  # do not free after eolian_shutdown
diff --git a/src/scripts/pyolian/eolian_lib.py 
b/src/scripts/pyolian/eolian_lib.py
index 8d3f830b57..5db2aaee8e 100644
--- a/src/scripts/pyolian/eolian_lib.py
+++ b/src/scripts/pyolian/eolian_lib.py
@@ -130,6 +130,10 @@ lib.eolian_state_enums_by_file_get.restype = c_void_p
 lib.eolian_unit_children_get.argtypes = [c_void_p,]
 lib.eolian_unit_children_get.restype = c_void_p
 
+# EAPI const Eolian_State *eolian_unit_state_get(const Eolian_Unit *unit);
+lib.eolian_unit_state_get.argtypes = [c_void_p,]
+lib.eolian_unit_state_get.restype = c_void_p
+
 # EAPI const char *eolian_unit_file_get(const Eolian_Unit *unit);
 lib.eolian_unit_file_get.argtypes = [c_void_p,]
 lib.eolian_unit_file_get.restype = c_char_p
diff --git a/src/scripts/pyolian/test_eolian.py 
b/src/scripts/pyolian/test_eolian.py
index 39936bb42a..34fdbafbdf 100755
--- a/src/scripts/pyolian/test_eolian.py
+++ b/src/scripts/pyolian/test_eolian.py
@@ -87,6 +87,11 @@ class TestEolianState(unittest.TestCase):
 
 
 class TestEolianUnit(unittest.TestCase):
+    def test_unit_get(self):
+        unit = eolian_db.unit_by_file_get('efl_ui_win.eo')
+        self.assertIsInstance(unit.state, eolian.Eolian_State)
+        self.assertEqual(unit.state, eolian_db)
+
     def test_file_get(self):
         unit = eolian_db.unit_by_file_get('efl_ui_win.eo')
         self.assertIsInstance(unit, eolian.Eolian_Unit)

-- 


Reply via email to