Implement a stage view
This commit is contained in:
@@ -20,6 +20,7 @@ class Actor(gobject.GObject):
|
||||
def set_position(self, x, y):
|
||||
self._x = x
|
||||
self._y = y
|
||||
self.notify_changed()
|
||||
|
||||
def _get_parents(self):
|
||||
parents = []
|
||||
@@ -39,9 +40,16 @@ class Actor(gobject.GObject):
|
||||
transf = actor._transf
|
||||
return transf.get_position(x, y)
|
||||
|
||||
def notify_changed(self):
|
||||
if self._parent:
|
||||
self._parent.notify_changed()
|
||||
else:
|
||||
self.emit('changed')
|
||||
|
||||
def set_size(self, width, height):
|
||||
self._width = width
|
||||
self._height = height
|
||||
self.notify_changed()
|
||||
|
||||
def render(self, drawable):
|
||||
pass
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
import gtk
|
||||
|
||||
from sugar.scene.Stage import Stage
|
||||
|
||||
class View(gtk.DrawingArea):
|
||||
def __init__(self, stage):
|
||||
gtk.DrawingArea.__init__(self)
|
||||
|
||||
self._stage = stage
|
||||
self._stage.connect('changed', self.__stage_changed_cb)
|
||||
self.connect('expose_event', self.__expose_cb)
|
||||
|
||||
def __stage_changed_cb(self, stage):
|
||||
if self.window:
|
||||
self.window.invalidate_rect(None, False)
|
||||
|
||||
def __expose_cb(self, widget, event):
|
||||
self._stage.render(widget.window)
|
||||
|
||||
def get_stage(self):
|
||||
return self._stage
|
||||
Reference in New Issue
Block a user