davemds pushed a commit to branch master.

http://git.enlightenment.org/bindings/python/python-efl.git/commit/?id=9381d46765bc039e594eb5e02964f8797aea3e91

commit 9381d46765bc039e594eb5e02964f8797aea3e91
Author: Dave Andreoli <[email protected]>
Date:   Tue Aug 9 12:22:11 2016 +0200

    New 1.18 API: elm.GengridItem.all_contents_unset()
    
    with test
---
 efl/elementary/gengrid_cdef.pxi     |  2 ++
 efl/elementary/gengrid_item.pxi     | 25 +++++++++++++++++++++++++
 examples/elementary/test_gengrid.py | 18 ++++++++++++++++++
 3 files changed, 45 insertions(+)

diff --git a/efl/elementary/gengrid_cdef.pxi b/efl/elementary/gengrid_cdef.pxi
index 779aa6c..4109e82 100644
--- a/efl/elementary/gengrid_cdef.pxi
+++ b/efl/elementary/gengrid_cdef.pxi
@@ -121,6 +121,8 @@ cdef extern from "Elementary.h":
     void                    elm_gengrid_item_bring_in(Elm_Object_Item *item, 
Elm_Genlist_Item_Scrollto_Type scrollto_type)
     void                    elm_gengrid_item_update(Elm_Object_Item *item)
     void                    elm_gengrid_item_pos_get(const Elm_Object_Item 
*item, unsigned int *x, unsigned int *y)
+    void                    
elm_gengrid_item_all_contents_unset(Elm_Object_Item *obj, Eina_List **l)
+
     Elm_Object_Item *       elm_gengrid_nth_item_get(const Evas_Object *obj, 
unsigned int nth)
     Elm_Object_Item *       elm_gengrid_at_xy_item_get(const Evas_Object *obj, 
Evas_Coord x, Evas_Coord y, int *xposret, int *yposret)
     Elm_Object_Item *       elm_gengrid_search_by_text_item_get(const 
Evas_Object *obj, Elm_Object_Item *item_to_search_from, const char *part_name, 
const char *pattern, Elm_Glob_Match_Flags flags)
diff --git a/efl/elementary/gengrid_item.pxi b/efl/elementary/gengrid_item.pxi
index 4c7cda5..8b307d5 100644
--- a/efl/elementary/gengrid_item.pxi
+++ b/efl/elementary/gengrid_item.pxi
@@ -318,3 +318,28 @@ cdef class GengridItem(ObjectItem):
     def select_mode_get(self):
         return elm_gengrid_item_select_mode_get(self.item)
 
+    def all_contents_unset(self):
+        """Unset all contents fetched by the item class
+
+        This instructs gengrid to release references to contents in the item,
+        meaning that they will no longer be managed by gengrid and are
+        floating "orphans" that can be re-used elsewhere.
+
+        :return: The list of now orphans objects
+        :rtype: list
+        
+        .. versionadded:: 1.18
+
+        .. warning:: Don't forget to do something with the returned objects,
+            they are hidden in the canvas, but still alive. You should
+            at least delete them if you don't need to reuse.
+
+        """
+        cdef:
+            Eina_List *l = NULL
+            list ret
+        elm_gengrid_item_all_contents_unset(self.item, &l)
+        ret = eina_list_objects_to_python_list(l)
+        eina_list_free(l)
+        return ret
+
diff --git a/examples/elementary/test_gengrid.py 
b/examples/elementary/test_gengrid.py
index 12eada2..0d879d8 100644
--- a/examples/elementary/test_gengrid.py
+++ b/examples/elementary/test_gengrid.py
@@ -308,6 +308,24 @@ def gengrid_clicked(obj):
     tb.pack(bt, 4, 4, 1, 1)
     bt.show()
 
+    # item content unset
+    def content_unset_clicked(bt, gg):
+        item = gg.selected_item
+        if item is None:
+            print("You must select an item first!")
+        else:
+            contents = item.all_contents_unset()
+            for obj in contents:
+                obj.pos = (0, 0)
+                obj.show()
+            # Now all the unsetted objects are orphan in the canvas,
+            # the user should do something with them
+        
+    bt = Button(win, size_hint_align=FILL_HORIZ, text="Item content unset")
+    bt.callback_clicked_add(content_unset_clicked, gg)
+    tb.pack(bt, 5, 4, 1, 1)
+    bt.show()
+
     # scroll_to methods
     rdg = rd = Radio(win, text='SCROLL_IN',
                      state_value=elm.ELM_GENGRID_ITEM_SCROLLTO_IN)

-- 


Reply via email to