Author: tack
Date: Mon May 28 23:25:34 2007
New Revision: 2693
Modified:
trunk/evas/src/__init__.py
Log:
Support creating objects by constructor; this allows subclassing.
Modified: trunk/evas/src/__init__.py
==============================================================================
--- trunk/evas/src/__init__.py (original)
+++ trunk/evas/src/__init__.py Mon May 28 23:25:34 2007
@@ -109,15 +109,15 @@
obj_type = obj.type_get()
if obj_type == "image":
- return Image(obj)
+ return Image(None, wrap = obj)
elif obj_type == "rectangle":
- return Rectangle(obj)
+ return Rectangle(None, wrap = obj)
elif obj_type == "text":
- return Text(obj)
+ return Text(None, wrap = obj)
elif obj_type == "gradient":
- return Gradient(obj)
+ return Gradient(None, wrap = obj)
elif obj_type == "textblock":
- return TextBlock(obj)
+ return TextBlock(None, wrap = obj)
else:
raise ValueError, "Unable to wrap unknown object type (%s)" % obj_type
@@ -125,6 +125,10 @@
class Object(object):
def __init__(self, evas_object):
+ """
+ Wraps an underlying _evas.Object object. This class would never be
+ instantiated directly.
+ """
assert type(evas_object) == _evas.Object
self.__dict__[ "_object" ] = evas_object
#self._object = evas_object
@@ -242,14 +246,18 @@
class Rectangle(Object):
- def __init__(self, evas_object):
- super(Rectangle, self).__init__(evas_object)
+ def __init__(self, evas, wrap = None):
+ if evas:
+ wrap = evas._evas.object_rectangle_add()
+ super(Rectangle, self).__init__(wrap)
class Polygon(Object):
- def __init__(self, evas_object):
- super(Polygon, self).__init__(evas_object)
+ def __init__(self, evas, wrap = None):
+ if evas:
+ wrap = evas._evas.object_polygon_add()
+ super(Polygon, self).__init__(wrap)
def point_add(self, x, y):
return self._object.polygon_point_add(x, y)
@@ -259,8 +267,10 @@
class Gradient(Object):
- def __init__(self, evas_object):
- super(Gradient, self).__init__(evas_object)
+ def __init__(self, evas, wrap = None):
+ if evas:
+ wrap = evas._evas.object_gradient_add()
+ super(Gradient, self).__init__(wrap)
def color_stop_add(self, r, g, b, a, delta):
return self._object.gradient_color_stop_add(r, g, b, a, delta)
@@ -276,8 +286,12 @@
class Image(Object):
- def __init__(self, evas_object):
- super(Image, self).__init__(evas_object)
+ def __init__(self, evas, filename = None, wrap = None):
+ if evas:
+ wrap = evas._evas.object_image_add()
+ super(Image, self).__init__(wrap)
+ if filename:
+ self.load(filename)
def file_set(self, filename):
return self._object.image_file_set(filename)
@@ -366,8 +380,10 @@
class TextBlock(Object):
- def __init__(self, evas_object):
- super(TextBlock, self).__init__(evas_object)
+ def __init__(self, evas, wrap = None):
+ if evas:
+ wrap = evas._evas.object_textblock_add()
+ super(TextBlock, self).__init__(wrap)
def markup_set(self, markup):
return self._object.textblock_markup_set(markup)
@@ -397,8 +413,14 @@
return self._object.textblock_line_number_geometry_get(line)
class Text(Object):
- def __init__(self, evas_object):
- super(Text, self).__init__(evas_object)
+ def __init__(self, evas, (font, size) = (None, None), text = None, wrap =
None):
+ if evas:
+ wrap = evas._evas.object_text_add()
+ super(Text, self).__init__(wrap)
+ if font:
+ self.font_set(font, size)
+ if text:
+ self.text_set(text)
def font_set(self, font, size):
return self._object.text_font_set(font, size)
@@ -530,30 +552,22 @@
return self._evas.image_cache_set(size)
def object_rectangle_add(self):
- return Rectangle(self._evas.object_rectangle_add())
+ return Rectangle(self)
def object_gradient_add(self):
- return Gradient(self._evas.object_gradient_add())
+ return Gradient(self)
def object_image_add(self, filename = None):
- img = Image(self._evas.object_image_add())
- if filename:
- img.load(filename)
- return img
+ return Image(self, filename)
def object_text_add(self, (font, size) = (None, None), text = None):
- o = Text(self._evas.object_text_add())
- if font:
- o.font_set(font, size)
- if text:
- o.text_set(text)
- return o
+ return Text(self, (font, size), text)
def object_textblock_add(self):
- return TextBlock(self._evas.object_textblock_add())
+ return TextBlock(self)
def object_polygon_add(self):
- return Polygon(self._evas.object_polygon_add())
+ return Polygon(self)
def damage_rectangle_add(self, ((x, y), (w, h))):
self._evas.damage_rectangle_add(x, y, w, h)
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Freevo-cvslog mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog