示例#1
0
class MainWindow(W.QMainWindow, Ui_MainWindow):
    def __init__(self, app):
        super(MainWindow, self).__init__()
        self.App = app
        self.setupUi(self)
        self.show()
        self.setupDragHint()
        self.setupSidebar()
        self.setupFileListArea()
        self.setupStartButton()
        self.setAcceptDrops(True)
        self.configSelector = PresetFile(self, self.configSelector)
        # self.setWindowFlags(Qt.FramelessWindowHint)
        self.setupMessage()
        UpdateChecker(self)

    def resizeEvent(self, event):
        # event.ignore()
        self.NotificationArea.resizeEvent(event)
        self.CenterWidgetUpper.resizeEvent(event)

    def dragEnterEvent(self, event):
        event.accept()

    def dropEvent(self, event):
        event.accept()
        for url in event.mimeData().urls():
            if os.name == "nt":
                self.filelist.addFile(url.url().replace("file:///", "", 1))
            elif os.name == "posix":
                self.filelist.addFile(url.url().replace("file:///", "/", 1))

    def setupDragHint(self):
        opacity(self.dragHint, 0.2)

    def setupSidebar(self):
        pass

    def setupMessage(self):
        self.Message = Message(self)

        def sizeHint():
            sidebarWidth = self.Sidebar.width()
            windowWidth = self.MainWidget.width()
            return QSize(windowWidth - sidebarWidth, self.Message.height)

        def resizeEvent(event):
            self.NotificationArea.adjustSize()
            self.NotificationArea.move(0, self.MainWidget.height() - self.NotificationArea.height())

        self.NotificationArea.sizeHint = sizeHint
        self.NotificationArea.resizeEvent = resizeEvent
        self.NotificationArea.adjustSize()

    def setupStartButton(self):
        def on():
            self.startButton.setChecked(True)
            self.startButton.setText("终止")
            self.Message.show("任务开始")

        def off():
            self.startButton.setChecked(False)
            self.startButton.setText("开始")
            self.Message.show("任务结束")

        def onClick():
            if self.startButton.isChecked() and self.filelist.children:
                self.filelist.startAll()
            elif (not self.startButton.isChecked()) and self.filelist.children:
                self.filelist.killAll()
            else:
                self.Message.show("当前没有任务")
                self.startButton.setChecked(False)

        self.filelist.startSignal.connect(on)
        self.filelist.doneSignal.connect(off)
        self.startButton.clicked.connect(onClick)

    def setupFileListArea(self):
        def sizeHint():
            sidebarWidth = self.Sidebar.width()
            windowWidth = self.MainWidget.width()
            windowHeight = self.MainWidget.height()
            return QSize(windowWidth - sidebarWidth, windowHeight)

        def resizeEvent(event):
            self.CenterWidgetUpper.adjustSize()

        self.CenterWidgetUpper.sizeHint = sizeHint
        self.CenterWidgetUpper.resizeEvent = resizeEvent
        self.CenterWidgetUpper.adjustSize()
        self.filelist = F.FileList(self, self.hasfile)

    def closeEvent(self, event):
        event.accept()
        self.filelist.killAll()
        log("[Application Closed]")