示例#1
0
    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')
示例#2
0
    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')
示例#3
0
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()
示例#4
0
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()