Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/GnomeJAMediaImagenes.py
diff options
context:
space:
mode:
Diffstat (limited to 'GnomeJAMediaImagenes.py')
-rw-r--r--GnomeJAMediaImagenes.py126
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()