示例#1
0
    def __init__(self, app):
        QMainWindow.__init__(self)
        try:
            for font in os.listdir(CWD + 'fonts'):
                try:
                    QFontDatabase.addApplicationFont(CWD + 'fonts/' + font)
                except Exception, e:
                    print e
        except OSError:
            pass

        if os.path.isfile(CWD + 'config/style.qss'):
            self.setStyleSheet(file(CWD + 'config/style.qss', 'r').read())

        self.centralwidget = QWidget(self)
        self.horizontalLayout_2 = QHBoxLayout(self.centralwidget)

        self.setCentralWidget(self.centralwidget)
        self.statusBar = QStatusBar(self)
        self.setStatusBar(self.statusBar)

        self.toolBar = QToolBar(self)
        self.toolBar.setObjectName('toolBar')

        self._afterMWInit()
        WinterApp.__init__(self)

        self.api.toolBar = self.toolBar
        self.api.statusBar = self.statusBar
        self.api.dialog = self.dialog
        self.api.notify = self.notify

        self.sideBar = WinterSideBar(self)
        self.statusBar.addPermanentWidget(QWidget().setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding))

        self._afterAppInit()
        if self.config.options.debug:
            self.debugger = WinterQtDebug(self)
            self.api.debugger = self.debugger
            self.createAction('warning', self.tr('Debugger'), 'toggleDebug',
                keyseq=QKeySequence(self.debugger.config.options.debug_shortcut), toolbar=True)
            self.flag = WinterFlag()
            self.flag.setIcon(self.api.icons['green'],
                self.tr('Toggle debug panel: %s' % self.debugger.config.options.debug_shortcut))
            self.connect(self.flag, SIGNAL('clicked()'), self.toggleDebug)
            self.statusBar.addPermanentWidget(self.flag)
            self.api.setFlag = self.flag.setIcon

        screen = QDesktopWidget().screenGeometry()
        QMainWindow.setGeometry(self, 0, 0, screen.width(), screen.height())

        self.setWindowTitle(self.config.info['title'])
        self.setWindowIcon(QIcon(self.api.icons['app']))

        for we in WinterEditor.objects.all():
            we._afterAppInit()

        # self.statusBar.showMessage('Done. Switch modes: F4')



        if self.config.options.plugins:
            self.pm.activateAll()
            self.api.info(self.tr('Plugins initialised'))

        self.sm = SettingsManager(self)
        self.createAction('configure', self.tr('Settings'), self.sm.show, keyseq=QKeySequence('Ctrl+P'), toolbar=True)
        self.smflag = WinterFlag()
        self.smflag.setIcon(self.api.icons['configure'], self.tr('Options: Ctrl+P'))
        self.connect(self.smflag, SIGNAL('clicked()'), self.sm.show)
        self.statusBar.addPermanentWidget(self.smflag)
        self.api.info('Application initialised')

        self.createAction('about', self.tr('About'), 'about', keyseq=QKeySequence.HelpContents, toolbar=True)

        self.addToolBar(Qt.TopToolBarArea, self.toolBar)
        if not self.config.options.ui.tb_show:
            self.toolBar.hide()

        self.qs = QSettings('winterside', self.config.info.title)
        #        self.restoreGeometry(self.qs.value("geometry").toByteArray())
        #todo: fix
        #        self.restoreState(self.qs.value("windowState").toByteArray())

        self.signalMapper = QSignalMapper(self)

        self.toolBar.setIconSize(
            QSize(self.config.options.ui.tbicon_size, self.config.options.ui.tbicon_size))
        self.toolBar.setMovable(self.config.options.ui.tb_movable)
        self.resize(self.config.options.ui.width, self.config.options.ui.height)
        self.api.sm = self.sm

        self.config.add(self)

        scriptfiles = ['init.ws', 'hotkeys.ws']

        for fname in scriptfiles:
            path = self.api.CWD + 'scripts/' + fname
            if os.path.isfile(path):
                self.script.executeFile(path)
示例#2
0
    def __init__(self, app):
        QMainWindow.__init__(self)
        try:
            for font in os.listdir(CWD + 'fonts'):
                try:
                    QFontDatabase.addApplicationFont(CWD + 'fonts/' + font)
                except Exception, e:
                    print e
        except OSError:
            pass

        if os.path.isfile(CWD + 'config/style.qss'):
            self.setStyleSheet(file(CWD + 'config/style.qss', 'r').read())

        self.centralwidget = QWidget(self)
        self.horizontalLayout_2 = QHBoxLayout(self.centralwidget)

        self.setCentralWidget(self.centralwidget)
        self.statusBar = QStatusBar(self)
        self.setStatusBar(self.statusBar)

        self.toolBar = QToolBar(self)
        self.toolBar.setObjectName('toolBar')

        self._afterMWInit()
        WinterApp.__init__(self)

        self.api.toolBar = self.toolBar
        self.api.statusBar = self.statusBar
        self.api.dialog = self.dialog
        self.api.notify = self.notify

        self.sideBar = WinterSideBar(self)
        self.statusBar.addPermanentWidget(QWidget().setSizePolicy(
            QSizePolicy.Expanding, QSizePolicy.Expanding))

        self._afterAppInit()
        if self.config.options.debug:
            self.debugger = WinterQtDebug(self)
            self.api.debugger = self.debugger
            self.createAction('warning',
                              self.tr('Debugger'),
                              'toggleDebug',
                              keyseq=QKeySequence(
                                  self.debugger.config.options.debug_shortcut),
                              toolbar=True)
            self.flag = WinterFlag()
            self.flag.setIcon(
                self.api.icons['green'],
                self.tr('Toggle debug panel: %s' %
                        self.debugger.config.options.debug_shortcut))
            self.connect(self.flag, SIGNAL('clicked()'), self.toggleDebug)
            self.statusBar.addPermanentWidget(self.flag)
            self.api.setFlag = self.flag.setIcon

        screen = QDesktopWidget().screenGeometry()
        QMainWindow.setGeometry(self, 0, 0, screen.width(), screen.height())

        self.setWindowTitle(self.config.info['title'])
        self.setWindowIcon(QIcon(self.api.icons['app']))

        for we in WinterEditor.objects.all():
            we._afterAppInit()

        # self.statusBar.showMessage('Done. Switch modes: F4')

        if self.config.options.plugins:
            self.pm.activateAll()
            self.api.info(self.tr('Plugins initialised'))

        self.sm = SettingsManager(self)
        self.createAction('configure',
                          self.tr('Settings'),
                          self.sm.show,
                          keyseq=QKeySequence('Ctrl+P'),
                          toolbar=True)
        self.smflag = WinterFlag()
        self.smflag.setIcon(self.api.icons['configure'],
                            self.tr('Options: Ctrl+P'))
        self.connect(self.smflag, SIGNAL('clicked()'), self.sm.show)
        self.statusBar.addPermanentWidget(self.smflag)
        self.api.info('Application initialised')

        self.createAction('about',
                          self.tr('About'),
                          'about',
                          keyseq=QKeySequence.HelpContents,
                          toolbar=True)

        self.addToolBar(Qt.TopToolBarArea, self.toolBar)
        if not self.config.options.ui.tb_show:
            self.toolBar.hide()

        self.qs = QSettings('winterside', self.config.info.title)
        #        self.restoreGeometry(self.qs.value("geometry").toByteArray())
        #todo: fix
        #        self.restoreState(self.qs.value("windowState").toByteArray())

        self.signalMapper = QSignalMapper(self)

        self.toolBar.setIconSize(
            QSize(self.config.options.ui.tbicon_size,
                  self.config.options.ui.tbicon_size))
        self.toolBar.setMovable(self.config.options.ui.tb_movable)
        self.resize(self.config.options.ui.width,
                    self.config.options.ui.height)
        self.api.sm = self.sm

        self.config.add(self)

        scriptfiles = ['init.ws', 'hotkeys.ws']

        for fname in scriptfiles:
            path = self.api.CWD + 'scripts/' + fname
            if os.path.isfile(path):
                self.script.executeFile(path)
示例#3
0
class WinterQtApp(QMainWindow, WinterApp, QObject):
    __apiclass__ = API

    def __init__(self, app):
        QMainWindow.__init__(self)
        try:
            for font in os.listdir(CWD + 'fonts'):
                try:
                    QFontDatabase.addApplicationFont(CWD + 'fonts/' + font)
                except Exception, e:
                    print e
        except OSError:
            pass

        if os.path.isfile(CWD + 'config/style.qss'):
            self.setStyleSheet(file(CWD + 'config/style.qss', 'r').read())

        self.centralwidget = QWidget(self)
        self.horizontalLayout_2 = QHBoxLayout(self.centralwidget)

        self.setCentralWidget(self.centralwidget)
        self.statusBar = QStatusBar(self)
        self.setStatusBar(self.statusBar)

        self.toolBar = QToolBar(self)
        self.toolBar.setObjectName('toolBar')

        self._afterMWInit()
        WinterApp.__init__(self)

        self.api.toolBar = self.toolBar
        self.api.statusBar = self.statusBar
        self.api.dialog = self.dialog
        self.api.notify = self.notify

        self.sideBar = WinterSideBar(self)
        self.statusBar.addPermanentWidget(QWidget().setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding))

        self._afterAppInit()
        if self.config.options.debug:
            self.debugger = WinterQtDebug(self)
            self.api.debugger = self.debugger
            self.createAction('warning', self.tr('Debugger'), 'toggleDebug',
                keyseq=QKeySequence(self.debugger.config.options.debug_shortcut), toolbar=True)
            self.flag = WinterFlag()
            self.flag.setIcon(self.api.icons['green'],
                self.tr('Toggle debug panel: %s' % self.debugger.config.options.debug_shortcut))
            self.connect(self.flag, SIGNAL('clicked()'), self.toggleDebug)
            self.statusBar.addPermanentWidget(self.flag)
            self.api.setFlag = self.flag.setIcon

        screen = QDesktopWidget().screenGeometry()
        QMainWindow.setGeometry(self, 0, 0, screen.width(), screen.height())

        self.setWindowTitle(self.config.info['title'])
        self.setWindowIcon(QIcon(self.api.icons['app']))

        for we in WinterEditor.objects.all():
            we._afterAppInit()

        # self.statusBar.showMessage('Done. Switch modes: F4')



        if self.config.options.plugins:
            self.pm.activateAll()
            self.api.info(self.tr('Plugins initialised'))

        self.sm = SettingsManager(self)
        self.createAction('configure', self.tr('Settings'), self.sm.show, keyseq=QKeySequence('Ctrl+P'), toolbar=True)
        self.smflag = WinterFlag()
        self.smflag.setIcon(self.api.icons['configure'], self.tr('Options: Ctrl+P'))
        self.connect(self.smflag, SIGNAL('clicked()'), self.sm.show)
        self.statusBar.addPermanentWidget(self.smflag)
        self.api.info('Application initialised')

        self.createAction('about', self.tr('About'), 'about', keyseq=QKeySequence.HelpContents, toolbar=True)

        self.addToolBar(Qt.TopToolBarArea, self.toolBar)
        if not self.config.options.ui.tb_show:
            self.toolBar.hide()

        self.qs = QSettings('winterside', self.config.info.title)
        #        self.restoreGeometry(self.qs.value("geometry").toByteArray())
        #todo: fix
        #        self.restoreState(self.qs.value("windowState").toByteArray())

        self.signalMapper = QSignalMapper(self)

        self.toolBar.setIconSize(
            QSize(self.config.options.ui.tbicon_size, self.config.options.ui.tbicon_size))
        self.toolBar.setMovable(self.config.options.ui.tb_movable)
        self.resize(self.config.options.ui.width, self.config.options.ui.height)
        self.api.sm = self.sm

        self.config.add(self)

        scriptfiles = ['init.ws', 'hotkeys.ws']

        for fname in scriptfiles:
            path = self.api.CWD + 'scripts/' + fname
            if os.path.isfile(path):
                self.script.executeFile(path)

    def on_tb_show(self, value):
        if value:
            self.toolBar.show()
        else:
            self.toolBar.hide()

    def on_tbicon_size(self, value):
        self.toolBar.setIconSize(QSize(value, value))

    def on_tb_movable(self, value):
        self.toolBar.setMovable(value)

    def on_sbicon_size(self, value):
        self.sideBar.setIconSize(QSize(value, value))

    def on_sb_movable(self, value):
        self.sideBar.setMovable(value)

    def on_height(self, value):
        self.resize(self.config.options.ui.width, value)

    def on_width(self, value):
        self.resize(value, self.config.options.ui.height)

    def setMainWidget(self, widget):
        self.mainWidget = widget
        self.mainWidget.api = self.api
        self.api.mainWidget = self.mainWidget
        self.horizontalLayout_2.addWidget(self.mainWidget)
        self.horizontalLayout_2.setStretch(0, 3)

    def createSBAction(self, icon, name, widget, keyseq='', toolbar=False):
        if type(icon).__name__ != 'QIcon':
            icon = QIcon.fromTheme(icon, QIcon(self.api.icons[icon]))
        action = SBAction(self.sideBar.dock, icon, name, self)
        action.widget = widget
        self.sideBar.stack.addWidget(widget)
        action.triggered.connect(functools.partial(action.showWidget))
        if keyseq:
            action.setShortcut(keyseq)
        if toolbar:
            self.sideBar.addAction(action)
        self.addAction(action)
        return action

    def showSideBar(self, widget):
        print widget


    def createAction(self, icon, name, method, module='main', keyseq='', toolbar=False):
        if type(icon).__name__ != 'QIcon' and icon:
            icon = QIcon.fromTheme(icon, QIcon(self.api.icons[icon]))
        elif not icon:
            icon = QIcon()
        action = WinterAction(icon, name, self)
        if keyseq:
            action.setShortcut(keyseq)
        if type(method).__name__ == 'str':
            method = self.getMethod(method, module)
        self.connect(action, SIGNAL('triggered()'), method)
        if toolbar:
            self.toolBar.addAction(action)
        self.addAction(action)
        return action

    def about(self):
        self.dialog('about', 'About %s (%s)' % (self.config.info.title, self.config.info.version),
            getFileContent(CWD + 'ABOUT'))

    def input(self, title='Input dialog', text='Please input'):
        inputline = ''
        inputline = QInputDialog.getText(self, title, text)
        self['debug']('input value: %s' % inputline[0])
        return inputline[0]

    def dialog(self, type='info', title='Dialog', text='oops!!'):
        if type == 'info':
            QMessageBox.information(self, title, text)
        elif type == 'warning':
            QMessageBox.warning(self, title, text)
        elif type == 'critical':
            QMessageBox.critical(self, title, text)
        elif type == 'about':
            QMessageBox.about(self, title, text)

    def toggleDebug(self):
        if self.debugger.isHidden():
            self.debugger.show()
        else:
            self.debugger.hide()

    def _afterMWInit(self):
        pass

    def _afterAppInit(self):
        pass

    def info(self, *args, **kwargs):
        self.api.info(*args, **kwargs)

    def error(self, *args, **kwargs):
        self.api.error(*args, **kwargs)

    def debug(self, *args, **kwargs):
        self.api.debug(*args, **kwargs)

    def echo(self, *args, **kwargs):
        self.dialog(title='Echo', text=args[0])

    #    @try_this(API())
    def getMethod(self, key, module='main'):
        return WinterApp.getMethod(self, key, module)

    def closeEvent(self, event):
        self.qs.setValue("geometry", self.saveGeometry())
        self.qs.setValue("windowState", self.saveState())
        event.accept()

    def notify(self, title, body):
        if self.config.options.notification:
            knotify = dbus.SessionBus().get_object("org.kde.knotify", "/Notify")
            knotify.event('warning', 'inkmoth', [], title, body, [], [], 0, 0, dbus_interface="org.kde.KNotify")


    def setTitle(self, msg):
        self.setWindowTitle('%s [%s]' % (self.config.info.title, msg))

    def exit(self):
        exit()

    def beforeCore(self):
        self.script = WinterScript(self)
        self.api.script = self.script
示例#4
0
class WinterQtApp(QMainWindow, WinterApp, QObject):
    __apiclass__ = API

    def __init__(self, app):
        QMainWindow.__init__(self)
        try:
            for font in os.listdir(CWD + 'fonts'):
                try:
                    QFontDatabase.addApplicationFont(CWD + 'fonts/' + font)
                except Exception, e:
                    print e
        except OSError:
            pass

        if os.path.isfile(CWD + 'config/style.qss'):
            self.setStyleSheet(file(CWD + 'config/style.qss', 'r').read())

        self.centralwidget = QWidget(self)
        self.horizontalLayout_2 = QHBoxLayout(self.centralwidget)

        self.setCentralWidget(self.centralwidget)
        self.statusBar = QStatusBar(self)
        self.setStatusBar(self.statusBar)

        self.toolBar = QToolBar(self)
        self.toolBar.setObjectName('toolBar')

        self._afterMWInit()
        WinterApp.__init__(self)

        self.api.toolBar = self.toolBar
        self.api.statusBar = self.statusBar
        self.api.dialog = self.dialog
        self.api.notify = self.notify

        self.sideBar = WinterSideBar(self)
        self.statusBar.addPermanentWidget(QWidget().setSizePolicy(
            QSizePolicy.Expanding, QSizePolicy.Expanding))

        self._afterAppInit()
        if self.config.options.debug:
            self.debugger = WinterQtDebug(self)
            self.api.debugger = self.debugger
            self.createAction('warning',
                              self.tr('Debugger'),
                              'toggleDebug',
                              keyseq=QKeySequence(
                                  self.debugger.config.options.debug_shortcut),
                              toolbar=True)
            self.flag = WinterFlag()
            self.flag.setIcon(
                self.api.icons['green'],
                self.tr('Toggle debug panel: %s' %
                        self.debugger.config.options.debug_shortcut))
            self.connect(self.flag, SIGNAL('clicked()'), self.toggleDebug)
            self.statusBar.addPermanentWidget(self.flag)
            self.api.setFlag = self.flag.setIcon

        screen = QDesktopWidget().screenGeometry()
        QMainWindow.setGeometry(self, 0, 0, screen.width(), screen.height())

        self.setWindowTitle(self.config.info['title'])
        self.setWindowIcon(QIcon(self.api.icons['app']))

        for we in WinterEditor.objects.all():
            we._afterAppInit()

        # self.statusBar.showMessage('Done. Switch modes: F4')

        if self.config.options.plugins:
            self.pm.activateAll()
            self.api.info(self.tr('Plugins initialised'))

        self.sm = SettingsManager(self)
        self.createAction('configure',
                          self.tr('Settings'),
                          self.sm.show,
                          keyseq=QKeySequence('Ctrl+P'),
                          toolbar=True)
        self.smflag = WinterFlag()
        self.smflag.setIcon(self.api.icons['configure'],
                            self.tr('Options: Ctrl+P'))
        self.connect(self.smflag, SIGNAL('clicked()'), self.sm.show)
        self.statusBar.addPermanentWidget(self.smflag)
        self.api.info('Application initialised')

        self.createAction('about',
                          self.tr('About'),
                          'about',
                          keyseq=QKeySequence.HelpContents,
                          toolbar=True)

        self.addToolBar(Qt.TopToolBarArea, self.toolBar)
        if not self.config.options.ui.tb_show:
            self.toolBar.hide()

        self.qs = QSettings('winterside', self.config.info.title)
        #        self.restoreGeometry(self.qs.value("geometry").toByteArray())
        #todo: fix
        #        self.restoreState(self.qs.value("windowState").toByteArray())

        self.signalMapper = QSignalMapper(self)

        self.toolBar.setIconSize(
            QSize(self.config.options.ui.tbicon_size,
                  self.config.options.ui.tbicon_size))
        self.toolBar.setMovable(self.config.options.ui.tb_movable)
        self.resize(self.config.options.ui.width,
                    self.config.options.ui.height)
        self.api.sm = self.sm

        self.config.add(self)

        scriptfiles = ['init.ws', 'hotkeys.ws']

        for fname in scriptfiles:
            path = self.api.CWD + 'scripts/' + fname
            if os.path.isfile(path):
                self.script.executeFile(path)

    def on_tb_show(self, value):
        if value:
            self.toolBar.show()
        else:
            self.toolBar.hide()

    def on_tbicon_size(self, value):
        self.toolBar.setIconSize(QSize(value, value))

    def on_tb_movable(self, value):
        self.toolBar.setMovable(value)

    def on_sbicon_size(self, value):
        self.sideBar.setIconSize(QSize(value, value))

    def on_sb_movable(self, value):
        self.sideBar.setMovable(value)

    def on_height(self, value):
        self.resize(self.config.options.ui.width, value)

    def on_width(self, value):
        self.resize(value, self.config.options.ui.height)

    def setMainWidget(self, widget):
        self.mainWidget = widget
        self.mainWidget.api = self.api
        self.api.mainWidget = self.mainWidget
        self.horizontalLayout_2.addWidget(self.mainWidget)
        self.horizontalLayout_2.setStretch(0, 3)

    def createSBAction(self, icon, name, widget, keyseq='', toolbar=False):
        if type(icon).__name__ != 'QIcon':
            icon = QIcon.fromTheme(icon, QIcon(self.api.icons[icon]))
        action = SBAction(self.sideBar.dock, icon, name, self)
        action.widget = widget
        self.sideBar.stack.addWidget(widget)
        action.triggered.connect(functools.partial(action.showWidget))
        if keyseq:
            action.setShortcut(keyseq)
        if toolbar:
            self.sideBar.addAction(action)
        self.addAction(action)
        return action

    def showSideBar(self, widget):
        print widget

    def createAction(self,
                     icon,
                     name,
                     method,
                     module='main',
                     keyseq='',
                     toolbar=False):
        if type(icon).__name__ != 'QIcon' and icon:
            icon = QIcon.fromTheme(icon, QIcon(self.api.icons[icon]))
        elif not icon:
            icon = QIcon()
        action = WinterAction(icon, name, self)
        if keyseq:
            action.setShortcut(keyseq)
        if type(method).__name__ == 'str':
            method = self.getMethod(method, module)
        self.connect(action, SIGNAL('triggered()'), method)
        if toolbar:
            self.toolBar.addAction(action)
        self.addAction(action)
        return action

    def about(self):
        self.dialog(
            'about', 'About %s (%s)' %
            (self.config.info.title, self.config.info.version),
            getFileContent(CWD + 'ABOUT'))

    def input(self, title='Input dialog', text='Please input'):
        inputline = ''
        inputline = QInputDialog.getText(self, title, text)
        self['debug']('input value: %s' % inputline[0])
        return inputline[0]

    def dialog(self, type='info', title='Dialog', text='oops!!'):
        if type == 'info':
            QMessageBox.information(self, title, text)
        elif type == 'warning':
            QMessageBox.warning(self, title, text)
        elif type == 'critical':
            QMessageBox.critical(self, title, text)
        elif type == 'about':
            QMessageBox.about(self, title, text)

    def toggleDebug(self):
        if self.debugger.isHidden():
            self.debugger.show()
        else:
            self.debugger.hide()

    def _afterMWInit(self):
        pass

    def _afterAppInit(self):
        pass

    def info(self, *args, **kwargs):
        self.api.info(*args, **kwargs)

    def error(self, *args, **kwargs):
        self.api.error(*args, **kwargs)

    def debug(self, *args, **kwargs):
        self.api.debug(*args, **kwargs)

    def echo(self, *args, **kwargs):
        self.dialog(title='Echo', text=args[0])

    #    @try_this(API())
    def getMethod(self, key, module='main'):
        return WinterApp.getMethod(self, key, module)

    def closeEvent(self, event):
        self.qs.setValue("geometry", self.saveGeometry())
        self.qs.setValue("windowState", self.saveState())
        event.accept()

    def notify(self, title, body):
        if self.config.options.notification:
            knotify = dbus.SessionBus().get_object("org.kde.knotify",
                                                   "/Notify")
            knotify.event('warning',
                          'inkmoth', [],
                          title,
                          body, [], [],
                          0,
                          0,
                          dbus_interface="org.kde.KNotify")

    def setTitle(self, msg):
        self.setWindowTitle('%s [%s]' % (self.config.info.title, msg))

    def exit(self):
        exit()

    def beforeCore(self):
        self.script = WinterScript(self)
        self.api.script = self.script