Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGonzalo Odiard <godiard@gmail.com>2011-11-14 13:18:16 (GMT)
committer Gonzalo Odiard <godiard@gmail.com>2011-11-14 13:18:16 (GMT)
commit809106680fd9ebf59f2f4496ffb9a9db7707bb91 (patch)
tree9ebfe78cbabaebb268a208542e66bf30df52f736
parent6bc1e9f6576742a8d564786504d718bf6beff4d5 (diff)
Add a roundbox object to replace the removed use of hippo CanvasBox
Signed-off-by: Gonzalo Odiard <gonzalo@laptop.org>
-rw-r--r--createcardpanel.py9
-rw-r--r--port/roundbox.py87
2 files changed, 92 insertions, 4 deletions
diff --git a/createcardpanel.py b/createcardpanel.py
index 2067cae..e654b1c 100644
--- a/createcardpanel.py
+++ b/createcardpanel.py
@@ -37,6 +37,7 @@ import theme
import speak.espeak
import speak.widgets
import speak.face
+from port.roundbox import RoundBox
_logger = logging.getLogger('memorize-activity')
@@ -282,17 +283,17 @@ class CardEditor(gtk.EventBox):
self.textentry.connect('changed', self.update_text)
box.pack_start(self.textentry, False)
- toolbar = gtk.HBox()
+ toolbar = RoundBox()
browsepicture = ToolButton(
icon_name='import_picture',
tooltip=_('Insert picture'))
- toolbar.pack_start(browsepicture, False)
+ toolbar.add(browsepicture)
browsesound = ToolButton(
icon_name='import_sound',
tooltip=_('Insert sound'))
- toolbar.pack_start(browsesound, False)
+ toolbar.add(browsesound)
browsepicture.connect('clicked', self._load_image)
browsesound.connect('clicked', self._load_audio)
@@ -301,7 +302,7 @@ class CardEditor(gtk.EventBox):
self.usespeak = ToggleToolButton(
named_icon='speak')
self.usespeak.set_palette(SpeakPalette(self))
- toolbar.pack_start(self.usespeak, False)
+ toolbar.add(self.usespeak)
self.usespeak.connect('toggled', self._usespeak_cb)
else:
self.usespeak = None
diff --git a/port/roundbox.py b/port/roundbox.py
new file mode 100644
index 0000000..54ae1a9
--- /dev/null
+++ b/port/roundbox.py
@@ -0,0 +1,87 @@
+import math
+import gtk
+from sugar.graphics import style
+
+
+class RoundBox(gtk.HBox):
+ __gtype_name__ = 'RoundBox'
+
+ _BORDER_DEFAULT = style.LINE_WIDTH
+
+ def __init__(self, **kwargs):
+ gtk.HBox.__init__(self, **kwargs)
+
+ self._radius = style.zoom(10)
+ self.border = self._BORDER_DEFAULT
+ self.border_color = style.COLOR_BLACK
+ self.background_color = None
+ self.connect("expose_event", self.__expose_cb)
+ self.connect("size-allocate", self.__size_allocate_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):
+ cr = widget.window.cairo_create()
+ #cr.save()
+ x = self._x + self._BORDER_DEFAULT / 2
+ y = self._y + self._BORDER_DEFAULT / 2
+ width = self._width - self._BORDER_DEFAULT
+ height = self._height - self._BORDER_DEFAULT
+
+ cr.move_to(x + self._radius, y)
+ cr.arc(x + width - self._radius, y + self._radius,
+ 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)
+ cr.arc(x + self._radius, y + height - self._radius,
+ self._radius, math.pi * 0.5, math.pi)
+ cr.arc(x + self._radius, y + self._radius, self._radius,
+ math.pi, math.pi * 1.5)
+ cr.close_path()
+
+ if self.background_color is not None:
+ r, g, b, a = self.background_color.get_rgba()
+ cr.set_source_rgb(r, g, b)
+ cr.fill_preserve()
+
+ if self.border_color is not None:
+ r, g, b, a = self.border_color.get_rgba()
+ cr.set_source_rgb(r, g, b)
+ cr.set_line_width(self.border)
+ cr.stroke()
+ #cr.restore()
+
+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()