From 0846929120274b02be668e21fc19228f49c2b0ae Mon Sep 17 00:00:00 2001 From: flavio Date: Wed, 07 Mar 2012 22:55:01 +0000 Subject: Correcciones --- diff --git a/GnomeJAMediaImagenes.py b/GnomeJAMediaImagenes.py index 2307136..e7778ea 100644 --- a/GnomeJAMediaImagenes.py +++ b/GnomeJAMediaImagenes.py @@ -18,19 +18,21 @@ # JAMediaImagenes.py por: # Flavio Danesse # CeibalJAM! - Uruguay -# Basado en código de: Keshav Sharma & Vaibhav Sharma -import time, os, gtk, pygtk, gobject, gst, pygst, sys, time +import time, os, gtk, pygtk, gobject, gst, pygst, sys, time, commands from gettext import gettext as _ -from toolbar import ViewToolbar, EditToolbar, IPButton +from toolbar import ViewToolbar, EditToolbar from ImageProcess import ImageProcessor +DIRECTORIO_BASE= os.path.dirname(__file__) +ICONOS= os.path.join(DIRECTORIO_BASE, "icons/") + class JAMediaImagenes(gtk.Window): def __init__(self): gtk.Window.__init__(self) - #self.set_title(_("Luna")) - #self.set_icon_from_file(os.path.join(MG.ICONOS,"luna-ico.png")) + self.set_title("JAMedia Imágenes") + self.set_icon_from_file(os.path.join(ICONOS,"JAMediaImagenes.png")) self.set_resizable(True) self.set_size_request( 800, 600 ) self.set_position(gtk.WIN_POS_CENTER) @@ -49,32 +51,31 @@ class JAMediaImagenes(gtk.Window): sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) sw.add_with_viewport(self.view) - self.view_toolbar = ViewToolbar() - self.view_toolbar.connect('abrir_archivo', self.abrir_archivo) - self.view_toolbar.connect('guardar_archivo', self.guardar_archivo) - self.view_toolbar.connect('zoom_in', self.zoom_in) - self.view_toolbar.connect('zoom_out', self.zoom_out) - self.view_toolbar.connect('zoom_to_fit', self.zoom_tofit) - self.view_toolbar.connect('rotate_clockwise', self.rotate_anticlockwise) - self.view_toolbar.connect('rotate_anticlockwise', self.rotate_clockwise) - self.view_toolbar.connect('undo', self.undo) - self.view_toolbar.connect('redo', self.redo) - self.view_toolbar.connect('cam_cb',self.fotografiar) - self.view_toolbar.show() - self.edit_toolbar = EditToolbar() - self.edit_toolbar.connect('grey', self.view.grey) - self.edit_toolbar.connect('blur', self.view.image_Blur) - self.edit_toolbar.connect('transpose', self.view.image_Transpose) - self.edit_toolbar.connect('offset', self.view.image_Offset) - self.edit_toolbar.connect('contour', self.view.image_Contour) - self.edit_toolbar.connect('finedges', self.view.image_Finedges) - self.edit_toolbar.connect('solarize', self.view.image_Solarize) - self.edit_toolbar.connect('invert', self.view.image_Invert) - self.edit_toolbar.connect('ambross', self.view.image_Ambross) - self.edit_toolbar.connect('sharpen', self.view.image_Sharpen) - self.edit_toolbar.show() - - for toolbar in [self.view_toolbar, self.edit_toolbar]: + view_toolbar = ViewToolbar() + view_toolbar.connect('abrir_archivo', self.abrir_archivo) + view_toolbar.connect('guardar_archivo', self.guardar_archivo) + view_toolbar.connect('zoom_in', self.zoom_in) + view_toolbar.connect('zoom_out', self.zoom_out) + view_toolbar.connect('zoom_to_fit', self.zoom_tofit) + view_toolbar.connect('rotate_clockwise', self.rotate_anticlockwise) + view_toolbar.connect('rotate_anticlockwise', self.rotate_clockwise) + view_toolbar.connect('undo', self.undo) + view_toolbar.connect('redo', self.redo) + view_toolbar.connect('cam_cb',self.fotografiar) + view_toolbar.show() + edit_toolbar = EditToolbar() + edit_toolbar.connect('grey', self.view.grey) + edit_toolbar.connect('blur', self.view.image_Blur) + edit_toolbar.connect('transpose', self.view.image_Transpose) + edit_toolbar.connect('contour', self.view.image_Contour) + edit_toolbar.connect('finedges', self.view.image_Finedges) + edit_toolbar.connect('solarize', self.view.image_Solarize) + edit_toolbar.connect('invert', self.view.image_Invert) + edit_toolbar.connect('ambross', self.view.image_Ambross) + edit_toolbar.connect('sharpen', self.view.image_Sharpen) + edit_toolbar.show() + + for toolbar in [view_toolbar, edit_toolbar]: caja.pack_start(toolbar, False, False, 0) caja.pack_start(sw, True, True, 0) @@ -86,13 +87,15 @@ class JAMediaImagenes(gtk.Window): return False def fotografiar(self, button): - tempfile = "/tmp/photo.jpg" - photocmd = "v4l2src ! ffmpegcolorspace ! jpegenc ! filesink location=%s" % (tempfile) - pipeline = gst.parse_launch (photocmd) - pipeline.set_state(gst.STATE_PLAYING) - time.sleep(3) - pipeline.set_state(gst.STATE_NULL) - self.view.set_pixbuf( gtk.gdk.pixbuf_new_from_file(tempfile) ) + archivo = "/tmp/photo.jpg" + #photocmd = "v4l2src ! ffmpegcolorspace ! jpegenc ! filesink location=%s" % (archivo) + #pipeline = gst.parse_launch (photocmd) + #pipeline.set_state(gst.STATE_PLAYING) + #time.sleep(3) + #pipeline.set_state(gst.STATE_NULL) + comando= 'gst-launch-0.10 v4l2src ! ffmpegcolorspace ! pngenc ! filesink location=%s' % (archivo) + commands.getoutput(comando) + self.view.set_pixbuf( gtk.gdk.pixbuf_new_from_file(archivo) ) def undo(self, button): self.view.image_undo() @@ -120,13 +123,16 @@ class JAMediaImagenes(gtk.Window): selector.connect('abrir_archivo', self.load) def guardar_archivo(self, button): - #selector = Selector_de_Archivos(self) - #selector.connect('abrir_archivo', self.load) - self.view.guardar_archivo() + if not self.view.pixbufs_stack: return + selector = Selector_de_Directorio(self) + selector.connect('guardar_archivo', self.save) def load(self, widget= None, senial= None): self.view.set_pixbuf( gtk.gdk.pixbuf_new_from_file(senial) ) + def save(self, widget= None, senial= None): + self.view.guardar_archivo(senial) + class Selector_de_Archivos (gtk.FileChooserDialog): __gsignals__ = {'abrir_archivo': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([gobject.TYPE_STRING,]))} def __init__(self, ventana): @@ -158,6 +164,7 @@ class Selector_de_Archivos (gtk.FileChooserDialog): def abrir(self, widget): archivo = self.get_filename() + if not archivo: return self.salir(None) if os.path.exists(archivo): if os.path.isfile(archivo): self.emit('abrir_archivo', archivo) @@ -166,6 +173,43 @@ class Selector_de_Archivos (gtk.FileChooserDialog): def salir(self, widget): self.destroy() +class Selector_de_Directorio (gtk.FileChooserDialog): + __gsignals__ = {'guardar_archivo': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([gobject.TYPE_STRING,]))} + def __init__(self, ventana): + gtk.FileChooserDialog.__init__(self, title= "Guardar Imagen", parent=ventana, + action=gtk.FILE_CHOOSER_ACTION_SAVE) + self.set_default_size( 640, 480 ) + self.resize( 640, 480 ) + + # extras + hbox = gtk.HBox() + boton_abrir = gtk.Button("Guardar") + boton_salir = gtk.Button("Salir") + hbox.pack_end(boton_salir, True, True, 5) + hbox.pack_end(boton_abrir, True, True, 5) + self.set_extra_widget(hbox) + + filter = gtk.FileFilter() + filter.set_name("Imagenes") + filter.add_mime_type("image/*") + self.add_filter(filter) + + # Callbacks + boton_salir.connect("clicked", self.salir) + boton_abrir.connect("clicked",self.guardar) + + self.show_all() + self.resize( 640, 480 ) + + def guardar(self, widget): + archivo = self.get_filename() + if not archivo: return self.salir(None) + self.emit('guardar_archivo', archivo) + self.salir(None) + + def salir(self, widget): + self.destroy() + if __name__=="__main__": JAMediaImagenes() diff --git a/ImageProcess.py b/ImageProcess.py index 042e7ac..e8c2930 100644 --- a/ImageProcess.py +++ b/ImageProcess.py @@ -28,12 +28,10 @@ else: import Image,ImageEnhance,ImageFont,ImageFilter,ImageOps, ImageDraw def pixbuftoImage(pb): - print "*** pixbuftoImage:",pb width,height = pb.get_width(),pb.get_height() return Image.fromstring("RGB",(width,height),pb.get_pixels() ) def imagetopixbuf(im): - print "*** imagetopixbuf:", im file1 = StringIO.StringIO() im.save(file1, "ppm") contents = file1.getvalue() @@ -73,10 +71,21 @@ class ImageProcessor(gtk.DrawingArea): self.window.process_updates( True ) def add_pixbuf_stack(self, pixbuf): - self.pixbufs_stack.append(pixbuf) - while len(self.pixbufs_stack) > 10: - self.pixbufs_stack.remove(self.pixbufs_stack[0]) - self.temp_pixbuf_index = self.pixbufs_stack.index(pixbuf) + if self.pixbufs_stack: + if self.temp_pixbuf_index != self.pixbufs_stack.index(self.pixbufs_stack[-1]): + self.pixbufs_stack = self.pixbufs_stack[0:self.temp_pixbuf_index+1] + self.pixbufs_stack.append(pixbuf) + self.temp_pixbuf_index = self.pixbufs_stack.index(pixbuf) + else: + self.pixbufs_stack.append(pixbuf) + while len(self.pixbufs_stack) > 10: + self.pixbufs_stack.remove(self.pixbufs_stack[0]) + self.temp_pixbuf_index = self.pixbufs_stack.index(pixbuf) + else: + self.pixbufs_stack.append(pixbuf) + while len(self.pixbufs_stack) > 10: + self.pixbufs_stack.remove(self.pixbufs_stack[0]) + self.temp_pixbuf_index = self.pixbufs_stack.index(pixbuf) def do_expose_event(self, event): ctx = self.window.cairo_create() @@ -115,6 +124,7 @@ class ImageProcessor(gtk.DrawingArea): else: rotacion = gtk.gdk.PIXBUF_ROTATE_CLOCKWISE pixbuf = self.temp_pixbuf.copy().rotate_simple(rotacion) + self.tamanio = (int(pixbuf.get_width() * self.zoom), int(pixbuf.get_height() * self.zoom)) self.add_pixbuf_stack(pixbuf) self.window.invalidate_rect(self.get_allocation(), True) self.window.process_updates(True) @@ -140,11 +150,15 @@ class ImageProcessor(gtk.DrawingArea): def image_undo(self): if self.pixbufs_stack and self.temp_pixbuf_index > 0: self.temp_pixbuf_index -= 1 + pixbuf = self.pixbufs_stack[self.temp_pixbuf_index] + self.tamanio = (int(pixbuf.get_width() * self.zoom), int(pixbuf.get_height() * self.zoom)) self.window.invalidate_rect(self.get_allocation(), True) self.window.process_updates(True) def image_redo(self): if self.pixbufs_stack and self.temp_pixbuf_index < len(self.pixbufs_stack)-1: self.temp_pixbuf_index += 1 + pixbuf = self.pixbufs_stack[self.temp_pixbuf_index] + self.tamanio = (int(pixbuf.get_width() * self.zoom), int(pixbuf.get_height() * self.zoom)) self.window.invalidate_rect(self.get_allocation(), True) self.window.process_updates(True) @@ -166,16 +180,6 @@ class ImageProcessor(gtk.DrawingArea): self.window.invalidate_rect(self.get_allocation(), True) self.window.process_updates(True) - def image_Offset(self,value): - if not self.pixbufs_stack: return - im = pixbuftoImage(self.temp_pixbuf.copy()) - w,h=im.size - im = im.offset(w/2,h/2) - pixbuf = imagetopixbuf(im) - self.add_pixbuf_stack(pixbuf) - self.window.invalidate_rect(self.get_allocation(), True) - self.window.process_updates(True) - def image_Contour(self,value): if not self.pixbufs_stack: return im = pixbuftoImage(self.temp_pixbuf.copy()) @@ -230,7 +234,8 @@ class ImageProcessor(gtk.DrawingArea): self.window.invalidate_rect(self.get_allocation(), True) self.window.process_updates(True) - def guardar_archivo(self): - if not self.pixbufs_stack: return - self.pixbufs_stack[self.temp_pixbuf_index].save("prueba", "png", {"quality":"100"}) + def guardar_archivo(self, path): + if not self.pixbufs_stack or not path: return + path = "%s%s" % (path, ".png") + self.pixbufs_stack[self.temp_pixbuf_index].save(path, "png") diff --git a/icons/JAMediaImagenes.png b/icons/JAMediaImagenes.png new file mode 100644 index 0000000..cc8097e --- /dev/null +++ b/icons/JAMediaImagenes.png Binary files differ diff --git a/icons/acercar.png b/icons/acercar.png new file mode 100644 index 0000000..ed51480 --- /dev/null +++ b/icons/acercar.png Binary files differ diff --git a/icons/alejar.png b/icons/alejar.png new file mode 100644 index 0000000..8045380 --- /dev/null +++ b/icons/alejar.png Binary files differ diff --git a/icons/ambross.png b/icons/ambross.png new file mode 100644 index 0000000..83399b9 --- /dev/null +++ b/icons/ambross.png Binary files differ diff --git a/icons/blur.png b/icons/blur.png index 8333c89..697cddf 100644 --- a/icons/blur.png +++ b/icons/blur.png Binary files differ diff --git a/icons/descargas.png b/icons/descargas.png new file mode 100644 index 0000000..9e27d68 --- /dev/null +++ b/icons/descargas.png Binary files differ diff --git a/icons/deshacer.png b/icons/deshacer.png new file mode 100644 index 0000000..c6a281a --- /dev/null +++ b/icons/deshacer.png Binary files differ diff --git a/icons/embross.png b/icons/embross.png deleted file mode 100644 index f0255c9..0000000 --- a/icons/embross.png +++ /dev/null Binary files differ diff --git a/icons/escalaoriginal.png b/icons/escalaoriginal.png new file mode 100644 index 0000000..99ad070 --- /dev/null +++ b/icons/escalaoriginal.png Binary files differ diff --git a/icons/finedges.png b/icons/finedges.png index a660e7a..e3df5f9 100644 --- a/icons/finedges.png +++ b/icons/finedges.png Binary files differ diff --git a/icons/grey.png b/icons/grey.png index 7a99288..f1164d9 100644 --- a/icons/grey.png +++ b/icons/grey.png Binary files differ diff --git a/icons/mirror.png b/icons/mirror.png deleted file mode 100644 index fc616a5..0000000 --- a/icons/mirror.png +++ /dev/null Binary files differ diff --git a/icons/offset.png b/icons/offset.png deleted file mode 100644 index ab3896a..0000000 --- a/icons/offset.png +++ /dev/null Binary files differ diff --git a/icons/original.png b/icons/original.png index 546bd90..9a39ea6 100644 --- a/icons/original.png +++ b/icons/original.png Binary files differ diff --git a/icons/rotar.png b/icons/rotar.png new file mode 100644 index 0000000..9fcda5f --- /dev/null +++ b/icons/rotar.png Binary files differ diff --git a/icons/rotate_anticlockwise.svg b/icons/rotate_anticlockwise.svg deleted file mode 100644 index 55a9c61..0000000 --- a/icons/rotate_anticlockwise.svg +++ /dev/null @@ -1,71 +0,0 @@ - - -image/svg+xml - - - - - - - - \ No newline at end of file diff --git a/icons/rotate_clockwise.svg b/icons/rotate_clockwise.svg deleted file mode 100644 index 474f6f0..0000000 --- a/icons/rotate_clockwise.svg +++ /dev/null @@ -1,71 +0,0 @@ - - -image/svg+xml - - - - - - - - \ No newline at end of file diff --git a/icons/sharpen.png b/icons/sharpen.png index 2c4228f..45b1a38 100644 --- a/icons/sharpen.png +++ b/icons/sharpen.png Binary files differ diff --git a/icons/solarize.png b/icons/solarize.png index 1c67ada..a650efa 100644 --- a/icons/solarize.png +++ b/icons/solarize.png Binary files differ diff --git a/toolbar.py b/toolbar.py index e23ba0e..018e18b 100644 --- a/toolbar.py +++ b/toolbar.py @@ -18,7 +18,6 @@ # toolbar.py por: # Flavio Danesse # CeibalJAM! - Uruguay -# Basado en código de: Keshav Sharma & Vaibhav Sharma import gtk, pygtk, gobject, os from gettext import gettext as _ @@ -42,89 +41,141 @@ class ViewToolbar(gtk.Toolbar): def __init__(self): gtk.Toolbar.__init__(self) - open_button = IPButtonStock(gtk.STOCK_OPEN) + separator = gtk.SeparatorToolItem() + separator.props.draw = True + separator.set_size_request(0, -1) + separator.set_expand(False) + self.insert(separator, -1) + + open_button = gtk.ToolButton() + imagen = gtk.Image() + pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(os.path.join(ICONOS,'descargas.png'), 32, 32) + pixbuf = pixbuf.rotate_simple(gtk.gdk.PIXBUF_ROTATE_COUNTERCLOCKWISE).rotate_simple(gtk.gdk.PIXBUF_ROTATE_COUNTERCLOCKWISE) + imagen.set_from_pixbuf(pixbuf) + open_button.set_icon_widget(imagen) + imagen.show() open_button.connect('clicked', self.abrir_archivo) self.insert(open_button, -1) open_button.show() - save_button = IPButtonStock(gtk.STOCK_SAVE) + save_button = gtk.ToolButton() + imagen = gtk.Image() + pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(os.path.join(ICONOS,'descargas.png'), 32, 32) + imagen.set_from_pixbuf(pixbuf) + save_button.set_icon_widget(imagen) + imagen.show() 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.props.draw = True separator.set_size_request(0, -1) - separator.set_expand(True) + separator.set_expand(False) self.insert(separator, -1) - zoom_out_button = IPButtonStock(gtk.STOCK_ZOOM_OUT) + zoom_out_button = gtk.ToolButton() + imagen = gtk.Image() + pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(os.path.join(ICONOS,'alejar.png'), 32, 32) + imagen.set_from_pixbuf(pixbuf) + zoom_out_button.set_icon_widget(imagen) + imagen.show() 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 = gtk.ToolButton() + imagen = gtk.Image() + pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(os.path.join(ICONOS,'acercar.png'), 32, 32) + imagen.set_from_pixbuf(pixbuf) + zoom_in_button.set_icon_widget(imagen) + imagen.show() 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 = gtk.ToolButton() + imagen = gtk.Image() + pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(os.path.join(ICONOS,'escalaoriginal.png'), 32, 32) + imagen.set_from_pixbuf(pixbuf) + zoom_tofit_button.set_icon_widget(imagen) + imagen.show() 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.props.draw = True separator.set_size_request(0, -1) - separator.set_expand(True) + separator.set_expand(False) self.insert(separator, -1) - rotate_anticlockwise_button = IPButton('rotate_anticlockwise.svg') + rotate_anticlockwise_button = gtk.ToolButton() + imagen = gtk.Image() + pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(os.path.join(ICONOS,'rotar.png'), 32, 32) + imagen.set_from_pixbuf(pixbuf) + rotate_anticlockwise_button.set_icon_widget(imagen) + imagen.show() 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 = gtk.ToolButton() + imagen = gtk.Image() + pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(os.path.join(ICONOS,'rotar.png'), 32, 32).flip(True) + imagen.set_from_pixbuf(pixbuf) + rotate_clockwise_button.set_icon_widget(imagen) + imagen.show() 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.props.draw = True separator.set_size_request(0, -1) - separator.set_expand(True) + separator.set_expand(False) self.insert(separator, -1) - undo_button = IPButtonStock(gtk.STOCK_UNDO) + undo_button = gtk.ToolButton() + imagen = gtk.Image() + pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(os.path.join(ICONOS,'deshacer.png'), 32, 32) + imagen.set_from_pixbuf(pixbuf) + undo_button.set_icon_widget(imagen) + imagen.show() undo_button.connect('clicked', self.undo_cb) self.insert(undo_button, -1) undo_button.show() - redo_button = IPButtonStock(gtk.STOCK_REDO) + redo_button = gtk.ToolButton() + imagen = gtk.Image() + pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(os.path.join(ICONOS,'deshacer.png'), 32, 32).flip(True) + imagen.set_from_pixbuf(pixbuf) + redo_button.set_icon_widget(imagen) + imagen.show() redo_button.connect('clicked', self.redo_cb) self.insert(redo_button, -1) redo_button.show() separator = gtk.SeparatorToolItem() - separator.props.draw = False + separator.props.draw = True separator.set_size_request(0, -1) - separator.set_expand(True) + separator.set_expand(False) self.insert(separator, -1) - cam_button = IPButton('foto.png') + cam_button = gtk.ToolButton() + imagen = gtk.Image() + pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(os.path.join(ICONOS,'foto.png'), 32, 32) + imagen.set_from_pixbuf(pixbuf) + cam_button.set_icon_widget(imagen) + imagen.show() cam_button.connect('clicked', self.cam_cb) self.insert(cam_button, -1) cam_button.show() separator = gtk.SeparatorToolItem() - separator.props.draw = False + separator.props.draw = True separator.set_size_request(0, -1) - separator.set_expand(True) + separator.set_expand(False) self.insert(separator, -1) def abrir_archivo(self, button): @@ -153,7 +204,6 @@ class EditToolbar(gtk.Toolbar): __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,([])), @@ -168,55 +218,108 @@ class EditToolbar(gtk.Toolbar): 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() + + separator = gtk.SeparatorToolItem() + separator.props.draw = True + separator.set_size_request(0, -1) + separator.set_expand(False) + self.insert(separator, -1) + + grey = gtk.ToolButton() + imagen = gtk.Image() + pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(os.path.join(ICONOS,'grey.png'), 32, 32) + imagen.set_from_pixbuf(pixbuf) + grey.set_icon_widget(imagen) + imagen.show() + grey.connect('clicked', self.grey_cb) + self.insert(grey, -1) + grey.show() - self.offset = IPButton('offset.png') - self.offset.connect('clicked', self.offset_cb) - self.insert(self.offset, -1) - self.offset.show() + blur = gtk.ToolButton() + imagen = gtk.Image() + pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(os.path.join(ICONOS,'blur.png'), 32, 32) + imagen.set_from_pixbuf(pixbuf) + blur.set_icon_widget(imagen) + imagen.show() + blur.connect('clicked', self.blur_cb) + self.insert(blur, -1) + blur.show() - self.contour = IPButton('contour.png') - self.contour.connect('clicked', self.contour_cb) - self.insert(self.contour, -1) - self.contour.show() + button_espejar = gtk.ToolButton() + imagen = gtk.Image() + pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(os.path.join(ICONOS,'original.png'), 32, 32).flip(True) + imagen.set_from_pixbuf(pixbuf) + button_espejar.set_icon_widget(imagen) + imagen.show() + button_espejar.connect('clicked', self.transpose_cb) + self.insert(button_espejar, -1) + button_espejar.show() + + contour = gtk.ToolButton() + imagen = gtk.Image() + pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(os.path.join(ICONOS,'contour.png'), 32, 32) + imagen.set_from_pixbuf(pixbuf) + contour.set_icon_widget(imagen) + imagen.show() + contour.connect('clicked', self.contour_cb) + self.insert(contour, -1) + contour.show() - self.finedges = IPButton('finedges.png') - self.finedges.connect('clicked', self.finedges_cb) - self.insert(self.finedges, -1) - self.finedges.show() + finedges = gtk.ToolButton() + imagen = gtk.Image() + pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(os.path.join(ICONOS,'finedges.png'), 32, 32) + imagen.set_from_pixbuf(pixbuf) + finedges.set_icon_widget(imagen) + imagen.show() + finedges.connect('clicked', self.finedges_cb) + self.insert(finedges, -1) + finedges.show() - self.solarize = IPButton('solarize.png') - self.solarize.connect('clicked', self.solarize_cb) - self.insert(self.solarize, -1) - self.solarize.show() + solarize = gtk.ToolButton() + imagen = gtk.Image() + pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(os.path.join(ICONOS,'solarize.png'), 32, 32) + imagen.set_from_pixbuf(pixbuf) + solarize.set_icon_widget(imagen) + imagen.show() + solarize.connect('clicked', self.solarize_cb) + self.insert(solarize, -1) + solarize.show() - self.invert = IPButton('invert.png') - self.invert.connect('clicked', self.invert_cb) - self.insert(self.invert, -1) - self.invert.show() + invert = gtk.ToolButton() + imagen = gtk.Image() + pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(os.path.join(ICONOS,'invert.png'), 32, 32) + imagen.set_from_pixbuf(pixbuf) + invert.set_icon_widget(imagen) + imagen.show() + invert.connect('clicked', self.invert_cb) + self.insert(invert, -1) + invert.show() - self.ambross = IPButton('embross.png') - self.ambross.connect('clicked', self.ambross_cb) - self.insert(self.ambross, -1) - self.ambross.show() + ambross = gtk.ToolButton() + imagen = gtk.Image() + pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(os.path.join(ICONOS,'ambross.png'), 32, 32) + imagen.set_from_pixbuf(pixbuf) + ambross.set_icon_widget(imagen) + imagen.show() + ambross.connect('clicked', self.ambross_cb) + self.insert(ambross, -1) + ambross.show() - self.sharpen = IPButton('sharpen.png') - self.sharpen.connect('clicked', self.sharpen_cb) - self.insert(self.sharpen, -1) - self.sharpen.show() + sharpen = gtk.ToolButton() + imagen = gtk.Image() + pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(os.path.join(ICONOS,'sharpen.png'), 32, 32) + imagen.set_from_pixbuf(pixbuf) + sharpen.set_icon_widget(imagen) + imagen.show() + sharpen.connect('clicked', self.sharpen_cb) + self.insert(sharpen, -1) + sharpen.show() + + separator = gtk.SeparatorToolItem() + separator.props.draw = True + separator.set_size_request(0, -1) + separator.set_expand(False) + self.insert(separator, -1) def grey_cb(self, button): self.emit('grey') @@ -224,8 +327,6 @@ class EditToolbar(gtk.Toolbar): 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): @@ -239,9 +340,10 @@ class EditToolbar(gtk.Toolbar): def sharpen_cb(self, button): self.emit('sharpen') -class IPButton(gtk.ToggleToolButton): +''' +class IPButton(gtk.ToolButton): def __init__(self, archivo): - gtk.ToggleToolButton.__init__(self) + gtk.ToolButton.__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) @@ -249,12 +351,12 @@ class IPButton(gtk.ToggleToolButton): imagen.show() self.show() -class IPButtonStock(gtk.ToggleToolButton): +class IPButtonStock(gtk.ToolButton): def __init__(self, nombre): - gtk.ToggleToolButton.__init__(self) + gtk.ToolButton.__init__(self) imagen = gtk.Image() imagen.set_from_stock(nombre, gtk.ICON_SIZE_BUTTON) self.set_icon_widget(imagen) imagen.show() - self.show() + self.show()''' -- cgit v0.9.1