Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/toolbar.py
diff options
context:
space:
mode:
Diffstat (limited to 'toolbar.py')
-rw-r--r--toolbar.py260
1 files changed, 260 insertions, 0 deletions
diff --git a/toolbar.py b/toolbar.py
new file mode 100644
index 0000000..e23ba0e
--- /dev/null
+++ b/toolbar.py
@@ -0,0 +1,260 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# 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 2 of the License, or
+# (at your option) any later version.
+
+# 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+
+# toolbar.py por:
+# Flavio Danesse <fdanesse@gmail.com>
+# CeibalJAM! - Uruguay
+# Basado en código de: Keshav Sharma <keshav7890@gmail.com> & Vaibhav Sharma
+
+import gtk, pygtk, gobject, os
+from gettext import gettext as _
+
+DIRECTORIO_BASE= os.path.dirname(__file__)
+ICONOS= os.path.join(DIRECTORIO_BASE, "icons/")
+
+class ViewToolbar(gtk.Toolbar):
+ __gtype_name__ = 'ViewToolbar'
+ __gsignals__ = {'abrir_archivo':(gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([])),
+ 'guardar_archivo':(gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([])),
+ 'zoom_in': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([])),
+ 'zoom_out': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([])),
+ 'zoom_to_fit': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([])),
+ 'rotate_clockwise': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([])),
+ 'rotate_anticlockwise': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([])),
+ 'undo': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([])),
+ 'redo': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([])),
+ 'cam_cb': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,([]))}
+
+ def __init__(self):
+ gtk.Toolbar.__init__(self)
+
+ open_button = IPButtonStock(gtk.STOCK_OPEN)
+ open_button.connect('clicked', self.abrir_archivo)
+ self.insert(open_button, -1)
+ open_button.show()
+
+ save_button = IPButtonStock(gtk.STOCK_SAVE)
+ save_button.connect('clicked', self.guardar_archivo)
+ self.insert(save_button, -1)
+ save_button.show()
+
+ save_as_button = IPButtonStock(gtk.STOCK_SAVE_AS)
+ #self._zoom_out_button.connect('clicked', self.zoom_out_cb)
+ self.insert(save_as_button, -1)
+ save_as_button.show()
+
+ separator = gtk.SeparatorToolItem()
+ separator.props.draw = False
+ separator.set_size_request(0, -1)
+ separator.set_expand(True)
+ self.insert(separator, -1)
+
+ zoom_out_button = IPButtonStock(gtk.STOCK_ZOOM_OUT)
+ zoom_out_button.connect('clicked', self.zoom_out_cb)
+ self.insert(zoom_out_button, -1)
+ zoom_out_button.show()
+
+ zoom_in_button = IPButtonStock(gtk.STOCK_ZOOM_IN)
+ zoom_in_button.connect('clicked', self.zoom_in_cb)
+ self.insert(zoom_in_button, -1)
+ zoom_in_button.show()
+
+ zoom_tofit_button = IPButtonStock(gtk.STOCK_ZOOM_FIT)
+ zoom_tofit_button.connect('clicked', self.zoom_to_fit_cb)
+ self.insert(zoom_tofit_button, -1)
+ zoom_tofit_button.show()
+
+ separator = gtk.SeparatorToolItem()
+ separator.props.draw = False
+ separator.set_size_request(0, -1)
+ separator.set_expand(True)
+ self.insert(separator, -1)
+
+ rotate_anticlockwise_button = IPButton('rotate_anticlockwise.svg')
+ rotate_anticlockwise_button.connect('clicked', self.rotate_anticlockwise_cb)
+ self.insert(rotate_anticlockwise_button, -1)
+ rotate_anticlockwise_button.show()
+
+ rotate_clockwise_button = IPButton('rotate_clockwise.svg')
+ rotate_clockwise_button.connect('clicked', self.rotate_clockwise_cb)
+ self.insert(rotate_clockwise_button, -1)
+ rotate_clockwise_button.show()
+
+ separator = gtk.SeparatorToolItem()
+ separator.props.draw = False
+ separator.set_size_request(0, -1)
+ separator.set_expand(True)
+ self.insert(separator, -1)
+
+ undo_button = IPButtonStock(gtk.STOCK_UNDO)
+ undo_button.connect('clicked', self.undo_cb)
+ self.insert(undo_button, -1)
+ undo_button.show()
+
+ redo_button = IPButtonStock(gtk.STOCK_REDO)
+ redo_button.connect('clicked', self.redo_cb)
+ self.insert(redo_button, -1)
+ redo_button.show()
+
+ separator = gtk.SeparatorToolItem()
+ separator.props.draw = False
+ separator.set_size_request(0, -1)
+ separator.set_expand(True)
+ self.insert(separator, -1)
+
+ cam_button = IPButton('foto.png')
+ cam_button.connect('clicked', self.cam_cb)
+ self.insert(cam_button, -1)
+ cam_button.show()
+
+ separator = gtk.SeparatorToolItem()
+ separator.props.draw = False
+ separator.set_size_request(0, -1)
+ separator.set_expand(True)
+ self.insert(separator, -1)
+
+ def abrir_archivo(self, button):
+ self.emit('abrir_archivo')
+ def guardar_archivo(self, button):
+ self.emit('guardar_archivo')
+ def zoom_in_cb(self, button):
+ self.emit('zoom_in')
+ def zoom_out_cb(self, button):
+ self.emit('zoom_out')
+ def zoom_to_fit_cb(self, button):
+ self.emit('zoom_to_fit')
+ def rotate_clockwise_cb(self, button):
+ self.emit('rotate_clockwise')
+ def rotate_anticlockwise_cb(self, button):
+ self.emit('rotate_anticlockwise')
+ def undo_cb(self, button):
+ self.emit('undo')
+ def redo_cb(self, button):
+ self.emit('redo')
+ def cam_cb(self, button):
+ self.emit('cam_cb')
+
+class EditToolbar(gtk.Toolbar):
+ __gtype_name__ = 'EditToolbar'
+ __gsignals__ = {'grey': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,([])),
+ 'blur': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([])),
+ 'transpose': (gobject.SIGNAL_RUN_FIRST,gobject.TYPE_NONE, ([])),
+ 'offset': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([])),
+ 'contour': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([])),
+ 'text': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,([])),
+ 'finedges': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,([])),
+ 'solarize': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([])),
+ 'invert': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,([])),
+ 'ambross': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,([])),
+ 'left_top': (gobject.SIGNAL_RUN_FIRST,gobject.TYPE_NONE,([])),
+ 'right_top': (gobject.SIGNAL_RUN_FIRST,gobject.TYPE_NONE,([])),
+ 'left_bottom': (gobject.SIGNAL_RUN_FIRST,gobject.TYPE_NONE,([])),
+ 'right_bottom': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,([])),
+ 'sharpen': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,([]))}
+
+ def __init__(self):
+ gtk.Toolbar.__init__(self)
+ self.grey = IPButton('grey.png')
+ self.grey.connect('clicked', self.grey_cb)
+ self.insert(self.grey, -1)
+ self.grey.show()
+
+ self.blur = IPButton('blur.png')
+ self.blur.connect('clicked', self.blur_cb)
+ self.insert(self.blur, -1)
+ self.blur.show()
+
+ self.transpose = IPButton('mirror.png')
+ self.transpose.connect('clicked', self.transpose_cb)
+ self.insert(self.transpose, -1)
+ self.transpose.show()
+
+ self.offset = IPButton('offset.png')
+ self.offset.connect('clicked', self.offset_cb)
+ self.insert(self.offset, -1)
+ self.offset.show()
+
+ self.contour = IPButton('contour.png')
+ self.contour.connect('clicked', self.contour_cb)
+ self.insert(self.contour, -1)
+ self.contour.show()
+
+ self.finedges = IPButton('finedges.png')
+ self.finedges.connect('clicked', self.finedges_cb)
+ self.insert(self.finedges, -1)
+ self.finedges.show()
+
+ self.solarize = IPButton('solarize.png')
+ self.solarize.connect('clicked', self.solarize_cb)
+ self.insert(self.solarize, -1)
+ self.solarize.show()
+
+ self.invert = IPButton('invert.png')
+ self.invert.connect('clicked', self.invert_cb)
+ self.insert(self.invert, -1)
+ self.invert.show()
+
+ self.ambross = IPButton('embross.png')
+ self.ambross.connect('clicked', self.ambross_cb)
+ self.insert(self.ambross, -1)
+ self.ambross.show()
+
+ self.sharpen = IPButton('sharpen.png')
+ self.sharpen.connect('clicked', self.sharpen_cb)
+ self.insert(self.sharpen, -1)
+ self.sharpen.show()
+
+ def grey_cb(self, button):
+ self.emit('grey')
+ def blur_cb(self, button):
+ self.emit('blur')
+ def transpose_cb(self, button):
+ self.emit('transpose')
+ def offset_cb(self, button):
+ self.emit('offset')
+ def contour_cb(self, button):
+ self.emit('contour')
+ def finedges_cb(self, button):
+ self.emit('finedges')
+ def solarize_cb(self, button):
+ self.emit('solarize')
+ def invert_cb(self, button):
+ self.emit('invert')
+ def ambross_cb(self, button):
+ self.emit('ambross')
+ def sharpen_cb(self, button):
+ self.emit('sharpen')
+
+class IPButton(gtk.ToggleToolButton):
+ def __init__(self, archivo):
+ gtk.ToggleToolButton.__init__(self)
+ imagen = gtk.Image()
+ pixbuf= gtk.gdk.pixbuf_new_from_file_at_size(os.path.join(ICONOS,archivo), 32, 32)
+ imagen.set_from_pixbuf(pixbuf)
+ self.set_icon_widget(imagen)
+ imagen.show()
+ self.show()
+
+class IPButtonStock(gtk.ToggleToolButton):
+ def __init__(self, nombre):
+ gtk.ToggleToolButton.__init__(self)
+ imagen = gtk.Image()
+ imagen.set_from_stock(nombre, gtk.ICON_SIZE_BUTTON)
+ self.set_icon_widget(imagen)
+ imagen.show()
+ self.show()
+