diff --git a/makefile b/makefile
index 88916f3..fe58ea2 100644
--- a/makefile
+++ b/makefile
@@ -19,6 +19,9 @@ profile:
compile:
cd src && python3 setup.py build_ext --inplace
+
+callgraph:
+ pycallgraph graphviz -- src/main.py
translation:
pylupdate5 -noobsolete i18n/manuskript.pro
diff --git a/src/settings.py b/src/settings.py
index fae424f..9023741 100644
--- a/src/settings.py
+++ b/src/settings.py
@@ -3,6 +3,7 @@
import pickle
import pprint
from enums import *
+from qt import *
viewSettings = {
"Tree": {
@@ -47,11 +48,22 @@ corkBackground = {
defaultTextType = "t2t"
fullScreenTheme = "spacedreams"
+textEditor = {
+ "fontColor": "#000",
+ "font": qApp.font().toString(),
+ "misspelled": "#F00",
+ "lineSpacing": 100,
+ "tabWidth": 20,
+ "indent": True,
+ "spacingAbove": 5,
+ "spacingBelow": 5,
+ }
+
def save(filename=None):
global spellcheck, dict, corkSliderFactor, viewSettings, corkSizeFactor, folderView, lastTab, lastIndex, \
autoSave, autoSaveDelay, saveOnQuit, autoSaveNoChanges, autoSaveNoChangesDelay, outlineViewColumns, \
- corkBackground, fullScreenTheme, defaultTextType
+ corkBackground, fullScreenTheme, defaultTextType, textEditor
allSettings = {
"viewSettings": viewSettings,
@@ -70,6 +82,7 @@ def save(filename=None):
"corkBackground":corkBackground,
"fullScreenTheme":fullScreenTheme,
"defaultTextType":defaultTextType,
+ "textEditor":textEditor,
}
#pp=pprint.PrettyPrinter(indent=4, compact=False)
@@ -164,4 +177,8 @@ def load(string, fromString=False):
if "defaultTextType" in allSettings:
global defaultTextType
- defaultTextType = allSettings["defaultTextType"]
\ No newline at end of file
+ defaultTextType = allSettings["defaultTextType"]
+
+ if "textEditor" in allSettings:
+ global textEditor
+ textEditor = allSettings["textEditor"]
\ No newline at end of file
diff --git a/src/settingsWindow.py b/src/settingsWindow.py
index c936ade..5d134b0 100644
--- a/src/settingsWindow.py
+++ b/src/settingsWindow.py
@@ -7,6 +7,7 @@ from ui.settings import *
from enums import *
from functions import *
from ui.editors.themes import *
+from ui.views.textEditView import *
import settings
import os
@@ -95,6 +96,37 @@ class settingsWindow(QWidget, Ui_Settings):
self.cmbCorkImage.currentIndexChanged.connect(self.setCorkBackground)
self.btnCorkColor.clicked.connect(self.setCorkColor)
+ # Text editor
+ opt = settings.textEditor
+ self.setButtonColor(self.btnEditorFontColor, opt["fontColor"])
+ self.btnEditorFontColor.clicked.connect(self.choseEditorFontColor)
+ self.setButtonColor(self.btnEditorMisspelledColor, opt["misspelled"])
+ self.btnEditorMisspelledColor.clicked.connect(self.choseEditorMisspelledColor)
+ f = QFont()
+ f.fromString(opt["font"])
+ self.cmbEditorFontFamily.setCurrentFont(f)
+ self.cmbEditorFontFamily.currentFontChanged.connect(self.updateEditorSettings)
+ self.spnEditorFontSize.setValue(f.pointSize())
+ self.spnEditorFontSize.valueChanged.connect(self.updateEditorSettings)
+ self.cmbEditorLineSpacing.setCurrentIndex(
+ 0 if opt["lineSpacing"] == 100 else
+ 1 if opt["lineSpacing"] == 150 else
+ 2 if opt["lineSpacing"] == 200 else
+ 3)
+ self.cmbEditorLineSpacing.currentIndexChanged.connect(self.updateEditorSettings)
+ self.spnEditorLineSpacing.setValue(opt["lineSpacing"])
+ self.spnEditorLineSpacing.valueChanged.connect(self.updateEditorSettings)
+ self.spnEditorLineSpacing.setEnabled(opt["lineSpacing"] not in [100, 150, 200])
+ self.spnEditorLineSpacing.valueChanged.connect(self.updateEditorSettings)
+ self.spnEditorTabWidth.setValue(opt["tabWidth"])
+ self.spnEditorTabWidth.valueChanged.connect(self.updateEditorSettings)
+ self.chkEditorIndent.setChecked(opt["indent"])
+ self.chkEditorIndent.stateChanged.connect(self.updateEditorSettings)
+ self.spnEditorParaAbove.setValue(opt["spacingAbove"])
+ self.spnEditorParaAbove.valueChanged.connect(self.updateEditorSettings)
+ self.spnEditorParaBelow.setValue(opt["spacingBelow"])
+ self.spnEditorParaAbove.valueChanged.connect(self.updateEditorSettings)
+
# Labels
self.lstLabels.setModel(self.mw.mdlLabels)
self.lstLabels.setRowHidden(0, True)
@@ -280,6 +312,47 @@ class settingsWindow(QWidget, Ui_Settings):
if i != -1:
self.cmbCorkImage.setCurrentIndex(i)
+####################################################################################################
+# VIEWS / EDITOR
+####################################################################################################
+
+ def updateEditorSettings(self):
+ # Store settings
+ f = self.cmbEditorFontFamily.currentFont()
+ f.setPointSize(self.spnEditorFontSize.value())
+ settings.textEditor["font"] = f.toString()
+ settings.textEditor["lineSpacing"] = \
+ 100 if self.cmbEditorLineSpacing.currentIndex() == 0 else\
+ 150 if self.cmbEditorLineSpacing.currentIndex() == 1 else\
+ 200 if self.cmbEditorLineSpacing.currentIndex() == 2 else\
+ self.spnEditorLineSpacing.value()
+ self.spnEditorLineSpacing.setEnabled(self.cmbEditorLineSpacing.currentIndex() == 3)
+ settings.textEditor["tabWidth"] = self.spnEditorTabWidth.value()
+ settings.textEditor["indent"] = True if self.chkEditorIndent.checkState() else False
+ settings.textEditor["spacingAbove"] = self.spnEditorParaAbove.value()
+ settings.textEditor["spacingBelow"] = self.spnEditorParaBelow.value()
+
+ # Update font and defaultBlockFormat to all textEditView. Drastically.
+ for w in mainWindow().findChildren(textEditView, QRegExp(".*")):
+ print(w.objectName(), w.parent().objectName())
+ w.loadFontSettings()
+
+ def choseEditorFontColor(self):
+ color = settings.textEditor["fontColor"]
+ self.colorDialog = QColorDialog(QColor(color), self)
+ color = self.colorDialog.getColor(QColor(color))
+ if color.isValid():
+ settings.textEditor["fontColor"] = color.name()
+ self.setButtonColor(self.btnEditorFontColor, color.name())
+
+ def choseEditorMisspelledColor(self):
+ color = settings.textEditor["misspelled"]
+ self.colorDialog = QColorDialog(QColor(color), self)
+ color = self.colorDialog.getColor(QColor(color))
+ if color.isValid():
+ settings.textEditor["misspelled"] = color.name()
+ self.setButtonColor(self.btnEditorMisspelledColor, color.name())
+
####################################################################################################
# STATUS #
####################################################################################################
diff --git a/src/ui/editors/basicHighlighter.py b/src/ui/editors/basicHighlighter.py
index a712bdc..5dc24af 100644
--- a/src/ui/editors/basicHighlighter.py
+++ b/src/ui/editors/basicHighlighter.py
@@ -32,7 +32,8 @@ class basicHighlighter(QSyntaxHighlighter):
bf = QTextBlockFormat(self._defaultBlockFormat)
bf.setAlignment(QTextCursor(self.currentBlock()).blockFormat().alignment())
QTextCursor(self.currentBlock()).setBlockFormat(bf)
- #self.setFormat(0, len(text), self._defaultCharFormat)
+
+ self.setFormat(0, len(text), self._defaultCharFormat)
# Spell checking
# Based on http://john.nachtimwald.com/2009/08/22/qplaintextedit-with-in-line-spell-check/
diff --git a/src/ui/editors/t2tHighlighter.py b/src/ui/editors/t2tHighlighter.py
index 51ce4e3..21be544 100644
--- a/src/ui/editors/t2tHighlighter.py
+++ b/src/ui/editors/t2tHighlighter.py
@@ -102,7 +102,7 @@ class t2tHighlighter (QSyntaxHighlighter):
op = self.style.format(State.MARKUP)
#self.setFormat(0, len(text), self.style.format(State.DEFAULT))
- #self.setFormat(0, len(text), self._defaultCharFormat)
+ self.setFormat(0, len(text), self._defaultCharFormat)
# InDocRules: is it a settings which might have a specific rule,
# a comment which contains color infos, or a include conf?
diff --git a/src/ui/editors/themes.py b/src/ui/editors/themes.py
index f8a58bb..72f7217 100644
--- a/src/ui/editors/themes.py
+++ b/src/ui/editors/themes.py
@@ -222,6 +222,7 @@ def setThemeEditorDatas(editor, themeDatas, pixmap, screenRect):
#f = QFont()
#f.fromString(themeDatas["Text/Font"])
editor.setFont(f)
+ editor._fromTheme = True
diff --git a/src/ui/settings.py b/src/ui/settings.py
index 89f4231..7a9cc22 100644
--- a/src/ui/settings.py
+++ b/src/ui/settings.py
@@ -11,7 +11,7 @@ from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Settings(object):
def setupUi(self, Settings):
Settings.setObjectName("Settings")
- Settings.resize(658, 486)
+ Settings.resize(658, 491)
self.horizontalLayout_8 = QtWidgets.QHBoxLayout(Settings)
self.horizontalLayout_8.setObjectName("horizontalLayout_8")
self.lstMenu = QtWidgets.QListWidget(Settings)
@@ -706,6 +706,211 @@ class Ui_Settings(object):
self.verticalLayout_8.addItem(spacerItem6)
self.horizontalLayout_4.addWidget(self.groupBox_7)
self.tabViews.addTab(self.tab_3, "")
+ self.tab_4 = QtWidgets.QWidget()
+ self.tab_4.setObjectName("tab_4")
+ self.horizontalLayout_11 = QtWidgets.QHBoxLayout(self.tab_4)
+ self.horizontalLayout_11.setObjectName("horizontalLayout_11")
+ self.groupBox_12 = QtWidgets.QGroupBox(self.tab_4)
+ font = QtGui.QFont()
+ font.setBold(True)
+ font.setWeight(75)
+ self.groupBox_12.setFont(font)
+ self.groupBox_12.setObjectName("groupBox_12")
+ self.formLayout_8 = QtWidgets.QFormLayout(self.groupBox_12)
+ self.formLayout_8.setObjectName("formLayout_8")
+ self.label_37 = QtWidgets.QLabel(self.groupBox_12)
+ font = QtGui.QFont()
+ font.setBold(False)
+ font.setWeight(50)
+ self.label_37.setFont(font)
+ self.label_37.setObjectName("label_37")
+ self.formLayout_8.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.label_37)
+ self.btnEditorFontColor = QtWidgets.QPushButton(self.groupBox_12)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.btnEditorFontColor.sizePolicy().hasHeightForWidth())
+ self.btnEditorFontColor.setSizePolicy(sizePolicy)
+ font = QtGui.QFont()
+ font.setBold(False)
+ font.setWeight(50)
+ self.btnEditorFontColor.setFont(font)
+ self.btnEditorFontColor.setText("")
+ self.btnEditorFontColor.setObjectName("btnEditorFontColor")
+ self.formLayout_8.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.btnEditorFontColor)
+ self.label_39 = QtWidgets.QLabel(self.groupBox_12)
+ font = QtGui.QFont()
+ font.setBold(False)
+ font.setWeight(50)
+ self.label_39.setFont(font)
+ self.label_39.setObjectName("label_39")
+ self.formLayout_8.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.label_39)
+ self.cmbEditorFontFamily = QtWidgets.QFontComboBox(self.groupBox_12)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.cmbEditorFontFamily.sizePolicy().hasHeightForWidth())
+ self.cmbEditorFontFamily.setSizePolicy(sizePolicy)
+ self.cmbEditorFontFamily.setMaximumSize(QtCore.QSize(150, 16777215))
+ font = QtGui.QFont()
+ font.setBold(False)
+ font.setWeight(50)
+ self.cmbEditorFontFamily.setFont(font)
+ self.cmbEditorFontFamily.setObjectName("cmbEditorFontFamily")
+ self.formLayout_8.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.cmbEditorFontFamily)
+ self.label_38 = QtWidgets.QLabel(self.groupBox_12)
+ font = QtGui.QFont()
+ font.setBold(False)
+ font.setWeight(50)
+ self.label_38.setFont(font)
+ self.label_38.setObjectName("label_38")
+ self.formLayout_8.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.label_38)
+ self.label_36 = QtWidgets.QLabel(self.groupBox_12)
+ font = QtGui.QFont()
+ font.setBold(False)
+ font.setWeight(50)
+ self.label_36.setFont(font)
+ self.label_36.setObjectName("label_36")
+ self.formLayout_8.setWidget(3, QtWidgets.QFormLayout.LabelRole, self.label_36)
+ self.btnEditorMisspelledColor = QtWidgets.QPushButton(self.groupBox_12)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.btnEditorMisspelledColor.sizePolicy().hasHeightForWidth())
+ self.btnEditorMisspelledColor.setSizePolicy(sizePolicy)
+ font = QtGui.QFont()
+ font.setBold(False)
+ font.setWeight(50)
+ self.btnEditorMisspelledColor.setFont(font)
+ self.btnEditorMisspelledColor.setText("")
+ self.btnEditorMisspelledColor.setObjectName("btnEditorMisspelledColor")
+ self.formLayout_8.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.btnEditorMisspelledColor)
+ self.spnEditorFontSize = QtWidgets.QSpinBox(self.groupBox_12)
+ font = QtGui.QFont()
+ font.setBold(False)
+ font.setWeight(50)
+ self.spnEditorFontSize.setFont(font)
+ self.spnEditorFontSize.setMinimum(4)
+ self.spnEditorFontSize.setMaximum(299)
+ self.spnEditorFontSize.setProperty("value", 10)
+ self.spnEditorFontSize.setObjectName("spnEditorFontSize")
+ self.formLayout_8.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.spnEditorFontSize)
+ self.horizontalLayout_11.addWidget(self.groupBox_12)
+ self.groupBox_13 = QtWidgets.QGroupBox(self.tab_4)
+ font = QtGui.QFont()
+ font.setBold(True)
+ font.setWeight(75)
+ self.groupBox_13.setFont(font)
+ self.groupBox_13.setObjectName("groupBox_13")
+ self.formLayout_9 = QtWidgets.QFormLayout(self.groupBox_13)
+ self.formLayout_9.setObjectName("formLayout_9")
+ self.label_40 = QtWidgets.QLabel(self.groupBox_13)
+ font = QtGui.QFont()
+ font.setBold(False)
+ font.setWeight(50)
+ self.label_40.setFont(font)
+ self.label_40.setObjectName("label_40")
+ self.formLayout_9.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.label_40)
+ self.cmbEditorLineSpacing = QtWidgets.QComboBox(self.groupBox_13)
+ font = QtGui.QFont()
+ font.setBold(False)
+ font.setWeight(50)
+ self.cmbEditorLineSpacing.setFont(font)
+ self.cmbEditorLineSpacing.setObjectName("cmbEditorLineSpacing")
+ self.cmbEditorLineSpacing.addItem("")
+ self.cmbEditorLineSpacing.addItem("")
+ self.cmbEditorLineSpacing.addItem("")
+ self.cmbEditorLineSpacing.addItem("")
+ self.formLayout_9.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.cmbEditorLineSpacing)
+ self.spnEditorLineSpacing = QtWidgets.QSpinBox(self.groupBox_13)
+ self.spnEditorLineSpacing.setEnabled(False)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.spnEditorLineSpacing.sizePolicy().hasHeightForWidth())
+ self.spnEditorLineSpacing.setSizePolicy(sizePolicy)
+ font = QtGui.QFont()
+ font.setBold(False)
+ font.setWeight(50)
+ self.spnEditorLineSpacing.setFont(font)
+ self.spnEditorLineSpacing.setMinimum(50)
+ self.spnEditorLineSpacing.setMaximum(999)
+ self.spnEditorLineSpacing.setProperty("value", 100)
+ self.spnEditorLineSpacing.setObjectName("spnEditorLineSpacing")
+ self.formLayout_9.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.spnEditorLineSpacing)
+ self.label_42 = QtWidgets.QLabel(self.groupBox_13)
+ font = QtGui.QFont()
+ font.setBold(False)
+ font.setWeight(50)
+ self.label_42.setFont(font)
+ self.label_42.setObjectName("label_42")
+ self.formLayout_9.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.label_42)
+ self.spnEditorTabWidth = QtWidgets.QSpinBox(self.groupBox_13)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.spnEditorTabWidth.sizePolicy().hasHeightForWidth())
+ self.spnEditorTabWidth.setSizePolicy(sizePolicy)
+ font = QtGui.QFont()
+ font.setBold(False)
+ font.setWeight(50)
+ self.spnEditorTabWidth.setFont(font)
+ self.spnEditorTabWidth.setMinimum(0)
+ self.spnEditorTabWidth.setMaximum(199)
+ self.spnEditorTabWidth.setProperty("value", 20)
+ self.spnEditorTabWidth.setObjectName("spnEditorTabWidth")
+ self.formLayout_9.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.spnEditorTabWidth)
+ self.chkEditorIndent = QtWidgets.QCheckBox(self.groupBox_13)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.chkEditorIndent.sizePolicy().hasHeightForWidth())
+ self.chkEditorIndent.setSizePolicy(sizePolicy)
+ font = QtGui.QFont()
+ font.setBold(False)
+ font.setWeight(50)
+ self.chkEditorIndent.setFont(font)
+ self.chkEditorIndent.setObjectName("chkEditorIndent")
+ self.formLayout_9.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.chkEditorIndent)
+ self.label_41 = QtWidgets.QLabel(self.groupBox_13)
+ font = QtGui.QFont()
+ font.setBold(False)
+ font.setWeight(50)
+ self.label_41.setFont(font)
+ self.label_41.setObjectName("label_41")
+ self.formLayout_9.setWidget(4, QtWidgets.QFormLayout.LabelRole, self.label_41)
+ self.spnEditorParaAbove = QtWidgets.QSpinBox(self.groupBox_13)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.spnEditorParaAbove.sizePolicy().hasHeightForWidth())
+ self.spnEditorParaAbove.setSizePolicy(sizePolicy)
+ font = QtGui.QFont()
+ font.setBold(False)
+ font.setWeight(50)
+ self.spnEditorParaAbove.setFont(font)
+ self.spnEditorParaAbove.setMinimum(0)
+ self.spnEditorParaAbove.setMaximum(199)
+ self.spnEditorParaAbove.setProperty("value", 5)
+ self.spnEditorParaAbove.setObjectName("spnEditorParaAbove")
+ self.formLayout_9.setWidget(4, QtWidgets.QFormLayout.FieldRole, self.spnEditorParaAbove)
+ self.spnEditorParaBelow = QtWidgets.QSpinBox(self.groupBox_13)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.spnEditorParaBelow.sizePolicy().hasHeightForWidth())
+ self.spnEditorParaBelow.setSizePolicy(sizePolicy)
+ font = QtGui.QFont()
+ font.setBold(False)
+ font.setWeight(50)
+ self.spnEditorParaBelow.setFont(font)
+ self.spnEditorParaBelow.setMinimum(0)
+ self.spnEditorParaBelow.setMaximum(199)
+ self.spnEditorParaBelow.setProperty("value", 5)
+ self.spnEditorParaBelow.setObjectName("spnEditorParaBelow")
+ self.formLayout_9.setWidget(5, QtWidgets.QFormLayout.FieldRole, self.spnEditorParaBelow)
+ self.horizontalLayout_11.addWidget(self.groupBox_13)
+ self.tabViews.addTab(self.tab_4, "")
self.verticalLayout_9.addWidget(self.tabViews)
self.stack.addWidget(self.stackedWidgetPage2)
self.stackedWidgetPage3 = QtWidgets.QWidget()
@@ -1192,10 +1397,10 @@ class Ui_Settings(object):
self.horizontalLayout_8.addWidget(self.stack)
self.retranslateUi(Settings)
- self.stack.setCurrentIndex(0)
- self.tabViews.setCurrentIndex(0)
+ self.stack.setCurrentIndex(1)
+ self.tabViews.setCurrentIndex(3)
self.themeStack.setCurrentIndex(1)
- self.themeEditStack.setCurrentIndex(1)
+ self.themeEditStack.setCurrentIndex(0)
self.lstMenu.currentRowChanged['int'].connect(self.stack.setCurrentIndex)
QtCore.QMetaObject.connectSlotsByName(Settings)
@@ -1323,6 +1528,25 @@ class Ui_Settings(object):
self.btnCorkColor.setShortcut(_translate("Settings", "Ctrl+S"))
self.label_16.setText(_translate("Settings", "Image:"))
self.tabViews.setTabText(self.tabViews.indexOf(self.tab_3), _translate("Settings", "Index cards"))
+ self.groupBox_12.setTitle(_translate("Settings", "Font"))
+ self.label_37.setText(_translate("Settings", "Color:"))
+ self.label_39.setText(_translate("Settings", "Family:"))
+ self.label_38.setText(_translate("Settings", "Size:"))
+ self.label_36.setText(_translate("Settings", "Misspelled:"))
+ self.groupBox_13.setTitle(_translate("Settings", "Paragraphs"))
+ self.label_40.setText(_translate("Settings", "Line spacing:"))
+ self.cmbEditorLineSpacing.setItemText(0, _translate("Settings", "Single"))
+ self.cmbEditorLineSpacing.setItemText(1, _translate("Settings", "1.5 lines"))
+ self.cmbEditorLineSpacing.setItemText(2, _translate("Settings", "Double"))
+ self.cmbEditorLineSpacing.setItemText(3, _translate("Settings", "Proportional"))
+ self.spnEditorLineSpacing.setSuffix(_translate("Settings", "%"))
+ self.label_42.setText(_translate("Settings", "Tab width:"))
+ self.spnEditorTabWidth.setSuffix(_translate("Settings", " px"))
+ self.chkEditorIndent.setText(_translate("Settings", "Indent 1st line"))
+ self.label_41.setText(_translate("Settings", "Spacing:"))
+ self.spnEditorParaAbove.setSuffix(_translate("Settings", " px"))
+ self.spnEditorParaBelow.setSuffix(_translate("Settings", " px"))
+ self.tabViews.setTabText(self.tabViews.indexOf(self.tab_4), _translate("Settings", "Text editor"))
self.lblTitleLabels.setText(_translate("Settings", "Labels"))
self.btnLabelColor.setShortcut(_translate("Settings", "Ctrl+S"))
self.lblTitleStatus.setText(_translate("Settings", "Status"))
diff --git a/src/ui/settings.ui b/src/ui/settings.ui
index 342e99a..b1bff5b 100644
--- a/src/ui/settings.ui
+++ b/src/ui/settings.ui
@@ -7,7 +7,7 @@
0
0
658
- 486
+ 491
@@ -46,7 +46,7 @@
-
- 0
+ 1
@@ -436,7 +436,7 @@ text-align:center;
-
- 0
+ 3
@@ -1485,6 +1485,377 @@ text-align:center;
+
+
+ Text editor
+
+
+ -
+
+
+
+ 75
+ true
+
+
+
+ Font
+
+
+
-
+
+
+
+ 50
+ false
+
+
+
+ Color:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 50
+ false
+
+
+
+
+
+
+
+ -
+
+
+
+ 50
+ false
+
+
+
+ Family:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 150
+ 16777215
+
+
+
+
+ 50
+ false
+
+
+
+
+ -
+
+
+
+ 50
+ false
+
+
+
+ Size:
+
+
+
+ -
+
+
+
+ 50
+ false
+
+
+
+ Misspelled:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 50
+ false
+
+
+
+
+
+
+
+ -
+
+
+
+ 50
+ false
+
+
+
+ 4
+
+
+ 299
+
+
+ 10
+
+
+
+
+
+
+ -
+
+
+
+ 75
+ true
+
+
+
+ Paragraphs
+
+
+
-
+
+
+
+ 50
+ false
+
+
+
+ Line spacing:
+
+
+
+ -
+
+
+
+ 50
+ false
+
+
+
-
+
+ Single
+
+
+ -
+
+ 1.5 lines
+
+
+ -
+
+ Double
+
+
+ -
+
+ Proportional
+
+
+
+
+ -
+
+
+ false
+
+
+
+ 0
+ 0
+
+
+
+
+ 50
+ false
+
+
+
+ %
+
+
+ 50
+
+
+ 999
+
+
+ 100
+
+
+
+ -
+
+
+
+ 50
+ false
+
+
+
+ Tab width:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 50
+ false
+
+
+
+ px
+
+
+ 0
+
+
+ 199
+
+
+ 20
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 50
+ false
+
+
+
+ Indent 1st line
+
+
+
+ -
+
+
+
+ 50
+ false
+
+
+
+ Spacing:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 50
+ false
+
+
+
+ px
+
+
+ 0
+
+
+ 199
+
+
+ 5
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 50
+ false
+
+
+
+ px
+
+
+ 0
+
+
+ 199
+
+
+ 5
+
+
+
+
+
+
+
+
@@ -1897,7 +2268,7 @@ text-align:center;
-
- 1
+ 0
diff --git a/src/ui/views/textEditView.py b/src/ui/views/textEditView.py
index 9ef4745..c893848 100644
--- a/src/ui/views/textEditView.py
+++ b/src/ui/views/textEditView.py
@@ -9,6 +9,7 @@ from ui.editors.basicHighlighter import *
from ui.editors.textFormat import *
from models.outlineModel import *
from functions import *
+import settings
import re
try:
@@ -30,12 +31,15 @@ class textEditView(QTextEdit):
self._highlighting = highlighting
self._textFormat = "text"
self.setAcceptRichText(False)
+ # When setting up a theme, this becomes true.
+ self._fromTheme = False
self.spellcheck = spellcheck
self.currentDict = dict
self.highlighter = None
self._autoResize = autoResize
self._defaultBlockFormat = QTextBlockFormat()
+ self._defaultCharFormat = QTextCharFormat()
self.highlightWord = ""
self.highligtCS = False
self.defaultFontPointSize = qApp.font().pointSize()
@@ -106,6 +110,7 @@ class textEditView(QTextEdit):
pass
self.setupEditorForIndex(self._index)
+ self.loadFontSettings()
#self.document().contentsChanged.connect(self.submit, AUC)
self.updateText()
@@ -155,6 +160,37 @@ class textEditView(QTextEdit):
self.highlighter.setDefaultBlockFormat(self._defaultBlockFormat)
+ def loadFontSettings(self):
+ if self._fromTheme or \
+ not self._index or \
+ type(self._index.model()) != outlineModel or \
+ self._column != Outline.text.value:
+ return
+
+ opt = settings.textEditor
+ f = QFont()
+ f.fromString(opt["font"])
+ self.setFont(f)
+
+
+ cf = QTextCharFormat()
+ cf.setFont(f)
+ cf.setForeground(QColor(opt["fontColor"]))
+
+ bf = QTextBlockFormat()
+ bf.setLineHeight(opt["lineSpacing"], bf.ProportionalHeight)
+ bf.setTextIndent(opt["tabWidth"] * 1 if opt["indent"] else 0)
+ bf.setTopMargin(opt["spacingAbove"])
+ bf.setBottomMargin(opt["spacingBelow"])
+
+ self._defaultCharFormat = cf
+ self._defaultBlockFormat = bf
+
+ if self.highlighter:
+ self.highlighter.setMisspelledColor(QColor(opt["misspelled"]))
+ self.highlighter.setDefaultCharFormat(self._defaultCharFormat)
+ self.highlighter.setDefaultBlockFormat(self._defaultBlockFormat)
+
def setCurrentModelIndexes(self, indexes):
self._index = None
self._indexes = []
@@ -420,9 +456,9 @@ class textEditView(QTextEdit):
cursor = self.textCursor()
if _format == "Clear":
- fmt = QTextCharFormat()
+ fmt = self._defaultCharFormat
cursor.setCharFormat(fmt)
- bf = QTextBlockFormat()
+ bf = self._defaultBlockFormat
cursor.setBlockFormat(bf)
elif _format in ["Bold", "Italic", "Underline"]:
@@ -445,7 +481,7 @@ class textEditView(QTextEdit):
elif _format == "Underline":
fmt.setFontUnderline(not fmt.fontUnderline())
- fmt2 = QTextCharFormat()
+ fmt2 = self._defaultCharFormat
fmt2.setFontWeight(fmt.fontWeight())
fmt2.setFontItalic(fmt.fontItalic())
fmt2.setFontUnderline(fmt.fontUnderline())