Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/chat/roundbox.py
diff options
context:
space:
mode:
Diffstat (limited to 'chat/roundbox.py')
-rw-r--r--chat/roundbox.py98
1 files changed, 24 insertions, 74 deletions
diff --git a/chat/roundbox.py b/chat/roundbox.py
index 35d5f7c..ae5a4bb 100644
--- a/chat/roundbox.py
+++ b/chat/roundbox.py
@@ -1,100 +1,50 @@
import math
-import gtk
-from sugar.graphics import style
+from gi.repository import Gtk, GObject, cairo
+from sugar3.graphics import style
+BORDER_DEFAULT = style.LINE_WIDTH
-class RoundBox(gtk.HBox):
+class RoundBox(Gtk.HBox):
__gtype_name__ = 'RoundBox'
-
- _BORDER_DEFAULT = style.LINE_WIDTH
-
+
def __init__(self, **kwargs):
- gtk.HBox.__init__(self, **kwargs)
-
- self._x = None
- self._y = None
- self._width = None
- self._height = None
+ GObject.GObject.__init__(self, **kwargs)
self._radius = style.zoom(10)
- self.border = self._BORDER_DEFAULT
self.border_color = style.COLOR_BLACK
self.background_color = None
- self.set_reallocate_redraws(True)
- self.set_resize_mode(gtk.RESIZE_PARENT)
- self.connect("expose_event", self.__expose_cb)
+ self.set_resize_mode(Gtk.ResizeMode.PARENT)
+ self.connect("draw", self.__expose_cb)
self.connect("add", self.__add_cb)
-
+
def __add_cb(self, child, params):
child.set_border_width(style.zoom(5))
-
- def __size_allocate_cb(self, widget, allocation):
- self._x = allocation.x
- self._y = allocation.y
- self._width = allocation.width
- self._height = allocation.height
-
- def __expose_cb(self, widget, event):
- context = widget.window.cairo_create()
-
- # set a clip region for the expose event
- context.rectangle(event.area.x, event.area.y,
- event.area.width, event.area.height)
- context.clip()
- self.draw(context)
- return False
-
- def draw(self, cr):
+
+ def __expose_cb(self, widget, cr):
rect = self.get_allocation()
- x = rect.x + self._BORDER_DEFAULT / 2
- y = rect.y + self._BORDER_DEFAULT / 2
- width = rect.width - self._BORDER_DEFAULT
- height = rect.height - self._BORDER_DEFAULT
+ x = rect.x
+ y = rect.y
+ width = rect.width - BORDER_DEFAULT
+ height = rect.height - BORDER_DEFAULT
- cr.move_to(x + self._radius, y)
+ cr.move_to(x, y)
cr.arc(x + width - self._radius, y + self._radius,
- self._radius, math.pi * 1.5, math.pi * 2)
+ self._radius, math.pi * 1.5, math.pi * 2)
cr.arc(x + width - self._radius, y + height - self._radius,
- self._radius, 0, math.pi * 0.5)
+ self._radius, 0, math.pi * 0.5)
cr.arc(x + self._radius, y + height - self._radius,
- self._radius, math.pi * 0.5, math.pi)
+ self._radius, math.pi * 0.5, math.pi)
cr.arc(x + self._radius, y + self._radius, self._radius,
- math.pi, math.pi * 1.5)
+ math.pi, math.pi * 1.5)
cr.close_path()
- if self.background_color is not None:
+ if self.background_color != None:
r, g, b, __ = self.background_color.get_rgba()
cr.set_source_rgb(r, g, b)
cr.fill_preserve()
- if self.border_color is not None:
+ if self.border_color != None:
r, g, b, __ = self.border_color.get_rgba()
cr.set_source_rgb(r, g, b)
- cr.set_line_width(self.border)
+ cr.set_line_width(BORDER_DEFAULT)
cr.stroke()
-
-if __name__ == '__main__':
-
- win = gtk.Window()
- win.connect('destroy', gtk.main_quit)
- win.set_default_size(450, 550)
- vbox = gtk.VBox()
-
- box1 = RoundBox()
- vbox.add(box1)
- label1 = gtk.Label("Test 1")
- box1.add(label1)
-
- rbox = RoundBox()
- rbox.background_color = style.Color('#FF0000')
- vbox.add(rbox)
- label2 = gtk.Label("Test 2")
- rbox.add(label2)
-
- bbox = RoundBox()
- bbox.background_color = style.Color('#aaff33')
- bbox.border_color = style.Color('#ff3300')
- vbox.add(bbox)
-
- win.add(vbox)
- win.show_all()
- gtk.main()
+ return False