def createAction(self, text, slot = None, shortcut = None, icon = None, tip = None, checkable = False, signal = "triggered()"): action = QAction(text, self) if icon is not None: action.setIcon(QIcon(osp.sep.join((self.imagepath, "%s.png" % icon)))) if shortcut is not None: action.setShortcut(shortcut) if tip is not None: action.setToolTip(tip) action.setStatusTip(tip) if slot is not None: self.connect(action, SIGNAL(signal), slot) if checkable: action.setCheckable(True) return action
class EditorBar(QToolBar): saveDocAsSignal = pyqtSignal() spellSignal = pyqtSignal(bool) whiteSpaceSignal = pyqtSignal(bool) boldSignal = pyqtSignal(bool) italicSignal = pyqtSignal(bool) underlineSignal = pyqtSignal(bool) strikethroughSignal = pyqtSignal(bool) subscriptSignal = pyqtSignal(bool) superscriptSignal = pyqtSignal(bool) def __init__(self, parent = None): QtGui.QToolBar.__init__(self, parent) self.setWindowTitle('EditorBar') self.setIconSize(QSize(16, 16)) self.createActions() def createActions(self): self.settingsAction = QAction(self.tr("Settings"), self) self.settingsAction.setIcon(QtGui.QIcon(":/icons/icons/configure.png")) self.settingsAction.triggered.connect(self.settings) self.addAction(self.settingsAction) self.saveDocAsAction = QAction(self.tr("Save As"), self) self.saveDocAsAction.triggered.connect(self.SaveDocumentAs) self.saveDocAsAction.setIcon(QtGui.QIcon(":/icons/icons/filesave.png")) self.addAction(self.saveDocAsAction) self.spellAction = QAction(self.tr("Spellchecking"), self) self.spellAction.setIcon( QtGui.QIcon(":/icons/icons/tools-check-spelling.png")) self.spellAction.setCheckable(True) self.spellAction.setChecked(settings.get('editor:spell')) self.spellAction.toggled.connect(self.spell) self.insertSeparator(self.spellAction) self.addAction(self.spellAction) self.whiteSpaceAction = QAction(self.tr("Show whitespace"), self) self.whiteSpaceAction.setIcon( QtGui.QIcon(":/icons/icons/whiteSpace.png")) self.whiteSpaceAction.setCheckable(True) self.whiteSpaceAction.setChecked(settings.get('editor:whiteSpace')) self.whiteSpaceAction.toggled.connect(self.whiteSpace) self.addAction(self.whiteSpaceAction) self.BoldAction = QtGui.QAction( QtGui.QIcon(":/icons/icons/format-text-bold.png"), self.tr("&Bold"), self, shortcut=QtCore.Qt.CTRL + QtCore.Qt.Key_B, triggered=self.bold, checkable=True) self.addAction(self.BoldAction) self.ItalicAction = QAction(self.tr("Italic"), self) self.ItalicAction.setIcon( QtGui.QIcon(":/icons/icons/format-text-italic.png")) self.ItalicAction.setShortcut(QtCore.Qt.CTRL + QtCore.Qt.Key_I) self.ItalicAction.setCheckable(True) self.ItalicAction.triggered.connect(self.italic) self.addAction(self.ItalicAction) self.UnderlineAction = QAction(self.tr("Underline"), self) self.UnderlineAction.setIcon( QtGui.QIcon(":/icons/icons/format-text-underline.png")) self.UnderlineAction.setCheckable(True) self.UnderlineAction.setShortcut(QtCore.Qt.CTRL + QtCore.Qt.Key_U) self.UnderlineAction.triggered.connect(self.underline) self.addAction(self.UnderlineAction) self.StrikethroughAction = QAction(self.tr("Strikethrough"), self) self.StrikethroughAction.setIcon( QtGui.QIcon(":/icons/icons/format-text-strikethrough.png")) self.StrikethroughAction.setCheckable(True) self.StrikethroughAction.triggered.connect(self.strikethrough) self.addAction(self.StrikethroughAction) self.SubscriptAction = QAction(self.tr("Subscript"), self) self.SubscriptAction.setIcon( QtGui.QIcon(":/icons/icons/format-text-subscript.png")) self.SubscriptAction.setCheckable(True) self.SubscriptAction.triggered.connect(self.subscript) self.addAction(self.SubscriptAction) self.SuperscriptAction = QAction(self.tr("Superscript"), self) self.SuperscriptAction.setIcon( QtGui.QIcon(":/icons/icons/format-text-superscript.png")) self.SuperscriptAction.setCheckable(True) self.SuperscriptAction.triggered.connect(self.superscript) self.addAction(self.SuperscriptAction) def settings(self): lectorSettings = Settings(self, 1) # QObject.connect(lectorSettings, SIGNAL('accepted()'), # self.updateTextEditor) lectorSettings.settingAccepted.connect(self.resetSpell) lectorSettings.show() def SaveDocumentAs(self): self.saveDocAsSignal.emit() def spell(self): state = self.spellAction.isChecked() self.spellSignal.emit(state) def resetSpell(self): ''' Turn off and on spellcheckig to use correct dictionary ''' state = self.spellAction.isChecked() if state: self.spellSignal.emit(False) self.spellSignal.emit(state) def whiteSpace(self): state = self.whiteSpaceAction.isChecked() self.whiteSpaceSignal.emit(state) def toggleFormat(self, CharFormat): font = CharFormat.font() self.BoldAction.setChecked(font.bold()) self.ItalicAction.setChecked(font.italic()) self.UnderlineAction.setChecked(font.underline()) self.StrikethroughAction.setChecked(CharFormat.fontStrikeOut()) if CharFormat.verticalAlignment() == \ QtGui.QTextCharFormat.AlignSuperScript: self.SubscriptAction.setChecked(False) self.SuperscriptAction.setChecked(True) elif CharFormat.verticalAlignment() == \ QtGui.QTextCharFormat.AlignSubScript: self.SubscriptAction.setChecked(True) self.SuperscriptAction.setChecked(False) else: self.SubscriptAction.setChecked(False) self.SuperscriptAction.setChecked(False) def bold(self): state = self.BoldAction.isChecked() self.boldSignal.emit(state) def italic(self): state = self.ItalicAction.isChecked() self.italicSignal.emit(state) def underline(self): state = self.UnderlineAction.isChecked() self.underlineSignal.emit(state) def strikethrough(self): state = self.StrikethroughAction.isChecked() self.strikethroughSignal.emit(state) def subscript(self): state = self.SubscriptAction.isChecked() self.subscriptSignal.emit(state) def superscript(self): state = self.SuperscriptAction.isChecked() self.superscriptSignal.emit(state)
class EditorBar(QToolBar): saveDocAsSignal = pyqtSignal() spellSignal = pyqtSignal(bool) whiteSpaceSignal = pyqtSignal(bool) boldSignal = pyqtSignal(bool) italicSignal = pyqtSignal(bool) underlineSignal = pyqtSignal(bool) strikethroughSignal = pyqtSignal(bool) subscriptSignal = pyqtSignal(bool) superscriptSignal = pyqtSignal(bool) def __init__(self, parent=None): QtGui.QToolBar.__init__(self, parent) self.setWindowTitle('EditorBar') self.setIconSize(QSize(16, 16)) self.createActions() def createActions(self): self.settingsAction = QAction(self.tr("Settings"), self) self.settingsAction.setIcon(QtGui.QIcon(":/icons/icons/configure.png")) self.settingsAction.triggered.connect(self.settings) self.addAction(self.settingsAction) self.saveDocAsAction = QAction(self.tr("Save As"), self) self.saveDocAsAction.triggered.connect(self.SaveDocumentAs) self.saveDocAsAction.setIcon(QtGui.QIcon(":/icons/icons/filesave.png")) self.addAction(self.saveDocAsAction) self.spellAction = QAction(self.tr("Spellchecking"), self) self.spellAction.setIcon( QtGui.QIcon(":/icons/icons/tools-check-spelling.png")) self.spellAction.setCheckable(True) self.spellAction.setChecked(settings.get('editor:spell')) self.spellAction.toggled.connect(self.spell) self.insertSeparator(self.spellAction) self.addAction(self.spellAction) self.whiteSpaceAction = QAction(self.tr("Show whitespace"), self) self.whiteSpaceAction.setIcon( QtGui.QIcon(":/icons/icons/whiteSpace.png")) self.whiteSpaceAction.setCheckable(True) self.whiteSpaceAction.setChecked(settings.get('editor:whiteSpace')) self.whiteSpaceAction.toggled.connect(self.whiteSpace) self.addAction(self.whiteSpaceAction) self.BoldAction = QtGui.QAction( QtGui.QIcon(":/icons/icons/format-text-bold.png"), self.tr("&Bold"), self, shortcut=QtCore.Qt.CTRL + QtCore.Qt.Key_B, triggered=self.bold, checkable=True) self.addAction(self.BoldAction) self.ItalicAction = QAction(self.tr("Italic"), self) self.ItalicAction.setIcon( QtGui.QIcon(":/icons/icons/format-text-italic.png")) self.ItalicAction.setShortcut(QtCore.Qt.CTRL + QtCore.Qt.Key_I) self.ItalicAction.setCheckable(True) self.ItalicAction.triggered.connect(self.italic) self.addAction(self.ItalicAction) self.UnderlineAction = QAction(self.tr("Underline"), self) self.UnderlineAction.setIcon( QtGui.QIcon(":/icons/icons/format-text-underline.png")) self.UnderlineAction.setCheckable(True) self.UnderlineAction.setShortcut(QtCore.Qt.CTRL + QtCore.Qt.Key_U) self.UnderlineAction.triggered.connect(self.underline) self.addAction(self.UnderlineAction) self.StrikethroughAction = QAction(self.tr("Strikethrough"), self) self.StrikethroughAction.setIcon( QtGui.QIcon(":/icons/icons/format-text-strikethrough.png")) self.StrikethroughAction.setCheckable(True) self.StrikethroughAction.triggered.connect(self.strikethrough) self.addAction(self.StrikethroughAction) self.SubscriptAction = QAction(self.tr("Subscript"), self) self.SubscriptAction.setIcon( QtGui.QIcon(":/icons/icons/format-text-subscript.png")) self.SubscriptAction.setCheckable(True) self.SubscriptAction.triggered.connect(self.subscript) self.addAction(self.SubscriptAction) self.SuperscriptAction = QAction(self.tr("Superscript"), self) self.SuperscriptAction.setIcon( QtGui.QIcon(":/icons/icons/format-text-superscript.png")) self.SuperscriptAction.setCheckable(True) self.SuperscriptAction.triggered.connect(self.superscript) self.addAction(self.SuperscriptAction) def settings(self): lectorSettings = Settings(self, 1) # QObject.connect(lectorSettings, SIGNAL('accepted()'), # self.updateTextEditor) lectorSettings.settingAccepted.connect(self.resetSpell) lectorSettings.show() def SaveDocumentAs(self): self.saveDocAsSignal.emit() def spell(self): state = self.spellAction.isChecked() self.spellSignal.emit(state) def resetSpell(self): ''' Turn off and on spellcheckig to use correct dictionary ''' state = self.spellAction.isChecked() if state: self.spellSignal.emit(False) self.spellSignal.emit(state) def whiteSpace(self): state = self.whiteSpaceAction.isChecked() self.whiteSpaceSignal.emit(state) def toggleFormat(self, CharFormat): font = CharFormat.font() self.BoldAction.setChecked(font.bold()) self.ItalicAction.setChecked(font.italic()) self.UnderlineAction.setChecked(font.underline()) self.StrikethroughAction.setChecked(CharFormat.fontStrikeOut()) if CharFormat.verticalAlignment() == \ QtGui.QTextCharFormat.AlignSuperScript: self.SubscriptAction.setChecked(False) self.SuperscriptAction.setChecked(True) elif CharFormat.verticalAlignment() == \ QtGui.QTextCharFormat.AlignSubScript: self.SubscriptAction.setChecked(True) self.SuperscriptAction.setChecked(False) else: self.SubscriptAction.setChecked(False) self.SuperscriptAction.setChecked(False) def bold(self): state = self.BoldAction.isChecked() self.boldSignal.emit(state) def italic(self): state = self.ItalicAction.isChecked() self.italicSignal.emit(state) def underline(self): state = self.UnderlineAction.isChecked() self.underlineSignal.emit(state) def strikethrough(self): state = self.StrikethroughAction.isChecked() self.strikethroughSignal.emit(state) def subscript(self): state = self.SubscriptAction.isChecked() self.subscriptSignal.emit(state) def superscript(self): state = self.SuperscriptAction.isChecked() self.superscriptSignal.emit(state)