diff options
author | Daniel Francis <francis@sugarlabs.org> | 2012-07-04 00:17:06 (GMT) |
---|---|---|
committer | Daniel Francis <francis@sugarlabs.org> | 2012-07-04 00:17:06 (GMT) |
commit | c13e224c2e9a9803cc66e7bfd61e636b9190ab31 (patch) | |
tree | 479ab04acf39de6e15e96e31488f5bb1946ea897 | |
parent | bf59f37fecce06e31031cacf0c073a8d2c2b4654 (diff) |
Moving image options to the activity ToolbarBox
-rw-r--r-- | icons/image-mode.svg | 153 | ||||
-rw-r--r-- | toolbars.py | 91 | ||||
-rw-r--r-- | widgets.py | 97 |
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() @@ -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(): |