manuskript/src/ui/editors/editorWidget.py
Olivier Keshavjee bfc255bed0 Adds: Spellcheck
2015-06-06 19:10:44 +02:00

100 lines
3.4 KiB
Python

#!/usr/bin/env python
#--!-- coding: utf8 --!--
from __future__ import print_function
from __future__ import unicode_literals
from qt import *
from enums import *
from ui.editors.editorWidget_ui import *
from ui.editors.customTextEdit import *
class editorWidget(QWidget, Ui_editorWidget_ui):
toggledSpellcheck = pyqtSignal(bool)
dictChanged = pyqtSignal(str)
def __init__(self, parent=None):
QWidget.__init__(self, parent)
self.setupUi(self)
self.currentIndex = None
self.txtEdits = []
self.scroll.setBackgroundRole(QPalette.Base)
self.toggledSpellcheck.connect(self.txtRedacText.toggleSpellcheck)
self.dictChanged.connect(self.txtRedacText.setDict)
self.currentDict = ""
self.spellcheck = True
def setCurrentModelIndex(self, index):
if index.isValid():
self.currentIndex = index
self._model = index.model()
item = index.internalPointer()
if item.isFolder():
self.stack.setCurrentIndex(1)
w = QWidget()
l = QVBoxLayout(w)
#self.scroll.setWidgetResizable(False)
self.txtEdits = []
def addTitle(itm):
edt = customTextEdit(self, html="<h{l}>{t}</h{l}>".format(l=min(itm.level()+1, 5), t=itm.title()))
edt.setFrameShape(QFrame.NoFrame)
self.txtEdits.append(edt)
l.addWidget(edt)
def addLine():
line = QFrame(self.scene)
line.setFrameShape(QFrame.HLine)
line.setFrameShadow(QFrame.Sunken)
l.addWidget(line)
def addScene(itm):
edt = customTextEdit(self, index=itm.index(), spellcheck=self.spellcheck, dict=self.currentDict)
edt.setFrameShape(QFrame.NoFrame)
edt.setStatusTip(itm.path())
self.toggledSpellcheck.connect(edt.toggleSpellcheck)
self.dictChanged.connect(edt.setDict)
#edt.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred)
self.txtEdits.append(edt)
l.addWidget(edt)
def addChildren(itm):
for c in range(itm.childCount()):
child = itm.child(c)
if child.isFolder():
addTitle(child)
addChildren(child)
else:
addScene(child)
addLine()
addTitle(item)
addChildren(item)
l.addItem(QSpacerItem(10, 1000, QSizePolicy.Minimum, QSizePolicy.Expanding))
self.scroll.setWidget(w)
else:
self.stack.setCurrentIndex(0)
else:
self.currentIndex = None
def toggleSpellcheck(self, v):
self.spellcheck = v
self.toggledSpellcheck.emit(v)
def setDict(self, dct):
self.currentDict = dct
self.dictChanged.emit(dct)