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 __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)
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
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