[Código-PyQT4]Protector de Archivo - JaAViEr

Iniciado por 0x5d, 26 Abril 2014, 05:55 AM

0 Miembros y 1 Visitante están viendo este tema.

0x5d

Hola, buenos días!

El siguiente programa tiene por función el poder restaurar un archivo que se ha modificado o eliminado.

El funcionamiento del programa es muy sencillo



Clic en "Buscar..." , ubicamos el archivo que deseamos proteger y damos clic en "Abrir" , una vez hecho esto el programa ya estará atento a los cambios del programa. El programa lanzará un alerta en caso de que:

  • El archivo se haya eliminado.
  • El archivo se haya modificado.
Junto con cualquiera de ambas alertas el programa nos dará la posibilidad de restaurar a la versión anterior (A la versión del archivo al momento de ejecutarse este programa y seleccionar el archivo)
Sin más que decir, el código
Código (python) [Seleccionar]

# -*- coding: utf-8 -*-

#Autor: JaAViEr | 0X5D
#Twitter: @javieresteban__

from PyQt4 import QtCore, QtGui
import sys, threading, os

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
return s

class Formulario(QtGui.QWidget):

def __init__(self):

QtGui.QWidget.__init__(self)
self.setWindowTitle("Protector de Archivos :: 2014")
self.setFixedSize(400, 48)
self.gridLayout = QtGui.QGridLayout(self)
self.label = QtGui.QLabel(self)
self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
self.archivo = QtGui.QLineEdit(self)
self.archivo.setDisabled(True)
self.gridLayout.addWidget(self.archivo, 0, 1, 1, 1)
self.boton = QtGui.QPushButton(self)
self.gridLayout.addWidget(self.boton, 0, 2, 1, 1)
self.label.setText("Archivo:")
self.boton.setText("Buscar...")
self.connect(self.boton, QtCore.SIGNAL("clicked()"), self.buscar_archivo)
self.connect(self.archivo, QtCore.SIGNAL("returnPressed()"), self.empezar)

def buscar_archivo(self):

self.file = QtGui.QFileDialog.getOpenFileName(self, 'Buscar Archivo', '')
leer = open(self.file, "rb")
self.lineas = leer.read()
leer.close()
self.archivo.setText(self.file)
self.size = os.path.getsize(self.file)
self.empezar()

def empezar(self):

h = Hilo()
h.start()

class Hilo(threading.Thread):

def run(self):

while True:
try:
open(form.file)
estado = True
except:
estado = False

if estado:
tama = os.path.getsize(form.file)
if tama == form.size:
pass
else:
self.restaurar()
else:
self.restaurar()

def restaurar(self):

try:
f = open(form.file, "wb")
f.write(form.lineas)
f.close()
QtGui.QMessageBox.about(None, 'Alerta',_fromUtf8('El archivo se restauró exitosamente!'))
except:
QtGui.QMessageBox.about(None, 'Alerta',_fromUtf8('Error al intentar restaurar!'))
app = QtGui.QApplication(sys.argv)
form = Formulario()
form.show()
app.exec_()


Saludos, Javier.
¡ SIGUEME EN TWITTER -> @JavierEsteban__ !

BigBear

buen code , parece que volviste a programar javier.

0x5d

Cita de: Doddy en 26 Abril 2014, 20:36 PM
buen code , parece que volviste a programar javier.
Estoy intentando retomar el ritmo de PyQT4 :) , hace mucho no programaba Python :)
¡ SIGUEME EN TWITTER -> @JavierEsteban__ !