Example #1
0
    def __init__(self, *args):
        super().__init__(*args)

        from shared.config import SettingsAccessorBase
        from Settings import DEFAULT_SETTINGS
        self.settings = SettingsAccessorBase(constants.FRONTEND_CONFIG_FILE,
                                             DEFAULT_SETTINGS)
        self.aboutToQuit.connect(lambda: self.settings.save())

        from models import TaskModel, AdapterManager, ProxyModel
        from Schedule.model import SchedulerModel

        self.taskModel = TaskModel()
        self.proxyModel = ProxyModel()
        self.proxyModel.setSourceModel(self.taskModel)
        self.schedulerModel = SchedulerModel(self)
        self.schedulerModel.setSourceModel(self.taskModel)

        self.adapterManager = AdapterManager(taskModel=self.taskModel)
        for name, item in self.settings.itr_sections_with_prefix("adapter"):
            self.adapterManager.loadAdapter(item)

        from Tasks.action import TaskCreationAgent
        self.taskCreationAgent = TaskCreationAgent(self)
        self.taskCreationAgent.available.connect(self.slotCreateTask)
        self.taskCreationDlg = None

        from Services import SessionService
        self.sessionService = SessionService(self)

        from Widgets.Main import QmlMain
        self.qmlWin = QmlMain(None)
        self.qmlWin.show()
        self.aboutToQuit.connect(lambda: self.qmlWin.deleteLater())
Example #2
0
    def __init__(self, *args):
        super().__init__(*args)
        logging.info("XWARE DESKTOP STARTS")
        self.setApplicationName("XwareDesktop")
        self.setApplicationVersion(__version__)
        os.chdir(os.path.dirname(os.path.abspath(__file__)))
        self.checkOneInstance()

        font = QFont()
        font.setPointSize(10)
        self.setFont(font)

        QIcon.setThemeName(
            "")  # Compat for Ubuntu 14.04: A magical fix for #102

        from Settings import DEFAULT_SETTINGS
        from shared.config import SettingsAccessorBase
        self.settings = SettingsAccessorBase(constants.FRONTEND_CONFIG_FILE,
                                             DEFAULT_SETTINGS)
        self.aboutToQuit.connect(lambda: self.settings.save())

        from models import TaskModel, AdapterManager, ProxyModel

        self.taskModel = TaskModel()
        self.proxyModel = ProxyModel()
        self.proxyModel.setSourceModel(self.taskModel)

        self.adapterManager = AdapterManager(taskModel=self.taskModel)
        for name, item in self.settings.itr_sections_with_prefix("adapter"):
            self.adapterManager.loadAdapter(item)

        # components
        from Services import SessionService
        self.sessionService = SessionService(self)

        from Widgets.systray import Systray
        from Notify import Notifier
        from Schedule.model import SchedulerModel
        from Tasks.action import TaskCreationAgent

        self.systray = Systray(self)
        self.notifier = Notifier(taskModel=self.taskModel,
                                 frontendSettings=self.settings["frontend"],
                                 parent=self)
        self.schedulerModel = SchedulerModel(self)
        self.schedulerModel.setSourceModel(self.taskModel)
        self.taskCreationAgent = TaskCreationAgent(self)
        self.monitorWin = None
        self.applySettings.connect(self.slotCreateCloseMonitorWindow)

        # Legacy parts
        from legacy import main
        from legacy.frontendpy import FrontendPy
        self.mainWin = main.MainWindow(
            adapter=self.adapterManager[0],
            taskCreationAgent=self.taskCreationAgent,
            frontendSettings=self.settings["frontend"],
            app=self)
        self.mainWin.show()
        self.frontendpy = FrontendPy(
            taskCreationAgent=self.taskCreationAgent,
            legacySettings=self.settings["legacy"],
            adapterSettings=self.settings["adapter-legacy"],
            adapter=self.adapterManager[0],
            mainWin=self.mainWin,
            parent=self)
        self.sigMainWinLoaded.emit()

        self.applySettings.emit()

        upgradeGuide = None
        if self.settings.myGet("internal", "previousversion") == "0.8":
            # upgraded or fresh installed
            upgradeGuide = "https://github.com/Xinkai/XwareDesktop/wiki/使用说明"
        else:
            previousdate = self.settings.getfloat("internal", "previousdate")
            if previousdate == 0:  # upgrade from pre-0.12
                upgradeGuide = "https://github.com/Xinkai/XwareDesktop/wiki/升级到0.12"

        if upgradeGuide:
            from PyQt5.QtCore import QUrl
            from PyQt5.QtGui import QDesktopServices
            QDesktopServices.openUrl(QUrl(upgradeGuide))

        self.settings.set("internal", "previousversion", __version__)
        self.settings.setfloat("internal", "previousdate", DATE)
Example #3
0
    def test_settings(self):
        d = {
            "foo": {
                "fooint": 1,
                "foofloat": 1.1,
                "foostr": "foo!",
            },
            "bar": {
                "bartrue": True,
                "barnone": None,
                "barfalse": False,
            },
        }
        with tempfile.NamedTemporaryFile() as f:
            text = """
[foo2]
nihao = hello
zaijian = 88

[bar]
bartrue = False
"""
            f.write(text.encode("UTF-8"))
            f.flush()
            s = SettingsAccessorBase(configFilePath=f.name, defaults=d)

            self.assertEqual(s.getint("foo", "fooint"), 1)
            self.assertEqual(s.getfloat("foo", "foofloat"), 1.1)
            self.assertEqual(s.get("foo", "foostr"), "foo!")
            self.assertTrue(s.has("foo", "foostr"))
            self.assertFalse(s.has("foo", "notthere"))

            self.assertEqual(s.getbool("bar", "bartrue"), False)
            self.assertEqual(s.get("bar", "barnone"), None)
            self.assertEqual(s.getbool("bar", "barfalse"), False)

            # proxy
            foo = s["foo"]
            self.assertEqual(foo.getint("fooint"), 1)
            self.assertEqual(foo.getfloat("foofloat"), 1.1)
            self.assertEqual(foo.get("foostr"), "foo!")
            self.assertTrue(foo.has("foostr"))
            self.assertFalse(foo.has("notthere"))

            bar = s["bar"]
            self.assertEqual(bar.getbool("bartrue"), False)
            self.assertEqual(bar.get("barnone"), None)
            self.assertEqual(bar.getbool("barfalse"), False)

            names = []
            for secName, sec in s.itr_sections_with_prefix("foo"):
                names.append(secName)
            self.assertSetEqual(set(names), {"foo", "foo2"})

            foo2 = s["foo2"]
            self.assertEqual(foo2.get("nihao"), "hello")

            # set
            foo.setfloat("pi", 3.1415)
            s.setint("bar", "bartrue", 5)
            s.setbool("foo2", "zaijian", True)

            # access the non-existent
            self.assertRaises(KeyError, s.__getitem__, "walala")
            self.assertRaises(KeyError, foo.__getitem__, "walala")
            self.assertRaises(KeyError, foo2.__getitem__, "walala")

            s.save()

            f.seek(0)
            self.assertEqual(
                f.read(), b"""[foo2]
nihao = hello
zaijian = 1

[bar]
bartrue = 5

[foo]
pi = 3.1415

""")