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