tasn pushed a commit to branch master.

commit 11ec095e1f050b1895fff693d1ec7bac9de479db
Author: Simon Busch <[email protected]>
Date:   Thu Feb 19 21:31:25 2009 +0000

    Added new widgets
    - InnerWindow
    - List & ListItem
    - Slider
    
    
    SVN revision: 39106
---
 elementary/elementary.c_elementary.pyx | 172 ++++++++++++++++++++++++++++++++-
 include/elementary/c_elementary.pxd    |  31 +++++-
 tests/test.py                          |   8 +-
 3 files changed, 202 insertions(+), 9 deletions(-)

diff --git a/elementary/elementary.c_elementary.pyx 
b/elementary/elementary.c_elementary.pyx
index c2bf8b6..456f606 100644
--- a/elementary/elementary.c_elementary.pyx
+++ b/elementary/elementary.c_elementary.pyx
@@ -246,6 +246,30 @@ cdef class Window(Object):
         return Null
     """
     
+cdef class InnerWindow(Window):
+    """
+    An inner window 
+    """
+    def __init__(self, c_evas.Object parent):
+        self._set_obj(elm_win_inwin_add(parent.obj))
+        
+    def activate(self):
+        """
+        Activate the window
+        """
+        elm_win_inwin_activate(self.obj)
+        
+    def style_set(self, style):
+        """
+        Set the style for the inner window. Available styles are
+        - default
+        - minimal
+        - minimal_vertical
+        
+        @parm: B{style} style for the inner window
+        """
+        elm_win_inwin_style_set(self.obj, style)
+    
 cdef class Background(Object):
     """
     Background widget object
@@ -805,5 +829,151 @@ cdef class Toolbar(Object):
             """
             self._callback_add("clicked", value)
 
+cdef object _list_callback_mapping
+_list_callback_mapping = dict()
+
+cdef void _list_callback(void *data, c_evas.Evas_Object *obj, void 
*event_info):
+    try:
+        mapping = _list_callback_mapping.get(<long>event_info)
+        if mapping is not None:
+            callback = mapping["callback"] 
+            if callback is not None and callable(callback):
+                callback(mapping["class"], "clicked", mapping["data"])
+        else:
+            print "ERROR: no callback available for the item"
+    except Exception, e:
+        traceback.print_exc()
+            
+cdef class ListItem:
+    """ 
+    An item for the list widget
+    """
+    cdef Elm_List_Item *item
+    cdef c_evas.Evas_Object *list
+
+    def __new__(self):
+        self.item = NULL
+
+    def __init__(self):
+        pass
+
+    def _create_mapping(self, callback, data):
+        mapping = dict()
+        mapping["class"] = self
+        mapping["callback"] = callback
+        mapping["data"] = data
+        _list_callback_mapping[<long>self.itme] = mapping
+
+    def append(self, c_evas.Object list, label, c_evas.Object icon, 
c_evas.Object end, callback, data = None):
+        if not self.item == NULL:
+            raise Exception("Item was already created!")
+        
+        self.item = elm_list_item_append(list.obj, label, icon.obj, end.obj, 
_list_callback, NULL)
+        self._create_mapping(callback, data)
+
+    def prepend(self, c_evas.Object list, label, c_evas.Object icon, 
c_evas.Object end, callback, data = None):
+        if not self.item == NULL:
+            raise Exception("Item was already created!")
+        
+        self.item = elm_list_item_prepend(list.obj, label, icon.obj, end.obj, 
_list_callback, NULL)
+        self._create_mapping(callback, data)
+
+    def insert_before(self, c_evas.Object list, ListItem before, label, 
c_evas.Object icon,
+            c_evas.Object end, callback, data = None):
+        if not self.item == NULL:
+            raise Exception("Item was already created!")
+
+        self.item = elm_list_item_insert_before(list.obj, before.item, label, 
icon.obj, end.obj, _list_callback, NULL)
+        self._create_mapping(callback, data)
+
+    def insert_after(self, c_evas.Object list, ListItem after, label, 
c_evas.Object icon, c_evas.Object end, callback, data = None):
+        if not self.item == NULL:
+            raise Exception("Item was already created!")
+
+        self.item = elm_list_item_insert_after(list.obj, after.item, label, 
icon.obj, end.obj,
+            _list_callback, NULL)
+        self._create_mapping(callback, data)
+   
+    def selected_set(self, selected):
+        if selected:
+            elm_list_item_selected_set(self.item, 1)
+        else:
+            elm_list_item_selected_set(self.item, 0)
+    
+    def show(self):
+        elm_list_item_show(self.item)
+        
+    def delete(self):
+        elm_list_item_del(self.item)
+        
+    def data_get(self):
+        cdef void* data
+        data = elm_list_item_data_get(self.item)
+        return None
+        
+    def icon_get(self):
+        return None
+    
+    def end_get(self):
+        return None
+
 cdef class List(Object):
-    pass
+    def __init__(self, c_evas.Object parent):
+        self._set_obj(elm_list_add(parent.obj))
+    
+    def item_append(self, label, c_evas.Object icon, c_evas.Object end, 
callback, data = None):
+        item = ListItem()
+        item.append(self, label, icon, end, callback, data)
+        return item
+    
+    def item_prepend(self, label, c_evas.Object icon, c_evas.Object end, 
callback, data = None):
+        item = ListItem()
+        item.prepend(self, label, icon, end, data)
+        return item
+    
+    def item_insert_before(self, ListItem before, label, c_evas.Object icon, 
c_evas.Object end, callback, data = None):
+        item = ListItem()
+        item.insert_before(self, before, label, icon, end, callback, data)
+        return item
+    
+    def item_insert_after(self, ListItem after, label, c_evas.Object icon, 
c_evas.Object end, callback, data = None):
+        item = ListItem()
+        item.insert_after(self, after, label, icon, end, callback, data)
+        return item
+        
+cdef class Slider(Object):
+    def __init__(self, c_evas.Object parent):
+        self._set_obj(elm_slider_add(parent.obj))
+    
+    def label_set(self, label):
+        elm_slider_label_set(self.obj, label)
+        
+    def icon_set(self, c_evas.Object icon):
+        elm_slider_icon_set(self.obj, icon.obj)
+    
+    def span_size_set(self, size):
+        elm_slider_span_size_set(self.obj, size)
+        
+    def unit_format_set(self, format):
+        elm_slider_unit_format_set(self.obj, format)
+    
+    def indicator_format_set(self, format):
+        elm_slider_indicator_format_set(self.obj, format)
+        
+    def horizontal_set(self, horizontal):
+        if horizontal:
+            elm_slider_horizontal_set(self.obj, 1)
+        else:
+            elm_slider_horizontal_set(self.obj, 0)
+    
+    def min_max_set(self, min, max):
+        elm_slider_min_max_set(self.obj, min, max)
+    
+    def value_set(self, value):
+        elm_slider_value_set(self.obj, value)
+        
+    def inverted_set(self, inverted):
+        if inverted:
+            elm_slider_inverted_set(self.obj, 1)
+        else:
+            elm_slider_inverted_set(self.obj, 0)
diff --git a/include/elementary/c_elementary.pxd 
b/include/elementary/c_elementary.pxd
index 259c05b..395e741 100644
--- a/include/elementary/c_elementary.pxd
+++ b/include/elementary/c_elementary.pxd
@@ -98,6 +98,7 @@ cdef extern from "Elementary.h":
     cdef struct Elm_Hoversel_Item
     cdef struct Elm_Toolbar_Item
     cdef struct Elm_List_Item
+    cdef struct Elm_Carousel_Item
 
     # Basic elementary functions
     void elm_init(int argc,char** argv)
@@ -120,6 +121,10 @@ cdef extern from "Elementary.h":
     void elm_win_keyboard_win_set(evas.c_evas.Evas_Object *obj, 
evas.c_evas.Evas_Bool is_keyboard)
     # X specific call - wont't work on non-x engines (return 0)
     Ecore_X_Window elm_win_xwindow_get(evas.c_evas.Evas_Object *obj)
+    evas.c_evas.Evas_Object *elm_win_inwin_add(evas.c_evas.Evas_Object *obj)
+    void elm_win_inwin_activate(evas.c_evas.Evas_Object *obj)
+    void elm_win_inwin_style_set(evas.c_evas.Evas_Object *obj, char *style)
+
     
     # Background object
     evas.c_evas.Evas_Object *elm_bg_add(evas.c_evas.Evas_Object *parent)
@@ -265,10 +270,10 @@ cdef extern from "Elementary.h":
 
     # List object
     evas.c_evas.Evas_Object *elm_list_add(evas.c_evas.Evas_Object *parent)
-    Elm_List_Item *elm_list_item_append(evas.c_evas.Evas_Object *obj, char 
*label, evas.c_evas.Evas_Object *icon, evas.c_evas.Evas_Object *indicator, 
evas.c_evas.Evas_Object *end, void (*func)(void *data, evas.c_evas.Evas_Object 
*obj, void *event_info), void *data)
-    Elm_List_Item *elm_list_item_prepend(evas.c_evas.Evas_Object *obj, char 
*label, evas.c_evas.Evas_Object *icon, evas.c_evas.Evas_Object *end, void 
(*func) (void *data, evas.c_evas.Evas_Object *obj, void *event_info), void 
*data) 
-    Elm_List_Item *elm_list_item_insert_before(evas.c_evas.Evas_Object *obj, 
Elm_List_Item *before, char *label, evas.c_evas.Evas_Object *icon, 
evas.c_evas.Evas_Object *end, void (*func) (void *data, evas.c_evas.Evas_Object 
*obj, void *event_info), void *data) 
-    Elm_List_Item *elm_list_item_insert_after(evas.c_evas.Evas_Object *obj, 
Elm_List_Item *after, char *label, evas.c_evas.Evas_Object *icon, 
evas.c_evas.Evas_Object *end, void (*func) (void *data, evas.c_evas.Evas_Object 
*obj, void *event_info), void *data) 
+    Elm_List_Item *elm_list_item_append(evas.c_evas.Evas_Object *obj, char 
*label, evas.c_evas.Evas_Object *icon, evas.c_evas.Evas_Object *end, void 
(*func) (void *data, evas.c_evas.Evas_Object *obj, void *event_info), void 
*data)
+    Elm_List_Item *elm_list_item_prepend(evas.c_evas.Evas_Object *obj, char 
*label, evas.c_evas.Evas_Object *icon, evas.c_evas.Evas_Object *end, void 
(*func) (void *data, evas.c_evas.Evas_Object *obj, void *event_info), void 
*data)
+    Elm_List_Item *elm_list_item_insert_before(evas.c_evas.Evas_Object *obj, 
Elm_List_Item *before, char *label, evas.c_evas.Evas_Object *icon, 
evas.c_evas.Evas_Object *end, void (*func) (void *data, evas.c_evas.Evas_Object 
*obj, void *event_info), void *data)
+    Elm_List_Item *elm_list_item_insert_after(evas.c_evas.Evas_Object *obj, 
Elm_List_Item *after, char *label, evas.c_evas.Evas_Object *icon, 
evas.c_evas.Evas_Object *end, void (*func) (void *data, evas.c_evas.Evas_Object 
*obj, void *event_info), void *data)
     void         elm_list_go(evas.c_evas.Evas_Object *obj) 
     void      elm_list_multi_select_set(evas.c_evas.Evas_Object *obj, 
evas.c_evas.Evas_Bool multi) 
     void         elm_list_horizontal_mode_set(evas.c_evas.Evas_Object *obj, 
Elementary_List_Mode mode) 
@@ -282,6 +287,24 @@ cdef extern from "Elementary.h":
     evas.c_evas.Evas_Object *elm_list_item_icon_get(Elm_List_Item *item) 
     evas.c_evas.Evas_Object *elm_list_item_end_get(Elm_List_Item *item) 
 
+    # Carousel object
+    evas.c_evas.Evas_Object *elm_carousel_add(evas.c_evas.Evas_Object *parent)
+    Elm_Carousel_Item *elm_carousel_item_add(evas.c_evas.Evas_Object *obj, 
evas.c_evas.Evas_Object *icon, char *label, void (*func) (void *data, 
evas.c_evas.Evas_Object *obj, void *event_info), void *data)
+    void         elm_carousel_item_del(Elm_Carousel_Item *item)
+    void         elm_carousel_item_select(Elm_Carousel_Item *item)
+
+    # Slider object
+    evas.c_evas.Evas_Object *elm_slider_add(evas.c_evas.Evas_Object *parent)
+    void elm_slider_label_set(evas.c_evas.Evas_Object *obj, char *label)
+    void elm_slider_icon_set(evas.c_evas.Evas_Object *obj, 
evas.c_evas.Evas_Object *icon)
+    void elm_slider_span_size_set(evas.c_evas.Evas_Object *obj, 
evas.c_evas.Evas_Coord size)
+    void elm_slider_unit_format_set(evas.c_evas.Evas_Object *obj, char *format)
+    void elm_slider_indicator_format_set(evas.c_evas.Evas_Object *obj, char 
*indicator)
+    void elm_slider_horizontal_set(evas.c_evas.Evas_Object *obj, 
evas.c_evas.Evas_Bool horizontal)
+    void elm_slider_min_max_set(evas.c_evas.Evas_Object *obj, double min, 
double max)
+    void elm_slider_value_set(evas.c_evas.Evas_Object *obj, double val)
+    double elm_slider_value_get(evas.c_evas.Evas_Object *obj)
+    void elm_slider_inverted_set(evas.c_evas.Evas_Object *obj, 
evas.c_evas.Evas_Bool inverted)
 
 # Forward declaration of some classes
 cdef class Object(evas.c_evas.Object)
diff --git a/tests/test.py b/tests/test.py
index 46ae056..8f01aee 100644
--- a/tests/test.py
+++ b/tests/test.py
@@ -2,12 +2,12 @@ import elementary
 import edje
 import evas
 
-def destroy(obj, event, *args, **kargs):
+def destroy(obj, event, data):
     print "DEBUG: window destroy callback called!"
     raise Exception()
     elementary.exit()
     
-def bg_plain_clicked(obj, event, *args, **kargs):
+def bg_plain_clicked(obj, event, data):
     win = elementary.Window("bg plain", elementary.ELM_WIN_BASIC)
     win.title_set("Bg Plain")
     win.autodel_set(True)
@@ -20,7 +20,7 @@ def bg_plain_clicked(obj, event, *args, **kargs):
     win.resize(320, 320)
     win.show()
 
-def bg_image_clicked(obj, event, *args, **kargs):
+def bg_image_clicked(obj, event, data):
     win = elementary.Window("bg-image", elementary.ELM_WIN_BASIC)
     win.title_set("Bg Image")
     win.autodel_set(True)
@@ -36,7 +36,7 @@ def bg_image_clicked(obj, event, *args, **kargs):
     win.resize(320, 320)
     win.show()
 
-def icon_transparent_clicked(obj, event, *args, **kargs):
+def icon_transparent_clicked(obj, event, data):
     win = elementary.Window("icon-transparent", elementary.ELM_WIN_BASIC)
     win.title_set("Icon Transparent")
     win.autodel_set(True)

-- 

------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_mar

Reply via email to