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)
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'))
        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):
        if not self.accionRealizada :
            
            self.removerImgs.efectuarAccion()
            
            for img in self.imgsAfectadas:
                self.moverImagen(img, self.claseDestino)
                
            self.agregarImgs.efectuarAccion()
            
            self.accionRealizada = True
            self.actualizarHistorial()
        else:
            raise Exception(Util.getMnsjIdioma("Accion", "Error_Hacer_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 __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 deshacerAccion(self):
        
        if self.accionRealizada :
            for img in self.imgsAfectadas:
                self.agregarImagen(img)
                
            self.accionRealizada = False
        else:
            raise Exception(Util.getMnsjIdioma("Accion", "Error_Deshacer_Accion"))
        
if __name__ == '__main__':
    img1 = Imagen("/home/ivan/Imagenes/fondos/02E3A832D.jpg")
    img2 = Imagen("/home/ivan/Imagenes/fondos/1_rajathilaknatarajan-redsky.jpg")
    a = (img1, img2)
    agregarImgs = AgregarImagen(a)
    agregarImgs.efectuarAccion()
    print 'Clases: '
    print Accion.dicClases
    print 'Pila de Acciones'
    print Accion.pilaAcciones
    print 'Clases Registrada'
    for clase in Accion.dicClases:
        print clase
    
    removerImgs = EliminarImagen(a)
    removerImgs.efectuarAccion()
    
    print 'Clases: '
    print Accion.dicClases
    print 'Pila de Acciones'
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'))
        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):
        if not self.accionRealizada:

            self.removerImgs.efectuarAccion()

            for img in self.imgsAfectadas:
                self.moverImagen(img, self.claseDestino)

            self.agregarImgs.efectuarAccion()

            self.accionRealizada = True
            self.actualizarHistorial()
        else:
            raise Exception(Util.getMnsjIdioma("Accion", "Error_Hacer_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"))
            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"))


####################################################################################
if __name__ == '__main__':
    img1 = Imagen("/home/ivan/Imagenes/fondos/02E3A832D.jpg")
    img2 = Imagen(
        "/home/ivan/Imagenes/fondos/1_rajathilaknatarajan-redsky.jpg")
    a = (img1, img2)
    agregarImgs = AgregarImagen(a)
    agregarImgs.efectuarAccion()

    nvaClase = CrearClase('Clase2')
    nvaClase.efectuarAccion()
    print 'Clases: '
    print Accion.dicClases
    print 'Pila de Acciones'
    print Accion.pilaAcciones
    print 'Clases Registrada'
    for clase in Accion.dicClases:
        print clase
    print " "

    moverImagenes = MoverImagen(a, Accion.nomClaseDefault, 'Clase2')
    moverImagenes.efectuarAccion()