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) --
