things changing

This commit is contained in:
Olivier Keshavjee 2015-06-25 17:06:07 +02:00
parent ed0bfed8dc
commit 2348bb8554
9 changed files with 741 additions and 15 deletions

View file

@ -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

View file

@ -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"]
defaultTextType = allSettings["defaultTextType"]
if "textEditor" in allSettings:
global textEditor
textEditor = allSettings["textEditor"]

View file

@ -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 #
####################################################################################################

View file

@ -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/

View file

@ -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?

View file

@ -222,6 +222,7 @@ def setThemeEditorDatas(editor, themeDatas, pixmap, screenRect):
#f = QFont()
#f.fromString(themeDatas["Text/Font"])
editor.setFont(f)
editor._fromTheme = True

View file

@ -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"))

View file

@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>658</width>
<height>486</height>
<height>491</height>
</rect>
</property>
<property name="windowTitle">
@ -46,7 +46,7 @@
<item>
<widget class="QStackedWidget" name="stack">
<property name="currentIndex">
<number>0</number>
<number>1</number>
</property>
<widget class="QWidget" name="stackedWidgetPage1">
<layout class="QVBoxLayout" name="verticalLayout_7">
@ -436,7 +436,7 @@ text-align:center;</string>
<item>
<widget class="QTabWidget" name="tabViews">
<property name="currentIndex">
<number>0</number>
<number>3</number>
</property>
<widget class="QWidget" name="tab">
<attribute name="title">
@ -1485,6 +1485,377 @@ text-align:center;</string>
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_4">
<attribute name="title">
<string>Text editor</string>
</attribute>
<layout class="QHBoxLayout" name="horizontalLayout_11">
<item>
<widget class="QGroupBox" name="groupBox_12">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="title">
<string>Font</string>
</property>
<layout class="QFormLayout" name="formLayout_8">
<item row="0" column="0">
<widget class="QLabel" name="label_37">
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="text">
<string>Color:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QPushButton" name="btnEditorFontColor">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_39">
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="text">
<string>Family:</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QFontComboBox" name="cmbEditorFontFamily">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>150</width>
<height>16777215</height>
</size>
</property>
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_38">
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="text">
<string>Size:</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_36">
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="text">
<string>Misspelled:</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QPushButton" name="btnEditorMisspelledColor">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QSpinBox" name="spnEditorFontSize">
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="minimum">
<number>4</number>
</property>
<property name="maximum">
<number>299</number>
</property>
<property name="value">
<number>10</number>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_13">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="title">
<string>Paragraphs</string>
</property>
<layout class="QFormLayout" name="formLayout_9">
<item row="0" column="0">
<widget class="QLabel" name="label_40">
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="text">
<string>Line spacing:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="cmbEditorLineSpacing">
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<item>
<property name="text">
<string>Single</string>
</property>
</item>
<item>
<property name="text">
<string>1.5 lines</string>
</property>
</item>
<item>
<property name="text">
<string>Double</string>
</property>
</item>
<item>
<property name="text">
<string>Proportional</string>
</property>
</item>
</widget>
</item>
<item row="1" column="1">
<widget class="QSpinBox" name="spnEditorLineSpacing">
<property name="enabled">
<bool>false</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="suffix">
<string>%</string>
</property>
<property name="minimum">
<number>50</number>
</property>
<property name="maximum">
<number>999</number>
</property>
<property name="value">
<number>100</number>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_42">
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="text">
<string>Tab width:</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QSpinBox" name="spnEditorTabWidth">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="suffix">
<string> px</string>
</property>
<property name="minimum">
<number>0</number>
</property>
<property name="maximum">
<number>199</number>
</property>
<property name="value">
<number>20</number>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QCheckBox" name="chkEditorIndent">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="text">
<string>Indent 1st line</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_41">
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="text">
<string>Spacing:</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QSpinBox" name="spnEditorParaAbove">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="suffix">
<string> px</string>
</property>
<property name="minimum">
<number>0</number>
</property>
<property name="maximum">
<number>199</number>
</property>
<property name="value">
<number>5</number>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QSpinBox" name="spnEditorParaBelow">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="suffix">
<string> px</string>
</property>
<property name="minimum">
<number>0</number>
</property>
<property name="maximum">
<number>199</number>
</property>
<property name="value">
<number>5</number>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
@ -1897,7 +2268,7 @@ text-align:center;</string>
<item>
<widget class="QStackedWidget" name="themeEditStack">
<property name="currentIndex">
<number>1</number>
<number>0</number>
</property>
<widget class="QWidget" name="stackedWidgetPage1_2">
<layout class="QFormLayout" name="formLayout_4">

View file

@ -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())