Remove lambda slots in preferences dialog that blocked freeing memory

This commit is contained in:
Veronica Berglyd Olsen
2024-06-08 23:34:31 +02:00
parent c8dccbe438
commit 57ee88059d
2 changed files with 76 additions and 58 deletions
-3
View File
@@ -57,9 +57,6 @@ class nwConst:
STATUS_MSG_TIMEOUT = 15000 # milliseconds STATUS_MSG_TIMEOUT = 15000 # milliseconds
MAX_SEARCH_RESULT = 1000 MAX_SEARCH_RESULT = 1000
# Dialogs
DLG_FINISHED = 2
class nwRegEx: class nwRegEx:
+76 -55
View File
@@ -29,13 +29,13 @@ import logging
from PyQt5.QtCore import Qt, pyqtSignal, pyqtSlot from PyQt5.QtCore import Qt, pyqtSignal, pyqtSlot
from PyQt5.QtGui import QCloseEvent from PyQt5.QtGui import QCloseEvent
from PyQt5.QtWidgets import ( from PyQt5.QtWidgets import (
QAbstractButton, QApplication, QCompleter, QDialogButtonBox, QFileDialog, QAbstractButton, QCompleter, QDialogButtonBox, QFileDialog, QHBoxLayout,
QHBoxLayout, QLineEdit, QPushButton, QVBoxLayout, QWidget QLineEdit, QPushButton, QVBoxLayout, QWidget
) )
from novelwriter import CONFIG, SHARED from novelwriter import CONFIG, SHARED
from novelwriter.common import describeFont from novelwriter.common import describeFont
from novelwriter.constants import nwConst, nwUnicode from novelwriter.constants import nwUnicode
from novelwriter.dialogs.quotes import GuiQuoteSelect from novelwriter.dialogs.quotes import GuiQuoteSelect
from novelwriter.extensions.configlayout import NColourLabel, NScrollableForm from novelwriter.extensions.configlayout import NColourLabel, NScrollableForm
from novelwriter.extensions.modified import ( from novelwriter.extensions.modified import (
@@ -695,64 +695,62 @@ class GuiPreferences(NDialog):
self.sidebar.addButton(title, section) self.sidebar.addButton(title, section)
self.mainForm.addGroupLabel(title, section) self.mainForm.addGroupLabel(title, section)
self.quoteSym = {}
# Single Quote Style # Single Quote Style
self.quoteSym["SO"] = QLineEdit(self) self.fmtSQuoteOpen = QLineEdit(self)
self.quoteSym["SO"].setMaxLength(1) self.fmtSQuoteOpen.setMaxLength(1)
self.quoteSym["SO"].setReadOnly(True) self.fmtSQuoteOpen.setReadOnly(True)
self.quoteSym["SO"].setFixedWidth(boxFixed) self.fmtSQuoteOpen.setFixedWidth(boxFixed)
self.quoteSym["SO"].setAlignment(QtAlignCenter) self.fmtSQuoteOpen.setAlignment(QtAlignCenter)
self.quoteSym["SO"].setText(CONFIG.fmtSQuoteOpen) self.fmtSQuoteOpen.setText(CONFIG.fmtSQuoteOpen)
self.btnSingleStyleO = NIconToolButton(self, iSz, "quote") self.btnSQuoteOpen = NIconToolButton(self, iSz, "quote")
self.btnSingleStyleO.clicked.connect(lambda: self._getQuote("SO")) self.btnSQuoteOpen.clicked.connect(self._changeSingleQuoteOpen)
self.mainForm.addRow( self.mainForm.addRow(
self.tr("Single quote open style"), self.quoteSym["SO"], self.tr("Single quote open style"), self.fmtSQuoteOpen,
self.tr("The symbol to use for a leading single quote."), self.tr("The symbol to use for a leading single quote."),
button=self.btnSingleStyleO button=self.btnSQuoteOpen
) )
self.quoteSym["SC"] = QLineEdit(self) self.fmtSQuoteClose = QLineEdit(self)
self.quoteSym["SC"].setMaxLength(1) self.fmtSQuoteClose.setMaxLength(1)
self.quoteSym["SC"].setReadOnly(True) self.fmtSQuoteClose.setReadOnly(True)
self.quoteSym["SC"].setFixedWidth(boxFixed) self.fmtSQuoteClose.setFixedWidth(boxFixed)
self.quoteSym["SC"].setAlignment(QtAlignCenter) self.fmtSQuoteClose.setAlignment(QtAlignCenter)
self.quoteSym["SC"].setText(CONFIG.fmtSQuoteClose) self.fmtSQuoteClose.setText(CONFIG.fmtSQuoteClose)
self.btnSingleStyleC = NIconToolButton(self, iSz, "quote") self.btnSQuoteClose = NIconToolButton(self, iSz, "quote")
self.btnSingleStyleC.clicked.connect(lambda: self._getQuote("SC")) self.btnSQuoteClose.clicked.connect(self._changeSingleQuoteClose)
self.mainForm.addRow( self.mainForm.addRow(
self.tr("Single quote close style"), self.quoteSym["SC"], self.tr("Single quote close style"), self.fmtSQuoteClose,
self.tr("The symbol to use for a trailing single quote."), self.tr("The symbol to use for a trailing single quote."),
button=self.btnSingleStyleC button=self.btnSQuoteClose
) )
# Double Quote Style # Double Quote Style
self.quoteSym["DO"] = QLineEdit(self) self.fmtDQuoteOpen = QLineEdit(self)
self.quoteSym["DO"].setMaxLength(1) self.fmtDQuoteOpen.setMaxLength(1)
self.quoteSym["DO"].setReadOnly(True) self.fmtDQuoteOpen.setReadOnly(True)
self.quoteSym["DO"].setFixedWidth(boxFixed) self.fmtDQuoteOpen.setFixedWidth(boxFixed)
self.quoteSym["DO"].setAlignment(QtAlignCenter) self.fmtDQuoteOpen.setAlignment(QtAlignCenter)
self.quoteSym["DO"].setText(CONFIG.fmtDQuoteOpen) self.fmtDQuoteOpen.setText(CONFIG.fmtDQuoteOpen)
self.btnDoubleStyleO = NIconToolButton(self, iSz, "quote") self.btnDQuoteOpen = NIconToolButton(self, iSz, "quote")
self.btnDoubleStyleO.clicked.connect(lambda: self._getQuote("DO")) self.btnDQuoteOpen.clicked.connect(self._changeDoubleQuoteOpen)
self.mainForm.addRow( self.mainForm.addRow(
self.tr("Double quote open style"), self.quoteSym["DO"], self.tr("Double quote open style"), self.fmtDQuoteOpen,
self.tr("The symbol to use for a leading double quote."), self.tr("The symbol to use for a leading double quote."),
button=self.btnDoubleStyleO button=self.btnDQuoteOpen
) )
self.quoteSym["DC"] = QLineEdit(self) self.fmtDQuoteClose = QLineEdit(self)
self.quoteSym["DC"].setMaxLength(1) self.fmtDQuoteClose.setMaxLength(1)
self.quoteSym["DC"].setReadOnly(True) self.fmtDQuoteClose.setReadOnly(True)
self.quoteSym["DC"].setFixedWidth(boxFixed) self.fmtDQuoteClose.setFixedWidth(boxFixed)
self.quoteSym["DC"].setAlignment(QtAlignCenter) self.fmtDQuoteClose.setAlignment(QtAlignCenter)
self.quoteSym["DC"].setText(CONFIG.fmtDQuoteClose) self.fmtDQuoteClose.setText(CONFIG.fmtDQuoteClose)
self.btnDoubleStyleC = NIconToolButton(self, iSz, "quote") self.btnDQuoteClose = NIconToolButton(self, iSz, "quote")
self.btnDoubleStyleC.clicked.connect(lambda: self._getQuote("DC")) self.btnDQuoteClose.clicked.connect(self._changeDoubleQuoteClose)
self.mainForm.addRow( self.mainForm.addRow(
self.tr("Double quote close style"), self.quoteSym["DC"], self.tr("Double quote close style"), self.fmtDQuoteClose,
self.tr("The symbol to use for a trailing double quote."), self.tr("The symbol to use for a trailing double quote."),
button=self.btnDoubleStyleC button=self.btnDQuoteClose
) )
self.mainForm.finalise() self.mainForm.finalise()
@@ -769,8 +767,6 @@ class GuiPreferences(NDialog):
logger.debug("Close: GuiPreferences") logger.debug("Close: GuiPreferences")
self._saveWindowSize() self._saveWindowSize()
event.accept() event.accept()
QApplication.processEvents()
self.done(nwConst.DLG_FINISHED)
self.softDelete() self.softDelete()
return return
@@ -850,11 +846,36 @@ class GuiPreferences(NDialog):
self.fmtPadThin.setEnabled(state) self.fmtPadThin.setEnabled(state)
return return
def _getQuote(self, qType: str) -> None: @pyqtSlot()
"""Dialog for single quote open.""" def _changeSingleQuoteOpen(self) -> None:
quote, status = GuiQuoteSelect.getQuote(self, current=self.quoteSym[qType].text()) """Change single quote open style."""
quote, status = GuiQuoteSelect.getQuote(self, current=self.fmtSQuoteOpen.text())
if status: if status:
self.quoteSym[qType].setText(quote) self.fmtSQuoteOpen.setText(quote)
return
@pyqtSlot()
def _changeSingleQuoteClose(self) -> None:
"""Change single quote close style."""
quote, status = GuiQuoteSelect.getQuote(self, current=self.fmtSQuoteClose.text())
if status:
self.fmtSQuoteClose.setText(quote)
return
@pyqtSlot()
def _changeDoubleQuoteOpen(self) -> None:
"""Change double quote open style."""
quote, status = GuiQuoteSelect.getQuote(self, current=self.fmtDQuoteOpen.text())
if status:
self.fmtDQuoteOpen.setText(quote)
return
@pyqtSlot()
def _changeDoubleQuoteClose(self) -> None:
"""Change double quote close style."""
quote, status = GuiQuoteSelect.getQuote(self, current=self.fmtDQuoteClose.text())
if status:
self.fmtDQuoteClose.setText(quote)
return return
## ##
@@ -972,10 +993,10 @@ class GuiPreferences(NDialog):
CONFIG.fmtPadThin = self.fmtPadThin.isChecked() CONFIG.fmtPadThin = self.fmtPadThin.isChecked()
# Quotation Style # Quotation Style
CONFIG.fmtSQuoteOpen = self.quoteSym["SO"].text() CONFIG.fmtSQuoteOpen = self.fmtSQuoteOpen.text()
CONFIG.fmtSQuoteClose = self.quoteSym["SC"].text() CONFIG.fmtSQuoteClose = self.fmtSQuoteClose.text()
CONFIG.fmtDQuoteOpen = self.quoteSym["DO"].text() CONFIG.fmtDQuoteOpen = self.fmtDQuoteOpen.text()
CONFIG.fmtDQuoteClose = self.quoteSym["DC"].text() CONFIG.fmtDQuoteClose = self.fmtDQuoteClose.text()
# Finalise # Finalise
CONFIG.saveConfig() CONFIG.saveConfig()