예제 #1
0
class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        QMainWindow.__init__(self, parent)
        self.runned = False
        self.tr = Translator("Thrifty")

        # self.resize(450, 350)
        self.setWindowTitle(self.tr._translate("Thrifty"))
        self.setWindowIcon(QIcon("/usr/share/thrifty/icons/sniper_soldier.png"))

        self.Settings = QSettings("thrifty", "thrifty")

        self.exit_ = QAction(QIcon("/usr/share/thrifty/icons/exit.png"), self.tr._translate("&Exit"), self)
        self.exit_.setShortcut("Ctrl+Q")
        self.exit_.setStatusTip(self.tr._translate("Exit application"))
        self.connect(self.exit_, SIGNAL("triggered()"), self._close)

        listHelp = QAction(QIcon("/usr/share/thrifty/icons/help.png"), self.tr._translate("&About Thrifty"), self)
        listHelp.setStatusTip(self.tr._translate("Read help"))
        self.connect(listHelp, SIGNAL("triggered()"), self.showMSG)

        self.stopProcess = QAction(
            QIcon("/usr/share/thrifty/icons/terminate.png"), self.tr._translate("&Terminate Task"), self
        )
        self.stopProcess.setShortcut("Ctrl+T")
        self.stopProcess.setStatusTip(self.tr._translate("Terminate running task ..."))
        self.stopProcess.setEnabled(False)
        self.connect(self.stopProcess, SIGNAL("triggered()"), self.terminateRunningTask)

        self.separator = QAction("", self)
        self.separator.setSeparator(True)

        self.checkMode = QAction(self.tr._translate("check file`s &mode"), self)
        self.checkMode.setCheckable(True)
        value = str(self.Settings.value("checkFileMode", "False").toString())
        if value.lower() == "true":
            self.checkMode.setChecked(True)
        else:
            self.checkMode.setChecked(False)
        self.connect(self.checkMode, SIGNAL("changed()"), self.setCheckMode)

        self.checkOwners = QAction(self.tr._translate("check  file`s &owners"), self)
        self.checkOwners.setCheckable(True)
        value = str(self.Settings.value("checkFileOwners", "False").toString())
        if value.lower() == "true":
            self.checkOwners.setChecked(True)
        else:
            self.checkOwners.setChecked(False)
        self.connect(self.checkOwners, SIGNAL("changed()"), self.setCheckOwners)

        self.checkMtime = QAction(self.tr._translate("check  file`s mt&ime"), self)
        self.checkMtime.setCheckable(True)
        value = str(self.Settings.value("checkFileMtime", "False").toString())
        if value.lower() == "true":
            self.checkMtime.setChecked(True)
        else:
            self.checkMtime.setChecked(False)
        self.connect(self.checkMtime, SIGNAL("changed()"), self.setCheckMtime)

        self.statusBar = StatusBar(self)
        self.setStatusBar(self.statusBar)

        self.prelink = QAction(QIcon("/usr/share/thrifty/icons/prelink.png"), self.tr._translate("&Prelink"), self)
        self.prelink.setShortcut("Ctrl+P")
        self.prelink.setStatusTip(self.tr._translate("Prelink now"))
        self.prelink.setEnabled(prelinkInstalled)
        self.connect(self.prelink, SIGNAL("triggered()"), self.runPrelink)

        menubar = self.menuBar()

        file_ = menubar.addMenu(self.tr._translate("&File"))
        file_.addAction(self.prelink)
        file_.addAction(self.exit_)

        set_ = menubar.addMenu(self.tr._translate("&Control"))
        set_.addAction(self.stopProcess)
        set_.addAction(self.separator)
        set_.addAction(self.checkMode)
        set_.addAction(self.checkOwners)
        set_.addAction(self.checkMtime)

        help_ = menubar.addMenu(self.tr._translate("&Help"))
        help_.addAction(listHelp)

        self.menuTab = Box(self)
        self.setCentralWidget(self.menuTab)

    def setCheckMode(self):
        state = self.checkMode.isChecked()
        print state
        self.Settings.setValue("checkFileMode", state)

    def setCheckOwners(self):
        state = self.checkOwners.isChecked()
        # print state
        self.Settings.setValue("checkFileOwners", state)

    def setCheckMtime(self):
        state = self.checkMtime.isChecked()
        # print state
        self.Settings.setValue("checkFileMtime", state)

    def detectRunningTask(self):
        name = "Unknown"
        obj = None
        if self.menuTab.checkFile.runned:
            name = "CheckFile"
            obj = self.menuTab.checkFile
        elif self.menuTab.backUp.runned:
            name = "BackUp"
            obj = self.menuTab.backUp
        elif self.menuTab.cleanUp.runned:
            name = "CleanUp"
            obj = self.menuTab.cleanUp
        elif self.menuTab.broken.runned:
            name = "Search Broken"
            obj = self.menuTab.broken
        elif self.runned:
            name = "Prelink"
            obj = self
        return name, obj

    def terminateRunningTask(self):
        name, obj = self.detectRunningTask()
        # print 'Terminated Task : %s' % name
        if obj is not None:
            obj.t.terminate()

    def runPrelink(self):
        self.prelink.setEnabled(False)
        self.menuTab.setTabsState(False)
        # self.progress.show()
        self.runned = True
        print "Prelink running  ..."
        self.t = QProcess()
        Data = QStringList()
        Data.append("prelink")
        Data.append("-a")
        self.t.finished.connect(self.showResult)
        self.t.start("pkexec", Data)
        if self.t.waitForStarted():
            self.runned = True
            # print self.t.state()
        else:
            self.showResult()

    def showResult(self):
        self.prelink.setEnabled(True)
        self.runned = False
        self.menuTab.setTabsState(True)

    def showMSG(self, s=""):
        msg = ListingText(HELP if s == "" else s, self)
        msg.exec_()

    def _close(self):
        self.Settings.sync()
        self.close()