davemds pushed a commit to branch master.

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

commit f5dd70b70fd9e1ae529b6f55c1c81bff3677da16
Author: davemds <[email protected]>
Date:   Fri Aug 1 17:31:09 2014 +0200

    Gengrid: implemented search_by_text_item_get(), with a proper test
---
 efl/elementary/gengrid.pxd          |  4 +++-
 efl/elementary/gengrid_widget.pxi   | 40 +++++++++++++++++++++++++++++++++++++
 examples/elementary/test_gengrid.py | 30 +++++++++++++++++++++++++++-
 3 files changed, 72 insertions(+), 2 deletions(-)

diff --git a/efl/elementary/gengrid.pxd b/efl/elementary/gengrid.pxd
index cc705c6..a8f5bb9 100644
--- a/efl/elementary/gengrid.pxd
+++ b/efl/elementary/gengrid.pxd
@@ -4,7 +4,7 @@ from efl.c_eo cimport Eo
 from object_item cimport Elm_Object_Item
 from general cimport Elm_Tooltip_Item_Content_Cb
 from enums cimport Elm_Genlist_Item_Scrollto_Type, Elm_Object_Select_Mode, \
-    Elm_Object_Multi_Select_Mode
+    Elm_Object_Multi_Select_Mode, Elm_Glob_Match_Flags
 from efl.ecore.enums cimport Ecore_Pos_Map
 
 cdef extern from "Elementary.h":
@@ -101,3 +101,5 @@ cdef extern from "Elementary.h":
     Eina_Bool               elm_gengrid_item_cursor_engine_only_get(const 
Elm_Object_Item *item)
     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_widget.pxi 
b/efl/elementary/gengrid_widget.pxi
index b0a8900..4e6af66 100644
--- a/efl/elementary/gengrid_widget.pxi
+++ b/efl/elementary/gengrid_widget.pxi
@@ -558,6 +558,46 @@ cdef class Gengrid(Object):
         return _object_item_to_python(ret), xposret, yposret
 
 
+    def search_by_text_item_get(self, GengridItem item_to_search_from,
+                                part_name, pattern, Elm_Glob_Match_Flags 
flags):
+        """Search gengrid item by given string.
+
+        This function uses globs (like "\*.jpg") for searching and takes
+        search flags as last parameter. That is a bitfield with values
+        to be ored together or 0 for no flags.
+
+        :param item_to_search_from: item to start search from, or None to
+            search from the first item.
+        :type item_to_search_from: :py:class:`GengridItem`
+        :param part_name: Name of the TEXT part of gengrid item to search
+            string in (usually "elm.text").
+        :type part_name: string
+        :param pattern: The search pattern.
+        :type pattern: string
+        :param flags: Search flags
+        :type flags: :ref:`Elm_Glob_Match_Flags`
+
+        :return: The first item found
+        :rtype: :py:class:`GengridItem`
+
+        .. versionadded:: 1.11
+
+        """
+        cdef Elm_Object_Item *from_item = NULL
+
+        if isinstance(part_name, unicode):
+            part_name = PyUnicode_AsUTF8String(part_name)
+        if isinstance(pattern, unicode):
+            pattern = PyUnicode_AsUTF8String(pattern)
+        if item_to_search_from is not None:
+            from_item = _object_item_from_python(item_to_search_from)
+
+        return _object_item_to_python(elm_gengrid_search_by_text_item_get(
+                    self.obj, from_item,
+                    <const char *>part_name if part_name is not None else NULL,
+                    <const char *>pattern if pattern is not None else NULL,
+                    flags))
+
     #
     # TODO: Drag and Drop
     # =============
diff --git a/examples/elementary/test_gengrid.py 
b/examples/elementary/test_gengrid.py
index a18d1d6..5d0cb2c 100644
--- a/examples/elementary/test_gengrid.py
+++ b/examples/elementary/test_gengrid.py
@@ -10,7 +10,10 @@ from efl.elementary.window import StandardWindow
 from efl.elementary.background import Background
 from efl.elementary.button import Button
 from efl.elementary.check import Check
+from efl.elementary.entry import Entry
 from efl.elementary.image import Image
+from efl.elementary.label import Label
+from efl.elementary.general import ELM_GLOB_MATCH_NOCASE
 from efl.elementary.gengrid import Gengrid, GengridItemClass
 from efl.elementary.slider import Slider
 from efl.elementary.table import Table
@@ -67,7 +70,7 @@ def gengrid_clicked(obj):
     global item_count
     item_count = 25
 
-    win = StandardWindow("gengrid", "Gengrid", autodel=True, size=(480, 800))
+    win = StandardWindow("gengrid", "Gengrid", autodel=True, size=(480, 600))
     if obj is None:
         win.callback_delete_request_add(lambda o: elementary.exit())
 
@@ -332,6 +335,31 @@ def gengrid_clicked(obj):
     tb.pack(bt, 4, 5, 1, 1)
     bt.show()
 
+    # search_by_text_item_get
+    def search_cb(en, gg):
+        flags = ELM_GLOB_MATCH_NOCASE
+        from_item = gg.selected_item.next if gg.selected_item else None
+
+        item = gg.search_by_text_item_get(from_item, "elm.text", en.text, 
flags)
+        if item:
+            item.selected = True
+            en.focus = True
+        elif gg.selected_item:
+            gg.selected_item.selected = False
+        
+    lb = Label(win, text="Search:")
+    tb.pack(lb, 2, 6, 1, 1)
+    lb.show()
+
+    en = Entry(win, single_line=True, scrollable=True,
+               size_hint_weight=EXPAND_HORIZ, size_hint_align=FILL_HORIZ)
+    en.part_text_set("guide", "Type the search query")
+    en.callback_activated_add(search_cb, gg)
+    tb.pack(en, 3, 6, 3, 1)
+    en.show()
+    en.focus = True
+    
+
     print(gg)
 
     win.show()

-- 


Reply via email to