Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Francis <francis@sugarlabs.org>2012-07-04 00:17:06 (GMT)
committer Daniel Francis <francis@sugarlabs.org>2012-07-04 00:17:06 (GMT)
commitc13e224c2e9a9803cc66e7bfd61e636b9190ab31 (patch)
tree479ab04acf39de6e15e96e31488f5bb1946ea897
parentbf59f37fecce06e31031cacf0c073a8d2c2b4654 (diff)
Moving image options to the activity ToolbarBox
-rw-r--r--icons/image-mode.svg153
-rw-r--r--toolbars.py91
-rw-r--r--widgets.py97
3 files changed, 248 insertions, 93 deletions
diff --git a/icons/image-mode.svg b/icons/image-mode.svg
new file mode 100644
index 0000000..ad28fbc
--- /dev/null
+++ b/icons/image-mode.svg
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="50"
+ height="50"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.46"
+ sodipodi:docname="image-mode.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape">
+ <metadata
+ id="metadata36">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <sodipodi:namedview
+ inkscape:window-height="735"
+ inkscape:window-width="1278"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ guidetolerance="10.0"
+ gridtolerance="10.0"
+ objecttolerance="10.0"
+ borderopacity="1.0"
+ bordercolor="#666666"
+ pagecolor="#ffffff"
+ id="base"
+ showgrid="false"
+ inkscape:zoom="9.24"
+ inkscape:cx="24.601371"
+ inkscape:cy="25"
+ inkscape:window-x="0"
+ inkscape:window-y="16"
+ inkscape:current-layer="svg2" />
+ <defs
+ id="defs4">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 25 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="50 : 25 : 1"
+ inkscape:persp3d-origin="25 : 16.666667 : 1"
+ id="perspective38" />
+ <mask
+ id="Mask"
+ maskUnits="userSpaceOnUse"
+ x="0"
+ y="0"
+ width="50"
+ height="50">
+ <rect
+ x="0"
+ y="0"
+ width="50"
+ height="50"
+ fill="white"
+ id="rect7" />
+ <line
+ x1="35"
+ y1="4"
+ x2="35"
+ y2="26"
+ stroke-width="10.0"
+ stroke="black"
+ id="line9" />
+ <line
+ x1="24"
+ y1="15"
+ x2="46"
+ y2="15"
+ stroke-width="10.0"
+ stroke="black"
+ id="line11" />
+ <polyline
+ points="17.7,38.7 26.3,31 21,38.7"
+ style="fill:black;;stroke:none;;stroke-width:0"
+ id="polyline13" />
+ </mask>
+ </defs>
+ <rect
+ style="opacity:1;fill:#000000;fill-opacity:0;stroke:#ffffff;stroke-width:2.89933752999999994;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect3161"
+ width="37.150295"
+ height="28.059385"
+ x="7.0200901"
+ y="12.647797" />
+ <polyline
+ points="13,15.7 20.7,11.7 26.3,15.7"
+ mask="url(#Mask)"
+ style="fill:none;stroke:#ffffff;stroke-width:1.25000000000000000;stroke-opacity:1"
+ id="polyline17"
+ transform="translate(6.3852819,-2.7056278)" />
+ <circle
+ cx="12.3"
+ cy="23.700001"
+ r="3"
+ mask="url(#Mask)"
+ style="fill:#ffffff;stroke:#ffffff;stroke-width:1.50000000000000000;stroke-opacity:1"
+ id="circle19"
+ sodipodi:cx="12.3"
+ sodipodi:cy="23.700001"
+ sodipodi:rx="3"
+ sodipodi:ry="3"
+ transform="translate(23.917748,-3.1385282)" />
+ <polyline
+ points="13,39.7 27.6,29.6 34.3,33.6 34.3,39.7"
+ mask="url(#Mask)"
+ style="fill:#ffffff;stroke:#ffffff;stroke-width:3;stroke-opacity:1"
+ id="polyline23"
+ transform="matrix(0.9827085,0,0,0.9742491,10.040979,0.9463818)" />
+ <polyline
+ points="20.3,26.3 21.7,27.7 23,26.3"
+ mask="url(#Mask)"
+ style="fill:none;stroke:#ffffff;stroke-width:0.89999998000000003;stroke-opacity:1"
+ id="polyline25"
+ transform="translate(-6.2770563,-0.7575757)"
+ inkscape:transform-center-x="3.675"
+ inkscape:transform-center-y="2.5674242" />
+ <polyline
+ points="23.8,24.3 25.3,22.8 26.9,24.3"
+ mask="url(#Mask)"
+ style="fill:none;stroke:#ffffff;stroke-width:1;stroke-opacity:1"
+ id="polyline27"
+ transform="translate(-6.2770563,-0.7575757)"
+ inkscape:transform-center-x="-0.024999994"
+ inkscape:transform-center-y="-0.88257575" />
+ <polyline
+ points="27,19.7 28.7,21.3 30.3,19.7"
+ mask="url(#Mask)"
+ style="fill:none;stroke:#ffffff;stroke-width:1;stroke-opacity:1"
+ id="polyline29"
+ transform="translate(-6.2770563,-0.7575757)"
+ inkscape:transform-center-x="-3.325"
+ inkscape:transform-center-y="-3.9325758" />
+ <polyline
+ points="5,35 13.7,32.3 20.3,34.1"
+ mask="url(#Mask)"
+ style="fill:none;stroke:#ffffff;stroke-width:2.50000000000000000;stroke-opacity:1"
+ id="polyline21"
+ transform="translate(3.3549781,4.1125541)" />
+</svg>
diff --git a/toolbars.py b/toolbars.py
index 16cd5d5..11f703b 100644
--- a/toolbars.py
+++ b/toolbars.py
@@ -29,7 +29,89 @@ from sugar.activity.widgets import ToolbarButton
class ImageOptions(ToolbarButton):
def __init__(self):
- ToolbarButton.__init__(self, icon_name='preferences-system')
+ ToolbarButton.__init__(self, icon_name='image-mode')
+ self.toolbar = gtk.Toolbar()
+ scale_button = ToolButton("scale")
+ scale_button.set_tooltip('Picture Size')
+ scale_button.show()
+ scale_palette = scale_button.get_palette()
+ scale_button.connect('clicked',
+ lambda w: scale_palette.popup(immediate=True,
+ state=1))
+
+ box = gtk.HBox()
+ refresh_button = ToolButton(gtk.STOCK_REFRESH)
+ refresh_button.show()
+ box.pack_start(refresh_button, False, False, 0)
+ separator = gtk.SeparatorToolItem()
+ separator.show()
+ box.pack_start(separator, False, False, 0)
+ self.width, self.height = 1, 1
+ self.width_entry = gtk.SpinButton(gtk.Adjustment(value=0,
+ lower=0,
+ upper=50000,
+ step_incr=1))
+ #self.width_entry.connect("value-changed", self.change_width)
+ self.width_entry.show()
+ box.pack_start(self.width_entry, True, True, 0)
+ self.link_values_button = gtk.ToggleToolButton()
+ self.link_values_button.set_active(True)
+ #self.link_values_button.connect("toggled", self.link_unlink)
+ self.link_values_button.set_icon_name("link")
+ self.link_values_button.show()
+ box.pack_start(self.link_values_button, False, False, 0)
+ self.height_entry = gtk.SpinButton(gtk.Adjustment(value=0,
+ lower=0,
+ upper=50000,
+ step_incr=1))
+ #self.height_entry.connect("value-changed", self.change_height)
+ self.height_entry.show()
+ box.pack_start(self.height_entry, True, True, 0)
+ scale_palette.set_content(box)
+ box.show_all()
+ self.toolbar.insert(scale_button, -1)
+
+ rotate_button = ToolButton("image-rotate")
+ rotate_button.set_tooltip("Rotate")
+ #rotate_button.connect("clicked", self.rotate_image)
+ rotate_button.show()
+ self.toolbar.insert(rotate_button, -1)
+
+ contrast_item = ToolButton("contrast")
+ contrast_item.set_tooltip("Contrast")
+ contrast_palette = contrast_item.get_palette()
+ eventbox = gtk.EventBox()
+ contrast_scale = gtk.HScale(gtk.Adjustment(0, -1, 1, 0.1))
+ contrast_scale.set_draw_value(False)
+ contrast_scale.show()
+ eventbox.add(contrast_scale)
+ eventbox.set_size_request(300, -1)
+ contrast_palette.set_content(eventbox)
+ contrast_item.connect('clicked',
+ lambda w: contrast_palette.popup(immediate=True,
+ state=1))
+ contrast_item.show()
+ eventbox.show()
+ self.toolbar.insert(contrast_item, -1)
+ brightness_button = ToolButton('brightness-high')
+ brightness_button.set_tooltip('Brightness')
+ eventbox = gtk.EventBox()
+ brightness_scale = gtk.HScale(gtk.Adjustment(0, -1, 1, 0.1))
+ brightness_scale.set_draw_value(False)
+ brightness_scale.show()
+ eventbox.add(brightness_scale)
+ eventbox.set_size_request(300, -1)
+ eventbox.show()
+ brightness_palette = brightness_button.get_palette()
+ brightness_palette.set_content(eventbox)
+ brightness_button.connect('clicked',
+ lambda w: brightness_palette.popup(
+ immediate=True,
+ state=1))
+ self.toolbar.insert(brightness_button, -1)
+ brightness_button.show()
+ self.toolbar.show()
+ self.props.page = self.toolbar
class PresentToolbarBox(ToolbarBox):
@@ -51,5 +133,12 @@ class PresentToolbarBox(ToolbarBox):
separator.set_expand(True)
separator.set_draw(False)
self.toolbar.insert(separator, -1)
+ self.image_options = ImageOptions()
+ self.image_options.show()
+ self.toolbar.insert(self.image_options, -1)
+ separator = gtk.SeparatorToolItem()
+ separator.set_expand(True)
+ separator.set_draw(False)
+ self.toolbar.insert(separator, -1)
self.toolbar.insert(stopbutton, -1)
stopbutton.show()
diff --git a/widgets.py b/widgets.py
index c4be3a2..e42db52 100644
--- a/widgets.py
+++ b/widgets.py
@@ -23,10 +23,9 @@
#import tempfile
import gobject
import gtk
-from sugar.graphics.toolbutton import ToolButton
-class ImageEditor(gtk.VBox):
+class ImageEditor(gtk.Notebook):
__gsignals__ = {"get-image-from-galery": (gobject.SIGNAL_RUN_LAST,
gobject.TYPE_PYOBJECT,
(gobject.TYPE_STRING,))}
@@ -35,91 +34,7 @@ class ImageEditor(gtk.VBox):
def __init__(self):
super(ImageEditor, self).__init__()
- self.toolbar = gtk.Toolbar()
- scale_button = ToolButton("scale")
- scale_button.set_tooltip('Picture Size')
- scale_button.show()
- scale_palette = scale_button.get_palette()
- scale_button.connect('clicked',
- lambda w: scale_palette.popup(immediate=True,
- state=1))
-
- box = gtk.HBox()
- refresh_button = ToolButton(gtk.STOCK_REFRESH)
- refresh_button.show()
- box.pack_start(refresh_button, False, False, 0)
- separator = gtk.SeparatorToolItem()
- separator.show()
- box.pack_start(separator, False, False, 0)
- self.width, self.height = 1, 1
- self.width_entry = gtk.SpinButton(gtk.Adjustment(value=0,
- lower=0,
- upper=50000,
- step_incr=1))
- self.width_entry.connect("value-changed", self.change_width)
- self.width_entry.show()
- box.pack_start(self.width_entry, True, True, 0)
- self.link_values_button = gtk.ToggleToolButton()
- self.link_values_button.set_active(True)
- self.link_values_button.connect("toggled", self.link_unlink)
- self.link_values_button.set_icon_name("link")
- self.link_values_button.show()
- box.pack_start(self.link_values_button, False, False, 0)
- self.height_entry = gtk.SpinButton(gtk.Adjustment(value=0,
- lower=0,
- upper=50000,
- step_incr=1))
- self.height_entry.connect("value-changed", self.change_height)
- self.height_entry.show()
- box.pack_start(self.height_entry, True, True, 0)
- scale_palette.set_content(box)
- box.show_all()
- self.toolbar.insert(scale_button, -1)
-
- rotate_button = ToolButton("image-rotate")
- rotate_button.set_tooltip("Rotate")
- rotate_button.connect("clicked", self.rotate_image)
- rotate_button.show()
- self.toolbar.insert(rotate_button, -1)
-
- contrast_item = ToolButton("contrast")
- contrast_item.set_tooltip("Contrast")
- contrast_palette = contrast_item.get_palette()
- eventbox = gtk.EventBox()
- contrast_scale = gtk.HScale(gtk.Adjustment(0, -1, 1, 0.1))
- contrast_scale.set_draw_value(False)
- contrast_scale.show()
- eventbox.add(contrast_scale)
- eventbox.set_size_request(300, -1)
- contrast_palette.set_content(eventbox)
- contrast_item.connect('clicked',
- lambda w: contrast_palette.popup(immediate=True,
- state=1))
- contrast_item.show()
- eventbox.show()
- self.toolbar.insert(contrast_item, -1)
- brightness_button = ToolButton('brightness-high')
- brightness_button.set_tooltip('Brightness')
- eventbox = gtk.EventBox()
- brightness_scale = gtk.HScale(gtk.Adjustment(0, -1, 1, 0.1))
- brightness_scale.set_draw_value(False)
- brightness_scale.show()
- eventbox.add(brightness_scale)
- eventbox.set_size_request(300, -1)
- eventbox.show()
- brightness_palette = brightness_button.get_palette()
- brightness_palette.set_content(eventbox)
- brightness_button.connect('clicked',
- lambda w: brightness_palette.popup(
- immediate=True,
- state=1))
- self.toolbar.insert(brightness_button, -1)
- brightness_button.show()
- self.toolbar.set_sensitive(False)
- self.toolbar.show()
- self.pack_start(self.toolbar, False, True)
- self.notebook = gtk.Notebook()
- self.notebook.set_show_border(False)
+ self.set_show_border(True)
drag_label = gtk.Label("Drag here an image")
drag_label.drag_dest_set(gtk.DEST_DEFAULT_MOTION |
gtk.DEST_DEFAULT_HIGHLIGHT |
@@ -130,7 +45,7 @@ class ImageEditor(gtk.VBox):
gtk.gdk.ACTION_COPY)
drag_label.connect("drag_data_received", self.image_received)
drag_label.show()
- self.notebook.append_page(drag_label)
+ self.append_page(drag_label)
self.scrolled_window = gtk.ScrolledWindow()
self.scrolled_window.set_policy(gtk.POLICY_AUTOMATIC,
gtk.POLICY_AUTOMATIC)
@@ -138,10 +53,8 @@ class ImageEditor(gtk.VBox):
self.image_widget.show()
self.scrolled_window.add_with_viewport(self.image_widget)
self.scrolled_window.show()
- self.notebook.append_page(self.scrolled_window)
- self.notebook.set_show_tabs(False)
- self.notebook.show()
- self.pack_start(self.notebook)
+ self.append_page(self.scrolled_window)
+ self.set_show_tabs(False)
def change_width(self, widget):
if self.link_values_button.get_active():