class MainForm(QMainWindow): def __init__(self, cliente): super().__init__() # Configura geometría de la ventana self.setWindowTitle('Drobpox') self.setGeometry(500, 200, 300, 400) self.cliente = cliente self.padre = 0 self.form = Window(self.cliente, self) self.elchat = Onlines(self.cliente) self.setCentralWidget(self.form) # Definición de acciones ver_status = QAction(QIcon(None), '&Abrir Chat', self) ver_status.setStatusTip('Abrir Chat') ver_status.triggered.connect(self.cambiar_status_bar) salir = QAction(QIcon(None), '&Salir', self) salir.setShortcut('Ctrl+Q') salir.setStatusTip('Terminar la aplicación') salir.triggered.connect(self.botonsalir) agregar_a = QAction(QIcon(None), '&Agregar Archivo', self) agregar_a.setShortcut('Ctrl+N') agregar_a.setStatusTip('Agregar Archivo') agregar_a.triggered.connect(self.encontrar_padre_archivo) agregar_c = QAction(QIcon(None), '&Agregar Carpeta', self) agregar_c.setShortcut('Ctrl+O') agregar_c.setStatusTip('Agregar Carpeta') agregar_c.triggered.connect(self.encontrar_padre_carpeta) agregar_d = QAction(QIcon(None), '&Crear Carpeta', self) agregar_d.setStatusTip('Crear Carpeta') agregar_d.triggered.connect(self.encontrar_padre_crearcarpeta) # Creación de la barra de menús y de los menús menubar = self.menuBar() # primero menú archivo_menu = menubar.addMenu('&Menu') archivo_menu.addAction(ver_status) archivo_menu.addAction(salir) # segundo menú otro_menu = menubar.addMenu('&Agregar') otro_menu.addAction(agregar_a) otro_menu.addAction(agregar_c) otro_menu.addAction(agregar_d) # Incluye la barra de estado''' self.statusBar().showMessage('Listo') def botonsalir(self): ans = QMessageBox.question(self, "Salir", "Salir de dropbox?", QMessageBox.Yes | QMessageBox.No) if ans == QMessageBox.Yes: self.cliente.enviar('quit') self.form.salir() QCoreApplication.instance().quit() def encontrar_padre_archivo(self): nodo = self.cliente.hijos self.padre = nodo.id_nodo self.botonnuevo_archivo() def encontrar_padre_carpeta(self): nodo = self.cliente.hijos self.padre = nodo.id_nodo self.botonnueva_carpeta() def encontrar_padre_crearcarpeta(self): nodo = self.cliente.hijos self.padre = nodo.id_nodo self.crear_carpeta() def botonnuevo_archivo(self): fileName = QFileDialog.getOpenFileNames(self, 'Escoger Archivos', QDir.rootPath()) if fileName: for i in range(len(fileName)): time.sleep(3) self.enviar_archivo(fileName[i]) print(self.padre) print(fileName) def botonnueva_carpeta(self): fileName = QFileDialog.getExistingDirectory(self, 'Escoger Carpeta', QDir.rootPath()) if fileName: self.enviar_carpeta(fileName) persona = get_persona(self.cliente.usuario, 'Cliente') print('Esta es la carpeta:', fileName) nombrecarpeta = fileName.split('\\') persona.archivos.agregar_nodo(fileName, fileName, valor='013', id_padre=None) self.mandar_todo_carpeta(fileName, persona.archivos, nombrecarpeta[-1]) print(persona.archivos) lista = self.agregar_carpeta(fileName) for i in range(len(lista)): persona.archivos.agregar_nodo(lista[i][0], lista[i][0], lista[i][1], lista[i][2]) print(lista) write_persona(persona, 'Cliente') self.statusBar().showMessage('Listo') print(fileName) def enviar_archivo(self, path): nombre = path.split('\\') with open("{}".format(path), 'rb') as file: archivo = file.read() nuevo_archivo = Archivo(archivo, nombre[-1]) codigo = '009' msj_final = [self.cliente.usuario, self.padre, codigo, nuevo_archivo] pick = pickle.dumps(msj_final) self.cliente.s_cliente.sendall('{}: 009:{}'.format( self.cliente.usuario, len(pick)).encode('utf-8')) self.cliente.s_cliente.sendall(pick) def enviar_carpeta(self, path): nombre = path.split('\\') nuevo_archivo = Archivo(None, nombre[-1]) codigo = '011' msj_final = [self.cliente.usuario, self.padre, codigo, nuevo_archivo] pick = pickle.dumps(msj_final) print(len(pick), nuevo_archivo, nuevo_archivo.archivo) self.cliente.s_cliente.sendall('{}: 011:{}'.format( self.cliente.usuario, len(pick)).encode('utf-8')) self.cliente.s_cliente.sendall(pick) def crear_carpeta(self): texto, ok = QInputDialog.getText(self, "Titulo", "Ingresa tu texto:") if ok: if texto == '': pass else: nombre = 'agregar\\' + texto self.enviar_carpeta(nombre) def juntar_string(self, string): nuevo = '' for i in range(len(string)): if i == 0: nuevo = string[i] if i < len(string) - 1: nuevo += '\\' + string[i] return nuevo def mandar_todo_carpeta(self, path, persona, carpeta): # lista2=[] lista = os.listdir(str(path)) for i in range(len(lista)): time.sleep(2) completo = path + '\\' + lista[i] archivo = self.es_carpeta_o_archivo(path + '\\' + lista[i]) nombre = path.split('\\') self.padre = str(nombre[-1]) self.statusBar().showMessage( 'Subiendo carpeta: {}..elemento: {}'.format( carpeta, nombre[-1])) if archivo == '012': self.enviar_archivo(completo) else: self.enviar_carpeta(completo) self.mandar_todo_carpeta(completo, persona, carpeta) def agregar_carpeta(self, path): lista2 = [] lista = os.listdir(path) for i in range(len(lista)): completo = path + '\\' + lista[i] archivo = self.es_carpeta_o_archivo(path + '\\' + lista[i]) if archivo == '012': lista2.append([completo, '012', path]) else: lista3 = self.agregar_carpeta(completo) lista2.append([completo, '013', path]) lista2 += lista3 return lista2 def es_carpeta_o_archivo(self, path): if os.path.isfile(path): return '012' else: return '013' def closeEvent(self, QCloseEvent): self.botonsalir() QCloseEvent.ignore() def cambiar_status_bar(self): self.statusBar().showMessage('Abrir Chat') self.elchat.show()
class MainForm(QMainWindow): def __init__(self, cliente): super().__init__() # Configura geometría de la ventana self.setWindowTitle('Drobpox') self.setGeometry(500, 200, 300, 400) self.cliente = cliente self.padre = 0 self.form = Window(self.cliente, self) self.elchat=Onlines(self.cliente) self.setCentralWidget(self.form) # Definición de acciones ver_status = QAction(QIcon(None), '&Abrir Chat', self) ver_status.setStatusTip('Abrir Chat') ver_status.triggered.connect(self.cambiar_status_bar) salir = QAction(QIcon(None), '&Salir', self) salir.setShortcut('Ctrl+Q') salir.setStatusTip('Terminar la aplicación') salir.triggered.connect(self.botonsalir) agregar_a = QAction(QIcon(None), '&Agregar Archivo', self) agregar_a.setShortcut('Ctrl+N') agregar_a.setStatusTip('Agregar Archivo') agregar_a.triggered.connect(self.encontrar_padre_archivo) agregar_c = QAction(QIcon(None), '&Agregar Carpeta', self) agregar_c.setShortcut('Ctrl+O') agregar_c.setStatusTip('Agregar Carpeta') agregar_c.triggered.connect(self.encontrar_padre_carpeta) agregar_d = QAction(QIcon(None), '&Crear Carpeta', self) agregar_d.setStatusTip('Crear Carpeta') agregar_d.triggered.connect(self.encontrar_padre_crearcarpeta) # Creación de la barra de menús y de los menús menubar = self.menuBar() # primero menú archivo_menu = menubar.addMenu('&Menu') archivo_menu.addAction(ver_status) archivo_menu.addAction(salir) # segundo menú otro_menu = menubar.addMenu('&Agregar') otro_menu.addAction(agregar_a) otro_menu.addAction(agregar_c) otro_menu.addAction(agregar_d) # Incluye la barra de estado''' self.statusBar().showMessage('Listo') def botonsalir(self): ans = QMessageBox.question(self, "Salir", "Salir de dropbox?", QMessageBox.Yes | QMessageBox.No) if ans == QMessageBox.Yes: self.cliente.enviar('quit') self.form.salir() QCoreApplication.instance().quit() def encontrar_padre_archivo(self): nodo = self.cliente.hijos self.padre = nodo.id_nodo self.botonnuevo_archivo() def encontrar_padre_carpeta(self): nodo = self.cliente.hijos self.padre = nodo.id_nodo self.botonnueva_carpeta() def encontrar_padre_crearcarpeta(self): nodo = self.cliente.hijos self.padre = nodo.id_nodo self.crear_carpeta() def botonnuevo_archivo(self): fileName = QFileDialog.getOpenFileNames(self, 'Escoger Archivos', QDir.rootPath()) if fileName: for i in range(len(fileName)): time.sleep(3) self.enviar_archivo(fileName[i]) print(self.padre) print(fileName) def botonnueva_carpeta(self): fileName = QFileDialog.getExistingDirectory(self, 'Escoger Carpeta', QDir.rootPath()) if fileName: self.enviar_carpeta(fileName) persona=get_persona(self.cliente.usuario,'Cliente') print('Esta es la carpeta:',fileName) nombrecarpeta=fileName.split('\\') persona.archivos.agregar_nodo(fileName,fileName,valor='013',id_padre=None) self.mandar_todo_carpeta(fileName,persona.archivos,nombrecarpeta[-1]) print(persona.archivos) lista=self.agregar_carpeta(fileName) for i in range(len(lista)): persona.archivos.agregar_nodo(lista[i][0],lista[i][0],lista[i][1],lista[i][2]) print(lista) write_persona(persona,'Cliente') self.statusBar().showMessage('Listo') print(fileName) def enviar_archivo(self, path): nombre = path.split('\\') with open("{}".format(path), 'rb') as file: archivo = file.read() nuevo_archivo = Archivo(archivo, nombre[-1]) codigo = '009' msj_final = [self.cliente.usuario, self.padre, codigo, nuevo_archivo] pick = pickle.dumps(msj_final) self.cliente.s_cliente.sendall('{}: 009:{}'.format(self.cliente.usuario, len(pick)).encode('utf-8')) self.cliente.s_cliente.sendall(pick) def enviar_carpeta(self, path): nombre = path.split('\\') nuevo_archivo = Archivo(None, nombre[-1]) codigo = '011' msj_final = [self.cliente.usuario, self.padre, codigo, nuevo_archivo] pick = pickle.dumps(msj_final) print(len(pick), nuevo_archivo, nuevo_archivo.archivo) self.cliente.s_cliente.sendall('{}: 011:{}'.format(self.cliente.usuario, len(pick)).encode('utf-8')) self.cliente.s_cliente.sendall(pick) def crear_carpeta(self): texto, ok = QInputDialog.getText(self, "Titulo", "Ingresa tu texto:") if ok: if texto == '': pass else: nombre = 'agregar\\' + texto self.enviar_carpeta(nombre) def juntar_string(self,string): nuevo='' for i in range(len(string)): if i==0: nuevo=string[i] if i<len(string)-1: nuevo+='\\'+string[i] return nuevo def mandar_todo_carpeta(self, path,persona,carpeta): # lista2=[] lista = os.listdir(str(path)) for i in range(len(lista)): time.sleep(2) completo = path + '\\' + lista[i] archivo = self.es_carpeta_o_archivo(path + '\\' + lista[i]) nombre = path.split('\\') self.padre = str(nombre[-1]) self.statusBar().showMessage('Subiendo carpeta: {}..elemento: {}'.format(carpeta,nombre[-1])) if archivo == '012': self.enviar_archivo(completo) else: self.enviar_carpeta(completo) self.mandar_todo_carpeta(completo,persona,carpeta) def agregar_carpeta(self,path): lista2=[] lista=os.listdir(path) for i in range(len(lista)): completo = path + '\\' + lista[i] archivo = self.es_carpeta_o_archivo(path + '\\' + lista[i]) if archivo == '012': lista2.append([completo,'012',path]) else: lista3=self.agregar_carpeta(completo) lista2.append([completo,'013',path]) lista2+=lista3 return lista2 def es_carpeta_o_archivo(self, path): if os.path.isfile(path): return '012' else: return '013' def closeEvent(self, QCloseEvent): self.botonsalir() QCloseEvent.ignore() def cambiar_status_bar(self): self.statusBar().showMessage('Abrir Chat') self.elchat.show()