Example #1
0
class App(QMainWindow):
    def __init__(self):
        super().__init__()

        self.title = 'ADF Explorer'
        self.width = 640
        self.height = 512

        self.adf = ADF(self)

        self.actions = Actions(self)
        self.toolbar = Toolbar(self)
        self.menu = Menu(self)
        self.path = Path(self)
        self.browser = Browser(self)
        self.status = Status(self)

        self.initUI()

    def updateStatusBarMessage(self):
        self.status.setText()

    def updateWindowTitle(self):
        if self.adf.volume:
            self.setWindowTitle(self.title + ': ' + self.adf.volumeName())
        else:
            self.setWindowTitle(self.title)

    def updatePath(self, path):
        self.path.setText(path)

    def updateBrowser(self, entries):
        self.browser.populate(entries)

    def parent(self):
        self.adf.parent()
        self.browser.deselect()

    def navigate(self, path):
        self.adf.navigate(path)
        self.browser.deselect()

    def navigateDown(self, dir):
        self.adf.navigateDown(dir)
        self.browser.deselect()

    def enableFileActions(self):
        self.actions.enableFileActions()

    def disableFileActions(self):
        self.actions.disableFileActions()

    def makeDir(self):
        name, ok = QInputDialog.getText(self, 'Make Directory',
                                        'Please enter a new directory name:')

        if name and ok:
            self.adf.makeDir(name)

    def relabel(self):
        name, ok = QInputDialog.getText(self, 'Relabel',
                                        'Please enter a new volume name:')

        if name and ok:
            self.adf.relabel(name)
            self.updateWindowTitle()

    def delete(self):
        msgbox = QMessageBox(
            QMessageBox.Question, 'Confirm delete',
            'Are you sure you want to delete %s' % self.browser.selectedItem())
        msgbox.addButton(QMessageBox.Yes)
        msgbox.addButton(QMessageBox.No)

        result = msgbox.exec()
        if result == QMessageBox.Yes:
            self.adf.delete(self.browser.selectedItem())

    def extract(self):
        path, _ = QFileDialog.getSaveFileName(self,
                                              'QFileDialog.getSaveFileName()',
                                              '',
                                              '',
                                              options=QFileDialog.Options())

        if path:
            self.adf.extract(self.browser.selectedItem(), path)

    def insert(self):
        dialog = QFileDialog()
        dialog.setFileMode(QFileDialog.AnyFile & QFileDialog.Directory)

        if dialog.exec_():
            paths = dialog.selectedFiles()

            for path in paths:
                self.adf.insert(path)

    def createAdf(self):
        path, _ = QFileDialog.getSaveFileName(self,
                                              'QFileDialog.getSaveFileName()',
                                              '',
                                              '',
                                              options=QFileDialog.Options())

        if path:
            self.adf.create(path)
            self.startBrowsing()

    def openAdf(self):
        path, _ = QFileDialog.getOpenFileName(self,
                                              'QFileDialog.getOpenFileName()',
                                              '',
                                              'ADF Files (*.adf)',
                                              options=QFileDialog.Options())

        if path:
            self.adf.open(path)
            self.startBrowsing()

    def startBrowsing(self, path='/'):
        self.actions.enableAdfActions()
        self.status.setText(self.adf.volumeInfo())
        self.path.enable()
        self.updateWindowTitle()
        self.navigate(path)

    def initUI(self):
        self.setFixedSize(self.width, self.height)
        self.updateWindowTitle()

        self.show()

    def cleanUp(self):
        self.adf.cleanUp()