mirror of
https://github.com/olivierkes/manuskript.git
synced 2024-05-14 18:02:23 +12:00
Added setting to disable counting spaces as chars but requires restart
This commit is contained in:
parent
6c84e4c8e3
commit
fc653ad74b
|
@ -23,6 +23,14 @@ def wordCount(text):
|
|||
t = [l for l in t if l]
|
||||
return len(t)
|
||||
|
||||
def charCount(text, use_spaces = True):
|
||||
t = text.strip()
|
||||
|
||||
if not use_spaces:
|
||||
t = t.replace(" ", "")
|
||||
|
||||
return len(t)
|
||||
|
||||
validate_ok = lambda *args, **kwargs: True
|
||||
def uiParse(input, default, converter, validator=validate_ok):
|
||||
"""
|
||||
|
|
|
@ -122,7 +122,7 @@ class outlineItem(abstractItem):
|
|||
|
||||
elif role == Qt.FontRole:
|
||||
f = QFont()
|
||||
if column == E.wordCount and self.isFolder():
|
||||
if (column == E.wordCount or column == E.charCount) and self.isFolder():
|
||||
f.setItalic(True)
|
||||
elif column == E.goal and self.isFolder() and not self.data(E.setGoal):
|
||||
f.setItalic(True)
|
||||
|
@ -143,7 +143,7 @@ class outlineItem(abstractItem):
|
|||
|
||||
# Checking if we will have to recount words
|
||||
updateWordCount = False
|
||||
if column in [E.wordCount, E.goal, E.setGoal]:
|
||||
if column in [E.wordCount, E.charCount, E.goal, E.setGoal]:
|
||||
updateWordCount = not column in self._data or self._data[column] != data
|
||||
|
||||
# Stuff to do before
|
||||
|
@ -156,8 +156,9 @@ class outlineItem(abstractItem):
|
|||
# Stuff to do afterwards
|
||||
if column == E.text:
|
||||
wc = F.wordCount(data)
|
||||
cc = F.charCount(data, settings.countSpaces)
|
||||
self.setData(E.wordCount, wc)
|
||||
self.setData(E.charCount, len(data))
|
||||
self.setData(E.charCount, cc)
|
||||
|
||||
if column == E.compile:
|
||||
# Title changes when compile changes
|
||||
|
@ -225,7 +226,8 @@ class outlineItem(abstractItem):
|
|||
self.setData(self.enum.goalPercentage, "")
|
||||
|
||||
self.emitDataChanged([self.enum.goal, self.enum.setGoal,
|
||||
self.enum.wordCount, self.enum.goalPercentage])
|
||||
self.enum.wordCount, self.enum.charCount,
|
||||
self.enum.goalPercentage])
|
||||
|
||||
if self.parent():
|
||||
self.parent().updateWordCount()
|
||||
|
|
|
@ -48,6 +48,7 @@ folderView = "cork"
|
|||
lastTab = 0
|
||||
openIndexes = [""]
|
||||
progressChars = False
|
||||
countSpaces = True
|
||||
autoSave = False
|
||||
autoSaveDelay = 5
|
||||
autoSaveNoChanges = True
|
||||
|
@ -138,6 +139,7 @@ def save(filename=None, protocol=None):
|
|||
"lastTab": lastTab,
|
||||
"openIndexes": openIndexes,
|
||||
"progressChars": progressChars,
|
||||
"countSpaces": countSpaces,
|
||||
"autoSave":autoSave,
|
||||
"autoSaveDelay":autoSaveDelay,
|
||||
# TODO: Settings Cleanup Task -- Rename saveOnQuit to saveOnProjectClose -- see PR #615
|
||||
|
@ -241,6 +243,10 @@ def load(string, fromString=False, protocol=None):
|
|||
global progressChars
|
||||
progressChars = allSettings["progressChars"]
|
||||
|
||||
if "countSpaces" in allSettings:
|
||||
global countSpaces
|
||||
countSpaces = allSettings["countSpaces"]
|
||||
|
||||
if "autoSave" in allSettings:
|
||||
global autoSave
|
||||
autoSave = allSettings["autoSave"]
|
||||
|
|
|
@ -185,6 +185,9 @@ class settingsWindow(QWidget, Ui_Settings):
|
|||
lambda v: self.lblTreeIconSize.setText("{}x{}".format(v, v)))
|
||||
self.sldTreeIconSize.setValue(settings.viewSettings["Tree"]["iconSize"])
|
||||
|
||||
self.chkCountSpaces.setChecked(settings.countSpaces);
|
||||
self.chkCountSpaces.stateChanged.connect(self.countSpacesChanged)
|
||||
|
||||
self.rdoCorkOldStyle.setChecked(settings.corkStyle == "old")
|
||||
self.rdoCorkNewStyle.setChecked(settings.corkStyle == "new")
|
||||
self.rdoCorkNewStyle.toggled.connect(self.setCorkStyle)
|
||||
|
@ -457,6 +460,11 @@ class settingsWindow(QWidget, Ui_Settings):
|
|||
|
||||
self.mw.treeRedacOutline.viewport().update()
|
||||
|
||||
def countSpacesChanged(self):
|
||||
settings.countSpaces = True if self.chkCountSpaces.checkState() else False
|
||||
|
||||
self.mw.mainEditor.updateStats()
|
||||
|
||||
def setCorkColor(self):
|
||||
color = QColor(settings.corkBackground["color"])
|
||||
self.colorDialog = QColorDialog(color, self)
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Form implementation generated from reading ui file 'manuskript/ui/settings_ui.ui'
|
||||
# Form implementation generated from reading ui file 'settings_ui.ui'
|
||||
#
|
||||
# Created by: PyQt5 UI code generator 5.14.1
|
||||
# Created by: PyQt5 UI code generator 5.15.0
|
||||
#
|
||||
# WARNING! All changes made in this file will be lost!
|
||||
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
|
||||
# run again. Do not edit this file unless you know what you are doing.
|
||||
|
||||
|
||||
from PyQt5 import QtCore, QtGui, QtWidgets
|
||||
|
@ -546,6 +547,25 @@ class Ui_Settings(object):
|
|||
self.sldTreeIconSize.setObjectName("sldTreeIconSize")
|
||||
self.horizontalLayout_11.addWidget(self.sldTreeIconSize)
|
||||
self.verticalLayout_17.addWidget(self.groupBox_16)
|
||||
self.horizontalGroupBox = QtWidgets.QGroupBox(self.tab)
|
||||
font = QtGui.QFont()
|
||||
font.setBold(True)
|
||||
font.setWeight(75)
|
||||
self.horizontalGroupBox.setFont(font)
|
||||
self.horizontalGroupBox.setObjectName("horizontalGroupBox")
|
||||
self.horizontalLayout_13 = QtWidgets.QHBoxLayout(self.horizontalGroupBox)
|
||||
self.horizontalLayout_13.setContentsMargins(9, 9, 9, 9)
|
||||
self.horizontalLayout_13.setObjectName("horizontalLayout_13")
|
||||
self.chkCountSpaces = QtWidgets.QCheckBox(self.horizontalGroupBox)
|
||||
font = QtGui.QFont()
|
||||
font.setBold(False)
|
||||
font.setWeight(50)
|
||||
self.chkCountSpaces.setFont(font)
|
||||
self.chkCountSpaces.setObjectName("chkCountSpaces")
|
||||
self.horizontalLayout_13.addWidget(self.chkCountSpaces)
|
||||
spacerItem5 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_13.addItem(spacerItem5)
|
||||
self.verticalLayout_17.addWidget(self.horizontalGroupBox)
|
||||
self.horizontalLayout_9 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_9.setObjectName("horizontalLayout_9")
|
||||
self.groupBox_8 = QtWidgets.QGroupBox(self.tab)
|
||||
|
@ -643,8 +663,8 @@ class Ui_Settings(object):
|
|||
self.rdoTreeTextNothing.setFont(font)
|
||||
self.rdoTreeTextNothing.setObjectName("rdoTreeTextNothing")
|
||||
self.verticalLayout_16.addWidget(self.rdoTreeTextNothing)
|
||||
spacerItem5 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.verticalLayout_16.addItem(spacerItem5)
|
||||
spacerItem6 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.verticalLayout_16.addItem(spacerItem6)
|
||||
self.rdoTreeTextCC.raise_()
|
||||
self.rdoTreeTextWC.raise_()
|
||||
self.rdoTreeTextProgress.raise_()
|
||||
|
@ -652,8 +672,8 @@ class Ui_Settings(object):
|
|||
self.rdoTreeTextNothing.raise_()
|
||||
self.horizontalLayout_9.addWidget(self.groupBox_9)
|
||||
self.verticalLayout_17.addLayout(self.horizontalLayout_9)
|
||||
spacerItem6 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.verticalLayout_17.addItem(spacerItem6)
|
||||
spacerItem7 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.verticalLayout_17.addItem(spacerItem7)
|
||||
icon = QtGui.QIcon.fromTheme("view-list-tree")
|
||||
self.tabViews.addTab(self.tab, icon, "")
|
||||
self.tab_2 = QtWidgets.QWidget()
|
||||
|
@ -815,8 +835,8 @@ class Ui_Settings(object):
|
|||
self.chkOutlineTitle.setObjectName("chkOutlineTitle")
|
||||
self.gridLayout.addWidget(self.chkOutlineTitle, 3, 0, 1, 1)
|
||||
self.verticalLayout_11.addWidget(self.groupBox_6)
|
||||
spacerItem7 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.verticalLayout_11.addItem(spacerItem7)
|
||||
spacerItem8 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.verticalLayout_11.addItem(spacerItem8)
|
||||
icon = QtGui.QIcon.fromTheme("view-outline")
|
||||
self.tabViews.addTab(self.tab_2, icon, "")
|
||||
self.tab_3 = QtWidgets.QWidget()
|
||||
|
@ -862,8 +882,8 @@ class Ui_Settings(object):
|
|||
self.cmbCorkImage.setFont(font)
|
||||
self.cmbCorkImage.setObjectName("cmbCorkImage")
|
||||
self.verticalLayout_8.addWidget(self.cmbCorkImage)
|
||||
spacerItem8 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.verticalLayout_8.addItem(spacerItem8)
|
||||
spacerItem9 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.verticalLayout_8.addItem(spacerItem9)
|
||||
self.gridLayout_3.addWidget(self.groupBox_7, 1, 1, 1, 1)
|
||||
self.groupBox_11 = QtWidgets.QGroupBox(self.tab_3)
|
||||
font = QtGui.QFont()
|
||||
|
@ -1421,8 +1441,8 @@ class Ui_Settings(object):
|
|||
self.btnLabelColor.setIconSize(QtCore.QSize(64, 64))
|
||||
self.btnLabelColor.setObjectName("btnLabelColor")
|
||||
self.verticalLayout_2.addWidget(self.btnLabelColor)
|
||||
spacerItem9 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.verticalLayout_2.addItem(spacerItem9)
|
||||
spacerItem10 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.verticalLayout_2.addItem(spacerItem10)
|
||||
self.horizontalLayout_2.addLayout(self.verticalLayout_2)
|
||||
self.verticalLayout_3.addLayout(self.horizontalLayout_2)
|
||||
self.horizontalLayout = QtWidgets.QHBoxLayout()
|
||||
|
@ -1439,8 +1459,8 @@ class Ui_Settings(object):
|
|||
self.btnLabelRemove.setIcon(icon)
|
||||
self.btnLabelRemove.setObjectName("btnLabelRemove")
|
||||
self.horizontalLayout.addWidget(self.btnLabelRemove)
|
||||
spacerItem10 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout.addItem(spacerItem10)
|
||||
spacerItem11 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout.addItem(spacerItem11)
|
||||
self.verticalLayout_3.addLayout(self.horizontalLayout)
|
||||
self.stack.addWidget(self.stackedWidgetPage3)
|
||||
self.stackedWidgetPage4 = QtWidgets.QWidget()
|
||||
|
@ -1474,8 +1494,8 @@ class Ui_Settings(object):
|
|||
self.btnStatusRemove.setIcon(icon)
|
||||
self.btnStatusRemove.setObjectName("btnStatusRemove")
|
||||
self.horizontalLayout_3.addWidget(self.btnStatusRemove)
|
||||
spacerItem11 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_3.addItem(spacerItem11)
|
||||
spacerItem12 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_3.addItem(spacerItem12)
|
||||
self.verticalLayout_4.addLayout(self.horizontalLayout_3)
|
||||
self.stack.addWidget(self.stackedWidgetPage4)
|
||||
self.page = QtWidgets.QWidget()
|
||||
|
@ -1523,8 +1543,8 @@ class Ui_Settings(object):
|
|||
self.btnThemeRemove.setIcon(icon)
|
||||
self.btnThemeRemove.setObjectName("btnThemeRemove")
|
||||
self.horizontalLayout_6.addWidget(self.btnThemeRemove)
|
||||
spacerItem12 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_6.addItem(spacerItem12)
|
||||
spacerItem13 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_6.addItem(spacerItem13)
|
||||
self.verticalLayout_12.addLayout(self.horizontalLayout_6)
|
||||
self.themeStack.addWidget(self.stackedWidgetPage1_3)
|
||||
self.stackedWidgetPage2_3 = QtWidgets.QWidget()
|
||||
|
@ -1942,6 +1962,8 @@ class Ui_Settings(object):
|
|||
self.cmbTreeBackground.setItemText(4, _translate("Settings", "Compile"))
|
||||
self.groupBox_16.setTitle(_translate("Settings", "Icon Size"))
|
||||
self.lblTreeIconSize.setText(_translate("Settings", "TextLabel"))
|
||||
self.horizontalGroupBox.setTitle(_translate("Settings", "Char/Word Counter"))
|
||||
self.chkCountSpaces.setText(_translate("Settings", "Count spaces as chars"))
|
||||
self.groupBox_8.setTitle(_translate("Settings", "Folders"))
|
||||
self.rdoTreeItemCount.setText(_translate("Settings", "Show ite&m count"))
|
||||
self.rdoTreeWC.setText(_translate("Settings", "Show &word count"))
|
||||
|
|
|
@ -1101,6 +1101,59 @@
|
|||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="horizontalGroupBox">
|
||||
<property name="font">
|
||||
<font>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>Char/Word Counter</string>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_13">
|
||||
<property name="leftMargin">
|
||||
<number>9</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>9</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>9</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>9</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="chkCountSpaces">
|
||||
<property name="font">
|
||||
<font>
|
||||
<weight>50</weight>
|
||||
<bold>false</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Count spaces as chars</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_7">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_9">
|
||||
<item>
|
||||
|
|
Loading…
Reference in a new issue