Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/tutorius/overlayer.py
diff options
context:
space:
mode:
authormike <michael.jmontcalm@gmail.com>2009-12-05 22:21:27 (GMT)
committer erick <erick@sugar-dev-erick.(none)>2009-12-06 05:22:06 (GMT)
commit94cd6988a5122fae561536c8c058a88503e9850d (patch)
treefe2b875e2d1cb98164ce7bea74b7d51979e01f5e /tutorius/overlayer.py
parent71c8003735f6d34dce6058b90b460f8b3a42d8bc (diff)
Changed the DragWrapper behavior to use drag-begin, drag-end and the icon change to implement a move on the overlayer. However, on the regular overlayer, drag-end signal is never emitted
Conflicts: tutorius/actions.py tutorius/overlayer.py
Diffstat (limited to 'tutorius/overlayer.py')
-rw-r--r--tutorius/overlayer.py59
1 files changed, 57 insertions, 2 deletions
diff --git a/tutorius/overlayer.py b/tutorius/overlayer.py
index 4aedd6b..fc0abd4 100644
--- a/tutorius/overlayer.py
+++ b/tutorius/overlayer.py
@@ -158,8 +158,63 @@ class Overlayer(gtk.Layout):
# Since widget is laid out in a Layout box, the Layout will honor the
# requested size. Using size_allocate could make a nasty nested loop in
# some cases.
- if self._overlayed:
- self._overlayed.set_size_request(allocation.width, allocation.height)
+ self._overlayed.set_size_request(allocation.width, allocation.height)
+
+
+class FrameOverlayer(gtk.Window):
+ def __init__(self):
+ gtk.Window.__init__(self)
+ self._vbox = gtk.VBox()
+ self._overlayer = Overlayer(self._vbox)
+ self.add(self._overlayer)
+ self._vbox.show()
+ self._overlayer.show()
+ self.show_all()
+
+ self._overlayer.drag_dest_set(gtk.DEST_DEFAULT_MOTION |
+ gtk.DEST_DEFAULT_HIGHLIGHT |
+ gtk.DEST_DEFAULT_DROP,
+ [ ( WIDGET_ID, 0, TARGET_TYPE_WIDGET ) ],
+ gtk.gdk.ACTION_MOVE)
+
+ self._widgets = []
+
+
+ def show(self):
+ self.set_decorated(False) # Remove borders and title bar
+ self.set_keep_above(True) # Always on top
+ self.fullscreen() # Cover the entire screen
+
+ gtk.Window.show(self)
+ self.expose = self.connect("expose-event", self.apply_mask)
+
+ def apply_mask(self,*args):
+ self.px = gtk.gdk.Pixmap(None, 1173, 800, 1) # source, size, colors
+ self.cr = self.px.cairo_create()
+ self.cr.set_operator(cairo.OPERATOR_CLEAR)
+ self.cr.paint()
+ self.cr.set_source_rgb(1,1,1)
+ self.cr.set_operator(cairo.OPERATOR_SOURCE)
+
+ for widget in self._widgets:
+ widget.draw_with_context(self.cr)
+ self.shape_combine_mask(self.px, 0, 0) # pixmap, offset
+
+ def put(self,widget, offset_x, offset_y):
+ self._widgets.append(widget)
+ widget.show()
+ self._overlayer.put(widget, offset_x, offset_y)
+ self._overlayer.queue_draw()
+
+ def move(self, widget, x, y):
+ self._overlayer.move(widget,x,y)
+
+ def remove(self, widget):
+ self._widgets.remove(widget)
+ self._overlayer.remove(widget)
+
+ def queue_draw(self):
+ self._overlayer.queue_draw()
class FrameOverlayer(gtk.Window):
def __init__(self):