diff options
Diffstat (limited to 'GnomeJAMediaImagenes.py')
-rw-r--r-- | GnomeJAMediaImagenes.py | 126 |
1 files changed, 85 insertions, 41 deletions
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 <fdanesse@gmail.com> # CeibalJAM! - Uruguay -# Basado en código de: Keshav Sharma <keshav7890@gmail.com> & 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() |