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-10 00:55:53 (GMT)
committer Daniel Francis <francis@sugarlabs.org>2012-07-10 00:55:53 (GMT)
commit42849083765bd2b5345281b847758a45586c8274 (patch)
tree4e2394286182406f2f059bd15644a2c1c9f0cb6f
parent3094778f8597595eac18216b177cf4abd7319bc9 (diff)
Renaming activity, Paint toolbar migration start
-rw-r--r--activity/activity-expose.svg (renamed from activity/activity-present.svg)0
-rw-r--r--activity/activity.info8
-rwxr-xr-xexpose.py (renamed from present.py)4
-rw-r--r--toolbars.py334
4 files changed, 277 insertions, 69 deletions
diff --git a/activity/activity-present.svg b/activity/activity-expose.svg
index 6bb0e0b..6bb0e0b 100644
--- a/activity/activity-present.svg
+++ b/activity/activity-expose.svg
diff --git a/activity/activity.info b/activity/activity.info
index bba4427..27ff9fe 100644
--- a/activity/activity.info
+++ b/activity/activity.info
@@ -1,8 +1,8 @@
[Activity]
-name = Present
+name = Expose
activity_version = 1
show_launcher = 1
-bundle_id = org.sugarlabs.Present
-exec = sugar-activity present.PresentActivity -s
-icon = activity-present
+bundle_id = org.sugarlabs.Expose
+exec = sugar-activity expose.ExposeActivity -s
+icon = activity-expose
license = GPLv3+
diff --git a/present.py b/expose.py
index c2879e6..2a0af2b 100755
--- a/present.py
+++ b/expose.py
@@ -32,14 +32,14 @@ from images import Image
from images import ImagesGalery
-class PresentActivity(activity.Activity):
+class ExposeActivity(activity.Activity):
def __init__(self, handle):
activity.Activity.__init__(self, handle)
activity_button = ActivityToolbarButton(self)
stop_button = StopButton(self)
toolbarbox = PresentToolbarBox(activity_button, stop_button)
- toolbarbox.connect('insert-picture', self.load_picture)
toolbarbox.connect('new-slide', self._append_slide)
+ toolbarbox.image_toolbar.connect('insert-picture', self.load_picture)
toolbarbox.show()
self.set_toolbar_box(toolbarbox)
self.images_galery = ImagesGalery()
diff --git a/toolbars.py b/toolbars.py
index b81b4af..65118cb 100644
--- a/toolbars.py
+++ b/toolbars.py
@@ -1,25 +1,26 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
-# options.py
+# Copyright 2012 S. Daniel Francis <francis@sugarlabs.org>
#
-# Copyright 2012 S. Daniel Francis <francis@sugarlabs.org>
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License.
#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License.
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
-# MA 02110-1301, USA.
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+# MA 02110-1301, USA.
#
+import logging
+logger = logging.getLogger()
+from gettext import gettext as _
import gobject
import gtk
from sugar.graphics.toolbutton import ToolButton
@@ -31,45 +32,7 @@ class ImageOptions(ToolbarButton):
def __init__(self):
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")
@@ -114,11 +77,257 @@ class ImageOptions(ToolbarButton):
self.props.page = self.toolbar
-class PresentToolbarBox(ToolbarBox):
+class ImageToolbar(gtk.Toolbar):
+
__gsignals__ = {'insert-picture': (gobject.SIGNAL_RUN_LAST,
gobject.TYPE_NONE,
- tuple()),
- 'new-slide': (gobject.SIGNAL_RUN_LAST,
+ tuple())}
+
+ _EFFECT_RAINBOW_NAME = 'rainbow'
+
+ def __init__(self):
+ gtk.Toolbar.__init__(self)
+
+ self.width_percent = 1.
+ self.height_percent = 1.
+
+ 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.insert(scale_button, -1)
+
+ self._object_rotate_left = ToolButton('object-rotate-left')
+ self.insert(self._object_rotate_left, -1)
+ self._object_rotate_left.set_tooltip(_('Rotate Left'))
+
+ self._object_rotate_right = ToolButton('object-rotate-right')
+ self.insert(self._object_rotate_right, -1)
+ self._object_rotate_right.set_tooltip(_('Rotate Right'))
+#
+# self._mirror_horizontal = ToolButton('mirror-horizontal')
+# self.insert(self._mirror_horizontal, -1)
+# self._mirror_horizontal.show()
+# self._mirror_horizontal.set_tooltip(_('Horizontal Mirror'))
+#
+# self._mirror_vertical = ToolButton('mirror-vertical')
+# self.insert(self._mirror_vertical, -1)
+# self._mirror_vertical.show()
+# self._mirror_vertical.set_tooltip(_('Vertical Mirror'))
+
+# self._object_height = ToolButton('object-height')
+# self.insert(self._object_height, -1)
+# self._object_height.set_tooltip(_('Height'))
+
+# self.height_spinButton = self._create_spinButton(self._object_height,
+# 'object-height', activity)
+
+# item = gtk.ToolItem()
+# item.add(self.height_spinButton)
+# self.insert(item, -1)
+
+# self._object_width = ToolButton('object-width')
+# self.insert(self._object_width, -1)
+# self._object_width.set_tooltip(_('Width'))
+
+# self.width_spinButton = self._create_spinButton(self._object_width,
+# 'object-width', activity)
+
+# item = gtk.ToolItem()
+# item.add(self.width_spinButton)
+# self.insert(item, -1)
+
+ separator = gtk.SeparatorToolItem()
+ separator.set_draw(True)
+ self.insert(separator, -1)
+
+ self._effect_grayscale = ToolButton('effect-grayscale')
+ self.insert(self._effect_grayscale, -1)
+ self._effect_grayscale.set_tooltip(_('Grayscale'))
+
+# self._effect_rainbow = DrawToolButton('effect-rainbow',
+# activity.tool_group, _('Rainbow'))
+# self.insert(self._effect_rainbow, -1)
+
+ self._invert_colors = ToolButton('invert-colors')
+ self.insert(self._invert_colors, -1)
+ self._invert_colors.set_tooltip(_('Invert Colors'))
+
+ separator = gtk.SeparatorToolItem()
+ separator.set_draw(True)
+ separator.set_expand(True)
+ self.insert(separator, -1)
+
+ self._object_insert = ToolButton('insert-picture')
+ self.insert(self._object_insert, -1)
+ self._object_insert.set_tooltip(_('Insert Image'))
+ self._object_insert.connect('clicked',
+ lambda w: self.emit('insert-picture'))
+
+# self._object_insert.connect('clicked', self.insertImage, activity)
+# self._object_rotate_left.connect('clicked', self.rotate_left,
+# activity)
+# self._object_rotate_right.connect('clicked', self.rotate_right,
+# activity)
+# self._mirror_vertical.connect('clicked', self.mirror_vertical)
+# self._mirror_horizontal.connect('clicked', self.mirror_horizontal)
+
+# self._activity.area.connect('undo', self._on_signal_undo_cb)
+# self._activity.area.connect('redo', self._on_signal_redo_cb)
+# self._activity.area.connect('select', self._on_signal_select_cb)
+# self._activity.area.connect('action-saved',
+# self._on_signal_action_saved_cb)
+
+ self._effect_grayscale.connect('clicked', self.grayscale)
+# self._effect_rainbow.connect('clicked', self.rainbow)
+ self._invert_colors.connect('clicked', self.invert_colors)
+
+ self.show_all()
+
+ def rotate_left(self, widget, activity):
+ activity.area.rotate_left(activity.area)
+
+ def rotate_right(self, widget, activity):
+ activity.area.rotate_right(activity.area)
+
+ def mirror_horizontal(self, widget):
+ self._activity.area.mirror(widget)
+
+ def mirror_vertical(self, widget):
+ self._activity.area.mirror(widget, horizontal=False)
+
+ def resize(self, spinButton, tool, activity):
+ if activity.area.tool['name'] == 'marquee-rectangular' and \
+ activity.area.selmove:
+ if tool == "object-height":
+ self.height_percent = spinButton.get_value_as_int() / 100.
+ activity.area.d.resizeSelection(activity.area,
+ self.width_percent, self.height_percent)
+ elif tool == "object-width":
+ self.width_percent = spinButton.get_value_as_int() / 100.
+ activity.area.d.resizeSelection(activity.area,
+ self.width_percent, self.height_percent)
+
+ def _create_spinButton(self, widget, tool, activity):
+ """Set palette for a tool - width or height
+
+ @param self -- gtk.Toolbar
+ @param widget - the widget which Palette will be set,
+ a ToolButton object
+ @param tool
+ @param activity
+ """
+ logger.debug('setting a spinButton for %s', tool)
+
+ spin = gtk.SpinButton()
+ spin.show()
+
+ # This is where we set restrictions for Resizing:
+ # Initial value, minimum value, maximum value, step
+ initial = float(100)
+ adj = gtk.Adjustment(initial, 10.0, 500.0, 1.0)
+ spin.set_adjustment(adj)
+ spin.set_numeric(True)
+
+ spin.set_sensitive(self._activity.area.is_selected())
+
+ spin.connect('value-changed', self.resize, tool, activity)
+
+ return spin
+
+# def insertImage(self, widget, activity):
+# try:
+# chooser = ObjectChooser(_('Choose image'),
+# self._activity, gtk.DIALOG_MODAL |
+# gtk.DIALOG_DESTROY_WITH_PARENT, what_filter='Image')
+# except:
+# chooser = ObjectChooser(_('Choose image'),
+# self._activity, gtk.DIALOG_MODAL |
+# gtk.DIALOG_DESTROY_WITH_PARENT)
+# try:
+# result = chooser.run()
+# if result == gtk.RESPONSE_ACCEPT:
+# logging.debug('ObjectChooser: %r',
+# chooser.get_selected_object())
+# jobject = chooser.get_selected_object()
+# if jobject and jobject.file_path:
+# self._activity.area.loadImage(jobject.file_path)
+# finally:
+# chooser.destroy()
+# del chooser
+
+ def _on_signal_undo_cb(self, widget, data=None):
+ self._verify_sensitive_buttons()
+
+ def _on_signal_redo_cb(self, widget, data=None):
+ self._verify_sensitive_buttons()
+
+ def _on_signal_select_cb(self, widget, data=None):
+ self._verify_sensitive_buttons()
+
+ def _on_signal_action_saved_cb(self, widget, data=None):
+ self._verify_sensitive_buttons()
+
+ def _verify_sensitive_buttons(self):
+ is_selected = self._activity.area.is_selected()
+ self.width_spinButton.set_sensitive(is_selected)
+ self.height_spinButton.set_sensitive(is_selected)
+
+ if not is_selected:
+ self.width_spinButton.set_value(100)
+ self.height_spinButton.set_value(100)
+ self.width_percent = 1.
+ self.height_percent = 1.
+
+ ##Make the colors be in grayscale
+ def grayscale(self, widget):
+ self._activity.area.grayscale(widget)
+
+ ##Like the brush, but change it color when painting
+ def rainbow(self, widget):
+ self.properties['name'] = self._EFFECT_RAINBOW_NAME
+
+ def invert_colors(self, widget):
+ self._activity.area.invert_colors(widget)
+
+
+class PresentToolbarBox(ToolbarBox):
+
+ __gsignals__ = {'new-slide': (gobject.SIGNAL_RUN_LAST,
gobject.TYPE_NONE,
tuple())}
@@ -132,19 +341,18 @@ class PresentToolbarBox(ToolbarBox):
lambda w: self.emit('new-slide'))
append_slide.show()
self.toolbar.insert(append_slide, -1)
- insert_image_button = ToolButton('insert-picture')
- insert_image_button.props.tooltip = 'Load a picture'
- insert_image_button.connect('clicked',
- lambda w: self.emit('insert-picture'))
- insert_image_button.show()
- self.toolbar.insert(insert_image_button, -1)
separator = gtk.SeparatorToolItem()
separator.set_expand(True)
separator.set_draw(False)
separator.show()
self.toolbar.insert(separator, -1)
- self.image_options = ImageOptions()
- self.toolbar.insert(self.image_options, -1)
+ self.image_toolbar = ImageToolbar()
+ image_button = ToolbarButton(icon_name='image-mode',
+ page=self.image_toolbar)
+ image_button.show()
+ self.toolbar.insert(image_button, -1)
+ #self.image_options = ImageOptions()
+ #self.toolbar.insert(self.image_options, -1)
separator = gtk.SeparatorToolItem()
separator.set_expand(True)