diff --git a/novelwriter/dialogs/wordlist.py b/novelwriter/dialogs/wordlist.py index 53641830..7c65f535 100644 --- a/novelwriter/dialogs/wordlist.py +++ b/novelwriter/dialogs/wordlist.py @@ -36,6 +36,7 @@ from PyQt5.QtWidgets import ( ) from novelwriter import CONFIG, SHARED +from novelwriter.common import formatFileFilter from novelwriter.core.spellcheck import UserDictionary from novelwriter.extensions.configlayout import NColourLabel @@ -184,12 +185,9 @@ class GuiWordList(QDialog): SHARED.info(self.tr( "Note: The import file must be a plain text file with UTF-8 or ASCII encoding." )) - extFilter = [ - "{0} (*.txt)".format(self.tr("Text files")), - "{0} (*)".format(self.tr("All files")), - ] + ffilter = formatFileFilter(["*.txt", "*"]) path, _ = QFileDialog.getOpenFileName( - self, self.tr("Import File"), str(Path.home()), filter=";;".join(extFilter) + self, self.tr("Import File"), str(Path.home()), filter=ffilter ) if path: try: diff --git a/novelwriter/guimain.py b/novelwriter/guimain.py index 0f3fa719..842a9e6c 100644 --- a/novelwriter/guimain.py +++ b/novelwriter/guimain.py @@ -63,7 +63,7 @@ from novelwriter.tools.writingstats import GuiWritingStats from novelwriter.enum import ( nwDocAction, nwDocInsert, nwDocMode, nwItemType, nwWidget, nwView ) -from novelwriter.common import hexToInt +from novelwriter.common import formatFileFilter, hexToInt logger = logging.getLogger(__name__) @@ -664,14 +664,9 @@ class GuiMain(QMainWindow): return False lastPath = CONFIG.lastPath() - extFilter = [ - "{0} (*.txt)".format(self.tr("Text files")), - "{0} (*.md)".format(self.tr("Markdown files")), - "{0} (*.nwd)".format(self.tr("novelWriter files")), - "{0} (*)".format(self.tr("All files")), - ] + ffilter = formatFileFilter(["*.txt", "*.md", "*.nwd", "*"]) loadFile, _ = QFileDialog.getOpenFileName( - self, self.tr("Import File"), str(lastPath), filter=";;".join(extFilter) + self, self.tr("Import File"), str(lastPath), filter=ffilter ) if not loadFile: return False diff --git a/novelwriter/shared.py b/novelwriter/shared.py index 1c003687..c7f7f70d 100644 --- a/novelwriter/shared.py +++ b/novelwriter/shared.py @@ -32,6 +32,7 @@ from pathlib import Path from PyQt5.QtCore import QObject, QRunnable, QThreadPool, pyqtSignal from PyQt5.QtWidgets import QFileDialog, QMessageBox, QWidget +from novelwriter.common import formatFileFilter from novelwriter.constants import nwFiles from novelwriter.core.spellcheck import NWSpellEnchant @@ -221,13 +222,12 @@ class SharedData(QObject): def getProjectPath(self, parent: QWidget, path: str | Path | None = None, allowZip: bool = False) -> Path | None: """Open the file dialog and select a novelWriter project file.""" - label = (self.tr("novelWriter Project File or Zip") + label = (self.tr("novelWriter Project File or Zip File") if allowZip else self.tr("novelWriter Project File")) ext = f"{nwFiles.PROJ_FILE} *.zip" if allowZip else nwFiles.PROJ_FILE + ffilter = formatFileFilter([(label, ext), "*"]) selected, _ = QFileDialog.getOpenFileName( - parent, self.tr("Open Project"), str(path or ""), filter=";;".join( - [f"{label} ({ext})", "{0} (*)".format(self.tr("All Files"))] - ) + parent, self.tr("Open Project"), str(path or ""), filter=ffilter ) return Path(selected) if selected else None diff --git a/novelwriter/tools/dictionaries.py b/novelwriter/tools/dictionaries.py index 23e29bcf..7d122348 100644 --- a/novelwriter/tools/dictionaries.py +++ b/novelwriter/tools/dictionaries.py @@ -37,7 +37,7 @@ from PyQt5.QtWidgets import ( from novelwriter import CONFIG, SHARED from novelwriter.error import formatException -from novelwriter.common import openExternalPath, formatInt, getFileSize +from novelwriter.common import formatFileFilter, openExternalPath, formatInt, getFileSize logger = logging.getLogger(__name__) @@ -180,12 +180,11 @@ class GuiDictionaries(QDialog): @pyqtSlot() def _doBrowseHunspell(self): """Browse for a Free/Libre Office dictionary.""" - extFilter = [ - self.tr("Free or Libre Office extension ({0})").format("*.sox *.oxt"), - self.tr("All files ({0})").format("*"), - ] + ffilter = formatFileFilter([ + (self.tr("Free or Libre Office extension"), "*.sox *.oxt"), "*" + ]) soxFile, _ = QFileDialog.getOpenFileName( - self, self.tr("Browse Files"), "", filter=";;".join(extFilter) + self, self.tr("Browse Files"), "", filter=ffilter ) if soxFile: path = Path(soxFile).absolute() diff --git a/novelwriter/tools/writingstats.py b/novelwriter/tools/writingstats.py index a215df20..95f737e2 100644 --- a/novelwriter/tools/writingstats.py +++ b/novelwriter/tools/writingstats.py @@ -381,7 +381,7 @@ class GuiWritingStats(QDialog): # Generate the file name savePath = CONFIG.lastPath() / f"sessionStats.{fileExt}" savePath, _ = QFileDialog.getSaveFileName( - self, self.tr("Save Data As"), str(savePath), "%s (*.%s)" % (textFmt, fileExt) + self, self.tr("Save Data As"), str(savePath), f"{textFmt} (*.{fileExt})" ) if not savePath: return False