Exemplo n.º 1
0
class Window(QWidget):
    def __init__(self, client, mainwindow):

        QWidget.__init__(self)
        self.mainwindow = mainwindow
        self.que = ''
        self.client = client
        self.arbol = Arbol('')
        self.crear_arbol('')
        self.treeView = QTreeView()
        self.treeView.setContextMenuPolicy(Qt.CustomContextMenu)
        self.treeView.customContextMenuRequested.connect(self.openmenu)
        self.model = QStandardItemModel()
        self.additems(self.model, self.arbol)
        self.treeView.setModel(self.model)

        self.model.setHorizontalHeaderLabels([self.tr("Dropbox")])

        layout = QVBoxLayout()
        layout.addWidget(self.treeView)
        self.setLayout(layout)

    def init_GUI(self):
        self.model = QStandardItemModel()
        self.additems(self.model, self.arbol)
        self.treeView.setModel(self.model)
        self.model.setHorizontalHeaderLabels([self.tr("Dropbox")])

    def additems(self, parent, elements):
        for text in elements.hijos.keys():
            nombre = elements.hijos[text].nombre
            item = QStandardItem(nombre)
            parent.appendRow(item)
            if elements.hijos[text]:
                self.additems(item, elements.hijos[text])

    def crear_arbol(self, path):
        lista = self.client.files_list_folder('').entries
        lista2 = self.client.files_list_folder('', recursive=True).entries
        for text in lista:
            nombre = text.name
            path_nuevo = text.path_lower
            if type(text) == FolderMetadata:
                self.arbol.agregar_nodo(path_nuevo, nombre, '013', '')
            else:
                self.arbol.agregar_nodo(path_nuevo, nombre, '012', '')
        for text in lista2:
            nombre = text.name
            path_nuevo = text.path_lower
            nombre2 = path_nuevo.split('/')
            padre = path_nuevo.replace('/{}'.format(nombre2[-1]), '')
            if type(text) == FolderMetadata:
                self.arbol.agregar_nodo(path_nuevo, nombre, '013', padre)
            else:
                self.arbol.agregar_nodo(path_nuevo, nombre, '012', padre)

    def agregar_archivo(self):
        nodo = self.arbol.obtener_nodo_nombre(self.que)
        if nodo.valor == '013':
            self.mainwindow.padre = nodo.id_nodo
            self.mainwindow.botonnuevo_archivo()
        else:
            self.mainwindow.padre = nodo.id_padre
            self.mainwindow.botonnuevo_archivo()

    def agregar_carpeta(self):
        nodo = self.arbol.obtener_nodo_nombre(self.que)
        if nodo.valor == '013':
            self.mainwindow.padre = nodo.id_nodo
            self.mainwindow.botonnueva_carpeta()
        else:
            self.mainwindow.padre = nodo.id_padre
            self.mainwindow.botonnueva_carpeta()

    def crear_carpeta(self):
        nodo = self.arbol.obtener_nodo_nombre(self.que)
        texto, ok = QInputDialog.getText(self, "Titulo",
                                         "Nombre de la nueva carpeta:")
        if ok:
            if texto == '':
                pass
            else:
                if nodo.valor == '012':
                    nombre = nodo.id_padre + '/' + texto
                    try:
                        self.client.files_create_folder(nombre)
                        self.form.arbol.agregar_nodo(id_nodo=nombre,
                                                     nombre=texto,
                                                     valor='013',
                                                     id_padre=nodo.id_padre)
                        self.statusBar().showMessage(
                            'Carpeta agregada: {}'.format(nombre))
                        self.form.init_GUI()
                    except dropbox.exceptions.ApiError:
                        self.statusBar().showMessage(
                            'Nombre de carpeta ya existe: {}'.format(nombre))
                elif nodo.valor == '013':
                    nombre = nodo.id_nodo + '/' + texto
                    try:
                        self.client.files_create_folder(nombre)
                        self.form.arbol.agregar_nodo(id_nodo=nombre,
                                                     nombre=texto,
                                                     valor='013',
                                                     id_padre=nodo.id_nodo)
                        self.statusBar().showMessage(
                            'Carpeta agregada: {}'.format(nombre))
                        self.form.init_GUI()
                    except dropbox.exceptions.ApiError:
                        self.statusBar().showMessage(
                            'Nombre de carpeta ya existe: {}'.format(nombre))

    def descargar_archivo(self):
        fileName = QFileDialog.getExistingDirectory(
            self, 'Escoge Carpeta de descarga', QDir.rootPath())
        if fileName:
            nodo = self.arbol.obtener_nodo_nombre(self.que)
            nombre = nodo.id_nodo.split('/')
            self.client.files_download_to_file(fileName + '\\' + nombre[-1],
                                               nodo.id_nodo)
            self.mainwindow.statusBar().showMessage('Descargado: {}'.format(
                nombre[-1]))

    def descargar_carpeta(self):
        fileName = QFileDialog.getExistingDirectory(
            self, 'Escoge Carpeta de descarga', QDir.rootPath())
        if fileName:
            os.makedirs("{}".format(str(fileName + '\\' + self.que)))
            nodo = self.arbol.obtener_nodo_nombre(self.que)
            self.mainwindow.statusBar().showMessage('Descargando: {}'.format(
                self.que))
            self.mandar_descarga_carpeta(fileName + '\\' + self.que, nodo)
            self.mainwindow.statusBar().showMessage(
                'Listo la descarga: {}'.format(self.que))

    def borrar(self):
        nodo = self.arbol.obtener_nodo_nombre(self.que)
        self.client.files_delete(nodo.id_nodo)
        self.mainwindow.statusBar().showMessage('Borrando: {}'.format(
            self.que))
        self.arbol.borrar_nodo(id_padre=nodo.id_padre, id_nodo=nodo.id_nodo)
        self.mainwindow.statusBar().showMessage('Listo: {}'.format(self.que))
        self.init_GUI()

    def mandar_descarga_carpeta(self, path, nodo):
        for i in nodo.hijos.keys():
            archivo = nodo.hijos[i].valor
            if archivo == '012':
                self.client.files_download_to_file(
                    path + '\\' + nodo.hijos[i].nombre, nodo.hijos[i].id_nodo)
            else:
                os.makedirs("{}".format(str(path + '\\' +
                                            nodo.hijos[i].nombre)))
                self.mandar_descarga_carpeta(
                    str(path + '\\' + nodo.hijos[i].nombre), nodo.hijos[i])

    def historial(self):
        nodo = self.arbol.obtener_nodo_nombre(self.que)
        if nodo.valor == '012':
            data = self.client.files_list_revisions(nodo.id_nodo,
                                                    limit=10).entries
            self.historia = Historial(data)
            self.historia.table.show()
        elif nodo.valor == '013':
            data = []
            for i in nodo.hijos.values():
                if i.valor == '012':
                    data2 = self.client.files_list_revisions(i.id_nodo,
                                                             limit=10).entries
                    data += data2
            self.historia2 = Historial(data)
            self.historia2.table.show()

    def mover(self):
        nodo = self.arbol.obtener_nodo_nombre(self.que)
        texto, ok = QInputDialog.getText(
            self, "Mover",
            "Ingresa nombre de la carpeta contenedora(dropbox para carpeta principal):"
        )
        if ok:
            if texto == '':
                pass
            else:
                if texto == 'dropbox':
                    try:
                        self.client.files_move(nodo.id_nodo, '/' + nodo.nombre)
                        aux = self.arbol.sacar_nodo(nodo)
                        aux.agregando_a_arbol(self.arbol, '')
                    except dropbox.exceptions.ApiError:
                        self.mainwindow.statusBar().showMessage(
                            'Carpeta ya existe con el mismo nombre en el destino'
                        )
                else:
                    nodo_llegada = self.arbol.obtener_nodo_nombre(texto)
                    if nodo_llegada is not None and nodo_llegada.valor == '013':
                        try:
                            self.client.files_move(
                                nodo.id_nodo,
                                nodo_llegada.id_nodo + '/' + nodo.nombre)
                            aux = self.arbol.sacar_nodo(nodo)
                            aux.agregando_a_arbol(self.arbol,
                                                  nodo_llegada.id_nodo)
                        except dropbox.exceptions.ApiError:
                            otra = self.mainwindow.statusBar()
                            otra.showMessage(
                                'Carpeta ya existe con el mismo nombre en el destino'
                            )
                    elif nodo_llegada is not None and nodo_llegada.valor == '012':
                        otra = self.mainwindow.statusBar()
                        otra.showMessage('Tienes que moverlo a una carpeta')
                    else:
                        otra = self.mainwindow.statusBar()
                        otra.showMessage('Tienes que moverlo a una carpeta')
                self.init_GUI()

    def renombrar(self):
        nodo = self.arbol.obtener_nodo_nombre(self.que)
        texto, ok = QInputDialog.getText(
            self, "Renombrar", "Nuevo nombre con la extencion si es archivo:")
        if ok:
            if texto == '':
                pass
            else:
                if self.arbol.obtener_nodo_nombre(texto) is None:
                    if nodo.valor == '012':
                        numero = texto.find('.')
                        if numero != -1:
                            if texto.split('.')[1] == nodo.nombre.split(
                                    '.')[1]:
                                id_padre = nodo.id_padre
                                nuevo_id = id_padre + '/' + texto
                                self.client.files_move(nodo.id_nodo, nuevo_id)
                                aux = self.arbol.sacar_nodo(nodo)
                                self.arbol.agregar_nodo(id_nodo=nuevo_id,
                                                        valor=nodo.valor,
                                                        id_padre=id_padre,
                                                        nombre=texto)
                                for i in aux.hijos.values():
                                    i.agregando_a_arbol(self.arbol, nuevo_id)
                                self.init_GUI()
                            else:
                                self.mainwindow.statusBar().showMessage(
                                    'Falta la extencion')
                        else:
                            self.mainwindow.statusBar().showMessage(
                                'Falta la extencion')
                    elif nodo.valor == '013':
                        id_padre = nodo.id_padre
                        nuevo_id = id_padre + '/' + texto
                        try:
                            self.client.files_move(nodo.id_nodo, nuevo_id)
                            aux = self.arbol.sacar_nodo(nodo)
                            self.arbol.agregar_nodo(id_nodo=nuevo_id,
                                                    valor=nodo.valor,
                                                    id_padre=id_padre,
                                                    nombre=texto)
                            for i in aux.hijos.values():
                                i.agregando_a_arbol(self.arbol, nuevo_id)
                            self.init_GUI()
                        except dropbox.exceptions.ApiError:
                            self.mainwindow.statusBar().showMessage(
                                'Nombre ya existe, escoja uno diferente')
                else:
                    self.mainwindow.statusBar().showMessage(
                        'Nombre ya existe, escoja uno diferente')

    def openmenu(self, position):

        indexes = self.treeView.selectedIndexes()
        ver_status = QAction(QIcon(None), '&Agregar Archivo', self)
        ver_status.setStatusTip('Agregar Archivo')
        ver_status.triggered.connect(self.agregar_archivo)
        ver_status2 = QAction(QIcon(None), '&Agregar Carpeta', self)
        ver_status2.setStatusTip('Agregar Carpeta')
        ver_status2.triggered.connect(self.agregar_carpeta)
        ver_status3 = QAction(QIcon(None), '&Descargar Archivo', self)
        ver_status3.setStatusTip('Descargando Archivo')
        ver_status3.triggered.connect(self.descargar_archivo)
        ver_status4 = QAction(QIcon(None), '&Descargar Carpeta', self)
        ver_status4.setStatusTip('Descargando Carpeta')
        ver_status4.triggered.connect(self.descargar_carpeta)
        ver_status5 = QAction(QIcon(None), '&Borrar Archivo', self)
        ver_status5.setStatusTip('Borrando Archivo')
        ver_status5.triggered.connect(self.borrar)
        ver_status6 = QAction(QIcon(None), '&Borrar Carpeta', self)
        ver_status6.setStatusTip('Borrando Carpeta')
        ver_status6.triggered.connect(self.borrar)
        ver_status10 = QAction(QIcon(None), '&Crear Carpeta', self)
        ver_status10.setStatusTip('Crear Carpeta')
        ver_status10.triggered.connect(self.crear_carpeta)
        ver_status7 = QAction(QIcon(None), '&Ver Historial', self)
        ver_status7.setStatusTip('Ver Historial')
        ver_status7.triggered.connect(self.historial)
        ver_status8 = QAction(QIcon(None), '&Mover', self)
        ver_status8.setStatusTip('Mover')
        ver_status8.triggered.connect(self.mover)
        ver_status9 = QAction(QIcon(None), '&Renombrar', self)
        ver_status9.setStatusTip('Renombrar')
        ver_status9.triggered.connect(self.renombrar)
        menu = QMenu()
        if len(indexes) > 0:
            self.que = indexes[0].data()
            menu.addAction(ver_status)
            menu.addAction(ver_status2)
            nodo = self.arbol.obtener_nodo_nombre(self.que)
            if nodo.valor == '013':
                menu.addAction(ver_status4)
                menu.addAction(ver_status6)
            else:
                menu.addAction(ver_status3)
                menu.addAction(ver_status5)
            menu.addAction(ver_status10)
            menu.addAction(ver_status7)
            menu.addAction(ver_status8)
            menu.addAction(ver_status9)

        menu.exec_(self.treeView.viewport().mapToGlobal(position))

    def salir(self):
        QCoreApplication.instance().quit()
Exemplo n.º 2
0
class Window(QWidget):
    def __init__(self, client, mainwindow):

        QWidget.__init__(self)
        self.mainwindow = mainwindow
        self.que = ''
        self.client = client
        self.arbol = Arbol('')
        self.crear_arbol('')
        self.treeView = QTreeView()
        self.treeView.setContextMenuPolicy(Qt.CustomContextMenu)
        self.treeView.customContextMenuRequested.connect(self.openmenu)
        self.model = QStandardItemModel()
        self.additems(self.model, self.arbol)
        self.treeView.setModel(self.model)

        self.model.setHorizontalHeaderLabels([self.tr("Dropbox")])

        layout = QVBoxLayout()
        layout.addWidget(self.treeView)
        self.setLayout(layout)

    def init_GUI(self):
        self.model = QStandardItemModel()
        self.additems(self.model, self.arbol)
        self.treeView.setModel(self.model)
        self.model.setHorizontalHeaderLabels([self.tr("Dropbox")])

    def additems(self, parent, elements):
        for text in elements.hijos.keys():
            nombre = elements.hijos[text].nombre
            item = QStandardItem(nombre)
            parent.appendRow(item)
            if elements.hijos[text]:
                self.additems(item, elements.hijos[text])

    def crear_arbol(self, path):
        lista = self.client.files_list_folder('').entries
        lista2 = self.client.files_list_folder('', recursive=True).entries
        for text in lista:
            nombre = text.name
            path_nuevo = text.path_lower
            if type(text) == FolderMetadata:
                self.arbol.agregar_nodo(path_nuevo, nombre, '013', '')
            else:
                self.arbol.agregar_nodo(path_nuevo, nombre, '012', '')
        for text in lista2:
            nombre = text.name
            path_nuevo = text.path_lower
            nombre2 = path_nuevo.split('/')
            padre = path_nuevo.replace('/{}'.format(nombre2[-1]), '')
            if type(text) == FolderMetadata:
                self.arbol.agregar_nodo(path_nuevo, nombre, '013', padre)
            else:
                self.arbol.agregar_nodo(path_nuevo, nombre, '012', padre)

    def agregar_archivo(self):
        nodo = self.arbol.obtener_nodo_nombre(self.que)
        if nodo.valor == '013':
            self.mainwindow.padre = nodo.id_nodo
            self.mainwindow.botonnuevo_archivo()
        else:
            self.mainwindow.padre = nodo.id_padre
            self.mainwindow.botonnuevo_archivo()

    def agregar_carpeta(self):
        nodo = self.arbol.obtener_nodo_nombre(self.que)
        if nodo.valor == '013':
            self.mainwindow.padre = nodo.id_nodo
            self.mainwindow.botonnueva_carpeta()
        else:
            self.mainwindow.padre = nodo.id_padre
            self.mainwindow.botonnueva_carpeta()

    def crear_carpeta(self):
        nodo = self.arbol.obtener_nodo_nombre(self.que)
        texto, ok = QInputDialog.getText(self, "Titulo", "Nombre de la nueva carpeta:")
        if ok:
            if texto == '':
                pass
            else:
                if nodo.valor == '012':
                    nombre = nodo.id_padre + '/' + texto
                    try:
                        self.client.files_create_folder(nombre)
                        self.form.arbol.agregar_nodo(id_nodo=nombre, nombre=texto, valor='013', id_padre=nodo.id_padre)
                        self.statusBar().showMessage('Carpeta agregada: {}'.format(nombre))
                        self.form.init_GUI()
                    except dropbox.exceptions.ApiError:
                        self.statusBar().showMessage('Nombre de carpeta ya existe: {}'.format(nombre))
                elif nodo.valor == '013':
                    nombre = nodo.id_nodo + '/' + texto
                    try:
                        self.client.files_create_folder(nombre)
                        self.form.arbol.agregar_nodo(id_nodo=nombre, nombre=texto, valor='013', id_padre=nodo.id_nodo)
                        self.statusBar().showMessage('Carpeta agregada: {}'.format(nombre))
                        self.form.init_GUI()
                    except dropbox.exceptions.ApiError:
                        self.statusBar().showMessage('Nombre de carpeta ya existe: {}'.format(nombre))

    def descargar_archivo(self):
        fileName = QFileDialog.getExistingDirectory(self, 'Escoge Carpeta de descarga', QDir.rootPath())
        if fileName:
            nodo = self.arbol.obtener_nodo_nombre(self.que)
            nombre = nodo.id_nodo.split('/')
            self.client.files_download_to_file(fileName + '\\' + nombre[-1], nodo.id_nodo)
            self.mainwindow.statusBar().showMessage('Descargado: {}'.format(nombre[-1]))

    def descargar_carpeta(self):
        fileName = QFileDialog.getExistingDirectory(self, 'Escoge Carpeta de descarga', QDir.rootPath())
        if fileName:
            os.makedirs("{}".format(str(fileName + '\\' + self.que)))
            nodo = self.arbol.obtener_nodo_nombre(self.que)
            self.mainwindow.statusBar().showMessage('Descargando: {}'.format(self.que))
            self.mandar_descarga_carpeta(fileName + '\\' + self.que, nodo)
            self.mainwindow.statusBar().showMessage('Listo la descarga: {}'.format(self.que))

    def borrar(self):
        nodo = self.arbol.obtener_nodo_nombre(self.que)
        self.client.files_delete(nodo.id_nodo)
        self.mainwindow.statusBar().showMessage('Borrando: {}'.format(self.que))
        self.arbol.borrar_nodo(id_padre=nodo.id_padre, id_nodo=nodo.id_nodo)
        self.mainwindow.statusBar().showMessage('Listo: {}'.format(self.que))
        self.init_GUI()

    def mandar_descarga_carpeta(self, path, nodo):
        for i in nodo.hijos.keys():
            archivo = nodo.hijos[i].valor
            if archivo == '012':
                self.client.files_download_to_file(path + '\\' + nodo.hijos[i].nombre, nodo.hijos[i].id_nodo)
            else:
                os.makedirs("{}".format(str(path + '\\' + nodo.hijos[i].nombre)))
                self.mandar_descarga_carpeta(str(path + '\\' + nodo.hijos[i].nombre), nodo.hijos[i])

    def historial(self):
        nodo = self.arbol.obtener_nodo_nombre(self.que)
        if nodo.valor == '012':
            data = self.client.files_list_revisions(nodo.id_nodo, limit=10).entries
            self.historia = Historial(data)
            self.historia.table.show()
        elif nodo.valor == '013':
            data = []
            for i in nodo.hijos.values():
                if i.valor == '012':
                    data2 = self.client.files_list_revisions(i.id_nodo, limit=10).entries
                    data += data2
            self.historia2 = Historial(data)
            self.historia2.table.show()

    def mover(self):
        nodo = self.arbol.obtener_nodo_nombre(self.que)
        texto, ok = QInputDialog.getText(self, "Mover",
                                         "Ingresa nombre de la carpeta contenedora(dropbox para carpeta principal):")
        if ok:
            if texto == '':
                pass
            else:
                if texto == 'dropbox':
                    try:
                        self.client.files_move(nodo.id_nodo, '/' + nodo.nombre)
                        aux = self.arbol.sacar_nodo(nodo)
                        aux.agregando_a_arbol(self.arbol, '')
                    except dropbox.exceptions.ApiError:
                        self.mainwindow.statusBar().showMessage('Carpeta ya existe con el mismo nombre en el destino')
                else:
                    nodo_llegada = self.arbol.obtener_nodo_nombre(texto)
                    if nodo_llegada is not None and nodo_llegada.valor == '013':
                        try:
                            self.client.files_move(nodo.id_nodo, nodo_llegada.id_nodo + '/' + nodo.nombre)
                            aux = self.arbol.sacar_nodo(nodo)
                            aux.agregando_a_arbol(self.arbol, nodo_llegada.id_nodo)
                        except dropbox.exceptions.ApiError:
                            otra = self.mainwindow.statusBar()
                            otra.showMessage('Carpeta ya existe con el mismo nombre en el destino')
                    elif nodo_llegada is not None and nodo_llegada.valor == '012':
                        otra = self.mainwindow.statusBar()
                        otra.showMessage('Tienes que moverlo a una carpeta')
                    else:
                        otra = self.mainwindow.statusBar()
                        otra.showMessage('Tienes que moverlo a una carpeta')
                self.init_GUI()

    def renombrar(self):
        nodo = self.arbol.obtener_nodo_nombre(self.que)
        texto, ok = QInputDialog.getText(self, "Renombrar",
                                         "Nuevo nombre con la extencion si es archivo:")
        if ok:
            if texto == '':
                pass
            else:
                if self.arbol.obtener_nodo_nombre(texto) is None:
                    if nodo.valor == '012':
                        numero = texto.find('.')
                        if numero != -1:
                            if texto.split('.')[1] == nodo.nombre.split('.')[1]:
                                id_padre = nodo.id_padre
                                nuevo_id = id_padre + '/' + texto
                                self.client.files_move(nodo.id_nodo, nuevo_id)
                                aux = self.arbol.sacar_nodo(nodo)
                                self.arbol.agregar_nodo(id_nodo=nuevo_id, valor=nodo.valor, id_padre=id_padre,
                                                        nombre=texto)
                                for i in aux.hijos.values():
                                    i.agregando_a_arbol(self.arbol, nuevo_id)
                                self.init_GUI()
                            else:
                                self.mainwindow.statusBar().showMessage('Falta la extencion')
                        else:
                            self.mainwindow.statusBar().showMessage('Falta la extencion')
                    elif nodo.valor == '013':
                        id_padre = nodo.id_padre
                        nuevo_id = id_padre + '/' + texto
                        try:
                            self.client.files_move(nodo.id_nodo, nuevo_id)
                            aux = self.arbol.sacar_nodo(nodo)
                            self.arbol.agregar_nodo(id_nodo=nuevo_id, valor=nodo.valor, id_padre=id_padre, nombre=texto)
                            for i in aux.hijos.values():
                                i.agregando_a_arbol(self.arbol, nuevo_id)
                            self.init_GUI()
                        except dropbox.exceptions.ApiError:
                            self.mainwindow.statusBar().showMessage('Nombre ya existe, escoja uno diferente')
                else:
                    self.mainwindow.statusBar().showMessage('Nombre ya existe, escoja uno diferente')

    def openmenu(self, position):

        indexes = self.treeView.selectedIndexes()
        ver_status = QAction(QIcon(None), '&Agregar Archivo', self)
        ver_status.setStatusTip('Agregar Archivo')
        ver_status.triggered.connect(self.agregar_archivo)
        ver_status2 = QAction(QIcon(None), '&Agregar Carpeta', self)
        ver_status2.setStatusTip('Agregar Carpeta')
        ver_status2.triggered.connect(self.agregar_carpeta)
        ver_status3 = QAction(QIcon(None), '&Descargar Archivo', self)
        ver_status3.setStatusTip('Descargando Archivo')
        ver_status3.triggered.connect(self.descargar_archivo)
        ver_status4 = QAction(QIcon(None), '&Descargar Carpeta', self)
        ver_status4.setStatusTip('Descargando Carpeta')
        ver_status4.triggered.connect(self.descargar_carpeta)
        ver_status5 = QAction(QIcon(None), '&Borrar Archivo', self)
        ver_status5.setStatusTip('Borrando Archivo')
        ver_status5.triggered.connect(self.borrar)
        ver_status6 = QAction(QIcon(None), '&Borrar Carpeta', self)
        ver_status6.setStatusTip('Borrando Carpeta')
        ver_status6.triggered.connect(self.borrar)
        ver_status10 = QAction(QIcon(None), '&Crear Carpeta', self)
        ver_status10.setStatusTip('Crear Carpeta')
        ver_status10.triggered.connect(self.crear_carpeta)
        ver_status7 = QAction(QIcon(None), '&Ver Historial', self)
        ver_status7.setStatusTip('Ver Historial')
        ver_status7.triggered.connect(self.historial)
        ver_status8 = QAction(QIcon(None), '&Mover', self)
        ver_status8.setStatusTip('Mover')
        ver_status8.triggered.connect(self.mover)
        ver_status9 = QAction(QIcon(None), '&Renombrar', self)
        ver_status9.setStatusTip('Renombrar')
        ver_status9.triggered.connect(self.renombrar)
        menu = QMenu()
        if len(indexes) > 0:
            self.que = indexes[0].data()
            menu.addAction(ver_status)
            menu.addAction(ver_status2)
            nodo = self.arbol.obtener_nodo_nombre(self.que)
            if nodo.valor == '013':
                menu.addAction(ver_status4)
                menu.addAction(ver_status6)
            else:
                menu.addAction(ver_status3)
                menu.addAction(ver_status5)
            menu.addAction(ver_status10)
            menu.addAction(ver_status7)
            menu.addAction(ver_status8)
            menu.addAction(ver_status9)

        menu.exec_(self.treeView.viewport().mapToGlobal(position))

    def salir(self):
        QCoreApplication.instance().quit()