def _setup_text_editor(self): self.styleComboBox = QComboBox(self.fontToolBar) self.styleComboBox.addItem("Standard") self.styleComboBox.addItem("Bullet List (Disc)") self.styleComboBox.addItem("Bullet List (Circle)") self.styleComboBox.addItem("Bullet List (Square)") self.styleComboBox.addItem("Ordered List (Decimal)") self.styleComboBox.addItem("Ordered List (Alpha lower)") self.styleComboBox.addItem("Ordered List (Alpha upper)") self.styleComboBox.addItem("Ordered List (Roman lower)") self.styleComboBox.addItem("Ordered List (Roman upper)") self.styleComboBox.addItem("Heading 1") self.styleComboBox.addItem("Heading 2") self.styleComboBox.addItem("Heading 3") self.styleComboBox.addItem("Heading 4") self.styleComboBox.addItem("Heading 5") self.styleComboBox.addItem("Heading 6") self.fontToolBar.addWidget(self.styleComboBox) self.fontComboBox = QFontComboBox(self.fontToolBar) # TODO connect self.fontToolBar.addWidget(self.fontComboBox) self.sizeComboBox = QComboBox(self.fontToolBar) # TODO connect sizes = QFontDatabase.standardSizes() [self.sizeComboBox.addItem(str(size)) for size in sizes] self.sizeComboBox.setCurrentIndex( sizes.index(QApplication.font().pointSize())) self.fontToolBar.addWidget(self.sizeComboBox)
def add_font_widgets(self, toolbar: QToolBar): self.combo_Paragraph = QComboBox(toolbar) toolbar.addWidget(self.combo_Paragraph) self.combo_Paragraph.addItem("Paragraph") self.combo_Paragraph.addItem("Bullet List (Disc)") self.combo_Paragraph.addItem("Bullet List (Circle)") self.combo_Paragraph.addItem("Bullet List (Square)") self.combo_Paragraph.addItem("Ordered List (Decimal)") self.combo_Paragraph.addItem("Ordered List (Alpha lower)") self.combo_Paragraph.addItem("Ordered List (Alpha upper)") self.combo_Paragraph.addItem("Ordered List (Roman lower)") self.combo_Paragraph.addItem("Ordered List (Roman upper)") self.combo_Paragraph.activated.connect(self.textStyle) self.combo_Font = QFontComboBox(toolbar) toolbar.addWidget(self.combo_Font) self.combo_Font.activated[str].connect(self.textFamily) self.combo_Font_Size = QComboBox(toolbar) self.combo_Font_Size.setObjectName("combo_Font_Size") toolbar.addWidget(self.combo_Font_Size) self.combo_Font_Size.setEditable(True) db = QFontDatabase() for size in db.standardSizes(): self.combo_Font_Size.addItem(f"{size}") self.combo_Font_Size.activated[str].connect(self.textSize) self.combo_Font_Size.setCurrentIndex( self.combo_Font_Size.findText( f"{QApplication.font().pointSize()}"))
def findSizes(self, font): fontDatabase = QFontDatabase() currentSize = self.sizeCombo.currentText() self.sizeCombo.blockSignals(True) self.sizeCombo.clear() if fontDatabase.isSmoothlyScalable(font.family(), fontDatabase.styleString(font)): for size in QFontDatabase.standardSizes(): self.sizeCombo.addItem(str(size)) self.sizeCombo.setEditable(True) else: for size in fontDatabase.smoothSizes(font.family(), fontDatabase.styleString(font)): self.sizeCombo.addItem(str(size)) self.sizeCombo.setEditable(False) self.sizeCombo.blockSignals(False) sizeIndex = self.sizeCombo.findText(currentSize) if sizeIndex == -1: self.sizeCombo.setCurrentIndex(max(0, self.sizeCombo.count() / 3)) else: self.sizeCombo.setCurrentIndex(sizeIndex)
def findSizes(self, font): fontDatabase = QFontDatabase() currentSize = self.sizeCombo.currentText() self.sizeCombo.blockSignals(True) self.sizeCombo.clear() if fontDatabase.isSmoothlyScalable(font.family(), fontDatabase.styleString(font)): for size in QFontDatabase.standardSizes(): self.sizeCombo.addItem(str(size)) self.sizeCombo.setEditable(True) else: for size in fontDatabase.smoothSizes(font.family(), fontDatabase.styleString(font)): self.sizeCombo.addItem(str(size)) self.sizeCombo.setEditable(False) self.sizeCombo.blockSignals(False) sizeIndex = self.sizeCombo.findText(currentSize) if sizeIndex == -1: self.sizeCombo.setCurrentIndex(max(0, self.sizeCombo.count() / 3)) else: self.sizeCombo.setCurrentIndex(sizeIndex)
def setupTextActions(self): tb = QToolBar(self) tb.setWindowTitle("Format Actions") self.addToolBar(tb) menu = QMenu("F&ormat", self) self.menuBar().addMenu(menu) self.actionTextBold = QAction(QIcon.fromTheme( 'format-text-bold', QIcon(rsrcPath + '/textbold.png')), "&Bold", self, priority=QAction.LowPriority, shortcut=Qt.CTRL + Qt.Key_B, triggered=self.textBold, checkable=True) bold = QFont() bold.setBold(True) self.actionTextBold.setFont(bold) tb.addAction(self.actionTextBold) menu.addAction(self.actionTextBold) self.actionTextItalic = QAction(QIcon.fromTheme( 'format-text-italic', QIcon(rsrcPath + '/textitalic.png')), "&Italic", self, priority=QAction.LowPriority, shortcut=Qt.CTRL + Qt.Key_I, triggered=self.textItalic, checkable=True) italic = QFont() italic.setItalic(True) self.actionTextItalic.setFont(italic) tb.addAction(self.actionTextItalic) menu.addAction(self.actionTextItalic) self.actionTextUnderline = QAction(QIcon.fromTheme( 'format-text-underline', QIcon(rsrcPath + '/textunder.png')), "&Underline", self, priority=QAction.LowPriority, shortcut=Qt.CTRL + Qt.Key_U, triggered=self.textUnderline, checkable=True) underline = QFont() underline.setUnderline(True) self.actionTextUnderline.setFont(underline) tb.addAction(self.actionTextUnderline) menu.addAction(self.actionTextUnderline) menu.addSeparator() grp = QActionGroup(self, triggered=self.textAlign) # Make sure the alignLeft is always left of the alignRight. if QApplication.isLeftToRight(): self.actionAlignLeft = QAction( QIcon.fromTheme('format-justify-left', QIcon(rsrcPath + '/textleft.png')), "&Left", grp) self.actionAlignCenter = QAction( QIcon.fromTheme('format-justify-center', QIcon(rsrcPath + '/textcenter.png')), "C&enter", grp) self.actionAlignRight = QAction( QIcon.fromTheme('format-justify-right', QIcon(rsrcPath + '/textright.png')), "&Right", grp) else: self.actionAlignRight = QAction( QIcon.fromTheme('format-justify-right', QIcon(rsrcPath + '/textright.png')), "&Right", grp) self.actionAlignCenter = QAction( QIcon.fromTheme('format-justify-center', QIcon(rsrcPath + '/textcenter.png')), "C&enter", grp) self.actionAlignLeft = QAction( QIcon.fromTheme('format-justify-left', QIcon(rsrcPath + '/textleft.png')), "&Left", grp) self.actionAlignJustify = QAction( QIcon.fromTheme('format-justify-fill', QIcon(rsrcPath + '/textjustify.png')), "&Justify", grp) self.actionAlignLeft.setShortcut(Qt.CTRL + Qt.Key_L) self.actionAlignLeft.setCheckable(True) self.actionAlignLeft.setPriority(QAction.LowPriority) self.actionAlignCenter.setShortcut(Qt.CTRL + Qt.Key_E) self.actionAlignCenter.setCheckable(True) self.actionAlignCenter.setPriority(QAction.LowPriority) self.actionAlignRight.setShortcut(Qt.CTRL + Qt.Key_R) self.actionAlignRight.setCheckable(True) self.actionAlignRight.setPriority(QAction.LowPriority) self.actionAlignJustify.setShortcut(Qt.CTRL + Qt.Key_J) self.actionAlignJustify.setCheckable(True) self.actionAlignJustify.setPriority(QAction.LowPriority) tb.addActions(grp.actions()) menu.addActions(grp.actions()) menu.addSeparator() pix = QPixmap(16, 16) pix.fill(Qt.black) self.actionTextColor = QAction(QIcon(pix), "&Color...", self, triggered=self.textColor) tb.addAction(self.actionTextColor) menu.addAction(self.actionTextColor) tb = QToolBar(self) tb.setAllowedAreas(Qt.TopToolBarArea | Qt.BottomToolBarArea) tb.setWindowTitle("Format Actions") self.addToolBarBreak(Qt.TopToolBarArea) self.addToolBar(tb) comboStyle = QComboBox(tb) tb.addWidget(comboStyle) comboStyle.addItem("Standard") comboStyle.addItem("Bullet List (Disc)") comboStyle.addItem("Bullet List (Circle)") comboStyle.addItem("Bullet List (Square)") comboStyle.addItem("Ordered List (Decimal)") comboStyle.addItem("Ordered List (Alpha lower)") comboStyle.addItem("Ordered List (Alpha upper)") comboStyle.addItem("Ordered List (Roman lower)") comboStyle.addItem("Ordered List (Roman upper)") comboStyle.activated.connect(self.textStyle) self.comboFont = QFontComboBox(tb) tb.addWidget(self.comboFont) self.comboFont.activated[str].connect(self.textFamily) self.comboSize = QComboBox(tb) self.comboSize.setObjectName("comboSize") tb.addWidget(self.comboSize) self.comboSize.setEditable(True) db = QFontDatabase() for size in db.standardSizes(): self.comboSize.addItem("%s" % (size)) self.comboSize.activated[str].connect(self.textSize) self.comboSize.setCurrentIndex( self.comboSize.findText("%s" % (QApplication.font().pointSize())))
def initUI(self): # View widget stuff self.view = TextView() self.centralWidget = QWidget(self) self.layout = QVBoxLayout(self.centralWidget) self.view.statusChanged.connect(self.quickViewStatusChanged) self.view.sceneGraphError.connect(self.sceneGraphError) self.container = QWidget.createWindowContainer(self.view) self.container.setMinimumSize(self.view.size()) self.container.setFocusPolicy(Qt.TabFocus) self.layout.addWidget(self.container) self.setCentralWidget(self.centralWidget) self.statusBar().showMessage('Ready') # Menu stuff self.toolbar = self.addToolBar('Text Effects') # Set up the text effects tools actionGroup = QActionGroup(self) noneAction = QAction(QIcon("none.png"), "&Clear", self) noneAction.setStatusTip("Clear Effects") noneAction.triggered.connect(self.view.noEffect) actionGroup.addAction(noneAction) blurAction = QAction(QIcon("blur.png"), "&Blur", self) blurAction.setStatusTip("Blur Text") blurAction.triggered.connect(self.view.blur) actionGroup.addAction(blurAction) opacityAction = QAction(QIcon("opacity.png"), "&Transparency", self) opacityAction.setStatusTip("Fade Text") opacityAction.triggered.connect(self.view.opacity) actionGroup.addAction(opacityAction) shadowAction = QAction(QIcon("shadow.png"), "&Drop Shadow", self) shadowAction.setStatusTip("Drop-shadow Text") shadowAction.triggered.connect(self.view.shadow) actionGroup.addAction(shadowAction) self.toolbar.addActions(actionGroup.actions()) self.toolbar.addSeparator() # Set up the font selection tools boldAction = QAction(QIcon("bold.png"), "&Bold", self) boldAction.setStatusTip("Bold Text") boldAction.setCheckable(True) boldAction.setChecked(False) boldAction.triggered[bool].connect(self.view.bold) self.toolbar.addAction(boldAction) italicAction = QAction(QIcon("italic.png"), "&Italic", self) italicAction.setStatusTip("Italic Text") italicAction.setCheckable(True) italicAction.triggered[bool].connect(self.view.italic) self.toolbar.addAction(italicAction) self.fontBox = QFontComboBox(self) self.fontBox.setCurrentFont(self.view.font) self.fontBox.currentFontChanged.connect(self.view.fontFamily) self.toolbar.addWidget(self.fontBox) self.fontSizeBox = QComboBox(self) self.fontSizeBox.setEditable(True) strlist = [] intlist = QFontDatabase.standardSizes() for item in intlist: strlist.append(str(item)) self.fontSizeBox.addItems(strlist) self.view.fontSize('24') self.fontSizeBox.setCurrentText(str(self.view.basicFontSize)) self.fontSizeBox.currentTextChanged.connect(self.view.fontSize) self.toolbar.addWidget(self.fontSizeBox) self.setGeometry(300, 300, 600, 500) self.setWindowTitle('Renderer') self.show()
def setupTextActions(self): tb = QToolBar(self) tb.setWindowTitle("Format Actions") self.addToolBar(tb) menu = QMenu("F&ormat", self) self.menuBar().addMenu(menu) self.actionTextBold = QAction( QIcon.fromTheme('format-text-bold', QIcon(rsrcPath + '/textbold.png')), "&Bold", self, priority=QAction.LowPriority, shortcut=Qt.CTRL + Qt.Key_B, triggered=self.textBold, checkable=True) bold = QFont() bold.setBold(True) self.actionTextBold.setFont(bold) tb.addAction(self.actionTextBold) menu.addAction(self.actionTextBold) self.actionTextItalic = QAction( QIcon.fromTheme('format-text-italic', QIcon(rsrcPath + '/textitalic.png')), "&Italic", self, priority=QAction.LowPriority, shortcut=Qt.CTRL + Qt.Key_I, triggered=self.textItalic, checkable=True) italic = QFont() italic.setItalic(True) self.actionTextItalic.setFont(italic) tb.addAction(self.actionTextItalic) menu.addAction(self.actionTextItalic) self.actionTextUnderline = QAction( QIcon.fromTheme('format-text-underline', QIcon(rsrcPath + '/textunder.png')), "&Underline", self, priority=QAction.LowPriority, shortcut=Qt.CTRL + Qt.Key_U, triggered=self.textUnderline, checkable=True) underline = QFont() underline.setUnderline(True) self.actionTextUnderline.setFont(underline) tb.addAction(self.actionTextUnderline) menu.addAction(self.actionTextUnderline) menu.addSeparator() grp = QActionGroup(self, triggered=self.textAlign) # Make sure the alignLeft is always left of the alignRight. if QApplication.isLeftToRight(): self.actionAlignLeft = QAction( QIcon.fromTheme('format-justify-left', QIcon(rsrcPath + '/textleft.png')), "&Left", grp) self.actionAlignCenter = QAction( QIcon.fromTheme('format-justify-center', QIcon(rsrcPath + '/textcenter.png')), "C&enter", grp) self.actionAlignRight = QAction( QIcon.fromTheme('format-justify-right', QIcon(rsrcPath + '/textright.png')), "&Right", grp) else: self.actionAlignRight = QAction( QIcon.fromTheme('format-justify-right', QIcon(rsrcPath + '/textright.png')), "&Right", grp) self.actionAlignCenter = QAction( QIcon.fromTheme('format-justify-center', QIcon(rsrcPath + '/textcenter.png')), "C&enter", grp) self.actionAlignLeft = QAction( QIcon.fromTheme('format-justify-left', QIcon(rsrcPath + '/textleft.png')), "&Left", grp) self.actionAlignJustify = QAction( QIcon.fromTheme('format-justify-fill', QIcon(rsrcPath + '/textjustify.png')), "&Justify", grp) self.actionAlignLeft.setShortcut(Qt.CTRL + Qt.Key_L) self.actionAlignLeft.setCheckable(True) self.actionAlignLeft.setPriority(QAction.LowPriority) self.actionAlignCenter.setShortcut(Qt.CTRL + Qt.Key_E) self.actionAlignCenter.setCheckable(True) self.actionAlignCenter.setPriority(QAction.LowPriority) self.actionAlignRight.setShortcut(Qt.CTRL + Qt.Key_R) self.actionAlignRight.setCheckable(True) self.actionAlignRight.setPriority(QAction.LowPriority) self.actionAlignJustify.setShortcut(Qt.CTRL + Qt.Key_J) self.actionAlignJustify.setCheckable(True) self.actionAlignJustify.setPriority(QAction.LowPriority) tb.addActions(grp.actions()) menu.addActions(grp.actions()) menu.addSeparator() pix = QPixmap(16, 16) pix.fill(Qt.black) self.actionTextColor = QAction(QIcon(pix), "&Color...", self, triggered=self.textColor) tb.addAction(self.actionTextColor) menu.addAction(self.actionTextColor) tb = QToolBar(self) tb.setAllowedAreas(Qt.TopToolBarArea | Qt.BottomToolBarArea) tb.setWindowTitle("Format Actions") self.addToolBarBreak(Qt.TopToolBarArea) self.addToolBar(tb) comboStyle = QComboBox(tb) tb.addWidget(comboStyle) comboStyle.addItem("Standard") comboStyle.addItem("Bullet List (Disc)") comboStyle.addItem("Bullet List (Circle)") comboStyle.addItem("Bullet List (Square)") comboStyle.addItem("Ordered List (Decimal)") comboStyle.addItem("Ordered List (Alpha lower)") comboStyle.addItem("Ordered List (Alpha upper)") comboStyle.addItem("Ordered List (Roman lower)") comboStyle.addItem("Ordered List (Roman upper)") comboStyle.activated.connect(self.textStyle) self.comboFont = QFontComboBox(tb) tb.addWidget(self.comboFont) self.comboFont.activated[str].connect(self.textFamily) self.comboSize = QComboBox(tb) self.comboSize.setObjectName("comboSize") tb.addWidget(self.comboSize) self.comboSize.setEditable(True) db = QFontDatabase() for size in db.standardSizes(): self.comboSize.addItem("%s" % (size)) self.comboSize.activated[str].connect(self.textSize) self.comboSize.setCurrentIndex( self.comboSize.findText( "%s" % (QApplication.font().pointSize())))
def initUI(self): self.view = TextView(self) self.setCentralWidget(self.view) self.toolbar = self.addToolBar('Text Effects') # Set up the text effects tools actionGroup = QActionGroup(self) noneAction = QAction(QIcon("none.png"), "&Clear", self) noneAction.setStatusTip("Clear Effects") noneAction.triggered.connect(self.view.noEffect) actionGroup.addAction(noneAction) blurAction = QAction(QIcon("blur.png"), "&Blur", self) blurAction.setStatusTip("Blur Text") blurAction.triggered.connect(self.view.blur) actionGroup.addAction(blurAction) opacityAction = QAction(QIcon("opacity.png"), "&Transparency", self) opacityAction.setStatusTip("Fade Text") opacityAction.triggered.connect(self.view.opacity) actionGroup.addAction(opacityAction) shadowAction = QAction(QIcon("shadow.png"), "&Drop Shadow", self) shadowAction.setStatusTip("Drop-shadow Text") shadowAction.triggered.connect(self.view.shadow) actionGroup.addAction(shadowAction) self.toolbar.addActions(actionGroup.actions()) self.toolbar.addSeparator() # Set up the font selection tools boldAction = QAction(QIcon("bold.png"), "&Bold", self) boldAction.setStatusTip("Bold Text") boldAction.setCheckable(True) boldAction.setChecked(True) boldAction.triggered[bool].connect(self.view.bold) self.toolbar.addAction(boldAction) italicAction = QAction(QIcon("italic.png"), "&Italic", self) italicAction.setStatusTip("Italic Text") italicAction.setCheckable(True) italicAction.triggered[bool].connect(self.view.italic) self.toolbar.addAction(italicAction) self.fontBox = QFontComboBox(self) self.fontBox.setCurrentFont(QFont("PT Sans", 16, QFont.Bold)) self.fontBox.currentFontChanged.connect(self.view.fontFamily) self.toolbar.addWidget(self.fontBox) self.fontSizeBox = QComboBox(self) self.fontSizeBox.setEditable(True) strlist = [] intlist = QFontDatabase.standardSizes() for item in intlist: strlist.append(str(item)) self.fontSizeBox.addItems(strlist) self.fontSizeBox.setCurrentText("16") self.fontSizeBox.currentTextChanged.connect(self.view.fontSize) self.toolbar.addWidget(self.fontSizeBox) self.setGeometry(300, 300, 600, 500) self.setWindowTitle('Renderer') self.show()