示例#1
0
    def initUI(self):
        fondo = ttk.Frame(self)

        if self.img.tipoRuta == Util.RUTA_LOCAL:
            iconoImg = Image.open(self.img.source)
        else:
            try:
                iconoImg = Image.open(
                    cStringIO.StringIO(urllib.urlopen(self.img.source).read()))
            except IOError as io:
                iconoImg = Image.open(
                    cStringIO.StringIO(
                        urllib.urlopen(Util.rutaImg_ImgNoEncontrada).read()))
                log.error(io)
#                 raise io

        iconoImg.thumbnail(
            (int(Util.getMnsjConf("TablaRutas", "altoImgPreVis")),
             int(Util.getMnsjConf("TablaRutas", "anchoImgPreVis"))),
            Image.ANTIALIAS)

        self.iconoPhotoImg = ImageTk.PhotoImage(iconoImg)
        ttk.Label(fondo, image=self.iconoPhotoImg).pack(expand=tk.TRUE,
                                                        fill=tk.BOTH)

        ttk.Button(fondo, text="Aceptar",
                   command=self.close).pack(anchor=tk.NE, pady=10, padx=20)

        fondo.pack(expand=tk.TRUE, fill=tk.BOTH)
    def __init__(self, imgsAfectadas, claseOrigen, claseDestino):
        self.imgsAfectadas = imgsAfectadas
        self.claseOrigen = claseOrigen
        self.claseDestino = claseDestino
        self.accionRealizada = False

        if not Valida.exitenciaClase(self.claseOrigen, Accion.dicClases):
            self.logger.error("Clase " + claseOrigen + " inexistente")
            raise Exception(
                Util.getMnsjIdioma('Accion', 'Error_Crear_Clase_Existente'))
        if not Valida.exitenciaClase(self.claseDestino, Accion.dicClases):
            self.logger.error("Clase " + claseDestino + " inexistente")
            raise Exception(
                Util.getMnsjIdioma('Accion', 'Error_Crear_Clase_Existente'))
        if not Valida.imagenesExistenteOnClase(self.imgsAfectadas,
                                               Accion.dicClases[claseOrigen]):
            self.logger.error(
                "Error imagenes incosistentes, no todas se encuentran en la clase origen: "
                + claseOrigen)
            raise Exception(
                Util.getMnsjIdioma('Accion', 'Error_Imagenes_Inconsistentes'))

        for img in imgsAfectadas:
            img.nomClaseCorrecto = claseOrigen

        self.removerImgs = EliminarImagen(imgsAfectadas)
        self.agregarImgs = AgregarImagen(imgsAfectadas)
    def initUI(self):
        fondo = ttk.Frame(self)
                
        if self.img.tipoRuta == Util.RUTA_LOCAL:        
            iconoImg = Image.open(self.img.source)
        else:
            try:
                iconoImg = Image.open(cStringIO.StringIO(urllib.urlopen(self.img.source).read()))
            except IOError as io:
                iconoImg = Image.open(cStringIO.StringIO(urllib.urlopen(Util.rutaImg_ImgNoEncontrada).read()))
                log.error(io)
#                 raise io
             
        iconoImg.thumbnail((
                int(Util.getMnsjConf("TablaRutas", "altoImgPreVis")),
                int(Util.getMnsjConf("TablaRutas", "anchoImgPreVis"))
                ), Image.ANTIALIAS)
        
        self.iconoPhotoImg = ImageTk.PhotoImage(iconoImg)
        ttk.Label(fondo, image = self.iconoPhotoImg).pack(expand = tk.TRUE,
                                                          fill = tk.BOTH)
        
        ttk.Button(fondo, 
                   text = "Aceptar",
                   command = self.close).pack(anchor = tk.NE, 
                                              pady = 10, 
                                              padx = 20)
        
        fondo.pack(expand = tk.TRUE, fill = tk.BOTH)
    def crearWidgetImg(self):

        iconoImg = self.crearIconoImagen()

        iconoImg.thumbnail(
            (int(Util.getMnsjConf("TablaRutas", "altoImgMuestra")),
             int(Util.getMnsjConf("TablaRutas", "anchoImgMuestra"))),
            Image.ANTIALIAS)

        self.iconoPhotoImg = ImageTk.PhotoImage(iconoImg)
        widgetImg = ttk.Label(self.tabla.frmScrollPane.interior,
                              image=self.iconoPhotoImg)

        return widgetImg
 def removerImagen(self, imagen):
     '''Remueve una imagen de la nomClaseCorrecto en la que se encuentra '''
     
     if imagen.nomClaseCorrecto is None:
         raise Exception(Util.getMnsjIdioma("Accion", "Error_Remover_None"))
     
     try:
         del self.dicClases[imagen.nomClaseCorrecto][imagen.__hash__()]
         logger.info("Imagen "+imagen.source+" removida de la clase "+imagen.nomClaseCorrecto)
     except KeyError:
         logger.error("Clase "+imagen.nomClaseCorrecto+" inexistente")
         raise Exception(Util.getMnsjConf('Accion', 'Error_Clase_Inexistente'))
     except Exception as e:
         raise e
 def efectuarAccion(self, ):
     logger.info("Eliminando la lcase: "+self.nomClase)
     ''' Crea una clase y la agrega a la lista de dicClases evitando que se repita '''
     if not self.accionRealizada:            
         if not Valida.exitenciaClase(self.nomClase, self.dicClases):
             logger.error('No se efectuo accion, La clase: '+self.nomClase+' no existe')
             raise Exception(Util.getMnsjIdioma('Accion', 'Error_Eliminar_Clase_Inex'))
         
         del self.dicClases[self.nomClase]
         
         self.accionRealizada = True
         self.actualizarHistorial()
         logger.info("Clase eliminada :"+self.nomClase+" <ok>")
     else:
         raise Exception(Util.getMnsjIdioma("Accion", "Error_Hacer_Accion"))
    def removerImagen(self, imagen):
        '''Remueve una imagen de la nomClaseCorrecto en la que se encuentra '''

        if imagen.nomClaseCorrecto is None:
            raise Exception(Util.getMnsjIdioma("Accion", "Error_Remover_None"))

        try:
            del self.dicClases[imagen.nomClaseCorrecto][imagen.__hash__()]
            logger.info("Imagen " + imagen.source + " removida de la clase " +
                        imagen.nomClaseCorrecto)
        except KeyError:
            logger.error("Clase " + imagen.nomClaseCorrecto + " inexistente")
            raise Exception(
                Util.getMnsjConf('Accion', 'Error_Clase_Inexistente'))
        except Exception as e:
            raise e
 def deshacerAccion(self):
     if self.accionRealizada:
         for img in self.imgsAfectadas:
             self.removerImagen(img)
         self.accionRealizada = False
     else:
         raise Exception(Util.getMnsjIdioma("Accion", "Error_Deshacer_Accion"))
 def __init__(self, master, frmTabla):
     '''
     Constructor
     '''
     tk.Toplevel.__init__(self, master)
     self.padre = master
     self.attributes('-topmost', tk.TRUE)
     self.frmTabla = frmTabla
     self.title("Agregar Imagenes")
     
     #Opciones para el dialogo de imagenes para abrir una sola imagen de tkinter
     self.optDialogoImg = opciones = {}
     opciones['defaultextension'] = '.jpg'
     opciones['filetypes'] = [('Imagenes', Util.getMnsjConf("Validacion", "Extenciones"))]
     opciones['initialdir'] = '/home/ivan/'
     opciones['parent'] = self
     opciones['title'] = 'Escoge imagenes'
     
     #Opciones para el dialogo de imagenes para abrir un archivo con url's de imagenes de tkinter
     self.optDialogoArchivo = opciones = {}
     opciones['defaultextension'] = '.jpg'
     opciones['filetypes'] = [('all files', '.*'), ('text files', '.txt')]
     opciones['initialdir'] = '/home/ivan/Escritorio/'
     opciones['parent'] = self
     opciones['title'] = 'Escoge un imagen archivo de texto que contenga url\'s de imagenes'
     
     #Opciones para el dialogo de imagenes para abrir un directorio con imagenes de tkinter
     self.optDialogoDir = opciones = {}
     opciones['initialdir'] = '/home/ivan/Escritorio/'
     opciones['parent'] = self
     opciones['title'] = 'Escoge un directorio con imagenes'
     
     self.initUI()
     self.hide()
示例#10
0
    def efectuarAccion(self, ):
        logger.info("Eliminando la lcase: " + self.nomClase)
        ''' Crea una clase y la agrega a la lista de dicClases evitando que se repita '''
        if not self.accionRealizada:
            if not Valida.exitenciaClase(self.nomClase, self.dicClases):
                logger.error('No se efectuo accion, La clase: ' +
                             self.nomClase + ' no existe')
                raise Exception(
                    Util.getMnsjIdioma('Accion', 'Error_Eliminar_Clase_Inex'))

            del self.dicClases[self.nomClase]

            self.accionRealizada = True
            self.actualizarHistorial()
            logger.info("Clase eliminada :" + self.nomClase + " <ok>")
        else:
            raise Exception(Util.getMnsjIdioma("Accion", "Error_Hacer_Accion"))
示例#11
0
 def efectuarAccion(self):
     if not self.accionRealizada:
         for img in self.imgsAfectadas:
             self.removerImagen(img)
         self.accionRealizada = True
         self.actualizarHistorial()
     else:
         raise Exception(Util.getMnsjIdioma("Accion", "Error_Hacer_Accion"))
 def deshacerAccion(self):
     if self.accionRealizada:
         for img in self.imgsAfectadas:
             self.removerImagen(img)
         self.accionRealizada = False
     else:
         raise Exception(
             Util.getMnsjIdioma("Accion", "Error_Deshacer_Accion"))
 def efectuarAccion(self):
     if not self.accionRealizada:
         for img in self.imgsAfectadas:
             self.removerImagen(img)
         self.accionRealizada = True
         self.actualizarHistorial() 
     else:
         raise Exception(Util.getMnsjIdioma("Accion", "Error_Hacer_Accion"))
示例#14
0
 def deshacerUltimaAccion(self):
     ''' Deshace la ultima accion realizada eliminandola del historial'''
     if self.accionRealizada:
         accion = None
         if len(self.pilaAcciones)>0 :
             accion = self.pilaAcciones.pop()
             accion.deshacerAccion()
         return accion
     else:
         raise Exception(Util.getMnsjIdioma("Accion", "Error_Deshacer_Accion"))
 def deshacerAccion(self):
     if self.accionRealizada:
         # Se deshace la accion de agregar imagenes de la clase Destino
         self.deshacerUltimaAccion()
         # Se vuelven a mover las imagenes
         for img in self.imgsAfectadas:
             self.moverImagen(img, self.claseOrigen)
         # Se deshace la accion de eliminar imagenes de la clase Origen
         self.deshacerUltimaAccion()
     else:
         raise Exception(Util.getMnsjIdioma("Accion", "Error_Deshacer_Accion"))
 def buscar(self):
     '''
     Busca utilizando expresiones regulares, todos los objetos Imgen de todos los objetos
     Fila que se encuentran en la lista filas
     '''
     
     if self.expRegBusqueda.get() is None :
         raise Exception(Util.getMnsjIdioma("TablaRutas", "Error_Exp_Reg_None"))
     
     self.limpiarLstImgsSeleccionadas()
     self.limpiarLstImgsFiltradas()
     
     try:
         for img in self.imgs:
             if(re.search(self.expRegBusqueda.get(),img.source) is not None):
                 self.lstImgsFiltradas.append(img)
     except Exception:
         raise Exception(Util.getMnsjIdioma("TablaRutas", "Error_Exp_Reg_Inv"))
             
     self.empaquetarWidgetsTabla()
 def deshacerUltimaAccion(self):
     ''' Deshace la ultima accion realizada eliminandola del historial'''
     if self.accionRealizada:
         accion = None
         if len(self.pilaAcciones) > 0:
             accion = self.pilaAcciones.pop()
             accion.deshacerAccion()
         return accion
     else:
         raise Exception(
             Util.getMnsjIdioma("Accion", "Error_Deshacer_Accion"))
 def __init__(self, imgsAfectadas, claseOrigen, claseDestino):
     self.imgsAfectadas = imgsAfectadas
     self.claseOrigen = claseOrigen
     self.claseDestino = claseDestino
     self.accionRealizada = False
     
     if not Valida.exitenciaClase(self.claseOrigen, Accion.dicClases):
         self.logger.error("Clase "+claseOrigen+" inexistente")
         raise Exception(Util.getMnsjIdioma('Accion', 'Error_Crear_Clase_Existente'))
     if not Valida.exitenciaClase(self.claseDestino, Accion.dicClases):
         self.logger.error("Clase "+claseDestino+" inexistente")
         raise Exception(Util.getMnsjIdioma('Accion', 'Error_Crear_Clase_Existente'))
     if not Valida.imagenesExistenteOnClase(self.imgsAfectadas, Accion.dicClases[claseOrigen]):
         self.logger.error("Error imagenes incosistentes, no todas se encuentran en la clase origen: "+claseOrigen)
         raise Exception(Util.getMnsjIdioma('Accion', 'Error_Imagenes_Inconsistentes'))
     
     for img in imgsAfectadas:
         img.nomClaseCorrecto = claseOrigen
     
     self.removerImgs = EliminarImagen(imgsAfectadas)
     self.agregarImgs = AgregarImagen(imgsAfectadas)
 def efectuarAccion(self, ):
     ''' Crea una clase y la agrega a la lista de dicClases evitando que se repita '''
     logger.info("Creando la lcase: "+self.nomClase+"...")
     if not self.accionRealizada:
         if not Valida.nomClaseCorrecto(self.nomClase):
             logger.error('No se efectuo accion, Nombre de la clase invalido: '+self.nomClase)
             raise Exception(Util.getMnsjIdioma('Accion', 'Error_Crear_Clase_Nom_None'))
         
         if Valida.exitenciaClase(self.nomClase, self.dicClases):
             logger.error('No se efectuo accion, La clase: '+self.nomClase+' ya esta creada')
             raise Exception(Util.getMnsjIdioma('Accion', 'Error_Crear_Clase_Existente'))
         
         nvaClase = {}
         self.dicClases[self.nomClase] = nvaClase
         
         self.accionRealizada = True
         self.actualizarHistorial()
         logger.info("Clase creada :"+self.nomClase+" <ok>")
     else:
         raise Exception(Util.getMnsjIdioma("Accion", "Error_Hacer_Accion"))
     print Accion.dicClases
 def deshacerAccion(self):
     if self.accionRealizada:
         # Se deshace la accion de agregar imagenes de la clase Destino
         self.deshacerUltimaAccion()
         # Se vuelven a mover las imagenes
         for img in self.imgsAfectadas:
             self.moverImagen(img, self.claseOrigen)
         # Se deshace la accion de eliminar imagenes de la clase Origen
         self.deshacerUltimaAccion()
     else:
         raise Exception(
             Util.getMnsjIdioma("Accion", "Error_Deshacer_Accion"))
 def deshacerAccion(self):
     ''' 
     Deshace la accion del propio objeto sin eliminarla del historial,
     es por eso que esta accion debe de ser llamada desde la funcion
     deshacerUtilmaAccion(self)
     '''
     logger.info("Deshaciendo accion...")
     if self.accionRealizada:
         del self.dicClases[self.nomClase]
         
         self.accionRealizada = False
         logger.info("Deshaciendo accion <ok> Clase "+self.nomClase+" Eliminada")
     else:
         raise Exception(Util.getMnsjIdioma("Accion", "Error_Deshacer_Accion"))
示例#22
0
 def agregarImagen(self, imagen):
     '''Agrega una imagen al diccionario de la nomClaseCorrecto que trae seteada'''
     
     if imagen.nomClaseCorrecto is None :
         imagen.nomClaseCorrecto = self.nomClaseDefault     
     try:
         if not Valida.imagenExistenteOnClase(imagen,self.dicClases[imagen.nomClaseCorrecto]):
             self.dicClases[imagen.nomClaseCorrecto][imagen.__hash__()] = imagen
             logger.info("Imagen "+imagen.source+" agregada a la clase "+imagen.nomClaseCorrecto)
         else:
             logger.info("Imagen "+imagen.source+"no se puede agregar porque ya existe en esta clase "+imagen.nomClaseCorrecto)
     except KeyError:
         logger.error("Clase "+imagen.nomClaseCorrecto+" inexistente")
         raise Exception(Util.getMnsjConf('Accion', 'Error_Clase_Inexistente'))
     except Exception as e:
         raise e
    def __init__(self, img, tabla):
        '''
        Crea los widgets correspondientes a imagen que estaran contenidos en tabla que 
        se pasa como parametro
        '''

        self.strVarEstaSelecccionado = tk.StringVar()
        self.chekbImg = ttk.Checkbutton(tabla.frmScrollPane.interior,
                                        variable=self.strVarEstaSelecccionado,
                                        command=self.checarSeleccion)

        self.lblRuta = tk.Text(tabla.frmScrollPane.interior,
                               height=int(
                                   Util.getMnsjConf("TablaRutas",
                                                    "altoCeldaRuta")))

        self.lblRuta.insert(1.0, img.source)
        self.lblRuta.config(state=tk.DISABLED)

        self.widgetPrevisualizacion = None

        self.tabla = tabla
        self.img = img
    def agregarImagen(self, imagen):
        '''Agrega una imagen al diccionario de la nomClaseCorrecto que trae seteada'''

        if imagen.nomClaseCorrecto is None:
            imagen.nomClaseCorrecto = self.nomClaseDefault
        try:
            if not Valida.imagenExistenteOnClase(
                    imagen, self.dicClases[imagen.nomClaseCorrecto]):
                self.dicClases[imagen.nomClaseCorrecto][
                    imagen.__hash__()] = imagen
                logger.info("Imagen " + imagen.source +
                            " agregada a la clase " + imagen.nomClaseCorrecto)
            else:
                logger.info(
                    "Imagen " + imagen.source +
                    "no se puede agregar porque ya existe en esta clase " +
                    imagen.nomClaseCorrecto)
        except KeyError:
            logger.error("Clase " + imagen.nomClaseCorrecto + " inexistente")
            raise Exception(
                Util.getMnsjConf('Accion', 'Error_Clase_Inexistente'))
        except Exception as e:
            raise e
示例#25
0
    def __init__(self, master, frmTabla):
        '''
        Constructor
        '''
        tk.Toplevel.__init__(self, master)
        self.padre = master
        self.attributes('-topmost', tk.TRUE)
        self.frmTabla = frmTabla
        self.title("Agregar Imagenes")

        #Opciones para el dialogo de imagenes para abrir una sola imagen de tkinter
        self.optDialogoImg = opciones = {}
        opciones['defaultextension'] = '.jpg'
        opciones['filetypes'] = [('Imagenes',
                                  Util.getMnsjConf("Validacion",
                                                   "Extenciones"))]
        opciones['initialdir'] = '/home/ivan/'
        opciones['parent'] = self
        opciones['title'] = 'Escoge imagenes'

        #Opciones para el dialogo de imagenes para abrir un archivo con url's de imagenes de tkinter
        self.optDialogoArchivo = opciones = {}
        opciones['defaultextension'] = '.jpg'
        opciones['filetypes'] = [('all files', '.*'), ('text files', '.txt')]
        opciones['initialdir'] = '/home/ivan/Escritorio/'
        opciones['parent'] = self
        opciones[
            'title'] = 'Escoge un imagen archivo de texto que contenga url\'s de imagenes'

        #Opciones para el dialogo de imagenes para abrir un directorio con imagenes de tkinter
        self.optDialogoDir = opciones = {}
        opciones['initialdir'] = '/home/ivan/Escritorio/'
        opciones['parent'] = self
        opciones['title'] = 'Escoge un directorio con imagenes'

        self.initUI()
        self.hide()
 def moverImagen(self, imagen, claseDestino):
     if imagen is not None:
         imagen.nomClaseCorrecto = claseDestino
     else:
         logger.error("Error la imagen es None no se puede mover")
         raise Exception(Util.getMnsjIdioma('Accion', 'Error_Imagen_None'))
import os

import Utileria.Util as Util
import Utileria.Valida as Valida

######################################################################################
logger = Util.getLogger("Accion")


######################################################################################
class Accion(object):

    nomClaseDefault = 'Clase_Default'
    claseDefault = {}

    dicClases = {nomClaseDefault: claseDefault}
    pilaAcciones = []

    #-----------------------------------------------------------------------------------------------
    def __init__(self, direccionProyecto=None):
        self.imgsAfectadas = []
        self.accionRealizada = True
        self.dirProyecto = direccionProyecto

    #-----------------------------------------------------------------------------------------------
    def efectuarAccion(self):
        ''' Realiza la accion evitando que se repita '''
        return

    #-----------------------------------------------------------------------------------------------
    def deshacerAccion(self):
'''
Created on 04/10/2015

@author: ivan
'''

import ttk
import Image
import Tkinter as tk
from Utileria import Util
import cStringIO
import urllib
import ImageTk

log = Util.getLogger("VistaVisualizacionImgs") 
########################################################################################
class VistaVisualizacionImgs(tk.Toplevel):
    '''
    Vista para poder visualizar una imagen
    '''
    #----------------------------------------------------------------------
    def __init__(self, master, imagen):
        tk.Toplevel.__init__(self, master)
        self.padre = master
        self.img = imagen
        self.attributes('-topmost', tk.TRUE)
        self.resizable(0, 0)
        self.title(imagen.getNomArchivo())
        self.initUI()
        
    #----------------------------------------------------------------------
'''
Created on 18/09/2015

@author: ivan
'''

import ttk

from Modelo.Accion import Accion
from Modelo.MoverImagen import MoverImagen
import Tkinter as tk
from Utileria import Util

#########################################################################################
logger = Util.getLogger("VistaMoverSeleccionados")
#########################################################################################


class VistaMoverSeleccionados(tk.Toplevel):
    '''
    Ventana en la que se ofrece la posibilidad mover todas las imagenes que han sido seleccionadas
    '''

    #----------------------------------------------------------------------
    def __init__(self, master, claseOrigen, imgsAfectadas):
        '''
        Constructor
        '''
        tk.Toplevel.__init__(self, master)
        self.padre = master
        self.attributes('-topmost', tk.TRUE)
'''
Created on 18/09/2015

@author: ivan
'''

import ttk

from Modelo.Accion import Accion
from Modelo.MoverImagen import MoverImagen
import Tkinter as tk
from Utileria import Util


#########################################################################################
logger = Util.getLogger("VistaMoverSeleccionados")
#########################################################################################

class VistaMoverSeleccionados(tk.Toplevel):
    '''
    Ventana en la que se ofrece la posibilidad mover todas las imagenes que han sido seleccionadas
    '''
    #----------------------------------------------------------------------
    def __init__(self, master, claseOrigen, imgsAfectadas):
        '''
        Constructor
        '''
        tk.Toplevel.__init__(self, master)
        self.padre = master
        self.attributes('-topmost', tk.TRUE)
        self.title("Mueve las imagenes")
示例#31
0
'''
Created on 04/10/2015

@author: ivan
'''

import ttk
import Image
import Tkinter as tk
from Utileria import Util
import cStringIO
import urllib
import ImageTk

log = Util.getLogger("VistaVisualizacionImgs")


########################################################################################
class VistaVisualizacionImgs(tk.Toplevel):
    '''
    Vista para poder visualizar una imagen
    '''

    #----------------------------------------------------------------------
    def __init__(self, master, imagen):
        tk.Toplevel.__init__(self, master)
        self.padre = master
        self.img = imagen
        self.attributes('-topmost', tk.TRUE)
        self.resizable(0, 0)
        self.title(imagen.getNomArchivo())
'''
Created on 25/08/2015

@author: ivan
'''
from Accion import Accion
from AgregarImagen import AgregarImagen
from CrearClase import CrearClase
from EliminarImagen import EliminarImagen
from Utileria.Imagen import Imagen
import Utileria.Util as Util
import Utileria.Valida as Valida

####################################################################################
logger = Util.getLogger("MoverImagen")


####################################################################################
class MoverImagen(Accion):
    '''
    Objeto que abstrae los atributos y funcionalidades de la accion mover
    '''

    #----------------------------------------------------------------------------------
    def __init__(self, imgsAfectadas, claseOrigen, claseDestino):
        self.imgsAfectadas = imgsAfectadas
        self.claseOrigen = claseOrigen
        self.claseDestino = claseDestino
        self.accionRealizada = False

        if not Valida.exitenciaClase(self.claseOrigen, Accion.dicClases):
import re
import ttk

import Image
import ImageTk

from Modelo.Accion import Accion
from Modelo.AgregarImagen import AgregarImagen
import Tkinter as tk
from Utileria.Imagen import Imagen
from Utileria.ScrolledFrame import ScrolledFrame
import Utileria.Util as Util


#######################################################################
log = Util.getLogger("TablaRutas")
#######################################################################

class TablaRutas (ttk.Frame):
    '''
    Clase que crea una tabla en un Frame con scrolls, 
    especifica para agrear filas con a base de la clase Imagen
    '''
    #-----------------------------------------------------------------------
    def __init__(self,  parent, *args, **kw):
        '''
        Inicializa un frmScrollPane con scroll y crea la cabezera de la tabla
        '''
        ttk.Frame.__init__(self, parent, *args, **kw)
        
        self.lstImgsFiltradas = [] 
示例#34
0
@author: ivan
'''

import os
import tkFileDialog
import ttk

from Modelo.Accion import Accion
from Modelo.AgregarImagen import AgregarImagen
import Tkinter as tk
from Utileria import Util
from Utileria.Imagen import Imagen
from Vistas.VistaAgregarImgURLWeb import VistaAgregarImgURLWeb

logger = Util.getLogger("VistaMenuAgregarImagenes")

#########################################################################################


class VistaMenuAgregarImagenes(tk.Toplevel):
    '''
    Ventana en la que se ofrece la posibilidad de crear una clase
    '''

    #----------------------------------------------------------------------
    def __init__(self, master, frmTabla):
        '''
        Constructor
        '''
        tk.Toplevel.__init__(self, master)
'''
Created on 26/08/2015

@author: ivan
'''
from Accion import Accion
import Utileria.Util as Util
import Utileria.Valida as Valida


logger = Util.getLogger("Accion:CrearClase")

class CrearClase(Accion):
    '''
    Clase que abstrae las caracteristicas de la accion crear clase
    '''
    
    def __init__(self, nomClase):
        self.nomClase = nomClase
        self.accionRealizada = False
    
    def efectuarAccion(self, ):
        ''' Crea una clase y la agrega a la lista de dicClases evitando que se repita '''
        logger.info("Creando la lcase: "+self.nomClase+"...")
        if not self.accionRealizada:
            if not Valida.nomClaseCorrecto(self.nomClase):
                logger.error('No se efectuo accion, Nombre de la clase invalido: '+self.nomClase)
                raise Exception(Util.getMnsjIdioma('Accion', 'Error_Crear_Clase_Nom_None'))
            
            if Valida.exitenciaClase(self.nomClase, self.dicClases):
                logger.error('No se efectuo accion, La clase: '+self.nomClase+' ya esta creada')
'''
Created on 24/08/2015

@author: ivan
'''

from Accion import Accion
from CrearClase import CrearClase
from Utileria.Imagen import Imagen
import Utileria.Util as Util


###########################################################################################
logger = Util.getLogger("Agrega")
###########################################################################################
class AgregarImagen(Accion):
    '''
    Objeto que abstrae las caracteristicas de una accion de agregar imagenes
    '''
    #------------------------------------------------------------------------------
    def __init__(self, imgsAfectadas):
        self.imgsAfectadas=imgsAfectadas
        self.accionRealizada = False
    
    #------------------------------------------------------------------------------
    def efectuarAccion(self):
        if not self.accionRealizada :
            for img in self.imgsAfectadas:
                self.agregarImagen(img)
                
            self.accionRealizada = True
示例#37
0
 def moverImagen(self, imagen, claseDestino):
     if imagen is not None:
         imagen.nomClaseCorrecto = claseDestino
     else:
         logger.error("Error la imagen es None no se puede mover")
         raise Exception(Util.getMnsjIdioma('Accion', 'Error_Imagen_None'))
示例#38
0
 def initUI(self):
     '''
     Crea y empaqueta todos low widgets de la ventana
     '''
     self.padre.title("Adquicicion de imagenes")
     #*****************************************************************************************
     frmHeader = ttk.Frame(self.padre, relief = tk.RAISED)
     mbMenu=  ttk.Menubutton(frmHeader, text="Archivo")
     mbMenu.menu = tk.Menu(mbMenu)
     mbMenu["menu"] = mbMenu.menu
     mbMenu.menu.add_command(label = "Generar Archivo De Direcciones", command = self.abrirGenerarArchivoDeDirecciones)
     mbMenu.menu.add_command(label = "Generar Directorio de Imagenes", command = self.abrirVistaGuardarDirectorioImgs)
     mbMenu.pack(side = tk.LEFT)
     frmHeader.pack(side = tk.TOP, fill = tk.X, expand = tk.TRUE)
     #*****************************************************************************************
     
     #*****************************************************************************************
     frmNorte = ttk.Frame(self.padre)
     #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     frmNorteOeste  = ttk.Frame(frmNorte)        
     
     lblLogo = ttk.Label(frmNorteOeste, background = "green", text="Logo")
     lblLogo.pack(fill = tk.BOTH)
     
     frmNorteOeste.grid(column = 0, row = 0)
     #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     frmNorteEste = ttk.Frame(frmNorte)
      
     btnAgregarImg = ttk.Button(frmNorteEste, 
                                text="Agregar Imagen", 
                                width = Util.getMnsjConf("VistaPrincipal", "tamBotones"),
                                command = self.abrirVistaMenuAgrImgs)
     btnAgregarImg.grid(column = 1, row = 0, pady = 5)
     btnCrearClase = ttk.Button(frmNorteEste, 
                                text="Nueva Clase", 
                                width = Util.getMnsjConf("VistaPrincipal", "tamBotones"),
                                command = self.abrirVistaCrearClase)
     btnCrearClase.grid(column = 1, row = 1, pady = 5)
     
     frmNorteEste.grid(column = 1, row = 0)
     #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     frmNorte.grid_columnconfigure(0,weight = 1)
     frmNorte.grid_columnconfigure(1,weight = 1)
     
     frmNorte.pack(fill = tk.X, side=tk.TOP)
     #*****************************************************************************************       
     
     ttk.Separator(self.padre, orient = tk.HORIZONTAL).pack()
     
     #*****************************************************************************************
     frmCenter = ttk.Frame(self.padre)
     #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        
     frmCenterOeste = ttk.Labelframe(frmCenter, text = "Acciones sobre la tabla")
     
     ttk.Label(frmCenterOeste, text = "Cambia de clase: ").pack(fill = tk.Y, anchor = tk.NW)         
     self.selectedClase = StringVar()
     self.selectedClase.set(Accion.nomClaseDefault)
     self.cmbClases = ttk.Combobox(frmCenterOeste, 
                                   textvariable=self.selectedClase, 
                                   state = 'readonly')
     self.cmbClases['values'] = Accion.dicClases.keys()
      
     self.cmbClases.pack(fill = tk.Y, pady = 5)
     self.cmbClases.bind("<<ComboboxSelected>>", self.cambiarClase)
      
     ttk.Button(frmCenterOeste, 
                text = "Mover Todo", 
                width = Util.getMnsjConf("VistaPrincipal", "tamBotones"),
                command = self.abrirVistaMoverImgs).pack(fill = tk.Y, pady = 5)
     
     ttk.Button(frmCenterOeste, 
                text = "Eliminar Todo", 
                width = Util.getMnsjConf("VistaPrincipal", "tamBotones"),
                command = self.eliminarImagenes).pack(fill = tk.Y, pady = 5)
     
     ttk.Separator(frmCenterOeste, orient = tk.HORIZONTAL).pack(fill = tk.Y, expand = tk.TRUE)
     
     ttk.Button(frmCenterOeste, 
                text = "Deshacer ultima Accion", 
                width = Util.getMnsjConf("VistaPrincipal", "tamBotones"),
                command = self.deshacerAccion).pack(fill = tk.Y, pady = 5)
     
     frmCenterOeste.pack(fill = tk.BOTH, side = tk.LEFT, expand = tk.TRUE, padx = 5)
     #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     frmCenterEste = ttk.Labelframe(frmCenter, text = "Imagenes de la clase")
     
     self.frmTabla = TablaRutas(frmCenterEste)
     self.frmTabla.pack(fill = tk.BOTH, expand = tk.TRUE)
     
     frmCenterEste.pack(fill = tk.BOTH, side = tk.LEFT, expand = tk.TRUE, padx = 5)
     #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     frmCenter.pack(fill = tk.BOTH, side = tk.TOP, expand= tk.TRUE)        
     #*****************************************************************************************
     #++++++++++++++++++++++++ Ventanas Emergentes ++++++++++++++++++++++++#
     self.frmVentanaCrearClase = VistaCrearClase(self, self.crearClase)
     self.frmVentanaMenuAgrImgs = VistaMenuAgregarImagenes(self, self.frmTabla)
     self.frmVentanaMoverImgs = VistaMoverSeleccionados(self, self.selectedClase, self.frmTabla.lstImgsSeleccionadas)
     self.frmVentanaGuaDirImgs  = VistaGuardarDirectorioImgs(self)
import cStringIO
import ttk
import urllib

import Image
import ImageTk

import Tkinter as tk
from Utileria import Util

from Vistas.VistaVisualizacionImgs import VistaVisualizacionImgs

################################################################################################
log = Util.getLogger("Fila")


################################################################################################
class Fila(object):
    '''
    Cada instancia tiene dos objetos widgets que representan columnas en la tabla
    uno para mostrar la url de la imagen y otro para previsualizar la imagen
    '''

    #------------------------------------------------------------------------------------
    def __init__(self, img, tabla):
        '''
        Crea los widgets correspondientes a imagen que estaran contenidos en tabla que 
        se pasa como parametro
        '''

        self.strVarEstaSelecccionado = tk.StringVar()
示例#40
0
from Modelo.EliminarClase import EliminarClase
from Modelo.EliminarImagen import EliminarImagen
from Modelo.MoverImagen import MoverImagen
import Tkinter as tk
from Utileria import Util
from Utileria.TablaRutas import TablaRutas
from Vistas.VistaCrearClase import VistaCrearClase
from Vistas.VistaGuardarDirectorioImgs import VistaGuardarDirectorioImgs
from Vistas.VistaMenuAgregarImagenes import VistaMenuAgregarImagenes
from Vistas.VistaMoverSeleccionados import VistaMoverSeleccionados


# from PIL import Image
# import ImageTk
########################################################################
logger = Util.getLogger("Principal")

########################################################################
class Principal(tk.Frame):
    '''
    Frame que muestra la ventana principal de la aplicacion
    '''
    #-------------------------------------------------------------------------------
    def __init__(self, master=None,  *args, **kw):
        '''
        Constructor de la vista e inicializacion de las propiedades de la ventana
        '''
        tk.Frame.__init__(self, master, *args, **kw)
        self.padre = master
        self.padre.geometry('1000x500+10+10')
        
'''
Created on 25/08/2015

@author: ivan
'''
from Accion import Accion
from AgregarImagen import AgregarImagen
from CrearClase import CrearClase
from EliminarImagen import  EliminarImagen
from Utileria.Imagen import Imagen
import Utileria.Util as Util
import Utileria.Valida as Valida


####################################################################################
logger = Util.getLogger("MoverImagen")
####################################################################################
class MoverImagen(Accion):
    '''
    Objeto que abstrae los atributos y funcionalidades de la accion mover
    '''
    #----------------------------------------------------------------------------------
    def __init__(self, imgsAfectadas, claseOrigen, claseDestino):
        self.imgsAfectadas = imgsAfectadas
        self.claseOrigen = claseOrigen
        self.claseDestino = claseDestino
        self.accionRealizada = False
        
        if not Valida.exitenciaClase(self.claseOrigen, Accion.dicClases):
            self.logger.error("Clase "+claseOrigen+" inexistente")
            raise Exception(Util.getMnsjIdioma('Accion', 'Error_Crear_Clase_Existente'))
@author: ivan
'''

import os
import tkFileDialog 
import ttk

from Modelo.Accion import Accion
from Modelo.AgregarImagen import AgregarImagen
import Tkinter as tk
from Utileria import Util
from Utileria.Imagen import Imagen
from Vistas.VistaAgregarImgURLWeb import VistaAgregarImgURLWeb


logger = Util.getLogger("VistaMenuAgregarImagenes")

#########################################################################################

class VistaMenuAgregarImagenes(tk.Toplevel):
    '''
    Ventana en la que se ofrece la posibilidad de crear una clase
    '''
    
    #----------------------------------------------------------------------
    def __init__(self, master, frmTabla):
        '''
        Constructor
        '''
        tk.Toplevel.__init__(self, master)
        self.padre = master
'''
Created on 24/08/2015

@author: ivan
'''

from Accion import Accion
from CrearClase import CrearClase
from Utileria.Imagen import Imagen
import Utileria.Util as Util

###########################################################################################
logger = Util.getLogger("Agrega")


###########################################################################################
class AgregarImagen(Accion):
    '''
    Objeto que abstrae las caracteristicas de una accion de agregar imagenes
    '''

    #------------------------------------------------------------------------------
    def __init__(self, imgsAfectadas):
        self.imgsAfectadas = imgsAfectadas
        self.accionRealizada = False

    #------------------------------------------------------------------------------
    def efectuarAccion(self):
        if not self.accionRealizada:
            for img in self.imgsAfectadas:
                self.agregarImagen(img)
示例#44
0
import os

import Utileria.Util as Util
import Utileria.Valida as Valida


######################################################################################
logger = Util.getLogger("Accion")
######################################################################################
class Accion(object):
    
    nomClaseDefault = 'Clase_Default'
    claseDefault = {}
    
    dicClases = {nomClaseDefault:claseDefault}
    pilaAcciones = []
    
    #-----------------------------------------------------------------------------------------------
    def __init__(self, direccionProyecto = None):
        self.imgsAfectadas=[]
        self.accionRealizada = True
        self.dirProyecto = direccionProyecto
    
    #-----------------------------------------------------------------------------------------------
    def efectuarAccion(self):
        ''' Realiza la accion evitando que se repita '''
        return
    
    #-----------------------------------------------------------------------------------------------
    def deshacerAccion(self):
        '''