/tags/pyragua-0.2.5/pyragua/ChangeBrowser.py – Pyragua

root/tags/pyragua-0.2.5/pyragua/ChangeBrowser.py

Revision 399, 3.7 KB (checked in by junix, 2 years ago)

Agregado archivo faltante

Line 
1#-*- coding:iso8859-1 -*-
2"""
3Este archivo es parte de Pyragua
4
5Pyragua es software libre; lo puedes redistribuir y/o modificar
6bajo los terminos de la Licencia Publica General (GNU GPL) como fue
7publicada por la Free Software Foundation; cualquier versión 2 de la
8Licencia.
9
10Este programa es distribuido con la esperanza de que será útil,
11pero SIN GARANTIA ALGUNA; ni con la garantía explícita de
12MERCABILIDAD o de que SERVIRA PARA UN PROPOSITO EN PARTICULAR.
13Mire la Licencia Pública General de la GNU para más detalles.
14
15Debió recibir una copia de la Licencia Pública General de la GNU junto con
16este programa; sino, escriba a la Free Software Foundation,
17Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
18"""
19
20import threading
21import os
22import os.path as path
23import pyclbr
24import time
25import wx
26#from PanelArchivos import PanelArchivos
27
28class ChangeBrowser(wx.Frame):
29    """Esta clase es un interminiario entre el programa y el hilo"""
30    def __init__(self,pArchivos):
31        wx.Frame.__init__(self,None,-1,"prueba")
32        self.pArchivos = pArchivos
33        self.LanzarHilo()
34    #El manejador del botón
35    def LanzarHilo(self):
36        self.hilo=Hilo(self)
37
38    def Anunciar(self,Posicion):
39        self.pArchivos.AnunciarUser(Posicion,self.hilo) 
40
41
42
43class Hilo(threading.Thread):
44    """Esta clase servirá como demonio que estará revisando
45    constantemente si un archivo es modificado y lo recarga en la aplicacion"""
46    def __init__(self,ChangeBrowser):
47        """Recibe una lista con las rutas a los archivos abiertos """
48        threading.Thread.__init__(self)
49        """En reg se gurdan los paths de los archivos abiertos y Modificaciones
50        guarda el tiempo en el cual esos archivos han sido modificados por lo tanto
51        la posicion en la lista nos dice tambien el tiempo de modificacion
52        len(Reg)= len(Modificaciones)"""
53        self.Reg=[]
54        self.Modificaciones=[]
55        self.salir=False
56        self.ChangeBrowser=ChangeBrowser
57        self.start()
58       
59    def Salir(self):
60        self.salir=True
61
62    def ActualizarModificaciones(self,pArchivo,NumReg):
63        """Recive el path del archivo y el numero del registro
64        que se va a modificar """
65        self.Modificaciones[NumReg]= os.stat(pArchivo)
66        self.Reg[NumReg] =pArchivo
67
68    def GuardarRegistro(self,pArchivo):
69        """Este metodo recibe el path del archivo abierto y lo guarda en
70        un registro"""
71        self.Reg.append(pArchivo)
72        if pArchivo == '':
73            self.Modificaciones.append(pArchivo)
74        else:
75            self.Modificaciones.append(os.stat(pArchivo))
76
77    def CerrarRegistro(self,nArchivo):
78        """Este metodo recibe el numero del registro que se va a borrar"""
79        self.Modificaciones.pop(nArchivo)
80        self.Reg.pop(nArchivo)
81
82    def run(self):
83        while not self.salir:
84            Valor,Posicion=self.Escanear()
85            if Valor:
86                self.ChangeBrowser.Anunciar(Posicion)
87            #Reescaneamos código cada 2 segundo
88            time.sleep(2)
89           
90
91    def Escanear(self):
92        """Esta función revisa el tiempo de modificacion de un archivo y si
93        ha sido modificado retorna un bool, y el numer de registro modificado """
94        for i in self.Reg:
95            if i != '':
96                TimeModificacion = os.stat(i)
97                if TimeModificacion != self.Modificaciones[self.Reg.index(i)]:
98                    print self.Reg[self.Reg.index(i)] 
99                    return True, self.Reg.index(i)
100            else:
101                continue
102        return False,''
103   
104
105#if __name__=="__main__":
106   # cb=ChangeBrowser()
107    #while 1:
108       # time.sleep(10)
109
Note: See TracBrowser for help on using the browser.