Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAgustin Zubiaga <aguz@sugarlabs.org>2012-05-11 00:12:44 (GMT)
committer Agustin Zubiaga <aguz@sugarlabs.org>2012-05-11 00:12:44 (GMT)
commit10fc8205b59cd329fca866df3bc7051b46af8aa6 (patch)
tree56d46710d9e9e52669f2379efb8a872429718e5c
parent316a6b9ec81ad032d0b89ce5e679e60ac61d46db (diff)
Illustrate RadioToolButtons
-rw-r--r--icons/box.svg22
-rw-r--r--icons/spiral.svg22
-rw-r--r--illustrate.py55
3 files changed, 92 insertions, 7 deletions
diff --git a/icons/box.svg b/icons/box.svg
new file mode 100644
index 0000000..67ed33d
--- /dev/null
+++ b/icons/box.svg
@@ -0,0 +1,22 @@
+<?xml version="1.0" ?><!-- Created with Inkscape (http://www.inkscape.org/) --><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd' [
+ <!ENTITY stroke_color "#000000">
+ <!ENTITY fill_color "#ffffff">
+]><svg height="72.824974" id="svg2" inkscape:version="0.48.3.1 r9886" sodipodi:docname="box.svg" version="1.1" width="73.833656" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:svg="http://www.w3.org/2000/svg">
+ <sodipodi:namedview bordercolor="#666666" borderopacity="1" fit-margin-bottom="10" fit-margin-left="10" fit-margin-right="10" fit-margin-top="10" gridtolerance="10" guidetolerance="10" id="namedview12" inkscape:current-layer="layer1" inkscape:cx="-72.794772" inkscape:cy="24.18596" inkscape:guide-bbox="true" inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:window-height="744" inkscape:window-maximized="1" inkscape:window-width="1280" inkscape:window-x="0" inkscape:window-y="27" inkscape:zoom="1.845" objecttolerance="10" pagecolor="#ffffff" showgrid="false" showguides="true"/>
+ <defs id="defs4"/>
+ <metadata id="metadata7">
+ <rdf:RDF>
+ <cc:Work rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+ <dc:title/>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g id="layer1" transform="translate(8.1694087,-987.72323)">
+ <rect height="46.813049" id="rect3899" style="fill:&fill_color;;fill-opacity:1;fill-rule:nonzero;stroke:&stroke_color;;stroke-width:3.53141212;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" width="48.981071" x="4.4674277" y="1002.1823"/>
+ <text id="text3757" sodipodi:linespacing="125%" style="font-size:17.98463058px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:&stroke_color;;fill-opacity:1;stroke:none;font-family:Sans" transform="scale(1.2412668,0.80562858)" x="16.853321" xml:space="preserve" y="1281.0049"><tspan id="tspan3759" x="16.853321" y="1281.0049">X</tspan></text>
+ <path d="m 32.391512,1018.083 a 3.1460921,2.7086404 0 0 1 -6.292184,0 3.1460921,2.7086404 0 1 1 6.292184,0 z" id="path3761" inkscape:connector-curvature="0" style="fill:&fill_color;;fill-opacity:1;stroke:&stroke_color;;stroke-width:1.16328168;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"/>
+ <path d="m 30.939468,1033.7547 a 2.1780636,1.7412689 0 0 1 -4.356127,0 2.1780636,1.7412689 0 1 1 4.356127,0 z" id="path3763" inkscape:connector-curvature="0" style="fill:&stroke_color;;fill-opacity:1;stroke:&stroke_color;;stroke-width:1.16328168;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"/>
+ </g>
+</svg> \ No newline at end of file
diff --git a/icons/spiral.svg b/icons/spiral.svg
new file mode 100644
index 0000000..2842224
--- /dev/null
+++ b/icons/spiral.svg
@@ -0,0 +1,22 @@
+<?xml version="1.0" ?><!-- Created with Inkscape (http://www.inkscape.org/) --><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd' [
+ <!ENTITY stroke_color "#000000">
+ <!ENTITY fill_color "#ffffff">
+]><svg height="72.824974" id="svg2" inkscape:version="0.48.3.1 r9886" sodipodi:docname="spiral.svg" version="1.1" width="73.833656" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:svg="http://www.w3.org/2000/svg">
+ <sodipodi:namedview bordercolor="#666666" borderopacity="1" fit-margin-bottom="10" fit-margin-left="10" fit-margin-right="10" fit-margin-top="10" gridtolerance="10" guidetolerance="10" id="namedview12" inkscape:current-layer="layer1" inkscape:cx="-72.794772" inkscape:cy="24.18596" inkscape:guide-bbox="true" inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:window-height="744" inkscape:window-maximized="1" inkscape:window-width="1280" inkscape:window-x="0" inkscape:window-y="27" inkscape:zoom="1.845" objecttolerance="10" pagecolor="#ffffff" showgrid="false" showguides="true"/>
+ <defs id="defs4"/>
+ <metadata id="metadata7">
+ <rdf:RDF>
+ <cc:Work rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+ <dc:title/>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g id="layer1" transform="translate(8.1694087,-987.72323)">
+ <path d="M 24.534205,51.569603 C 12.91902,55.741674 1.4946936,45.902233 -0.42964879,34.737822 -2.9407161,20.169424 8.5068654,6.9309342 22.743282,5.1782252 39.384087,3.1295011 54.236505,16.18911 55.880087,32.564005 57.719475,50.889704 43.295393,67.115892 25.195347,68.695565 5.4248311,70.421027 -12.00224,54.8165 -13.543759,35.244088 c -0.490744,-6.230895 0.610099,-12.551851 3.15004,-18.260886" id="path3084" sodipodi:argument="-18.455858" sodipodi:cx="23.848238" sodipodi:cy="33.800583" sodipodi:expansion="0.36000001" sodipodi:radius="38.148865" sodipodi:revolution="1.51" sodipodi:t0="0.12" sodipodi:type="spiral" style="fill:&fill_color;;stroke:&stroke_color;;stroke-width:5.05320501000000011;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1" transform="matrix(-0.77128007,0,0,-0.80267388,45.790813,1055.2956)"/>
+ <text id="text3757" sodipodi:linespacing="125%" style="font-size:17.98463058px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:&stroke_color;;fill-opacity:1;stroke:none;font-family:Sans" transform="scale(1.2412668,0.80562858)" x="13.796735" xml:space="preserve" y="1285.0415"><tspan id="tspan3759" x="13.796735" y="1285.0415">X</tspan></text>
+ <path d="m 28.597474,1021.335 a 3.1460921,2.7086404 0 0 1 -6.292184,0 3.1460921,2.7086404 0 1 1 6.292184,0 z" id="path3761" inkscape:connector-curvature="0" style="fill:&fill_color;;fill-opacity:1;stroke:&stroke_color;;stroke-width:1.16328168;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"/>
+ <path d="m 27.14543,1037.0067 a 2.1780636,1.7412689 0 0 1 -4.356127,0 2.1780636,1.7412689 0 1 1 4.356127,0 z" id="path3763" inkscape:connector-curvature="0" style="fill:&stroke_color;;fill-opacity:1;stroke:&stroke_color;;stroke-width:1.16328168;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"/>
+ </g>
+</svg> \ No newline at end of file
diff --git a/illustrate.py b/illustrate.py
index ceee39e..0a33540 100644
--- a/illustrate.py
+++ b/illustrate.py
@@ -34,6 +34,7 @@ from sugar.graphics.icon import Icon
from sugar.graphics.colorbutton import ColorToolButton
from sugar.graphics.toolbarbox import ToolbarBox
from sugar.graphics.toolbutton import ToolButton
+from sugar.graphics.radiotoolbutton import RadioToolButton
from sugar.graphics.objectchooser import ObjectChooser
from sugar.graphics.alert import Alert, NotifyAlert
@@ -99,6 +100,35 @@ class IllustrateActivity(activity.Activity):
alert_btn.connect("clicked", self._show_alert_btn_pallete)
toolbarbox.toolbar.insert(alert_btn, -1)
+ separator = gtk.SeparatorToolItem()
+ separator.set_expand(False)
+ separator.set_draw(True)
+ toolbarbox.toolbar.insert(separator, -1)
+
+ # RadioToolButton
+ self._circle_btn = RadioToolButton()
+ self._circle_btn.props.icon_name = "sugar-integration"
+ self._circle_btn.connect("clicked", self._set_background)
+
+ self._spiral_btn = RadioToolButton()
+ self._spiral_btn.props.icon_name = "spiral"
+ self._spiral_btn.props.group = self._circle_btn
+ self._spiral_btn.connect("clicked", self._set_background)
+
+ self._box_btn = RadioToolButton()
+ self._box_btn.props.icon_name = "box"
+ self._box_btn.props.group = self._circle_btn
+ self._box_btn.connect("clicked", self._set_background)
+
+ toolbarbox.toolbar.insert(self._circle_btn, -1)
+ toolbarbox.toolbar.insert(self._spiral_btn, -1)
+ toolbarbox.toolbar.insert(self._box_btn, -1)
+
+ separator = gtk.SeparatorToolItem()
+ separator.set_expand(False)
+ separator.set_draw(True)
+ toolbarbox.toolbar.insert(separator, -1)
+
# Preferences toolbar
options_button = ToolbarButton(icon_name='preferences-system')
options_toolbar = gtk.Toolbar()
@@ -155,6 +185,9 @@ class IllustrateActivity(activity.Activity):
self._create_canvas(canvas)
self._create_alert_btn_palette(alert_btn)
+ def _set_background(self, widget):
+ self._icon.props.icon_name = widget.props.icon_name
+
def _show_alert_btn_pallete(self, widget):
widget.props.palette.popup(immediate=True, state=1)
@@ -232,8 +265,12 @@ class IllustrateActivity(activity.Activity):
# A sugar icon for set stroke and fill color
self._icon = Icon(pixel_size=pixel_size)
- self._icon.props.icon_name = 'sugar-integration'
self._icon.props.pixel_size = pixel_size
+
+ for i in [self._circle_btn, self._spiral_btn, self._box_btn]:
+ if i.get_active():
+ self._icon.props.icon_name = i.props.icon_name
+
canvas.add(self._icon)
self._icon.show()
@@ -261,11 +298,12 @@ class IllustrateActivity(activity.Activity):
def write_file(self, file_path):
jfile = open(file_path, "w")
- colors = {"fill": self._icon.props.fill_color,
- "stroke": self._icon.props.stroke_color}
+ icon_props = {"fill": self._icon.props.fill_color,
+ "stroke": self._icon.props.stroke_color,
+ "icon-name": self._icon.props.icon_name}
try:
- json.dump(colors, jfile)
+ json.dump(icon_props, jfile)
finally:
jfile.close()
@@ -273,9 +311,12 @@ class IllustrateActivity(activity.Activity):
jfile = open(file_path, "r")
try:
- colors = json.load(jfile)
+ icon_props = json.load(jfile)
finally:
jfile.close()
- self.fill_color_btn.set_color(gtk.gdk.Color(colors["fill"]))
- self.stroke_color_btn.set_color(gtk.gdk.Color(colors["stroke"]))
+ self.fill_color_btn.set_color(gtk.gdk.Color(icon_props["fill"]))
+ self.stroke_color_btn.set_color(gtk.gdk.Color(icon_props["stroke"]))
+ for i in [self._circle_btn, self._spiral_btn, self._box_btn]:
+ if i.props.icon_name == icon_props["icon-name"]:
+ i.set_active(1)