Merge branch 'release'
This commit is contained in:
+32
-30
@@ -2,72 +2,74 @@
|
||||
|
||||
## Main Developer
|
||||
|
||||
* Veronica Berglyd Olsen (@vkbo)
|
||||
* Veronica Berglyd Olsen
|
||||
|
||||
## Contributors
|
||||
|
||||
* Concept: Marian Lückhof (@Number042)
|
||||
* Internationalisation: Bruno Meneguello (@bkmeneguello)
|
||||
* Setup and Packaging: Rachel Powers (@Ryex)
|
||||
* Early Concept: Marian Lückhof
|
||||
* Internationalisation: Bruno Meneguello
|
||||
* Setup and Packaging: Rachel Powers
|
||||
|
||||
For other contributions, see the project's [Contributors](https://github.com/vkbo/novelWriter/graphs/contributors) page.
|
||||
|
||||
## Artwork
|
||||
|
||||
The artwork on the Welcome dialog was created by [Louis Durrant](https://louisdurrant.art).
|
||||
The artwork on the Welcome dialog was created by Louis Durrant.
|
||||
|
||||
## Translations
|
||||
|
||||
The default language is English (UK) with English (US) as an option. These are the original
|
||||
translators for the languages currently available:
|
||||
|
||||
* Dutch: Martijn van der Kleijn (@mvdkleijn)
|
||||
* French: Jan Lüdke (@jyhelle)
|
||||
* German: Myian (@heymyian)
|
||||
* Italian: Riccardo Mangili
|
||||
* Japanese: hebekeg (@hebekeg)
|
||||
* Latin American Spanish: Tommy Marplatt (@tmarplatt)
|
||||
* Norwegian: Veronica Berglyd Olsen (@vkbo)
|
||||
* Portuguese: Bruno Meneguello (@bkmeneguello)
|
||||
* Simplified Chinese: Qianzhi Long (@longqzh)
|
||||
* **Dutch:** Martijn van der Kleijn (mvdkleijn)
|
||||
* **French:** Jan Lüdke (jyhelle)
|
||||
* **German:** Myian (HeyMyian)
|
||||
* **Italian:** Riccardo Mangili
|
||||
* **Japanese:** hebekeg
|
||||
* **Latin American Spanish:** Tommy Marplatt (tmarplatt)
|
||||
* **Norwegian:** Veronica Berglyd Olsen (vkbo)
|
||||
* **Polish:** Anna Maria Polak (Nauthiz)
|
||||
* **Portuguese:** Bruno Meneguello (bkmeneguello)
|
||||
* **Simplified Chinese:** Qianzhi Long (longqzh)
|
||||
|
||||
Additional larger translation contributions:
|
||||
|
||||
* French: Albert Aribaud (@aaribaud)
|
||||
* **French:** Albert Aribaud (aaribaud)
|
||||
* **Portuguese:** Oli Maia (olimaia)
|
||||
|
||||
Translations are managed on [Crowdin](https://crowdin.com/project/novelwriter), and more
|
||||
contributions are listed on the project's [Members](https://crowdin.com/project/novelwriter/members) page.
|
||||
contributions are listed on the project's Members page.
|
||||
|
||||
## Libraries
|
||||
|
||||
The following libraries are dependencies of novelWriter:
|
||||
|
||||
* [Qt5](https://www.qt.io) by Qt Company
|
||||
* [PyQt5](https://www.riverbankcomputing.com/software/pyqt) by Riverbank Computing
|
||||
* [Enchant](https://abiword.github.io/enchant) by Dom Lachowicz
|
||||
* [PyEnchant](https://pyenchant.github.io/pyenchant) by Dimitri Merejkowsky
|
||||
* **Qt5** by Qt Company
|
||||
* **PyQt5** by Riverbank Computing
|
||||
* **Enchant** by Dom Lachowicz
|
||||
* **PyEnchant** by Dimitri Merejkowsky
|
||||
|
||||
## Assets
|
||||
|
||||
Some of the assets bundled with novelWriter were adapted from the following sources:
|
||||
|
||||
* [Typicons](https://github.com/stephenhutchings/typicons.font) icons by Stephen Hutchings (CC BY-SA 4.0)
|
||||
* [Tomorrow](https://github.com/chriskempson/base16) syntax themes by Chris Kempson (MIT License)
|
||||
* [Owl](https://github.com/sdras/night-owl-vscode-theme) syntax themes by Sarah Drasner (MIT License)
|
||||
* [Solarized](https://github.com/altercation/solarized) themes by Ethan Schoonover (MIT License)
|
||||
* [Cyberpunk Night](https://github.com/alemvigh) theme by Anders Lemvigh (CC BY-SA 4.0)
|
||||
* [Dracula](https://draculatheme.com) theme by Zeno Rocha (MIT License)
|
||||
* [Snazzy Light](https://github.com/loilo/vscode-snazzy-light) theme by Florian Reuschel (MIT License)
|
||||
* **Typicons** icons by Stephen Hutchings (CC BY-SA 4.0)
|
||||
* **Tomorrow** syntax themes by Chris Kempson (MIT License)
|
||||
* **Owl** syntax themes by Sarah Drasner (MIT License)
|
||||
* **Solarized** themes by Ethan Schoonover (MIT License)
|
||||
* **Cyberpunk Night** theme by Anders Lemvigh (CC BY-SA 4.0)
|
||||
* **Dracula** theme by Zeno Rocha (MIT License)
|
||||
* **Snazzy Light** theme by Florian Reuschel (MIT License)
|
||||
|
||||
## Fonts
|
||||
|
||||
The font used for the main novelWriter logo, mimetype and text banners is Pridi. Other fonts are
|
||||
used on buttons and icons.
|
||||
|
||||
* Pridi by Cadson Demak (Open Font License, Version 1.1)
|
||||
* Source Sans Pro by Paul D. Hunt (SIL Open Font License)
|
||||
* **Pridi** by Cadson Demak (Open Font License, Version 1.1)
|
||||
* **Source Sans Pro** by Paul D. Hunt (SIL Open Font License)
|
||||
|
||||
## Special Mentions
|
||||
|
||||
Additional thanks to @johnblommers who was an early user and who has provided a lot of very useful
|
||||
Additional thanks to John Blommers who was an early user and who has provided a lot of very useful
|
||||
feedback over the years.
|
||||
|
||||
+150
-150
@@ -1267,27 +1267,27 @@
|
||||
<context>
|
||||
<name>GuiDocViewFooter</name>
|
||||
<message>
|
||||
<location filename="../novelwriter/gui/docviewer.py" line="838" />
|
||||
<location filename="../novelwriter/gui/docviewer.py" line="840" />
|
||||
<source>Show/Hide Viewer Panel</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/gui/docviewer.py" line="842" />
|
||||
<location filename="../novelwriter/gui/docviewer.py" line="844" />
|
||||
<source>Comments</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/gui/docviewer.py" line="848" />
|
||||
<location filename="../novelwriter/gui/docviewer.py" line="850" />
|
||||
<source>Show Comments</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/gui/docviewer.py" line="852" />
|
||||
<location filename="../novelwriter/gui/docviewer.py" line="854" />
|
||||
<source>Synopsis</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/gui/docviewer.py" line="858" />
|
||||
<location filename="../novelwriter/gui/docviewer.py" line="860" />
|
||||
<source>Show Synopsis Comments</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
@@ -1534,12 +1534,12 @@
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/guimain.py" line="1045" />
|
||||
<location filename="../novelwriter/guimain.py" line="1061" />
|
||||
<source>Some changes will not be applied until novelWriter has been restarted.</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/guimain.py" line="1398" />
|
||||
<location filename="../novelwriter/guimain.py" line="1414" />
|
||||
<source>Could not find the reference for tag '{0}'. It either doesn't exist, or the index is out of date. The index can be updated from the Tools menu, or by pressing {1}.</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
@@ -2457,64 +2457,64 @@
|
||||
<context>
|
||||
<name>GuiOutlineDetails</name>
|
||||
<message>
|
||||
<location filename="../novelwriter/gui/outline.py" line="1004" />
|
||||
<location filename="../novelwriter/gui/outline.py" line="796" />
|
||||
<location filename="../novelwriter/gui/outline.py" line="771" />
|
||||
<location filename="../novelwriter/gui/outline.py" line="1005" />
|
||||
<location filename="../novelwriter/gui/outline.py" line="797" />
|
||||
<location filename="../novelwriter/gui/outline.py" line="772" />
|
||||
<source>Title</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/gui/outline.py" line="772" />
|
||||
<location filename="../novelwriter/gui/outline.py" line="773" />
|
||||
<source>Chapter</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/gui/outline.py" line="773" />
|
||||
<location filename="../novelwriter/gui/outline.py" line="774" />
|
||||
<source>Scene</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/gui/outline.py" line="774" />
|
||||
<location filename="../novelwriter/gui/outline.py" line="775" />
|
||||
<source>Section</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/gui/outline.py" line="797" />
|
||||
<location filename="../novelwriter/gui/outline.py" line="798" />
|
||||
<source>Document</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/gui/outline.py" line="798" />
|
||||
<location filename="../novelwriter/gui/outline.py" line="799" />
|
||||
<source>Status</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/gui/outline.py" line="815" />
|
||||
<location filename="../novelwriter/gui/outline.py" line="816" />
|
||||
<source>Characters</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/gui/outline.py" line="816" />
|
||||
<location filename="../novelwriter/gui/outline.py" line="817" />
|
||||
<source>Words</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/gui/outline.py" line="817" />
|
||||
<location filename="../novelwriter/gui/outline.py" line="818" />
|
||||
<source>Paragraphs</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/gui/outline.py" line="834" />
|
||||
<location filename="../novelwriter/gui/outline.py" line="835" />
|
||||
<source>Synopsis</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/gui/outline.py" line="916" />
|
||||
<location filename="../novelwriter/gui/outline.py" line="917" />
|
||||
<source>Title Details</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/gui/outline.py" line="941" />
|
||||
<location filename="../novelwriter/gui/outline.py" line="942" />
|
||||
<source>Reference Tags</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
@@ -2522,7 +2522,7 @@
|
||||
<context>
|
||||
<name>GuiOutlineHeaderMenu</name>
|
||||
<message>
|
||||
<location filename="../novelwriter/gui/outline.py" line="735" />
|
||||
<location filename="../novelwriter/gui/outline.py" line="736" />
|
||||
<source>Select Columns</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
@@ -2548,7 +2548,7 @@
|
||||
<context>
|
||||
<name>GuiOutlineTree</name>
|
||||
<message>
|
||||
<location filename="../novelwriter/gui/outline.py" line="528" />
|
||||
<location filename="../novelwriter/gui/outline.py" line="529" />
|
||||
<source>Save Outline As</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
@@ -2556,589 +2556,589 @@
|
||||
<context>
|
||||
<name>GuiPreferences</name>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="69" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="63" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="66" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="60" />
|
||||
<source>Preferences</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="75" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="72" />
|
||||
<source>Search</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="147" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="145" />
|
||||
<source>General</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="152" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="150" />
|
||||
<source>Appearance</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="165" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="163" />
|
||||
<source>Display language</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="191" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="166" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="189" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="164" />
|
||||
<source>Requires restart to take effect.</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="177" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="175" />
|
||||
<source>Colour theme</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="178" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="176" />
|
||||
<source>General colour theme and icons.</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="190" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="188" />
|
||||
<source>Application font</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="199" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="197" />
|
||||
<source>Hide vertical scroll bars in main windows</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="208" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="200" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="206" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="198" />
|
||||
<source>Scrolling available with mouse wheel and keys only.</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="207" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="205" />
|
||||
<source>Hide horizontal scroll bars in main windows</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="215" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="213" />
|
||||
<source>Use the system's font selection dialog</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="216" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="214" />
|
||||
<source>Turn off to use the Qt font dialog, which may have more options.</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="222" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="220" />
|
||||
<source>Document Style</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="235" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="233" />
|
||||
<source>Document colour theme</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="236" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="234" />
|
||||
<source>Colour theme for the editor and viewer.</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="248" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="246" />
|
||||
<source>Document font</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="429" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="418" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="249" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="427" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="416" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="247" />
|
||||
<source>Applies to both document editor and viewer.</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="257" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="255" />
|
||||
<source>Emphasise partition and chapter labels</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="258" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="256" />
|
||||
<source>Makes them stand out in the project tree.</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="265" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="263" />
|
||||
<source>Show full path in document header</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="266" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="264" />
|
||||
<source>Add the parent folder names to the header.</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="273" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="271" />
|
||||
<source>Include project notes in status bar word count</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="279" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="277" />
|
||||
<source>Auto Save</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="291" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="289" />
|
||||
<source>Save document interval</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="292" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="290" />
|
||||
<source>How often the document is automatically saved.</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="303" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="292" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="301" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="290" />
|
||||
<source>seconds</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="302" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="300" />
|
||||
<source>Save project interval</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="303" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="301" />
|
||||
<source>How often the project is automatically saved.</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="309" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="307" />
|
||||
<source>Project Backup</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="316" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="314" />
|
||||
<source>Browse</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="320" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="318" />
|
||||
<source>Backup storage location</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="840" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="321" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="825" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="319" />
|
||||
<source>Path: {0}</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="329" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="327" />
|
||||
<source>Run backup when the project is closed</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="330" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="328" />
|
||||
<source>Can be overridden for individual projects in Project Settings.</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="339" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="337" />
|
||||
<source>Ask before running backup</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="340" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="338" />
|
||||
<source>If off, backups will run in the background.</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="346" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="344" />
|
||||
<source>Session Timer</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="355" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="353" />
|
||||
<source>Pause the session timer when not writing</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="356" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="354" />
|
||||
<source>Also pauses when the application window does not have focus.</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="367" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="365" />
|
||||
<source>Editor inactive time before pausing timer</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="368" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="366" />
|
||||
<source>User activity includes typing and changing the content.</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="369" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="367" />
|
||||
<source>minutes</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="373" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="371" />
|
||||
<source>Writing</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="378" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="376" />
|
||||
<source>Text Flow</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="390" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="388" />
|
||||
<source>Maximum text width in "Normal Mode"</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="391" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="389" />
|
||||
<source>Set to 0 to disable this feature.</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="442" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="430" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="402" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="391" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="440" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="428" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="400" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="389" />
|
||||
<source>px</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="401" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="399" />
|
||||
<source>Maximum text width in "Focus Mode"</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="402" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="400" />
|
||||
<source>The maximum width cannot be disabled.</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="409" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="407" />
|
||||
<source>Hide document footer in "Focus Mode"</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="410" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="408" />
|
||||
<source>Hide the information bar in the document editor.</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="417" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="415" />
|
||||
<source>Justify the text margins</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="428" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="426" />
|
||||
<source>Minimum text margin</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="440" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="438" />
|
||||
<source>Tab width</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="441" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="439" />
|
||||
<source>The width of a tab key press in the editor and viewer.</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="448" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="446" />
|
||||
<source>Text Editing</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="468" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="466" />
|
||||
<source>Spell check language</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="469" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="467" />
|
||||
<source>Available languages are determined by your system.</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="476" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="474" />
|
||||
<source>Auto-select word under cursor</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="477" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="475" />
|
||||
<source>Apply formatting to word under cursor if no selection is made.</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="484" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="482" />
|
||||
<source>Show tabs and spaces</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="491" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="489" />
|
||||
<source>Show line endings</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="497" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="495" />
|
||||
<source>Editor Scrolling</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="506" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="504" />
|
||||
<source>Scroll past end of the document</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="507" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="505" />
|
||||
<source>Also centres the cursor when scrolling.</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="514" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="512" />
|
||||
<source>Typewriter style scrolling when you type</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="515" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="513" />
|
||||
<source>Keeps the cursor at a fixed vertical position.</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="525" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="523" />
|
||||
<source>Minimum position for Typewriter scrolling</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="526" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="524" />
|
||||
<source>Percentage of the editor height from the top.</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="532" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="530" />
|
||||
<source>Text Highlighting</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="538" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="536" />
|
||||
<source>None</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="539" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="537" />
|
||||
<source>Single Quotes</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="540" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="538" />
|
||||
<source>Double Quotes</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="541" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="539" />
|
||||
<source>Both</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="544" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="542" />
|
||||
<source>Highlight dialogue</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="545" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="543" />
|
||||
<source>Applies to the selected quote styles.</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="551" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="549" />
|
||||
<source>Allow open-ended dialogue</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="552" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="550" />
|
||||
<source>Highlight dialogue line with no closing quote.</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="561" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="559" />
|
||||
<source>Dialogue narrator break symbol</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="562" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="560" />
|
||||
<source>Symbol to indicate injected narrator break.</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="571" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="569" />
|
||||
<source>Dialogue line symbol</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="572" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="570" />
|
||||
<source>Lines starting with this symbol are dialogue.</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="588" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="586" />
|
||||
<source>Alternative dialogue symbols</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="589" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="587" />
|
||||
<source>Custom highlighting of dialogue text.</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="595" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="593" />
|
||||
<source>Add highlight colour to emphasised text</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="603" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="596" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="601" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="594" />
|
||||
<source>Applies to the document editor only.</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="602" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="600" />
|
||||
<source>Highlight multiple or trailing spaces</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="609" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="607" />
|
||||
<source>Text Automation</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="621" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="619" />
|
||||
<source>Auto-replace text as you type</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="622" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="620" />
|
||||
<source>Allow the editor to replace symbols as you type.</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="630" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="628" />
|
||||
<source>Auto-replace single quotes</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="640" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="631" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="638" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="629" />
|
||||
<source>Try to guess which is an opening or a closing quote.</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="639" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="637" />
|
||||
<source>Auto-replace double quotes</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="648" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="646" />
|
||||
<source>Auto-replace dashes</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="649" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="647" />
|
||||
<source>Double and triple hyphens become short and long dashes.</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="657" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="655" />
|
||||
<source>Auto-replace dots</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="658" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="656" />
|
||||
<source>Three consecutive dots become ellipsis.</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="667" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="665" />
|
||||
<source>Insert non-breaking space before</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="668" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="666" />
|
||||
<source>Automatically add space before any of these symbols.</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="677" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="675" />
|
||||
<source>Insert non-breaking space after</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="678" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="676" />
|
||||
<source>Automatically add space after any of these symbols.</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="686" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="684" />
|
||||
<source>Use thin space instead</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="687" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="685" />
|
||||
<source>Inserts a thin space instead of a regular space.</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="693" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="691" />
|
||||
<source>Quotation Style</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="708" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="706" />
|
||||
<source>Single quote open style</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="709" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="707" />
|
||||
<source>The symbol to use for a leading single quote.</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="722" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="720" />
|
||||
<source>Single quote close style</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="723" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="721" />
|
||||
<source>The symbol to use for a trailing single quote.</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="737" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="735" />
|
||||
<source>Double quote open style</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="738" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="736" />
|
||||
<source>The symbol to use for a leading double quote.</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="751" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="749" />
|
||||
<source>Double quote close style</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="752" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="750" />
|
||||
<source>The symbol to use for a trailing double quote.</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="836" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="821" />
|
||||
<source>Backup Directory</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
|
||||
+220
-220
File diff suppressed because it is too large
Load Diff
+210
-210
File diff suppressed because it is too large
Load Diff
+210
-210
File diff suppressed because it is too large
Load Diff
+210
-210
File diff suppressed because it is too large
Load Diff
+210
-210
File diff suppressed because it is too large
Load Diff
+210
-210
File diff suppressed because it is too large
Load Diff
+210
-210
File diff suppressed because it is too large
Load Diff
+4988
File diff suppressed because it is too large
Load Diff
+213
-213
File diff suppressed because it is too large
Load Diff
+210
-210
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,116 @@
|
||||
{
|
||||
"Synopsis": "Streszczenie",
|
||||
"Short Description": "Krótki opis",
|
||||
"Comment": "Komentarz",
|
||||
"Notes": "Notatki",
|
||||
"Tag": "Znacznik",
|
||||
"Point of View": "Punkt widzenia",
|
||||
"Focus": "Skupienie",
|
||||
"Characters": "Postacie",
|
||||
"Plot": "Fabuła",
|
||||
"Timeline": "Oś czasu",
|
||||
"Locations": "Miejsca",
|
||||
"Objects": "Obiekty",
|
||||
"Entities": "Podmioty",
|
||||
"Custom": "Różne",
|
||||
"0": "zero",
|
||||
"1": "pierwszy",
|
||||
"2": "drugi",
|
||||
"3": "trzeci",
|
||||
"4": "czwarty",
|
||||
"5": "piąty",
|
||||
"6": "szósty",
|
||||
"7": "siódmy",
|
||||
"8": "ósmy",
|
||||
"9": "dziewiąty",
|
||||
"10": "dziesiąty",
|
||||
"11": "jedenasty",
|
||||
"12": "dwunasty",
|
||||
"13": "trzynasty",
|
||||
"14": "czternasty",
|
||||
"15": "piętnasty",
|
||||
"16": "szesnasty",
|
||||
"17": "siedemnasty",
|
||||
"18": "osiemnasty",
|
||||
"19": "dziewiętnasty",
|
||||
"20": "dwudziesty",
|
||||
"21": "dwudziesty pierwszy",
|
||||
"22": "dwudziesty drugi",
|
||||
"23": "dwudziesty Trzeci",
|
||||
"24": "dwudziesty czwarty",
|
||||
"25": "dwudziesty piąty",
|
||||
"26": "dwudziesty szósty",
|
||||
"27": "dwudziesty siódmy",
|
||||
"28": "dwudziesty ósmy",
|
||||
"29": "dwudziesty dziewiąty",
|
||||
"30": "trzydziesty",
|
||||
"31": "trzydziesty pierwszy",
|
||||
"32": "trzydziesty drugi",
|
||||
"33": "trzydziesty trzeci",
|
||||
"34": "trzydziesty czwarty",
|
||||
"35": "trzydziesty piąty",
|
||||
"36": "trzydziesty szósty",
|
||||
"37": "trzydziesty siódmy",
|
||||
"38": "trzydziesty ósmy",
|
||||
"39": "trzydziesty dziewiaty",
|
||||
"40": "czterdziesty",
|
||||
"41": "czterdziesty pierwszy",
|
||||
"42": "czterdziesty drugi",
|
||||
"43": "czterdziesty Trzeci",
|
||||
"44": "czterdziesty czwarty",
|
||||
"45": "czterdziesty piąty",
|
||||
"46": "czterdziesty szósty",
|
||||
"47": "czterdziesty siódmy",
|
||||
"48": "czterdziesty ósmy",
|
||||
"49": "czterdziesty dziewiąty",
|
||||
"50": "pięćdziesiąty",
|
||||
"51": "pięćdziesiąty pierwszy",
|
||||
"52": "pięćdziesiąty drugi",
|
||||
"53": "pięćdziesiąty trzeci",
|
||||
"54": "pięćdziesiąty czwarty",
|
||||
"55": "pięćdziesiąty piąty",
|
||||
"56": "pięćdziesiąty szósty",
|
||||
"57": "pięćdziesiąty siódmy",
|
||||
"58": "pięćdziesiąty ósmy",
|
||||
"59": "pięćdziesiąty dziewiąty",
|
||||
"60": "sześćdziesiąty",
|
||||
"61": "sześćdziesiąty pierwszy",
|
||||
"62": "sześćdziesiąty drugi",
|
||||
"63": "sześćdziesiąty trzeci",
|
||||
"64": "sześćdziesiąty czwarty",
|
||||
"65": "sześćdziesiąty piąty",
|
||||
"66": "sześćdziesiąty szósty",
|
||||
"67": "sześćdziesiąty siódmy",
|
||||
"68": "sześćdziesiąty ósmy",
|
||||
"69": "sześćdziesiąty dziewiąty",
|
||||
"70": "siedemdziesiąty",
|
||||
"71": "siedemdziesiąty pierwszy",
|
||||
"72": "siedemdziesiąty drugi",
|
||||
"73": "siedemdziesiąty trzeci",
|
||||
"74": "siedemdziesiąty czwarty",
|
||||
"75": "siedemdziesiąty piąty",
|
||||
"76": "siedemdziesiąty szósty",
|
||||
"77": "siedemdziesiąty siódmy",
|
||||
"78": "siedemdziesiąty ósmy",
|
||||
"79": "siedemdziesiąty dziewiąty",
|
||||
"80": "osiemdziesiąty",
|
||||
"81": "osiemdziesiąty pierwszy",
|
||||
"82": "osiemdziesiąty drugi",
|
||||
"83": "osiemdziesiąty trzeci",
|
||||
"84": "osiemdziesiąty czwarty",
|
||||
"85": "osiemdziesiąty piąty",
|
||||
"86": "osiemdziesiąty szósty",
|
||||
"87": "osiemdziesiąty siódmy",
|
||||
"88": "osiemdziesiąty ósmy",
|
||||
"89": "osiemdziesiąty dziewiąty",
|
||||
"90": "dziewięćdziesiąty",
|
||||
"91": "dziewięćdziesiąty pierwszy",
|
||||
"92": "dziewięćdziesiąty drugi",
|
||||
"93": "dziewięćdziesiąty trzeci",
|
||||
"94": "dziewięćdziesiąty czwarty",
|
||||
"95": "dziewięćdziesiąty piąty",
|
||||
"96": "dziewięćdziesiąty szósty",
|
||||
"97": "dziewięćdziesiąty siódmy",
|
||||
"98": "dziewięćdziesiąty ósmy",
|
||||
"99": "dziewięćdziesiąty dziewiąty"
|
||||
}
|
||||
@@ -1,84 +1,92 @@
|
||||
<!DOCTYPE html public "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
||||
<html>
|
||||
<body>
|
||||
|
||||
<h3>Main Developer</h3>
|
||||
<p>Veronica Berglyd Olsen (<a href="https://github.com/vkbo">@vkbo</a>)</p>
|
||||
|
||||
<p>Veronica Berglyd Olsen</p>
|
||||
|
||||
<h3>Contributors</h3>
|
||||
|
||||
<p>
|
||||
• <b>Concept:</b> Marian Lückhof (<a href="https://github.com/Number042">@Number042</a>)<br>
|
||||
• <b>Internationalisation:</b> Bruno Meneguello (<a href="https://github.com/bkmeneguello">@bkmeneguello</a>)<br>
|
||||
• <b>Setup and Packaging:</b> Rachel Powers (<a href="https://github.com/Ryex">@Ryex</a>)
|
||||
</p>
|
||||
<ul>
|
||||
<li><b>Early Concept:</b> Marian Lückhof</li>
|
||||
<li><b>Internationalisation:</b> Bruno Meneguello</li>
|
||||
<li><b>Setup and Packaging:</b> Rachel Powers</li>
|
||||
</ul>
|
||||
|
||||
<p>For other contributions, see the project's
|
||||
<a href="https://github.com/vkbo/novelWriter/graphs/contributors">Contributors</a> page.</p>
|
||||
|
||||
<h3>Artwork</h3>
|
||||
|
||||
<p>The artwork on the Welcome dialog was created by <a href="https://louisdurrant.art">Louis Durrant</a>.</p>
|
||||
<p>The artwork on the Welcome dialog was created by Louis Durrant.</p>
|
||||
|
||||
<h3>Translations</h3>
|
||||
|
||||
<p>The default language is English (UK) with English (US) as an option. These are the original
|
||||
translators for the languages currently available:</p>
|
||||
<p>
|
||||
• <b>Dutch:</b> Martijn van der Kleijn (<a href="https://github.com/mvdkleijn">@mvdkleijn</a>)<br>
|
||||
• <b>French:</b> Jan Lüdke (<a href="https://github.com/jyhelle">@jyhelle</a>)<br>
|
||||
• <b>German:</b> Myian (<a href="https://github.com/heymyian">@heymyian</a>)<br>
|
||||
• <b>Italian:</b> Riccardo Mangili<br>
|
||||
• <b>Japanese:</b> hebekeg (<a href="https://github.com/hebekeg">@hebekeg</a>)<br>
|
||||
• <b>Latin American Spanish:</b> Tommy Marplatt (<a href="https://github.com/tmarplatt">@tmarplatt</a>)<br>
|
||||
• <b>Norwegian:</b> Veronica Berglyd Olsen (<a href="https://github.com/vkbo">@vkbo</a>)<br>
|
||||
• <b>Portuguese:</b> Bruno Meneguello (<a href="https://github.com/bkmeneguello">@bkmeneguello</a>)<br>
|
||||
• <b>Simplified Chinese:</b> Qianzhi Long (<a href="https://github.com/longqzh">@longqzh</a>)
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<li><b>Dutch:</b> Martijn van der Kleijn (mvdkleijn)</li>
|
||||
<li><b>French:</b> Jan Lüdke (jyhelle)</li>
|
||||
<li><b>German:</b> Myian (HeyMyian)</li>
|
||||
<li><b>Italian:</b> Riccardo Mangili</li>
|
||||
<li><b>Japanese:</b> hebekeg</li>
|
||||
<li><b>Latin American Spanish:</b> Tommy Marplatt (tmarplatt)</li>
|
||||
<li><b>Norwegian:</b> Veronica Berglyd Olsen (vkbo)</li>
|
||||
<li><b>Polish:</b> Anna Maria Polak (Nauthiz)</li>
|
||||
<li><b>Portuguese:</b> Bruno Meneguello (bkmeneguello)</li>
|
||||
<li><b>Simplified Chinese:</b> Qianzhi Long (longqzh)</li>
|
||||
</ul>
|
||||
|
||||
<p>Additional larger translation contributions:</p>
|
||||
<p>
|
||||
• <b>French:</b> Albert Aribaud (<a href="https://github.com/aaribaud">@aaribaud</a>)
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<li><b>French:</b> Albert Aribaud (aaribaud)</li>
|
||||
<li><b>Portuguese:</b> Oli Maia (olimaia)</li>
|
||||
</ul>
|
||||
|
||||
<p>Translations are managed on <a href="https://crowdin.com/project/novelwriter">Crowdin</a>, and
|
||||
more contributions are listed on the project's <a href="https://crowdin.com/project/novelwriter/members">Members</a> page.</p>
|
||||
more contributions are listed on the project's Members page.</p>
|
||||
|
||||
<h3>Libraries</h3>
|
||||
|
||||
<p>The following libraries are dependencies of novelWriter:</p>
|
||||
<p>
|
||||
• <a href="https://www.qt.io">Qt5</a> by Qt Company<br>
|
||||
• <a href="https://www.riverbankcomputing.com/software/pyqt">PyQt5</a> by Riverbank Computing<br>
|
||||
• <a href="https://abiword.github.io/enchant">Enchant</a> by Dom Lachowicz<br>
|
||||
• <a href="https://pyenchant.github.io/pyenchant">PyEnchant</a> by Dimitri Merejkowsky
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<li><b>Qt5</b> by Qt Company</li>
|
||||
<li><b>PyQt5</b> by Riverbank Computing</li>
|
||||
<li><b>Enchant</b> by Dom Lachowicz</li>
|
||||
<li><b>PyEnchant</b> by Dimitri Merejkowsky</li>
|
||||
</ul>
|
||||
|
||||
<h3>Assets</h3>
|
||||
|
||||
<p>Some of the assets bundled with novelWriter were adapted from the following sources:</p>
|
||||
<p>
|
||||
• <a href="https://github.com/stephenhutchings/typicons.font">Typicons</a> icons by Stephen Hutchings (CC BY-SA 4.0)<br>
|
||||
• <a href="https://github.com/chriskempson/base16">Tomorrow</a> syntax themes by Chris Kempson (MIT License)<br>
|
||||
• <a href="https://github.com/sdras/night-owl-vscode-theme">Owl</a> syntax themes by Sarah Drasner (MIT License)<br>
|
||||
• <a href="https://github.com/altercation/solarized">Solarized</a> themes by Ethan Schoonover (MIT License)<br>
|
||||
• <a href="https://github.com/alemvigh">Cyberpunk Night</a> theme by Anders Lemvigh (CC BY-SA 4.0)<br>
|
||||
• <a href="https://draculatheme.com">Dracula</a> theme by Zeno Rocha (MIT License)<br>
|
||||
• <a href="https://github.com/loilo/vscode-snazzy-light">Snazzy Light</a> theme by Florian Reuschel (MIT License)
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<li><b>Typicons</b> icons by Stephen Hutchings (CC BY-SA 4.0)</li>
|
||||
<li><b>Tomorrow</b> syntax themes by Chris Kempson (MIT License)</li>
|
||||
<li><b>Owl</b> syntax themes by Sarah Drasner (MIT License)</li>
|
||||
<li><b>Solarized</b> themes by Ethan Schoonover (MIT License)</li>
|
||||
<li><b>Cyberpunk Night</b> theme by Anders Lemvigh (CC BY-SA 4.0)</li>
|
||||
<li><b>Dracula</b> theme by Zeno Rocha (MIT License)</li>
|
||||
<li><b>Snazzy Light</b> theme by Florian Reuschel (MIT License)</li>
|
||||
</ul>
|
||||
|
||||
<h3>Fonts</h3>
|
||||
|
||||
<p>The font used for the main novelWriter logo, mimetype and text banners is Pridi. Other fonts are
|
||||
used on buttons and icons.</p>
|
||||
<p>
|
||||
• Pridi by Cadson Demak (Open Font License, Version 1.1)<br>
|
||||
• Source Sans Pro by Paul D. Hunt (SIL Open Font License)
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<li><b>Pridi</b> by Cadson Demak (Open Font License, Version 1.1)</li>
|
||||
<li><b>Source Sans Pro</b> by Paul D. Hunt (SIL Open Font License)</li>
|
||||
</ul>
|
||||
|
||||
<h3>Special Mentions</h3>
|
||||
|
||||
<p>Additional thanks to <a href="https://github.com/johnblommers">@johnblommers</a> who was an early user and who has provided a lot
|
||||
of very useful feedback over the years.</p>
|
||||
<p>Additional thanks to John Blommers who was an early user and who has provided a lot of very
|
||||
useful feedback over the years.</p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -254,13 +254,23 @@ class NWProject:
|
||||
status = self._storage.initProjectStorage(projPath, clearLock)
|
||||
if status != NWStorageOpen.READY:
|
||||
if status == NWStorageOpen.UNKOWN:
|
||||
SHARED.error(self.tr("Not a known project file format."))
|
||||
SHARED.error(
|
||||
self.tr("Not a known project file format."),
|
||||
info=self.tr("Path: {0}").format(str(projPath))
|
||||
)
|
||||
elif status == NWStorageOpen.NOT_FOUND:
|
||||
SHARED.error(self.tr("Project file not found."))
|
||||
SHARED.error(
|
||||
self.tr("Project file not found."),
|
||||
info=self.tr("Path: {0}").format(str(projPath))
|
||||
)
|
||||
elif status == NWStorageOpen.FAILED:
|
||||
SHARED.error(
|
||||
self.tr("Failed to open project."),
|
||||
info=self.tr("Path: {0}").format(str(projPath)),
|
||||
exc=self._storage.exc
|
||||
)
|
||||
elif status == NWStorageOpen.LOCKED:
|
||||
self._state = NWProjectState.LOCKED
|
||||
elif status == NWStorageOpen.FAILED:
|
||||
SHARED.error(self.tr("Failed to open project."), exc=self._storage.exc)
|
||||
return False
|
||||
|
||||
# Read Project XML
|
||||
|
||||
@@ -29,8 +29,8 @@ import logging
|
||||
from PyQt5.QtCore import Qt, pyqtSignal, pyqtSlot
|
||||
from PyQt5.QtGui import QCloseEvent, QKeyEvent, QKeySequence
|
||||
from PyQt5.QtWidgets import (
|
||||
QAbstractButton, QCompleter, QDialogButtonBox, QFileDialog, QHBoxLayout,
|
||||
QLineEdit, QPushButton, QVBoxLayout, QWidget
|
||||
QCompleter, QDialogButtonBox, QFileDialog, QHBoxLayout, QLineEdit,
|
||||
QPushButton, QVBoxLayout, QWidget
|
||||
)
|
||||
|
||||
from novelwriter import CONFIG, SHARED
|
||||
@@ -43,10 +43,7 @@ from novelwriter.extensions.modified import (
|
||||
)
|
||||
from novelwriter.extensions.pagedsidebar import NPagedSideBar
|
||||
from novelwriter.extensions.switch import NSwitch
|
||||
from novelwriter.types import (
|
||||
QtAlignCenter, QtDialogApply, QtDialogClose, QtDialogSave, QtRoleAccept,
|
||||
QtRoleApply, QtRoleReject
|
||||
)
|
||||
from novelwriter.types import QtAlignCenter, QtDialogCancel, QtDialogSave
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -89,8 +86,9 @@ class GuiPreferences(NDialog):
|
||||
self.mainForm.setHelpTextStyle(SHARED.theme.helpText)
|
||||
|
||||
# Buttons
|
||||
self.buttonBox = QDialogButtonBox(QtDialogApply | QtDialogSave | QtDialogClose, self)
|
||||
self.buttonBox.clicked.connect(self._dialogButtonClicked)
|
||||
self.buttonBox = QDialogButtonBox(QtDialogSave | QtDialogCancel, self)
|
||||
self.buttonBox.accepted.connect(self._doSave)
|
||||
self.buttonBox.rejected.connect(self.reject)
|
||||
|
||||
# Assemble
|
||||
self.searchBox = QHBoxLayout()
|
||||
@@ -784,19 +782,6 @@ class GuiPreferences(NDialog):
|
||||
# Private Slots
|
||||
##
|
||||
|
||||
@pyqtSlot("QAbstractButton*")
|
||||
def _dialogButtonClicked(self, button: QAbstractButton) -> None:
|
||||
"""Handle button clicks from the dialog button box."""
|
||||
role = self.buttonBox.buttonRole(button)
|
||||
if role == QtRoleApply:
|
||||
self._saveValues()
|
||||
elif role == QtRoleAccept:
|
||||
self._saveValues()
|
||||
self.close()
|
||||
elif role == QtRoleReject:
|
||||
self.close()
|
||||
return
|
||||
|
||||
@pyqtSlot(int)
|
||||
def _sidebarClicked(self, section: int) -> None:
|
||||
"""Process a user request to switch page."""
|
||||
@@ -897,7 +882,7 @@ class GuiPreferences(NDialog):
|
||||
CONFIG.setPreferencesWinSize(self.width(), self.height())
|
||||
return
|
||||
|
||||
def _saveValues(self) -> None:
|
||||
def _doSave(self) -> None:
|
||||
"""Save the values set in the form."""
|
||||
updateTheme = False
|
||||
needsRestart = False
|
||||
@@ -1012,4 +997,6 @@ class GuiPreferences(NDialog):
|
||||
CONFIG.saveConfig()
|
||||
self.newPreferencesReady.emit(needsRestart, refreshTree, updateTheme, updateSyntax)
|
||||
|
||||
self.close()
|
||||
|
||||
return
|
||||
|
||||
@@ -281,13 +281,28 @@ class NColourLabel(QLabel):
|
||||
|
||||
return
|
||||
|
||||
def setTextColors(self, *, color: QColor | None = None, faded: QColor | None = None) -> None:
|
||||
"""Set or update the text colours."""
|
||||
self._color = color or self._color
|
||||
self._faded = faded or self._faded
|
||||
self._refeshTextColor()
|
||||
return
|
||||
|
||||
def setColorState(self, state: bool) -> None:
|
||||
"""Change the colour state."""
|
||||
if self._state is not state:
|
||||
self._state = state
|
||||
colour = self.palette()
|
||||
colour.setColor(QPalette.ColorRole.WindowText, self._color if state else self._faded)
|
||||
self.setPalette(colour)
|
||||
self._refeshTextColor()
|
||||
return
|
||||
|
||||
def _refeshTextColor(self) -> None:
|
||||
"""Refresh the colour of the text on the label."""
|
||||
palette = self.palette()
|
||||
palette.setColor(
|
||||
QPalette.ColorRole.WindowText,
|
||||
self._color if self._state else self._faded,
|
||||
)
|
||||
self.setPalette(palette)
|
||||
return
|
||||
|
||||
|
||||
|
||||
@@ -2919,10 +2919,10 @@ class GuiDocEditHeader(QWidget):
|
||||
palette.setColor(QPalette.ColorRole.Window, SHARED.theme.colBack)
|
||||
palette.setColor(QPalette.ColorRole.WindowText, SHARED.theme.colText)
|
||||
palette.setColor(QPalette.ColorRole.Text, SHARED.theme.colText)
|
||||
|
||||
self.setPalette(palette)
|
||||
self.itemTitle.setPalette(palette)
|
||||
|
||||
self.itemTitle.setTextColors(
|
||||
color=palette.windowText().color(), faded=SHARED.theme.fadedText
|
||||
)
|
||||
return
|
||||
|
||||
def changeFocusState(self, state: bool) -> None:
|
||||
|
||||
@@ -741,7 +741,9 @@ class GuiDocViewHeader(QWidget):
|
||||
palette.setColor(QPalette.ColorRole.WindowText, SHARED.theme.colText)
|
||||
palette.setColor(QPalette.ColorRole.Text, SHARED.theme.colText)
|
||||
self.setPalette(palette)
|
||||
self.itemTitle.setPalette(palette)
|
||||
self.itemTitle.setTextColors(
|
||||
color=palette.windowText().color(), faded=SHARED.theme.fadedText
|
||||
)
|
||||
return
|
||||
|
||||
def changeFocusState(self, state: bool) -> None:
|
||||
|
||||
@@ -268,6 +268,7 @@ class GuiOutlineToolBar(QToolBar):
|
||||
self.aExport.setIcon(SHARED.theme.getIcon("export"))
|
||||
self.tbColumns.setIcon(SHARED.theme.getIcon("menu"))
|
||||
self.tbColumns.setStyleSheet("QToolButton::menu-indicator {image: none;}")
|
||||
self.novelLabel.setTextColors(color=self.palette().windowText().color())
|
||||
return
|
||||
|
||||
def populateNovelList(self) -> None:
|
||||
|
||||
+30
-14
@@ -1006,32 +1006,48 @@ class GuiMain(QMainWindow):
|
||||
def _switchFocus(self, paneNo: nwFocus) -> None:
|
||||
"""Switch focus between main GUI views."""
|
||||
if paneNo == nwFocus.TREE:
|
||||
if self.projStack.currentWidget() is self.projView:
|
||||
if self.projView.treeHasFocus():
|
||||
self._changeView(nwView.NOVEL)
|
||||
self.novelView.setTreeFocus()
|
||||
else:
|
||||
self.projView.setTreeFocus()
|
||||
elif self.projStack.currentWidget() is self.novelView:
|
||||
if self.novelView.treeHasFocus():
|
||||
self._changeView(nwView.PROJECT)
|
||||
self.projView.setTreeFocus()
|
||||
else:
|
||||
self.novelView.setTreeFocus()
|
||||
# Decision Matrix
|
||||
# vM | vP | fP | vN | fN | Focus
|
||||
# ----|----|----|----|----|---------
|
||||
# T | T | T | F | F | Novel
|
||||
# T | T | F | F | F | Project
|
||||
# T | F | F | T | T | Project
|
||||
# T | F | F | T | F | Novel
|
||||
# T | F | F | F | F | Project
|
||||
# F | T | T | F | F | Project
|
||||
# F | T | F | F | F | Project
|
||||
# F | F | F | T | T | Novel
|
||||
# F | F | F | T | F | Novel
|
||||
# F | F | F | F | F | Project
|
||||
|
||||
vM = self.mainStack.currentWidget() is self.splitMain
|
||||
vP = self.projStack.currentWidget() is self.projView
|
||||
vN = self.projStack.currentWidget() is self.novelView
|
||||
fP = self.projView.treeHasFocus()
|
||||
fN = self.novelView.treeHasFocus()
|
||||
|
||||
self._changeView(nwView.EDITOR)
|
||||
if (vM and (vP and fP or vN and not fN)) or (not vM and vN):
|
||||
self._changeView(nwView.NOVEL)
|
||||
self.novelView.setTreeFocus()
|
||||
else:
|
||||
self._changeView(nwView.PROJECT)
|
||||
self.projView.setTreeFocus()
|
||||
|
||||
elif paneNo == nwFocus.DOCUMENT:
|
||||
self._changeView(nwView.EDITOR)
|
||||
if self.docEditor.anyFocus():
|
||||
hasViewer = self.splitView.isVisible()
|
||||
if hasViewer and self.docEditor.anyFocus():
|
||||
self.docViewer.setFocus()
|
||||
elif self.docViewer.anyFocus():
|
||||
elif hasViewer and self.docViewer.anyFocus():
|
||||
self.docEditor.setFocus()
|
||||
else:
|
||||
self.docEditor.setFocus()
|
||||
|
||||
elif paneNo == nwFocus.OUTLINE:
|
||||
self._changeView(nwView.OUTLINE)
|
||||
self.outlineView.setTreeFocus()
|
||||
|
||||
return
|
||||
|
||||
@pyqtSlot(bool, bool, bool, bool)
|
||||
|
||||
@@ -30,7 +30,7 @@ from novelwriter import CONFIG, SHARED
|
||||
from novelwriter.constants import nwUnicode
|
||||
from novelwriter.dialogs.preferences import GuiPreferences
|
||||
from novelwriter.dialogs.quotes import GuiQuoteSelect
|
||||
from novelwriter.types import QtDialogApply, QtDialogClose, QtDialogSave, QtModNone
|
||||
from novelwriter.types import QtDialogCancel, QtDialogSave, QtModNone
|
||||
|
||||
KEY_DELAY = 1
|
||||
|
||||
@@ -92,7 +92,8 @@ def testDlgPreferences_Actions(qtbot, monkeypatch, nwGUI):
|
||||
"""Test the preferences dialog actions."""
|
||||
monkeypatch.setattr(SHARED._spelling, "listDictionaries", lambda: [("en", "English [en]")])
|
||||
prefs = GuiPreferences(nwGUI)
|
||||
prefs.show()
|
||||
with qtbot.waitExposed(prefs):
|
||||
prefs.show()
|
||||
|
||||
# Check Navigation
|
||||
vBar = prefs.mainForm.verticalScrollBar()
|
||||
@@ -116,12 +117,6 @@ def testDlgPreferences_Actions(qtbot, monkeypatch, nwGUI):
|
||||
prefs._gotoSearch()
|
||||
assert value.args[0] < old
|
||||
|
||||
# Check Apply Button
|
||||
prefs.show()
|
||||
with qtbot.waitSignal(prefs.newPreferencesReady) as signal:
|
||||
prefs.buttonBox.button(QtDialogApply).click()
|
||||
assert signal.args == [False, False, False, False]
|
||||
|
||||
# Check Save Button
|
||||
prefs.show()
|
||||
with qtbot.waitSignal(prefs.newPreferencesReady) as signal:
|
||||
@@ -130,7 +125,7 @@ def testDlgPreferences_Actions(qtbot, monkeypatch, nwGUI):
|
||||
|
||||
# Check Close Button
|
||||
prefs.show()
|
||||
prefs.buttonBox.button(QtDialogClose).click()
|
||||
prefs.buttonBox.button(QtDialogCancel).click()
|
||||
assert prefs.isHidden() is True
|
||||
|
||||
# Close Using Escape Key
|
||||
@@ -152,7 +147,8 @@ def testDlgPreferences_Settings(qtbot, monkeypatch, nwGUI, tstPaths):
|
||||
monkeypatch.setattr(CONFIG, "listLanguages", lambda *a: languages)
|
||||
|
||||
prefs = GuiPreferences(nwGUI)
|
||||
prefs.show()
|
||||
with qtbot.waitExposed(prefs):
|
||||
prefs.show()
|
||||
|
||||
# Appearance
|
||||
prefs.guiLocale.setCurrentIndex(prefs.guiLocale.findData("en_US"))
|
||||
@@ -315,7 +311,7 @@ def testDlgPreferences_Settings(qtbot, monkeypatch, nwGUI, tstPaths):
|
||||
with monkeypatch.context() as mp:
|
||||
mp.setattr(QFontDatabase, "families", lambda *a: ["TestFont"])
|
||||
with qtbot.waitSignal(prefs.newPreferencesReady) as signal:
|
||||
prefs.buttonBox.button(QtDialogApply).click()
|
||||
prefs.buttonBox.button(QtDialogSave).click()
|
||||
assert signal.args == [True, True, True, True]
|
||||
|
||||
# Check Settings
|
||||
|
||||
Reference in New Issue
Block a user