manuskript/manuskript/ui/editors/textFormat.py

69 lines
2.2 KiB
Python
Raw Normal View History

#!/usr/bin/env python
2016-02-07 00:34:22 +13:00
# --!-- coding: utf8 --!--
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QWidget, QAction
from manuskript.enums import Outline
2017-11-16 08:33:27 +13:00
from manuskript.models import outlineModel
2016-02-07 00:34:22 +13:00
from manuskript.ui.editors.textFormat_ui import Ui_textFormat
class textFormat(QWidget, Ui_textFormat):
def __init__(self, parent=None):
QWidget.__init__(self, parent)
self.setupUi(self)
self._textEdit = None
2016-02-07 00:34:22 +13:00
formats = {
2016-02-07 00:34:22 +13:00
"Bold": [self.btnBold, "format-text-bold", self.tr("CTRL+B")],
"Italic": [self.btnItalic, "format-text-italic", self.tr("CTRL+I")],
"Underline": [self.btnUnderlined, "format-text-underline", self.tr("CTRL+U")],
2016-02-07 00:34:22 +13:00
"Clear": [self.btnClear, "edit-clear", self.tr("CTRL+P")],
"Left": [self.btnLeft, "format-justify-left", self.tr("CTRL+L")],
"Center": [self.btnCenter, "format-justify-center", self.tr("CTRL+E")],
"Right": [self.btnRight, "format-justify-right", self.tr("CTRL+R")],
"Justify": [self.btnJustify, "format-justify-fill", self.tr("CTRL+J")],
}
for f in formats:
val = formats[f]
a = QAction(QIcon.fromTheme(val[1]), f, self)
a.setShortcut(val[2])
2015-06-25 23:41:55 +12:00
a.setToolTip("Format {} ({})".format(f, val[2]))
a.triggered.connect(self.setFormat)
val[0].setDefaultAction(a)
2016-02-07 00:34:22 +13:00
def setTextEdit(self, textEdit):
self._textEdit = textEdit
2016-02-07 00:34:22 +13:00
def updateFromIndex(self, index):
if not index.isValid():
self.setVisible(False)
return
2016-02-07 00:34:22 +13:00
if type(index.model()) != outlineModel:
self.setVisible(False)
2016-02-07 00:34:22 +13:00
return
if index.column() not in [Outline.text.value, Outline.notes.value]:
2015-06-27 22:20:05 +12:00
self.setVisible(False)
2016-02-07 00:34:22 +13:00
return
self.setVisible(True)
item = index.internalPointer()
2016-02-07 00:34:22 +13:00
self.align.setVisible(True)
self.format.setVisible(True)
2016-02-07 00:34:22 +13:00
if item.isFolder():
self.setVisible(False)
return
2016-02-07 00:34:22 +13:00
elif item.isText():
self.align.setVisible(False)
2016-02-07 00:34:22 +13:00
def setFormat(self):
act = self.sender()
if self._textEdit:
2016-02-07 00:34:22 +13:00
self._textEdit.applyFormat(act.text())