Merge 2.0.3 (#1312)
@@ -1,5 +1,61 @@
|
||||
# novelWriter Changelog
|
||||
|
||||
## Version 2.0.3 [2023-01-08]
|
||||
|
||||
### Release Notes
|
||||
|
||||
This is a patch release that fixes a few bugs and usability issues. The editing of status and
|
||||
importance labels in Project Settings should now be a bit more intuitive. Opening a document from
|
||||
the Outline View that is already open in the editor should now switch to the editor view. The
|
||||
convert folder to note or document feature in the project tree has also been fixed. Some icons have
|
||||
been updated and a renderring issue with one of them fixed. Chinese, Norwegian, US English, German
|
||||
and Spanish translations have been updated as well. A new credits tab has been added to the About
|
||||
dialog box, replacing the Credits section on the main About tab.
|
||||
|
||||
### Detailed Changelog
|
||||
|
||||
**Bugfixes**
|
||||
|
||||
* Fix an issue with one of the active icons for the project tree. The SVG paths were not properly
|
||||
joined. Issue #1297. PR #1299.
|
||||
* Fix an issue where the new open project routine for 2.0 would not check that a project exists
|
||||
before trying to open it. This resulted in the open process creating all the expected folders in
|
||||
the designated location before realising there was no project there. Issue #1300. PR #1301.
|
||||
* Fix an issue with the convert folder to document or note functionality was no longer working. The
|
||||
context menu entries were actually just calling the function for converting a file. Issue #1305.
|
||||
PR #1306.
|
||||
* Fix an issue where the app may crash if an item is added as a child of an item that exists, but
|
||||
has invalid settings such that it is rejected by the project tree builder function when the
|
||||
project is opened. Now, only items with a parent item that has already been added will be allowed
|
||||
into the project tree. The issue was caused by an invalid project file, and is not likely to
|
||||
occur during normal use, but such events should still be handled rather than crash the app.
|
||||
Issue #1283. PR #1309.
|
||||
|
||||
**User Interface**
|
||||
|
||||
* The CREDITS.md file has been updated, and its content is now also available in a "Credits" tab in
|
||||
the About dialog in the app. The old credits section of the "About" tab has been removed.
|
||||
PR #1298.
|
||||
* Fix a usability issue where double-clicking an entry in the Outline that belongs to a document
|
||||
that is already open in the editor does nothing. Now, the app switches view to the editor when
|
||||
the heading is clicked. Issue #1291. PR #1306.
|
||||
* Change how the editing of status and importance labels work in Project Settings. The form at the
|
||||
bottom of the tabs is now always active when a label is selected, and always inactive when none
|
||||
is selected. Issue #1290. PR #1308.
|
||||
|
||||
**Internationalisation**
|
||||
|
||||
* Update Chinese translation. PR #1298.
|
||||
* Update Norwegian, US English, German and Spanish translations. PR #1311.
|
||||
|
||||
**Other CHanges**
|
||||
|
||||
* An icon theme can now be loaded from the user's data folder alongside a custom user theme.
|
||||
Issue #1297. PR #1299.
|
||||
* Some Inkscape format SVG files have been converted to Plain SVG. PR #1299.
|
||||
|
||||
----
|
||||
|
||||
## Version 2.0.2 [2022-12-01]
|
||||
|
||||
### Release Notes
|
||||
|
||||
@@ -4,14 +4,18 @@
|
||||
|
||||
* Veronica Berglyd Olsen (@vkbo)
|
||||
|
||||
## Main Contributors
|
||||
## Contributors
|
||||
|
||||
* Concept: Marian Lückhof (@Number042)
|
||||
* Internationalisation: Bruno Meneguello (@bkmeneguello)
|
||||
* Setup and Packaging: Rachel Powers (@Ryex)
|
||||
|
||||
For other contributions, see the project's [Contributors](https://github.com/vkbo/novelWriter/graphs/contributors) page.
|
||||
|
||||
## Translations
|
||||
|
||||
The default language is English (UK) with English (US) as an option.
|
||||
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)
|
||||
@@ -21,24 +25,31 @@ The default language is English (UK) with English (US) as an option.
|
||||
* Portuguese: Bruno Meneguello (@bkmeneguello)
|
||||
* Simplified Chinese: Qianzhi Long (@longqzh)
|
||||
|
||||
Additional larger translation contributions:
|
||||
|
||||
* French: Albert Aribaud (@aaribaud)
|
||||
|
||||
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.
|
||||
|
||||
## Libraries
|
||||
|
||||
The following libraries are dependencies of novelWriter:
|
||||
|
||||
* Qt5 by [Qt Company](https://www.qt.io/)
|
||||
* PyQt5 by [Riverbank Computing](https://www.riverbankcomputing.com/software/pyqt/)
|
||||
* lxml by [Martijn Faassen](https://lxml.de/)
|
||||
* Enchant by [Dom Lachowicz](https://abiword.github.io/enchant/)
|
||||
* PyEnchant by [Dimitri Merejkowsky](https://pyenchant.github.io/pyenchant/)
|
||||
* [Qt5](https://www.qt.io) by Qt Company
|
||||
* [PyQt5](https://www.riverbankcomputing.com/software/pyqt) by Riverbank Computing
|
||||
* [lxml](https://lxml.de) by Martijn Faassen
|
||||
* [Enchant](https://abiword.github.io/enchant) by Dom Lachowicz
|
||||
* [PyEnchant](https://pyenchant.github.io/pyenchant) by Dimitri Merejkowsky
|
||||
|
||||
## Assets
|
||||
|
||||
Some of the assets bundled with novelWriter were adapted from the following sources:
|
||||
|
||||
* Typicons icons by [Stephen Hutchings](https://github.com/stephenhutchings/typicons.font) (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, added by @nullbasis (MIT License)
|
||||
* [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)
|
||||
|
||||
## Special Mentions
|
||||
|
||||
|
||||
@@ -52,14 +52,16 @@ modify it as you like.
|
||||
`novelwriter/assets/syntax <https://github.com/vkbo/novelWriter/tree/main/novelwriter/assets/syntax>`_.
|
||||
* The existing GUI themes are stored in
|
||||
`novelwriter/assets/themes <https://github.com/vkbo/novelWriter/tree/main/novelwriter/assets/themes>`_.
|
||||
* The existing icon themes are stored in
|
||||
`novelwriter/assets/icons <https://github.com/vkbo/novelWriter/tree/main/novelwriter/assets/icons>`_.
|
||||
|
||||
Remember to also change the name of your theme by modifying the ``name`` setting at the top of the
|
||||
file, otherwise you may not be able to distinguish them in :guilabel:`Preferences`.
|
||||
|
||||
For novelWriter to be able to locate the custom theme files, you must copy them to the
|
||||
:ref:`a_locations_data` location in your home or user area. There should be a folder there named
|
||||
``syntax`` for syntax themes and just ``themes`` for GUI themes. These folders are created the
|
||||
first time you start novelWriter.
|
||||
``syntax`` for syntax themes, just ``themes`` for GUI themes, and ``icons`` for icon themes. These
|
||||
folders are created the first time you start novelWriter.
|
||||
|
||||
Once the files are copied there, they should show up in :guilabel:`Preferences` with the label you
|
||||
set as ``name`` inside the file.
|
||||
@@ -70,8 +72,8 @@ set as ``name`` inside the file.
|
||||
theme colour scheme.
|
||||
|
||||
|
||||
Gustom GUI Theme
|
||||
----------------
|
||||
Gustom GUI and Icons Theme
|
||||
--------------------------
|
||||
|
||||
A GUI theme conf file consists of the follwing settings:
|
||||
|
||||
@@ -109,8 +111,9 @@ A GUI theme conf file consists of the follwing settings:
|
||||
statusunsaved = 100, 100, 100
|
||||
|
||||
In the Main section you must at least define the ``name`` and ``icontheme`` settings. The
|
||||
``icontheme`` settings should correspond to one of the internal icon themes. Either
|
||||
``typicons_light`` or ``typicons_dark``.
|
||||
``icontheme`` settings should correspond to one of the internal icon themes, either
|
||||
``typicons_light`` or ``typicons_dark``, or to an icon theme in your custom icons directory. The
|
||||
setting must match the icon theme's folder name.
|
||||
|
||||
The Palette values correspond the the Qt enum values for QPalette::ColorRole, see the
|
||||
`Qt documentation <https://doc.qt.io/qt-5.15/qpalette.html#ColorRole-enum>`_ for more details. The
|
||||
|
||||
@@ -342,108 +342,56 @@
|
||||
<context>
|
||||
<name>GuiAbout</name>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/about.py" line="146" />
|
||||
<location filename="../novelwriter/dialogs/about.py" line="150" />
|
||||
<location filename="../novelwriter/dialogs/about.py" line="59" />
|
||||
<source>About novelWriter</source>
|
||||
<translation>À propos de novelWriter</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/about.py" line="94" />
|
||||
<location filename="../novelwriter/dialogs/about.py" line="98" />
|
||||
<source>About</source>
|
||||
<translation>À propos</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/about.py" line="95" />
|
||||
<location filename="../novelwriter/dialogs/about.py" line="99" />
|
||||
<source>Release</source>
|
||||
<translation>Version</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/about.py" line="225" />
|
||||
<location filename="../novelwriter/dialogs/about.py" line="214" />
|
||||
<location filename="../novelwriter/dialogs/about.py" line="203" />
|
||||
<location filename="../novelwriter/dialogs/about.py" line="96" />
|
||||
<source>Licence</source>
|
||||
<translation>Licence</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/about.py" line="148" />
|
||||
<source>Website: {0}</source>
|
||||
<translation>Site Web : {0}</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/about.py" line="151" />
|
||||
<location filename="../novelwriter/dialogs/about.py" line="100" />
|
||||
<source>Credits</source>
|
||||
<translation>Crédits</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/about.py" line="153" />
|
||||
<source>Developer</source>
|
||||
<translation>Développeur</translation>
|
||||
<location filename="../novelwriter/dialogs/about.py" line="101" />
|
||||
<source>Licence</source>
|
||||
<translation>Licence</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/about.py" line="154" />
|
||||
<source>Concept</source>
|
||||
<translation>Concept</translation>
|
||||
<location filename="../novelwriter/dialogs/about.py" line="152" />
|
||||
<source>Website: {0}</source>
|
||||
<translation>Site Web : {0}</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/about.py" line="155" />
|
||||
<source>i18n</source>
|
||||
<translation>Internationalisation</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/about.py" line="157" />
|
||||
<source>novelWriter is a markdown-like text editor designed for organising and writing novels. It is written in Python 3 with a Qt5 GUI, using PyQt5.</source>
|
||||
<translation>novelWriter est un éditeur markdown pour organiser et écrire des romans. Il est écrit en Python 3 avec un interface utilisateur Qt5, basé sur PyQt5.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/about.py" line="161" />
|
||||
<location filename="../novelwriter/dialogs/about.py" line="159" />
|
||||
<source>novelWriter is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.</source>
|
||||
<translation>novelWriter est un logiciel libre : vous pouvez le redistribuer et/ou le modifier selon les termes de la licence publique générale GNU telle que publiée par la Free Software Foundation, dans la version 3 de cette licence ou (à votre choix) dans une version plus récente.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/about.py" line="167" />
|
||||
<location filename="../novelwriter/dialogs/about.py" line="165" />
|
||||
<source>novelWriter is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</source>
|
||||
<translation>novelWriter est diffusé dans l'espoir qu'il sera utile, mais SANS GARANTIE D'AUCUNE SORTE, en particulier concernant sa QUALITÉ MARCHANDE ou son APTITUDE À UN USAGE SPÉCIFIQUE.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/about.py" line="172" />
|
||||
<location filename="../novelwriter/dialogs/about.py" line="170" />
|
||||
<source>See the Licence tab for the full licence text, or visit the GNU website at {0} for more details.</source>
|
||||
<translation>Ouvrez l'onglet Licence pour voir le texte complet de la licence (en anglais), ou visitez le site de GNU à l'adresse {0} pour en lire une traduction ou pour obtenir plus de détails.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/about.py" line="181" />
|
||||
<source>Translations</source>
|
||||
<translation>Traducteurs</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/about.py" line="199" />
|
||||
<source>Theme: {0}</source>
|
||||
<translation>Thème : {0}</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/about.py" line="223" />
|
||||
<location filename="../novelwriter/dialogs/about.py" line="212" />
|
||||
<location filename="../novelwriter/dialogs/about.py" line="201" />
|
||||
<source>Author</source>
|
||||
<translation>Auteur</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/about.py" line="224" />
|
||||
<location filename="../novelwriter/dialogs/about.py" line="213" />
|
||||
<location filename="../novelwriter/dialogs/about.py" line="202" />
|
||||
<source>Credit</source>
|
||||
<translation>Crédits</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/about.py" line="210" />
|
||||
<source>Icons: {0}</source>
|
||||
<translation>Icônes : {0}</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/about.py" line="221" />
|
||||
<source>Syntax: {0}</source>
|
||||
<translation>Syntaxe : {0}</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GuiBuildNovel</name>
|
||||
@@ -2288,103 +2236,103 @@
|
||||
<context>
|
||||
<name>GuiPreferencesAutomation</name>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="940" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="946" />
|
||||
<source>Automatic Features</source>
|
||||
<translation>Automatismes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="946" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="952" />
|
||||
<source>Auto-select word under cursor</source>
|
||||
<translation>Auto-sélection du mot sous le curseur</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="948" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="954" />
|
||||
<source>Apply formatting to word under cursor if no selection is made.</source>
|
||||
<translation>En l'absence de texte sélectionné la mise en forme s'applique au mot sous le curseur.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="956" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="962" />
|
||||
<source>Auto-replace text as you type</source>
|
||||
<translation>Auto-remplacement par la frappe</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="958" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="964" />
|
||||
<source>Allow the editor to replace symbols as you type.</source>
|
||||
<translation>Permet à léditeur de remplacer les symboles au fur et à mesure de la frappe.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="963" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="969" />
|
||||
<source>Replace as You Type</source>
|
||||
<translation>Remplacement par la frappe</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="970" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="976" />
|
||||
<source>Auto-replace single quotes</source>
|
||||
<translation>Auto-remplacement des guillemets simples</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="982" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="972" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="988" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="978" />
|
||||
<source>Try to guess which is an opening or a closing quote.</source>
|
||||
<translation>Tenter de deviner si un guillemet est ouvrant ou fermant.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="980" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="986" />
|
||||
<source>Auto-replace double quotes</source>
|
||||
<translation>Auto-remplacement des guillemets doubles</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="990" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="996" />
|
||||
<source>Auto-replace dashes</source>
|
||||
<translation>Auto-remplacement des tirets</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="992" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="998" />
|
||||
<source>Double and triple hyphens become short and long dashes.</source>
|
||||
<translation>Deux ou trois tirets successifs deviennent des tirets moyens (semi-cadratins) ou longs (cadratins).</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="1000" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="1006" />
|
||||
<source>Auto-replace dots</source>
|
||||
<translation>Auto-remplacement des points</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="1002" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="1008" />
|
||||
<source>Three consecutive dots become ellipsis.</source>
|
||||
<translation>Trois points consécutifs deviennent des points de suspension.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="1007" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="1013" />
|
||||
<source>Automatic Padding</source>
|
||||
<translation>Insertion automatique</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="1014" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="1020" />
|
||||
<source>Insert non-breaking space before</source>
|
||||
<translation>Espace insécable avant</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="1016" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="1022" />
|
||||
<source>Automatically add space before any of these symbols.</source>
|
||||
<translation>Ajouter lors de la frappe une espace avant chacun de ces caractères.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="1024" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="1030" />
|
||||
<source>Insert non-breaking space after</source>
|
||||
<translation>Espace insécable après</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="1026" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="1032" />
|
||||
<source>Automatically add space after any of these symbols.</source>
|
||||
<translation>Ajouter lors de la frappe une espace après chacun de ces caractères.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="1034" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="1040" />
|
||||
<source>Use thin space instead</source>
|
||||
<translation>Utiliser des espaces fines</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="1036" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="1042" />
|
||||
<source>Inserts a thin space instead of a regular space.</source>
|
||||
<translation>Insérer une espace fine au lieu d'une espace-mot.</translation>
|
||||
</message>
|
||||
@@ -2810,47 +2758,47 @@
|
||||
<context>
|
||||
<name>GuiPreferencesQuotes</name>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="1095" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="1101" />
|
||||
<source>Quotation Style</source>
|
||||
<translation>Style de guillemets</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="1112" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="1118" />
|
||||
<source>Single quote open style</source>
|
||||
<translation>Guillemets simples ouvrants</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="1114" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="1120" />
|
||||
<source>The symbol to use for a leading single quote.</source>
|
||||
<translation>Symbole à utiliser pour un guillemet simple ouvrant.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="1128" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="1134" />
|
||||
<source>Single quote close style</source>
|
||||
<translation>Guillemets simples fermants</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="1130" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="1136" />
|
||||
<source>The symbol to use for a trailing single quote.</source>
|
||||
<translation>Symbole à utiliser pour un guillemet simple fermant.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="1145" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="1151" />
|
||||
<source>Double quote open style</source>
|
||||
<translation>Guillemets doubles ouvrants</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="1147" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="1153" />
|
||||
<source>The symbol to use for a leading double quote.</source>
|
||||
<translation>Symbole à utiliser pour un guillemet double ouvrant.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="1161" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="1167" />
|
||||
<source>Double quote close style</source>
|
||||
<translation>Guillemets doubles fermants</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="1163" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="1169" />
|
||||
<source>The symbol to use for a trailing double quote.</source>
|
||||
<translation>Symbole à utiliser pour un guillemet double fermant.</translation>
|
||||
</message>
|
||||
@@ -2858,59 +2806,59 @@
|
||||
<context>
|
||||
<name>GuiPreferencesSyntax</name>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="839" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="840" />
|
||||
<source>Quotes & Dialogue</source>
|
||||
<translation>Dialogues et citations</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="845" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="846" />
|
||||
<source>Highlight text wrapped in quotes</source>
|
||||
<translation>Mettre en évidence le texte situé entre des guillemets</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="888" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="875" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="847" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="889" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="876" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="848" />
|
||||
<source>Applies to the document editor only.</source>
|
||||
<translation>Ne s'applique qu'à l'éditeur de document.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="853" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="854" />
|
||||
<source>Allow open-ended single quotes</source>
|
||||
<translation>Autoriser les guillemets simples non fermés</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="855" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="856" />
|
||||
<source>Highlight single-quoted line with no closing quote.</source>
|
||||
<translation>Mettre en évidence les lignes avec guillemet simple ouvrant et non fermées.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="861" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="862" />
|
||||
<source>Allow open-ended double quotes</source>
|
||||
<translation>Autoriser les guillemets doubles non fermés</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="863" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="864" />
|
||||
<source>Highlight double-quoted line with no closing quote.</source>
|
||||
<translation>Mettre en évidence les lignes avec guillemet double ouvrant et non fermées.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="868" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="869" />
|
||||
<source>Text Emphasis</source>
|
||||
<translation>Texte appuyé</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="873" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="874" />
|
||||
<source>Add highlight colour to emphasised text</source>
|
||||
<translation>Mettre en évidence le texte appuyé</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="881" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="882" />
|
||||
<source>Text Errors</source>
|
||||
<translation>Erreurs de texte</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="886" />
|
||||
<location filename="../novelwriter/dialogs/preferences.py" line="887" />
|
||||
<source>Highlight multiple or trailing spaces</source>
|
||||
<translation>Surligner les espaces multiples ou terminaux</translation>
|
||||
</message>
|
||||
@@ -3107,27 +3055,27 @@
|
||||
<context>
|
||||
<name>GuiProjectEditReplace</name>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/projsettings.py" line="565" />
|
||||
<location filename="../novelwriter/dialogs/projsettings.py" line="581" />
|
||||
<source>Text Replace List for Preview and Export</source>
|
||||
<translation>Remplacements dans le texte pour les aperçus et exportations</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/projsettings.py" line="572" />
|
||||
<location filename="../novelwriter/dialogs/projsettings.py" line="588" />
|
||||
<source>Keyword</source>
|
||||
<translation>Mot-clé</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/projsettings.py" line="573" />
|
||||
<location filename="../novelwriter/dialogs/projsettings.py" line="589" />
|
||||
<source>Replace With</source>
|
||||
<translation>Remplacer par</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/projsettings.py" line="599" />
|
||||
<location filename="../novelwriter/dialogs/projsettings.py" line="615" />
|
||||
<source>Select item to edit</source>
|
||||
<translation>Choisir l'élément à éditer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/projsettings.py" line="607" />
|
||||
<location filename="../novelwriter/dialogs/projsettings.py" line="623" />
|
||||
<source>Save</source>
|
||||
<translation>Enregistrer</translation>
|
||||
</message>
|
||||
@@ -3155,7 +3103,7 @@
|
||||
<translation>Utilisation</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/projsettings.py" line="342" />
|
||||
<location filename="../novelwriter/dialogs/projsettings.py" line="341" />
|
||||
<source>Select item to edit</source>
|
||||
<translation>Choisir l'élément à éditer</translation>
|
||||
</message>
|
||||
@@ -3165,37 +3113,37 @@
|
||||
<translation>Couleur</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/projsettings.py" line="350" />
|
||||
<location filename="../novelwriter/dialogs/projsettings.py" line="351" />
|
||||
<source>Save</source>
|
||||
<translation>Enregistrer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/projsettings.py" line="410" />
|
||||
<location filename="../novelwriter/dialogs/projsettings.py" line="413" />
|
||||
<source>Select Colour</source>
|
||||
<translation>Choisir la couleur</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/projsettings.py" line="423" />
|
||||
<location filename="../novelwriter/dialogs/projsettings.py" line="427" />
|
||||
<source>New Item</source>
|
||||
<translation>Nouvel élément</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/projsettings.py" line="436" />
|
||||
<location filename="../novelwriter/dialogs/projsettings.py" line="439" />
|
||||
<source>Cannot delete a status item that is in use.</source>
|
||||
<translation>On ne peut pas retirer un élément tant qu'il est utilisé.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/projsettings.py" line="539" />
|
||||
<location filename="../novelwriter/dialogs/projsettings.py" line="555" />
|
||||
<source>Not in use</source>
|
||||
<translation>Inutilisé</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/projsettings.py" line="541" />
|
||||
<location filename="../novelwriter/dialogs/projsettings.py" line="557" />
|
||||
<source>Used once</source>
|
||||
<translation>Utilisé une fois</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/dialogs/projsettings.py" line="543" />
|
||||
<location filename="../novelwriter/dialogs/projsettings.py" line="559" />
|
||||
<source>Used by {0} items</source>
|
||||
<translation>Utilisé {0} fois</translation>
|
||||
</message>
|
||||
@@ -3470,79 +3418,82 @@
|
||||
<translation>Transformer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/gui/projtree.py" line="1273" />
|
||||
<location filename="../novelwriter/gui/projtree.py" line="1267" />
|
||||
<location filename="../novelwriter/gui/projtree.py" line="1261" />
|
||||
<location filename="../novelwriter/gui/projtree.py" line="1255" />
|
||||
<source>Convert to {0}</source>
|
||||
<translation>Convertir en {0}</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/gui/projtree.py" line="1267" />
|
||||
<location filename="../novelwriter/gui/projtree.py" line="1279" />
|
||||
<source>Merge Child Items into Self</source>
|
||||
<translation>Intégrer les éléments enfants</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/gui/projtree.py" line="1269" />
|
||||
<location filename="../novelwriter/gui/projtree.py" line="1281" />
|
||||
<source>Merge Child Items into New</source>
|
||||
<translation>Créer une fusion des éléments enfants</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/gui/projtree.py" line="1273" />
|
||||
<location filename="../novelwriter/gui/projtree.py" line="1285" />
|
||||
<source>Merge Documents in Folder</source>
|
||||
<translation>Fusionner des documents du dossier</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/gui/projtree.py" line="1277" />
|
||||
<location filename="../novelwriter/gui/projtree.py" line="1289" />
|
||||
<source>Split Document by Headers</source>
|
||||
<translation>Diviser le document selon les en-têtes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/gui/projtree.py" line="1286" />
|
||||
<location filename="../novelwriter/gui/projtree.py" line="1298" />
|
||||
<source>Expand All</source>
|
||||
<translation>Tout développer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/gui/projtree.py" line="1288" />
|
||||
<location filename="../novelwriter/gui/projtree.py" line="1300" />
|
||||
<source>Collapse All</source>
|
||||
<translation>Tout refermer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/gui/projtree.py" line="1292" />
|
||||
<location filename="../novelwriter/gui/projtree.py" line="1304" />
|
||||
<source>Delete Permanently</source>
|
||||
<translation>Supprimer définitivement</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/gui/projtree.py" line="1295" />
|
||||
<location filename="../novelwriter/gui/projtree.py" line="1307" />
|
||||
<source>Move to Trash</source>
|
||||
<translation>Déplacer vers la corbeille</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/gui/projtree.py" line="1483" />
|
||||
<location filename="../novelwriter/gui/projtree.py" line="1495" />
|
||||
<source>Convert Folder</source>
|
||||
<translation>Convertir le dossier</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/gui/projtree.py" line="1484" />
|
||||
<location filename="../novelwriter/gui/projtree.py" line="1496" />
|
||||
<source>Do you want to convert the folder to a {0}? This action cannot be reversed.</source>
|
||||
<translation>Voulez-vous convertir le dossier en {0}? Cette action est irréversible.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/gui/projtree.py" line="1529" />
|
||||
<location filename="../novelwriter/gui/projtree.py" line="1541" />
|
||||
<source>No documents selected for merging.</source>
|
||||
<translation>Aucun document n'a été sélectionné pour la fusion.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/gui/projtree.py" line="1538" />
|
||||
<location filename="../novelwriter/gui/projtree.py" line="1550" />
|
||||
<source>Merged</source>
|
||||
<translation>Fusionné</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/gui/projtree.py" line="1618" />
|
||||
<location filename="../novelwriter/gui/projtree.py" line="1554" />
|
||||
<location filename="../novelwriter/gui/projtree.py" line="1630" />
|
||||
<location filename="../novelwriter/gui/projtree.py" line="1566" />
|
||||
<source>Could not write document content.</source>
|
||||
<translation>Impossible d'écrire le contenu du document.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/gui/projtree.py" line="1678" />
|
||||
<location filename="../novelwriter/gui/projtree.py" line="1707" />
|
||||
<location filename="../novelwriter/gui/projtree.py" line="1690" />
|
||||
<source>There is nowhere to add item with name '{0}'.</source>
|
||||
<translation>Il n'y a pas d'emplacement pour ajouter l'item nommé '{0}'.</translation>
|
||||
</message>
|
||||
@@ -3829,163 +3780,168 @@
|
||||
<translation>Impossible de supprimer le fichier du document.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/core/project.py" line="288" />
|
||||
<location filename="../novelwriter/core/project.py" line="254" />
|
||||
<source>Could not open project with path: {0}</source>
|
||||
<translation type="unfinished" />
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/core/project.py" line="291" />
|
||||
<source>Unknown</source>
|
||||
<translation>Inconnu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/core/project.py" line="292" />
|
||||
<location filename="../novelwriter/core/project.py" line="295" />
|
||||
<source>Project file does not appear to be a novelWriterXML file.</source>
|
||||
<translation>Ce fichier projet ne semble pas être un fichier novelWriterXML.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/core/project.py" line="296" />
|
||||
<location filename="../novelwriter/core/project.py" line="299" />
|
||||
<source>Unknown or unsupported novelWriter project file format. The project cannot be opened by this version of novelWriter. The file was saved with novelWriter version {0}.</source>
|
||||
<translation>Format de projet novelWriter inconnu ou non supporté. Ce projet ne peut pas être ouvert avec cette version de novelWriter, il a été enregistré avec novelWriter version {0}.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/core/project.py" line="302" />
|
||||
<location filename="../novelwriter/core/project.py" line="305" />
|
||||
<source>Failed to parse project xml.</source>
|
||||
<translation>Impossible de décoder le xml du projet.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/core/project.py" line="314" />
|
||||
<location filename="../novelwriter/core/project.py" line="317" />
|
||||
<source>File Version</source>
|
||||
<translation>Version du fichier</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/core/project.py" line="315" />
|
||||
<location filename="../novelwriter/core/project.py" line="318" />
|
||||
<source>The file format of your project is about to be updated. If you proceed, older versions of novelWriter will no longer be able to open this project. Continue?</source>
|
||||
<translation>Le format de fichier de votre projet est sur le point d'être mis à jour. Si vous continuez, les anciennes versions de novelWriter ne pourront plus ouvrir ce projet. Continuer ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/core/project.py" line="330" />
|
||||
<location filename="../novelwriter/core/project.py" line="333" />
|
||||
<source>Version Conflict</source>
|
||||
<translation>Conflit de version</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/core/project.py" line="331" />
|
||||
<location filename="../novelwriter/core/project.py" line="334" />
|
||||
<source>This project was saved by a newer version of novelWriter, version {0}. This is version {1}. If you continue to open the project, some attributes and settings may not be preserved, but the overall project should be fine. Continue opening the project?</source>
|
||||
<translation>Ce projet a été enregistré par une version plus récente de novelWriter, la version {0}. Ceci est la version {1}. Si vous ouvrez quand même ce projet, certaines propriétés ou certains réglages risquent d'être perdus, toutefois le projet dans son ensemble devrait être intact. Voulez-vous quand même ouvrir ce projet ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/core/project.py" line="375" />
|
||||
<location filename="../novelwriter/core/project.py" line="378" />
|
||||
<source>Opened Project: {0}</source>
|
||||
<translation>Projet ouvert : {0}</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/core/project.py" line="386" />
|
||||
<location filename="../novelwriter/core/project.py" line="389" />
|
||||
<source>There is no project open.</source>
|
||||
<translation>Aucun projet n'est ouvert.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/core/project.py" line="411" />
|
||||
<location filename="../novelwriter/core/project.py" line="414" />
|
||||
<source>Failed to save project.</source>
|
||||
<translation>Impossible d'enregistrer le projet.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/core/project.py" line="427" />
|
||||
<location filename="../novelwriter/core/project.py" line="430" />
|
||||
<source>Saved Project: {0}</source>
|
||||
<translation>Projet enregistré : {0}</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/core/project.py" line="453" />
|
||||
<location filename="../novelwriter/core/project.py" line="456" />
|
||||
<source>Backing up project ...</source>
|
||||
<translation>Sauvegarde du projet en cours ...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/core/project.py" line="457" />
|
||||
<location filename="../novelwriter/core/project.py" line="460" />
|
||||
<source>Cannot backup project because no valid backup path is set. Please set a valid backup location in Preferences.</source>
|
||||
<translation>Il est impossible de sauvegarder ce projet car aucun emplacement de sauvegarde n'a été défini. Veuillez en définir un dans Outils Préférences.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/core/project.py" line="464" />
|
||||
<location filename="../novelwriter/core/project.py" line="467" />
|
||||
<source>Cannot backup project because no project name is set. Please set a Project Name in Project Settings.</source>
|
||||
<translation>Il est impossible de sauvegarder le projet car il n'a pas reçu de nom. Veuillez remplir le nom dans les paramètres du projet.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/core/project.py" line="475" />
|
||||
<location filename="../novelwriter/core/project.py" line="478" />
|
||||
<source>Could not create backup folder.</source>
|
||||
<translation>Il n'a pas été possible de créer le répertoire de sauvegarde.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/core/project.py" line="480" />
|
||||
<location filename="../novelwriter/core/project.py" line="483" />
|
||||
<source>Backup from {0}</source>
|
||||
<translation>Sauvegarde depuis {0}</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/core/project.py" line="485" />
|
||||
<location filename="../novelwriter/core/project.py" line="488" />
|
||||
<source>Backup archive file written to: {0}</source>
|
||||
<translation>Archivage du fichier de sauvegarde effectué en : {0}</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/core/project.py" line="489" />
|
||||
<location filename="../novelwriter/core/project.py" line="492" />
|
||||
<source>Could not write backup archive.</source>
|
||||
<translation>Il n'a pas été possible d'écrire l'archive de sauvegarde.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/core/project.py" line="494" />
|
||||
<location filename="../novelwriter/core/project.py" line="497" />
|
||||
<source>Project backed up to '{0}'</source>
|
||||
<translation>Projet sauvegardé dans {0}</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/core/project.py" line="511" />
|
||||
<location filename="../novelwriter/core/project.py" line="507" />
|
||||
<location filename="../novelwriter/core/project.py" line="514" />
|
||||
<location filename="../novelwriter/core/project.py" line="510" />
|
||||
<source>New</source>
|
||||
<translation>Nouveau</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/core/project.py" line="508" />
|
||||
<location filename="../novelwriter/core/project.py" line="511" />
|
||||
<source>Note</source>
|
||||
<translation>Note</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/core/project.py" line="509" />
|
||||
<location filename="../novelwriter/core/project.py" line="512" />
|
||||
<source>Draft</source>
|
||||
<translation>Brouillon</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/core/project.py" line="510" />
|
||||
<location filename="../novelwriter/core/project.py" line="513" />
|
||||
<source>Finished</source>
|
||||
<translation>Terminé</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/core/project.py" line="512" />
|
||||
<location filename="../novelwriter/core/project.py" line="515" />
|
||||
<source>Minor</source>
|
||||
<translation>Mineur</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/core/project.py" line="513" />
|
||||
<location filename="../novelwriter/core/project.py" line="516" />
|
||||
<source>Major</source>
|
||||
<translation>Majeur</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/core/project.py" line="514" />
|
||||
<location filename="../novelwriter/core/project.py" line="517" />
|
||||
<source>Main</source>
|
||||
<translation>Principal</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/core/project.py" line="735" />
|
||||
<location filename="../novelwriter/core/project.py" line="738" />
|
||||
<source>Found {0} orphaned file(s) in project folder.</source>
|
||||
<translation>Trouvé {0} fichier(s) orphelin(s) dans le dossier du projet.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/core/project.py" line="745" />
|
||||
<location filename="../novelwriter/core/project.py" line="748" />
|
||||
<source>Recovered</source>
|
||||
<translation>Récupéré</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/core/project.py" line="759" />
|
||||
<location filename="../novelwriter/core/project.py" line="762" />
|
||||
<source>[{0}] {1}</source>
|
||||
<translation>[{0}] {1}</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/core/project.py" line="764" />
|
||||
<location filename="../novelwriter/core/project.py" line="767" />
|
||||
<source>Recovered File {0}</source>
|
||||
<translation>Fichier récupéré {0}</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../novelwriter/core/project.py" line="792" />
|
||||
<location filename="../novelwriter/core/project.py" line="795" />
|
||||
<source>One or more orphaned files could not be added back into the project. Make sure at least a Novel root folder exists.</source>
|
||||
<translation>Un ou plusieurs fichiers orphelins n'ont pas pu être repris dans le projet. Vérifiez qu'il y a au moins un dossier racine Roman.</translation>
|
||||
</message>
|
||||
|
||||
@@ -7,7 +7,7 @@ File History:
|
||||
Created: 2018-09-22 [0.0.1]
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -54,14 +54,14 @@ from novelwriter.config import Config
|
||||
##
|
||||
|
||||
__package__ = "novelwriter"
|
||||
__copyright__ = "Copyright 2018–2022, Veronica Berglyd Olsen"
|
||||
__copyright__ = "Copyright 2018–2023, Veronica Berglyd Olsen"
|
||||
__license__ = "GPLv3"
|
||||
__author__ = "Veronica Berglyd Olsen"
|
||||
__maintainer__ = "Veronica Berglyd Olsen"
|
||||
__email__ = "code@vkbo.net"
|
||||
__version__ = "2.0.2"
|
||||
__hexversion__ = "0x020002f0"
|
||||
__date__ = "2022-12-01"
|
||||
__version__ = "2.0.3"
|
||||
__hexversion__ = "0x020003f0"
|
||||
__date__ = "2023-01-08"
|
||||
__status__ = "Stable"
|
||||
__domain__ = "novelwriter.io"
|
||||
__url__ = "https://novelwriter.io"
|
||||
|
||||
@@ -1,37 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
version="1.2"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
id="svg7536"
|
||||
sodipodi:docname="mixed_edit.svg"
|
||||
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<sodipodi:namedview
|
||||
id="namedview1259"
|
||||
pagecolor="#505050"
|
||||
bordercolor="#eeeeee"
|
||||
borderopacity="1"
|
||||
inkscape:pageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
showgrid="false"
|
||||
inkscape:zoom="34.625"
|
||||
inkscape:cx="8.7364621"
|
||||
inkscape:cy="11.98556"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:window-height="1330"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg7536" />
|
||||
id="svg7536">
|
||||
<metadata
|
||||
id="metadata7542">
|
||||
<rdf:RDF>
|
||||
@@ -40,6 +18,7 @@
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
|
||||
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.2 KiB |
@@ -25,10 +25,9 @@
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<path
|
||||
d="m2 17.714v-11.429c0-2.3629 1.9229-4.2857 4.2857-4.2857h11.429c2.3629 0 4.2857 1.9229 4.2857 4.2857v7.1429c0 0.79-0.64 1.4286-1.4286 1.4286-0.78857 0-1.4286-0.63857-1.4286-1.4286v-7.1429c0-0.78857-0.64143-1.4286-1.4286-1.4286h-11.429c-0.78714 0-1.4286 0.64-1.4286 1.4286v11.429c0 0.78857 0.64143 1.4286 1.4286 1.4286h4.2857c0.78857 0 1.4286 0.63857 1.4286 1.4286s-0.64 1.4286-1.4286 1.4286h-4.2857c-2.3629 0-4.2857-1.9229-4.2857-4.2857zm15.714 4.2857h-11.429c-2.3629 0-4.2857-1.9229-4.2857-4.2857v-11.429c0-2.3629 1.9229-4.2857 4.2857-4.2857h7.1429c0.79 0 1.4286 0.64 1.4286 1.4286 0 0.78857-0.63857 1.4286-1.4286 1.4286h-7.1429c-0.78857 0-1.4286 0.64143-1.4286 1.4286v11.429c0 0.78714 0.64 1.4286 1.4286 1.4286h11.429c0.78857 0 1.4286-0.64143 1.4286-1.4286v-4.2857c0-0.78857 0.63857-1.4286 1.4286-1.4286s1.4286 0.64 1.4286 1.4286v4.2857c0 2.3629-1.9229 4.2857-4.2857 4.2857z"
|
||||
fill="#848484"
|
||||
stroke-width="1.4286"
|
||||
id="path2927" />
|
||||
id="path2927"
|
||||
style="fill:#848484;fill-opacity:1"
|
||||
d="M 6.2851562,2 C 3.9296438,1.9318024 1.8530839,4.1116184 2,6.4548618 2.0068983,10.304935 1.9861657,14.15563 2.0104329,18.005313 2.1401885,20.174302 4.0868901,22.059322 6.2851562,22 c 3.8832648,-0.0037 7.7667178,0.0074 11.6498648,-0.0056 C 20.253096,21.935675 22.190613,19.73469 22,17.432001 21.996299,13.643017 22.007418,9.8538453 21.994414,6.0649793 21.935675,3.7469037 19.734691,1.8093866 17.432001,2 13.716386,2 10.000771,2 6.2851562,2 Z m 7.1621098,2.8554688 c 1.517767,0.018193 3.040205,-0.037158 4.55493,0.029088 0.831903,0.1432784 1.247019,1.0200413 1.140382,1.796579 -0.0049,3.726426 0.0098,7.453347 -0.0074,11.179464 -0.06228,0.897202 -0.990183,1.406807 -1.816343,1.281978 -3.726391,-0.005 -7.4532932,0.0099 -11.1793638,-0.0075 -0.8893499,-0.06498 -1.4061831,-0.991209 -1.2820783,-1.81622 0.00424,-3.720679 -0.00847,-7.4417768 0.00635,-11.1621953 0.056947,-0.8627405 0.9413144,-1.4230927 1.7608001,-1.2992468 2.2741995,-0.00131 4.5486615,0.00261 6.8226985,-0.00195 z" />
|
||||
<rect
|
||||
x="7"
|
||||
y="10.1"
|
||||
|
||||
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.9 KiB |
@@ -5,10 +5,6 @@
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
|
||||
sodipodi:docname="arrow-maximise.svg"
|
||||
id="svg7486"
|
||||
viewBox="0 0 24 24"
|
||||
height="24"
|
||||
@@ -28,26 +24,6 @@
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs7490" />
|
||||
<sodipodi:namedview
|
||||
inkscape:current-layer="svg7486"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:window-y="1"
|
||||
inkscape:window-x="2560"
|
||||
inkscape:cy="12"
|
||||
inkscape:cx="12"
|
||||
inkscape:zoom="38.125"
|
||||
showgrid="false"
|
||||
id="namedview7488"
|
||||
inkscape:window-height="1370"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0"
|
||||
guidetolerance="10"
|
||||
gridtolerance="10"
|
||||
objecttolerance="10"
|
||||
borderopacity="1"
|
||||
bordercolor="#666666"
|
||||
pagecolor="#ffffff" />
|
||||
<path
|
||||
style="stroke-width:1.25;fill:#6699cc;fill-opacity:1"
|
||||
id="path7484"
|
||||
|
||||
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 1.7 KiB |
@@ -5,10 +5,6 @@
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
|
||||
sodipodi:docname="arrow-minimise.svg"
|
||||
id="svg8816"
|
||||
viewBox="0 0 24 24"
|
||||
height="24"
|
||||
@@ -28,26 +24,6 @@
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs8820" />
|
||||
<sodipodi:namedview
|
||||
inkscape:current-layer="svg8816"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:window-y="1"
|
||||
inkscape:window-x="2560"
|
||||
inkscape:cy="12"
|
||||
inkscape:cx="12"
|
||||
inkscape:zoom="38.125"
|
||||
showgrid="false"
|
||||
id="namedview8818"
|
||||
inkscape:window-height="1370"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0"
|
||||
guidetolerance="10"
|
||||
gridtolerance="10"
|
||||
objecttolerance="10"
|
||||
borderopacity="1"
|
||||
bordercolor="#666666"
|
||||
pagecolor="#ffffff" />
|
||||
<path
|
||||
style="fill:#6699cc;fill-opacity:1;stroke-width:1.24999"
|
||||
id="path8814"
|
||||
|
||||
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 2.2 KiB |
@@ -5,10 +5,6 @@
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
|
||||
sodipodi:docname="refresh.svg"
|
||||
id="svg6649"
|
||||
viewBox="0 0 24 24"
|
||||
height="24"
|
||||
@@ -28,26 +24,6 @@
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs6653" />
|
||||
<sodipodi:namedview
|
||||
inkscape:current-layer="svg6649"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:window-y="1"
|
||||
inkscape:window-x="2560"
|
||||
inkscape:cy="12"
|
||||
inkscape:cx="12"
|
||||
inkscape:zoom="38.125"
|
||||
showgrid="false"
|
||||
id="namedview6651"
|
||||
inkscape:window-height="1370"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0"
|
||||
guidetolerance="10"
|
||||
gridtolerance="10"
|
||||
objecttolerance="10"
|
||||
borderopacity="1"
|
||||
bordercolor="#666666"
|
||||
pagecolor="#ffffff" />
|
||||
<path
|
||||
style="fill:#99cc99;fill-opacity:1;stroke-width:1.33321"
|
||||
id="path6647"
|
||||
|
||||
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 1.8 KiB |
@@ -5,35 +5,11 @@
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
version="1.2"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
id="svg5291"
|
||||
sodipodi:docname="status_lines-dark.svg"
|
||||
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:window-height="1344"
|
||||
id="namedview6681"
|
||||
showgrid="false"
|
||||
inkscape:zoom="38.125"
|
||||
inkscape:cx="12.065574"
|
||||
inkscape:cy="12"
|
||||
inkscape:window-x="2560"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg5291" />
|
||||
id="svg5291">
|
||||
<metadata
|
||||
id="metadata5297">
|
||||
<rdf:RDF>
|
||||
@@ -42,7 +18,7 @@
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
|
||||
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 1.6 KiB |
@@ -1,37 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
version="1.2"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
id="svg7536"
|
||||
sodipodi:docname="mixed_edit.svg"
|
||||
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<sodipodi:namedview
|
||||
id="namedview1259"
|
||||
pagecolor="#505050"
|
||||
bordercolor="#eeeeee"
|
||||
borderopacity="1"
|
||||
inkscape:pageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
showgrid="false"
|
||||
inkscape:zoom="34.625"
|
||||
inkscape:cx="3.1913357"
|
||||
inkscape:cy="11.98556"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:window-height="1330"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg7536" />
|
||||
id="svg7536">
|
||||
<metadata
|
||||
id="metadata7542">
|
||||
<rdf:RDF>
|
||||
@@ -40,6 +18,7 @@
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
|
||||
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.2 KiB |
@@ -25,10 +25,9 @@
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<path
|
||||
d="m2 17.714v-11.429c0-2.3629 1.9229-4.2857 4.2857-4.2857h11.429c2.3629 0 4.2857 1.9229 4.2857 4.2857v7.1429c0 0.79-0.64 1.4286-1.4286 1.4286-0.78857 0-1.4286-0.63857-1.4286-1.4286v-7.1429c0-0.78857-0.64143-1.4286-1.4286-1.4286h-11.429c-0.78714 0-1.4286 0.64-1.4286 1.4286v11.429c0 0.78857 0.64143 1.4286 1.4286 1.4286h4.2857c0.78857 0 1.4286 0.63857 1.4286 1.4286s-0.64 1.4286-1.4286 1.4286h-4.2857c-2.3629 0-4.2857-1.9229-4.2857-4.2857zm15.714 4.2857h-11.429c-2.3629 0-4.2857-1.9229-4.2857-4.2857v-11.429c0-2.3629 1.9229-4.2857 4.2857-4.2857h7.1429c0.79 0 1.4286 0.64 1.4286 1.4286 0 0.78857-0.63857 1.4286-1.4286 1.4286h-7.1429c-0.78857 0-1.4286 0.64143-1.4286 1.4286v11.429c0 0.78714 0.64 1.4286 1.4286 1.4286h11.429c0.78857 0 1.4286-0.64143 1.4286-1.4286v-4.2857c0-0.78857 0.63857-1.4286 1.4286-1.4286s1.4286 0.64 1.4286 1.4286v4.2857c0 2.3629-1.9229 4.2857-4.2857 4.2857z"
|
||||
fill="#333"
|
||||
stroke-width="1.4286"
|
||||
id="path969" />
|
||||
id="path969"
|
||||
style="fill:#333333;fill-opacity:1"
|
||||
d="M 6.2851562,2 C 3.9296438,1.9318024 1.8530839,4.1116184 2,6.4548618 2.0068983,10.304935 1.9861657,14.15563 2.0104329,18.005313 2.1401885,20.174302 4.0868901,22.059322 6.2851562,22 c 3.8832648,-0.0037 7.7667178,0.0074 11.6498648,-0.0056 C 20.253096,21.935675 22.190613,19.73469 22,17.432001 21.996299,13.643017 22.007418,9.8538453 21.994414,6.0649793 21.935675,3.7469037 19.734691,1.8093866 17.432001,2 13.716386,2 10.000771,2 6.2851562,2 Z m 7.1621098,2.8554688 c 1.517767,0.018193 3.040205,-0.037158 4.55493,0.029088 0.831903,0.1432784 1.247019,1.0200413 1.140382,1.796579 -0.0049,3.726426 0.0098,7.453347 -0.0074,11.179464 -0.06228,0.897202 -0.990183,1.406807 -1.816343,1.281978 -3.726391,-0.005 -7.4532932,0.0099 -11.1793638,-0.0075 -0.8893499,-0.06498 -1.4061831,-0.991209 -1.2820783,-1.81622 0.00424,-3.720679 -0.00847,-7.4417768 0.00635,-11.1621953 0.056947,-0.8627405 0.9413144,-1.4230927 1.7608001,-1.2992468 2.2741995,-0.00131 4.5486615,0.00261 6.8226985,-0.00195 z" />
|
||||
<rect
|
||||
x="7"
|
||||
y="10.1"
|
||||
|
||||
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.9 KiB |
@@ -5,15 +5,11 @@
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
version="1.2"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
id="svg7486"
|
||||
sodipodi:docname="arrow-maximise.svg"
|
||||
inkscape:version="1.0 (4035a4fb49, 2020-05-01)">
|
||||
id="svg7486">
|
||||
<metadata
|
||||
id="metadata7492">
|
||||
<rdf:RDF>
|
||||
@@ -28,27 +24,6 @@
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs7490" />
|
||||
<sodipodi:namedview
|
||||
inkscape:document-rotation="0"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:window-height="1370"
|
||||
id="namedview7488"
|
||||
showgrid="false"
|
||||
inkscape:zoom="38.125"
|
||||
inkscape:cx="12"
|
||||
inkscape:cy="12"
|
||||
inkscape:window-x="2560"
|
||||
inkscape:window-y="1"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg7486" />
|
||||
<path
|
||||
d="m 15.75,2 c -0.69125,0 -1.25,0.56 -1.25,1.25 0,0.69 0.55875,1.25 1.25,1.25 h 1.9825 l -4.11625,4.11625 c -0.48875,0.48875 -0.48875,1.27875 0,1.7675 C 13.86,10.6275 14.18,10.75 14.5,10.75 c 0.32,0 0.64,-0.1225 0.88375,-0.36625 L 19.5,6.2675 V 8.25 c 0,0.69 0.55875,1.25 1.25,1.25 C 21.44125,9.5 22,8.94 22,8.25 V 2 Z M 8.61625,13.61625 4.5,17.7325 V 15.75 C 4.5,15.06 3.94125,14.5 3.25,14.5 2.55875,14.5 2,15.06 2,15.75 v 6.24875 H 3.245 L 8.25,22 C 8.94,22 9.5,21.44 9.5,20.75 9.5,20.06 8.94125,19.5 8.25,19.5 H 6.2675 l 4.11625,-4.115 c 0.48875,-0.48875 0.48875,-1.27875 0,-1.7675 C 9.895,13.12875 9.105,13.1275 8.61625,13.6163 Z M 5.75,12 C 6.44,12 7,11.44 7,10.75 V 7 h 3.75 C 11.44125,7 12,6.44 12,5.75 12,5.06 11.44125,4.5 10.75,4.5 H 4.50125 L 4.5,10.75 C 4.5,11.44 5.05875,12 5.75,12 Z m 12.5,0 C 17.55875,12 17,12.56 17,13.25 V 17 H 13.25 C 12.55875,17 12,17.56 12,18.25 c 0,0.69 0.55875,1.25 1.25,1.25 H 19.5 V 13.25 C 19.5,12.56 18.94125,12 18.25,12 Z"
|
||||
id="path7484"
|
||||
|
||||
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 1.7 KiB |
@@ -5,10 +5,6 @@
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
|
||||
sodipodi:docname="arrow-minimise.svg"
|
||||
id="svg8816"
|
||||
viewBox="0 0 24 24"
|
||||
height="24"
|
||||
@@ -28,26 +24,6 @@
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs8820" />
|
||||
<sodipodi:namedview
|
||||
inkscape:current-layer="svg8816"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:window-y="1"
|
||||
inkscape:window-x="2560"
|
||||
inkscape:cy="12"
|
||||
inkscape:cx="12"
|
||||
inkscape:zoom="38.125"
|
||||
showgrid="false"
|
||||
id="namedview8818"
|
||||
inkscape:window-height="1370"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0"
|
||||
guidetolerance="10"
|
||||
gridtolerance="10"
|
||||
objecttolerance="10"
|
||||
borderopacity="1"
|
||||
bordercolor="#666666"
|
||||
pagecolor="#ffffff" />
|
||||
<path
|
||||
style="fill:#4271ae;fill-opacity:1;stroke-width:1.24999"
|
||||
id="path8814"
|
||||
|
||||
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 2.2 KiB |
@@ -1,34 +1,27 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
version="1.2"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
id="svg1169"
|
||||
sodipodi:docname="typ_export.svg"
|
||||
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview2676"
|
||||
pagecolor="#505050"
|
||||
bordercolor="#eeeeee"
|
||||
borderopacity="1"
|
||||
inkscape:pageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
showgrid="false"
|
||||
inkscape:zoom="34.625"
|
||||
inkscape:cx="6.4259928"
|
||||
inkscape:cy="11.98556"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:window-height="1330"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg1169" />
|
||||
id="svg1169">
|
||||
<metadata
|
||||
id="metadata13645">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs1173" />
|
||||
<path
|
||||
|
||||
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.6 KiB |
@@ -5,15 +5,11 @@
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
version="1.2"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
id="svg6649"
|
||||
sodipodi:docname="refresh.svg"
|
||||
inkscape:version="1.0 (4035a4fb49, 2020-05-01)">
|
||||
id="svg6649">
|
||||
<metadata
|
||||
id="metadata6655">
|
||||
<rdf:RDF>
|
||||
@@ -28,27 +24,6 @@
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs6653" />
|
||||
<sodipodi:namedview
|
||||
inkscape:document-rotation="0"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:window-height="1370"
|
||||
id="namedview6651"
|
||||
showgrid="false"
|
||||
inkscape:zoom="38.125"
|
||||
inkscape:cx="12"
|
||||
inkscape:cy="12"
|
||||
inkscape:window-x="2560"
|
||||
inkscape:window-y="1"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg6649" />
|
||||
<path
|
||||
d="M 13.162667,12.25611 H 20 V 5.4213831 C 19.989333,3.9083317 19.105333,3.5443996 18.036,4.6148668 L 16.497333,6.1585791 C 15.144,5.0987766 13.488,4.5188846 11.742667,4.5188846 9.676,4.5188846 7.7306667,5.3240679 6.2706667,6.7864621 4.8053333,8.242191 4,10.189828 4,12.25611 4,14.326391 4.8053333,16.271361 6.268,17.731089 7.7306667,19.193484 9.674667,20 11.742667,20 c 2.066666,0 4.012,-0.806516 5.474666,-2.270244 0.394667,-0.395926 0.744,-0.827845 1.04,-1.286427 C 18.72,15.72213 18.510667,14.763642 17.790667,14.303728 17.072,13.842481 16.113333,14.051775 15.652,14.770308 c -0.177333,0.275948 -0.389333,0.533234 -0.624,0.773189 -0.878667,0.87717 -2.045333,1.359747 -3.285333,1.359747 -1.24,0 -2.406667,-0.481244 -3.285334,-1.359747 -0.8759997,-0.87717 -1.3599997,-2.043619 -1.3599997,-3.286054 0,-1.239769 0.4826667,-2.406219 1.3599997,-3.280722 0.878667,-0.87717 2.045334,-1.36108 3.285334,-1.36108 0.917333,0 1.794666,0.26795 2.545333,0.762525 l -1.930667,1.934306 c -1.070666,1.069134 -0.706666,1.943638 0.805334,1.943638 z"
|
||||
id="path6647"
|
||||
|
||||
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 1.8 KiB |
@@ -5,35 +5,11 @@
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
version="1.2"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
id="svg5291"
|
||||
sodipodi:docname="status_lines.svg"
|
||||
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:window-height="1344"
|
||||
id="namedview7270"
|
||||
showgrid="false"
|
||||
inkscape:zoom="38.125"
|
||||
inkscape:cx="12.065574"
|
||||
inkscape:cy="12"
|
||||
inkscape:window-x="2560"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg5291" />
|
||||
id="svg5291">
|
||||
<metadata
|
||||
id="metadata5297">
|
||||
<rdf:RDF>
|
||||
@@ -42,7 +18,7 @@
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
|
||||
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 1.6 KiB |
@@ -0,0 +1,69 @@
|
||||
<!DOCTYPE html public "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
||||
<html>
|
||||
<body>
|
||||
|
||||
<h2>Credits</h2>
|
||||
|
||||
<h3>Main Developer</h3>
|
||||
<p>Veronica Berglyd Olsen (<a href="https://github.com/vkbo">@vkbo</a>)</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>
|
||||
<p>For other contributions, see the project's
|
||||
<a href="https://github.com/vkbo/novelWriter/graphs/contributors">Contributors</a> page.</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>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>
|
||||
|
||||
<p>Additional larger translation contributions:</p>
|
||||
<p>
|
||||
<b>French:</b> Albert Aribaud (<a href="https://github.com/aaribaud">@aaribaud</a>)
|
||||
</p>
|
||||
|
||||
<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>
|
||||
|
||||
<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://lxml.de">lxml</a> by Martijn Faassen<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>
|
||||
|
||||
<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)
|
||||
</p>
|
||||
|
||||
<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>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -99,5 +99,15 @@ been updated to include the icon theme setting. The patch also updates the Frenc
|
||||
<p>This is a patch release that fixes a minor issues with syntax highlighting not updating when the
|
||||
highlighting preferences were changed. It also fixes an issue that broke the FreeBSD release.</p>
|
||||
|
||||
<h3>Patch 2.0.3 – 8 January 2023</h3>
|
||||
|
||||
<p>This is a patch release that fixes a few bugs and usability issues. The editing of status and
|
||||
importance labels in Project Settings should now be a bit more intuitive. Opening a document from
|
||||
the Outline View that is already open in the editor should now switch to the editor view. The
|
||||
convert folder to note or document feature in the project tree has also been fixed. Some icons have
|
||||
been updated and a renderring issue with one of them fixed. Chinese, Norwegian, US English, German
|
||||
and Spanish translations have been updated as well. A new credits tab has been added to the About
|
||||
dialog box, replacing the Credits section on the main About tab.</p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -7,7 +7,7 @@ File History:
|
||||
Created: 2019-05-12 [0.1]
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -7,7 +7,7 @@ File History:
|
||||
Created: 2018-09-22 [0.0.1]
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -461,10 +461,11 @@ class Config:
|
||||
self._confPath.mkdir(exist_ok=True)
|
||||
self._dataPath.mkdir(exist_ok=True)
|
||||
|
||||
# Also create the syntax and themes folders if possible
|
||||
# Also create the syntax, themes and icons folders if possible
|
||||
if self._dataPath.is_dir():
|
||||
(self._dataPath / "syntax").mkdir(exist_ok=True)
|
||||
(self._dataPath / "themes").mkdir(exist_ok=True)
|
||||
(self._dataPath / "icons").mkdir(exist_ok=True)
|
||||
|
||||
# Check if config file exists, and load it. If not, we save defaults
|
||||
if (self._confPath / nwFiles.CONF_FILE).is_file():
|
||||
|
||||
@@ -7,7 +7,7 @@ File History:
|
||||
Created: 2019-04-28 [0.0.1]
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -8,7 +8,7 @@ Created: 2022-10-02 [2.0rc1] DocMerger
|
||||
Created: 2022-10-11 [2.0rc1] DocSplitter
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -7,7 +7,7 @@ File History:
|
||||
Created: 2018-09-29 [0.0.1]
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -12,7 +12,7 @@ Created: 2022-05-29 [2.0rc1] TagsIndex
|
||||
Created: 2022-05-29 [2.0rc1] ItemIndex
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -7,7 +7,7 @@ File History:
|
||||
Created: 2018-10-27 [0.0.1]
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -8,7 +8,7 @@ Created: 2019-10-21 [0.3.1]
|
||||
Rewritten: 2020-02-19 [0.4.5]
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -7,7 +7,7 @@ File History:
|
||||
Created: 2018-09-29 [0.0.1]
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -251,6 +251,9 @@ class NWProject(QObject):
|
||||
"""
|
||||
self.clearProject()
|
||||
if not self._storage.openProjectInPlace(projPath):
|
||||
self.mainGui.makeAlert(self.tr(
|
||||
"Could not open project with path: {0}"
|
||||
).format(projPath), nwAlert.ERROR)
|
||||
return False
|
||||
|
||||
logger.info("Opening project: %s", projPath)
|
||||
|
||||
@@ -7,7 +7,7 @@ File History:
|
||||
Created: 2022-10-30 [2.0rc2]
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -9,7 +9,7 @@ Created: 2022-09-28 [2.0rc2] ProjectXMLReader
|
||||
Created: 2022-10-31 [2.0rc2] ProjectXMLWriter
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -7,7 +7,7 @@ File History:
|
||||
Created: 2019-06-11 [0.1.5]
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -8,7 +8,7 @@ Created: 2019-05-19 [0.1.3]
|
||||
Rewritten: 2022-04-05 [2.0b1]
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -7,7 +7,7 @@ File History:
|
||||
Created: 2022-11-01 [2.0rc2] NWStorage
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -102,6 +102,10 @@ class NWStorage:
|
||||
# but it can point to a folder containing files
|
||||
inPath = inPath.parent
|
||||
|
||||
if not (inPath.is_dir() or newProject):
|
||||
# If the project is not new, the folder must already exist.
|
||||
return False
|
||||
|
||||
self._storagePath = inPath
|
||||
self._runtimePath = inPath
|
||||
self._lockFilePath = inPath / nwFiles.PROJ_LOCK
|
||||
@@ -114,7 +118,9 @@ class NWStorage:
|
||||
return True
|
||||
|
||||
def openProjectArchive(self, path): # pragma: no cover
|
||||
pass
|
||||
"""Placeholder for later implementation. See #977.
|
||||
"""
|
||||
return False
|
||||
|
||||
def runPostSaveTasks(self, autoSave=False): # pragma: no cover
|
||||
"""Run tasks after the project has been saved.
|
||||
|
||||
@@ -7,7 +7,7 @@ File History:
|
||||
Created: 2019-05-07 [0.0.1]
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -7,7 +7,7 @@ File History:
|
||||
Created: 2019-05-05 [0.0.1]
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -7,7 +7,7 @@ File History:
|
||||
Created: 2021-02-06 [1.2b1]
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -7,7 +7,7 @@ File History:
|
||||
Created: 2021-01-26 [1.2b1]
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -7,7 +7,7 @@ File History:
|
||||
Created: 2020-05-07 [0.4.5]
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -9,7 +9,7 @@ Created: 2020-05-03 [0.4.5] QSwitch
|
||||
Created: 2020-05-17 [0.5.1] PagedDialog
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -7,7 +7,7 @@ File History:
|
||||
Created: 2020-05-21 [0.5.2]
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -85,6 +85,10 @@ class GuiAbout(QDialog):
|
||||
self.pageNotes.setOpenExternalLinks(True)
|
||||
self.pageNotes.document().setDocumentMargin(self.mainConf.pxInt(16))
|
||||
|
||||
self.pageCredits = QTextBrowser()
|
||||
self.pageCredits.setOpenExternalLinks(True)
|
||||
self.pageCredits.document().setDocumentMargin(self.mainConf.pxInt(16))
|
||||
|
||||
self.pageLicense = QTextBrowser()
|
||||
self.pageLicense.setOpenExternalLinks(True)
|
||||
self.pageLicense.document().setDocumentMargin(self.mainConf.pxInt(16))
|
||||
@@ -93,6 +97,7 @@ class GuiAbout(QDialog):
|
||||
self.tabBox = QTabWidget()
|
||||
self.tabBox.addTab(self.pageAbout, self.tr("About"))
|
||||
self.tabBox.addTab(self.pageNotes, self.tr("Release"))
|
||||
self.tabBox.addTab(self.pageCredits, self.tr("Credits"))
|
||||
self.tabBox.addTab(self.pageLicense, self.tr("Licence"))
|
||||
self.innerBox.addWidget(self.tabBox)
|
||||
|
||||
@@ -115,6 +120,7 @@ class GuiAbout(QDialog):
|
||||
self._setStyleSheet()
|
||||
self._fillAboutPage()
|
||||
self._fillNotesPage()
|
||||
self._fillCreditsPage()
|
||||
self._fillLicensePage()
|
||||
qApp.restoreOverrideCursor()
|
||||
return
|
||||
@@ -140,20 +146,12 @@ class GuiAbout(QDialog):
|
||||
"<p>{license1}</p>"
|
||||
"<p>{license2}</p>"
|
||||
"<p>{license3}</p>"
|
||||
"<h3>{title2}</h3>"
|
||||
"<p>{credits}</p>"
|
||||
).format(
|
||||
title1=self.tr("About novelWriter"),
|
||||
copy=novelwriter.__copyright__,
|
||||
link=self.tr("Website: {0}").format(
|
||||
f"<a href='{novelwriter.__url__}'>{novelwriter.__domain__}</a>"
|
||||
),
|
||||
title2=self.tr("Credits"),
|
||||
credits=self._wrapTable([
|
||||
(self.tr("Developer"), "Veronica Berglyd Olsen"),
|
||||
(self.tr("Concept"), "Veronica Berglyd Olsen, Marian Lückhof"),
|
||||
(self.tr("i18n"), "Bruno Meneguello"),
|
||||
]),
|
||||
intro=self.tr(
|
||||
"novelWriter is a markdown-like text editor designed for organising and "
|
||||
"writing novels. It is written in Python 3 with a Qt5 GUI, using PyQt5."
|
||||
@@ -177,55 +175,6 @@ class GuiAbout(QDialog):
|
||||
),
|
||||
)
|
||||
|
||||
aboutMsg += "<h4>{0}</h4><p>{1}</p>".format(
|
||||
self.tr("Translations"),
|
||||
self._wrapTable([
|
||||
("Deutsch", "Myian"),
|
||||
("English", "Veronica Berglyd Olsen"),
|
||||
("Español Latinoamericano", "Tommy Marplatt"),
|
||||
("Français", "Jan Lüdke (jyhelle)"),
|
||||
("Nederlands", "Martijn van der Kleijn"),
|
||||
("Norsk Bokmål", "Veronica Berglyd Olsen"),
|
||||
("Português", "Bruno Meneguello"),
|
||||
("简体中文", "Qianzhi Long"),
|
||||
])
|
||||
)
|
||||
|
||||
mainTheme = self.mainGui.mainTheme
|
||||
iconCache = self.mainGui.mainTheme.iconCache
|
||||
if mainTheme.themeName and mainTheme.themeAuthor != "N/A":
|
||||
licURL = f"<a href='{mainTheme.themeLicenseUrl}'>{mainTheme.themeLicense}</a>"
|
||||
aboutMsg += "<h4>{0}</h4><p>{1}</p>".format(
|
||||
self.tr("Theme: {0}").format(mainTheme.themeName),
|
||||
self._wrapTable([
|
||||
(self.tr("Author"), mainTheme.themeAuthor),
|
||||
(self.tr("Credit"), mainTheme.themeCredit),
|
||||
(self.tr("Licence"), licURL),
|
||||
])
|
||||
)
|
||||
|
||||
if iconCache.themeName:
|
||||
licURL = f"<a href='{iconCache.themeLicenseUrl}'>{iconCache.themeLicense}</a>"
|
||||
aboutMsg += "<h4>{0}</h4><p>{1}</p>".format(
|
||||
self.tr("Icons: {0}").format(iconCache.themeName),
|
||||
self._wrapTable([
|
||||
(self.tr("Author"), iconCache.themeAuthor),
|
||||
(self.tr("Credit"), iconCache.themeCredit),
|
||||
(self.tr("Licence"), licURL),
|
||||
])
|
||||
)
|
||||
|
||||
if mainTheme.syntaxName:
|
||||
licURL = f"<a href='{mainTheme.syntaxLicenseUrl}'>{mainTheme.syntaxLicense}</a>"
|
||||
aboutMsg += "<h4>{0}</h4><p>{1}</p>".format(
|
||||
self.tr("Syntax: {0}").format(mainTheme.syntaxName),
|
||||
self._wrapTable([
|
||||
(self.tr("Author"), mainTheme.syntaxAuthor),
|
||||
(self.tr("Credit"), mainTheme.syntaxCredit),
|
||||
(self.tr("Licence"), licURL),
|
||||
])
|
||||
)
|
||||
|
||||
self.pageAbout.setHtml(aboutMsg)
|
||||
|
||||
return
|
||||
@@ -241,6 +190,17 @@ class GuiAbout(QDialog):
|
||||
self.pageNotes.setHtml("Error loading release notes text ...")
|
||||
return
|
||||
|
||||
def _fillCreditsPage(self):
|
||||
"""Load the content for the Credits page.
|
||||
"""
|
||||
docPath = self.mainConf.assetPath("text") / "credits_en.htm"
|
||||
docText = readTextFile(docPath)
|
||||
if docText:
|
||||
self.pageCredits.setHtml(docText)
|
||||
else:
|
||||
self.pageCredits.setHtml("Error loading credits text ...")
|
||||
return
|
||||
|
||||
def _fillLicensePage(self):
|
||||
"""Load the content for the Licence page.
|
||||
"""
|
||||
@@ -252,16 +212,6 @@ class GuiAbout(QDialog):
|
||||
self.pageLicense.setHtml("Error loading licence text ...")
|
||||
return
|
||||
|
||||
def _wrapTable(self, theData):
|
||||
"""Wrap a list of label/value tuples in an html table.
|
||||
"""
|
||||
theTable = []
|
||||
for aLabel, aValue in theData:
|
||||
theTable.append(
|
||||
f"<tr><td><b>{aLabel}:</b></td><td>{aValue}</td></tr>"
|
||||
)
|
||||
return "<table>{0}</table>".format("".join(theTable))
|
||||
|
||||
def _setStyleSheet(self):
|
||||
"""Set stylesheet for all browser tabs
|
||||
"""
|
||||
@@ -275,9 +225,6 @@ class GuiAbout(QDialog):
|
||||
".alt {{"
|
||||
" color: rgb({kColR},{kColG},{kColB});"
|
||||
"}}\n"
|
||||
"td {{"
|
||||
" padding-right: 0.8em;"
|
||||
"}}\n"
|
||||
).format(
|
||||
hColR=self.mainGui.mainTheme.colHead[0],
|
||||
hColG=self.mainGui.mainTheme.colHead[1],
|
||||
@@ -288,6 +235,7 @@ class GuiAbout(QDialog):
|
||||
)
|
||||
self.pageAbout.document().setDefaultStyleSheet(styleSheet)
|
||||
self.pageNotes.document().setDefaultStyleSheet(styleSheet)
|
||||
self.pageCredits.document().setDefaultStyleSheet(styleSheet)
|
||||
self.pageLicense.document().setDefaultStyleSheet(styleSheet)
|
||||
|
||||
return
|
||||
|
||||
@@ -8,7 +8,7 @@ Created: 2020-01-23 [0.4.3]
|
||||
Rewritten: 2022-10-06 [2.0rc1]
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -8,7 +8,7 @@ Created: 2020-02-01 [0.4.3]
|
||||
Rewritten: 2022-10-12 [2.0rc1]
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -7,7 +7,7 @@ File History:
|
||||
Created: 2022-06-11 [2.0rc1]
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -7,7 +7,7 @@ File History:
|
||||
Created: 2019-06-10 [0.1.5]
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -7,7 +7,7 @@ File History:
|
||||
Created: 2021-01-03 [1.1rc1]
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -7,7 +7,7 @@ File History:
|
||||
Created: 2020-02-26 [0.4.5]
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -7,7 +7,7 @@ File History:
|
||||
Created: 2018-09-29 [0.0.1]
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -26,8 +26,8 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
import logging
|
||||
import novelwriter
|
||||
|
||||
from PyQt5.QtGui import QIcon, QPixmap, QColor, QBrush
|
||||
from PyQt5.QtCore import Qt, QLocale
|
||||
from PyQt5.QtGui import QIcon, QPixmap, QColor
|
||||
from PyQt5.QtCore import Qt, QLocale, pyqtSlot
|
||||
from PyQt5.QtWidgets import (
|
||||
QColorDialog, QComboBox, QDialogButtonBox, QHBoxLayout, QLabel, QLineEdit,
|
||||
QPushButton, QTreeWidget, QTreeWidgetItem, QVBoxLayout, QWidget
|
||||
@@ -300,7 +300,7 @@ class GuiProjectEditStatus(QWidget):
|
||||
|
||||
self.colDeleted = []
|
||||
self.colChanged = False
|
||||
self.selColour = QColor(100, 100, 100)
|
||||
self.selColour = QColor(100, 100, 100)
|
||||
|
||||
self.iPx = self.mainTheme.baseIconSize
|
||||
|
||||
@@ -338,16 +338,18 @@ class GuiProjectEditStatus(QWidget):
|
||||
|
||||
self.editName = QLineEdit()
|
||||
self.editName.setMaxLength(40)
|
||||
self.editName.setEnabled(False)
|
||||
self.editName.setPlaceholderText(self.tr("Select item to edit"))
|
||||
self.editName.setEnabled(False)
|
||||
|
||||
self.colPixmap = QPixmap(self.iPx, self.iPx)
|
||||
self.colPixmap.fill(QColor(100, 100, 100))
|
||||
self.colButton = QPushButton(QIcon(self.colPixmap), self.tr("Colour"))
|
||||
self.colButton.setIconSize(self.colPixmap.rect().size())
|
||||
self.colButton.setEnabled(False)
|
||||
self.colButton.clicked.connect(self._selectColour)
|
||||
|
||||
self.saveButton = QPushButton(self.tr("Save"))
|
||||
self.saveButton.setEnabled(False)
|
||||
self.saveButton.clicked.connect(self._saveItem)
|
||||
|
||||
# Assemble
|
||||
@@ -399,9 +401,10 @@ class GuiProjectEditStatus(QWidget):
|
||||
return [], []
|
||||
|
||||
##
|
||||
# User Actions
|
||||
# Private Slots
|
||||
##
|
||||
|
||||
@pyqtSlot()
|
||||
def _selectColour(self):
|
||||
"""Open a dialog to select the status icon colour.
|
||||
"""
|
||||
@@ -417,20 +420,20 @@ class GuiProjectEditStatus(QWidget):
|
||||
self.colButton.setIconSize(pixmap.rect().size())
|
||||
return
|
||||
|
||||
@pyqtSlot()
|
||||
def _newItem(self):
|
||||
"""Create a new status item.
|
||||
"""
|
||||
newItem = self._addItem(None, self.tr("New Item"), (100, 100, 100), 0)
|
||||
newItem.setBackground(self.COL_LABEL, QBrush(QColor(0, 255, 0, 70)))
|
||||
newItem.setBackground(self.COL_USAGE, QBrush(QColor(0, 255, 0, 70)))
|
||||
self._addItem(None, self.tr("New Item"), (100, 100, 100), 0)
|
||||
self.colChanged = True
|
||||
return
|
||||
|
||||
@pyqtSlot()
|
||||
def _delItem(self):
|
||||
"""Delete a status item.
|
||||
"""
|
||||
selItem = self._getSelectedItem()
|
||||
if selItem is not None:
|
||||
if isinstance(selItem, QTreeWidgetItem):
|
||||
iRow = self.listBox.indexOfTopLevelItem(selItem)
|
||||
if selItem.data(self.COL_LABEL, self.NUM_ROLE) > 0:
|
||||
self.mainGui.makeAlert(self.tr(
|
||||
@@ -442,21 +445,60 @@ class GuiProjectEditStatus(QWidget):
|
||||
self.colChanged = True
|
||||
return
|
||||
|
||||
@pyqtSlot()
|
||||
def _saveItem(self):
|
||||
"""Save changes made to a status item.
|
||||
"""
|
||||
selItem = self._getSelectedItem()
|
||||
if selItem is not None:
|
||||
if isinstance(selItem, QTreeWidgetItem):
|
||||
selItem.setText(self.COL_LABEL, simplified(self.editName.text()))
|
||||
selItem.setIcon(self.COL_LABEL, self.colButton.icon())
|
||||
selItem.setData(self.COL_LABEL, self.COL_ROLE, (
|
||||
self.selColour.red(), self.selColour.green(), self.selColour.blue()
|
||||
))
|
||||
self.editName.setEnabled(False)
|
||||
self.colChanged = True
|
||||
|
||||
return
|
||||
|
||||
@pyqtSlot()
|
||||
def _selectedItem(self):
|
||||
"""Extract the info of a selected item and populate the settings
|
||||
boxes and button. If no item is selected, clear the form.
|
||||
"""
|
||||
selItem = self._getSelectedItem()
|
||||
if isinstance(selItem, QTreeWidgetItem):
|
||||
cols = selItem.data(self.COL_LABEL, self.COL_ROLE)
|
||||
name = selItem.text(self.COL_LABEL)
|
||||
|
||||
pixmap = QPixmap(self.iPx, self.iPx)
|
||||
pixmap.fill(QColor(*cols))
|
||||
self.selColour = QColor(*cols)
|
||||
self.editName.setText(name)
|
||||
self.colButton.setIcon(QIcon(pixmap))
|
||||
self.editName.selectAll()
|
||||
self.editName.setFocus()
|
||||
|
||||
self.editName.setEnabled(True)
|
||||
self.colButton.setEnabled(True)
|
||||
self.saveButton.setEnabled(True)
|
||||
|
||||
else:
|
||||
pixmap = QPixmap(self.iPx, self.iPx)
|
||||
pixmap.fill(QColor(100, 100, 100))
|
||||
self.selColour = QColor(100, 100, 100)
|
||||
self.editName.setText("")
|
||||
self.colButton.setIcon(QIcon(pixmap))
|
||||
|
||||
self.editName.setEnabled(False)
|
||||
self.colButton.setEnabled(False)
|
||||
self.saveButton.setEnabled(False)
|
||||
|
||||
return
|
||||
|
||||
##
|
||||
# Internal Functions
|
||||
##
|
||||
|
||||
def _addItem(self, key, name, cols, count):
|
||||
"""Add a status item to the list.
|
||||
"""
|
||||
@@ -473,7 +515,7 @@ class GuiProjectEditStatus(QWidget):
|
||||
|
||||
self.listBox.addTopLevelItem(item)
|
||||
|
||||
return item
|
||||
return
|
||||
|
||||
def _moveItem(self, step):
|
||||
"""Move and item up or down step.
|
||||
@@ -498,32 +540,6 @@ class GuiProjectEditStatus(QWidget):
|
||||
|
||||
return
|
||||
|
||||
def _selectedItem(self):
|
||||
"""Extract the info of a selected item and populate the settings
|
||||
boxes and button.
|
||||
"""
|
||||
selItem = self._getSelectedItem()
|
||||
if selItem is None:
|
||||
return
|
||||
|
||||
cols = selItem.data(self.COL_LABEL, self.COL_ROLE)
|
||||
name = selItem.text(self.COL_LABEL)
|
||||
|
||||
pixmap = QPixmap(self.iPx, self.iPx)
|
||||
pixmap.fill(QColor(*cols))
|
||||
self.selColour = QColor(*cols)
|
||||
self.editName.setText(name)
|
||||
self.colButton.setIcon(QIcon(pixmap))
|
||||
self.editName.setEnabled(True)
|
||||
self.editName.selectAll()
|
||||
self.editName.setFocus()
|
||||
|
||||
return
|
||||
|
||||
##
|
||||
# Internal Functions
|
||||
##
|
||||
|
||||
def _getSelectedItem(self):
|
||||
"""Get the currently selected item.
|
||||
"""
|
||||
|
||||
@@ -7,7 +7,7 @@ File History:
|
||||
Created: 2020-06-18 [0.9]
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -7,7 +7,7 @@ File History:
|
||||
Created: 2021-08-21 [1.5b1]
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -7,7 +7,7 @@ File History:
|
||||
Created: 2021-02-12 [1.2rc1]
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -7,7 +7,7 @@ File History:
|
||||
Created: 2018-11-02 [0.0.1]
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -7,7 +7,7 @@ File History:
|
||||
Created: 2020-08-02 [0.10.2]
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -8,7 +8,7 @@ Created: 2020-05-17 [0.5.1] StatusLED
|
||||
Created: 2022-11-17 [2.0] NovelSelector
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -13,7 +13,7 @@ Created: 2020-06-27 [0.10] GuiDocEditFooter
|
||||
Rewritten: 2020-10-07 [1.0b3] BackgroundWordCounter
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -7,7 +7,7 @@ File History:
|
||||
Created: 2019-04-06 [0.0.1]
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -11,7 +11,7 @@ Created: 2020-06-09 [0.8] GuiDocViewFooter
|
||||
Created: 2020-09-08 [1.0b1] GuiDocViewHistory
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -7,7 +7,7 @@ File History:
|
||||
Created: 2019-04-24 [0.0.1]
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -7,7 +7,7 @@ File History:
|
||||
Created: 2019-04-27 [0.0.1]
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -11,7 +11,7 @@ Created: 2019-11-16 [0.4.1] GuiOutlineHeaderMenu
|
||||
Created: 2020-06-02 [0.7] GuiOutlineDetails
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -9,7 +9,7 @@ Created: 2022-06-06 [2.0rc1] GuiProjectView
|
||||
Created: 2022-06-06 [2.0rc1] GuiProjectToolBar
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -1251,18 +1251,30 @@ class GuiProjectTree(QTreeWidget):
|
||||
isDocFile = isFile and tItem.isDocumentLayout()
|
||||
isNoteFile = isFile and tItem.isNoteLayout()
|
||||
|
||||
if (isNoteFile or isFolder) and tItem.documentAllowed():
|
||||
if isNoteFile and tItem.documentAllowed():
|
||||
aConvert1 = mTrans.addAction(self.tr("Convert to {0}").format(trDoc))
|
||||
aConvert1.triggered.connect(
|
||||
lambda: self._changeItemLayout(tHandle, nwItemLayout.DOCUMENT)
|
||||
)
|
||||
|
||||
if isDocFile or isFolder:
|
||||
if isDocFile:
|
||||
aConvert2 = mTrans.addAction(self.tr("Convert to {0}").format(trNote))
|
||||
aConvert2.triggered.connect(
|
||||
lambda: self._changeItemLayout(tHandle, nwItemLayout.NOTE)
|
||||
)
|
||||
|
||||
if isFolder and tItem.documentAllowed():
|
||||
aConvert3 = mTrans.addAction(self.tr("Convert to {0}").format(trDoc))
|
||||
aConvert3.triggered.connect(
|
||||
lambda: self._covertFolderToFile(tHandle, nwItemLayout.DOCUMENT)
|
||||
)
|
||||
|
||||
if isFolder:
|
||||
aConvert4 = mTrans.addAction(self.tr("Convert to {0}").format(trNote))
|
||||
aConvert4.triggered.connect(
|
||||
lambda: self._covertFolderToFile(tHandle, nwItemLayout.NOTE)
|
||||
)
|
||||
|
||||
if hasChild and isFile:
|
||||
aMerge1 = mTrans.addAction(self.tr("Merge Child Items into Self"))
|
||||
aMerge1.triggered.connect(lambda: self._mergeDocuments(tHandle, False))
|
||||
@@ -1681,19 +1693,23 @@ class GuiProjectTree(QTreeWidget):
|
||||
del self._treeMap[tHandle]
|
||||
return None
|
||||
|
||||
else:
|
||||
elif pHandle in self._treeMap:
|
||||
byIndex = -1
|
||||
if nHandle is not None and nHandle in self._treeMap:
|
||||
try:
|
||||
byIndex = self._treeMap[pHandle].indexOfChild(self._treeMap[nHandle])
|
||||
except Exception:
|
||||
logger.error("Failed to get index of item with handle '%s'", nHandle)
|
||||
byIndex = self._treeMap[pHandle].indexOfChild(self._treeMap[nHandle])
|
||||
if byIndex >= 0:
|
||||
self._treeMap[pHandle].insertChild(byIndex + 1, newItem)
|
||||
else:
|
||||
self._treeMap[pHandle].addChild(newItem)
|
||||
self.propagateCount(tHandle, nwItem.wordCount, countChildren=True)
|
||||
|
||||
else:
|
||||
self.mainGui.makeAlert(self.tr(
|
||||
"There is nowhere to add item with name '{0}'."
|
||||
).format(nwItem.itemName), nwAlert.ERROR)
|
||||
del self._treeMap[tHandle]
|
||||
return None
|
||||
|
||||
self.setTreeItemValues(tHandle)
|
||||
newItem.setExpanded(nwItem.isExpanded)
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ File History:
|
||||
Created: 2022-05-10 [2.0rc1]
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -8,7 +8,7 @@ Created: 2019-04-20 [0.0.1] GuiMainStatus
|
||||
Created: 2020-05-17 [0.5.1] StatusLED
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -8,7 +8,7 @@ Created: 2019-05-18 [0.1.3] GuiTheme
|
||||
Created: 2019-11-08 [0.4] GuiIcons
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -507,8 +507,10 @@ class GuiIcons:
|
||||
self._themeMap = {}
|
||||
themePath = self._iconPath / iconTheme
|
||||
if not themePath.is_dir():
|
||||
logger.warning("No icons loaded for '%s'", iconTheme)
|
||||
return False
|
||||
themePath = self.mainConf.dataPath("icons") / iconTheme
|
||||
if not themePath.is_dir():
|
||||
logger.warning("No icons loaded for '%s'", iconTheme)
|
||||
return False
|
||||
|
||||
themeConf = themePath / self._confName
|
||||
logger.info("Loading icon theme '%s'", iconTheme)
|
||||
|
||||
@@ -7,7 +7,7 @@ File History:
|
||||
Created: 2018-09-22 [0.0.1]
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -610,6 +610,7 @@ class GuiMain(QMainWindow):
|
||||
logger.debug("Requested item '%s' is not a document", tHandle)
|
||||
return False
|
||||
|
||||
self._changeView(nwView.EDITOR)
|
||||
cHandle = self.docEditor.docHandle()
|
||||
if cHandle == tHandle:
|
||||
self.docEditor.setCursorLine(tLine)
|
||||
@@ -618,7 +619,6 @@ class GuiMain(QMainWindow):
|
||||
return True
|
||||
|
||||
self.closeDocument(beforeOpen=True)
|
||||
self._changeView(nwView.EDITOR)
|
||||
if self.docEditor.loadText(tHandle, tLine):
|
||||
self.theProject.data.setLastHandle(tHandle, "editor")
|
||||
self.projView.setSelectedHandle(tHandle, doScroll=doScroll)
|
||||
|
||||
@@ -7,7 +7,7 @@ File History:
|
||||
Created: 2020-05-09 [0.5]
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -7,7 +7,7 @@ File History:
|
||||
Created: 2022-04-02 [2.0rc1]
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -7,7 +7,7 @@ File History:
|
||||
Created: 2020-07-11 [0.10.1]
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -7,7 +7,7 @@ File History:
|
||||
Created: 2019-10-20 [0.3]
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<novelWriterXML appVersion="2.0.2" hexVersion="0x020002f0" fileVersion="1.5" timeStamp="2022-12-01 23:33:10">
|
||||
<project id="e2be99af-f9bf-4403-857a-c3d1ac25abea" saveCount="1463" autoCount="237" editTime="74319">
|
||||
<novelWriterXML appVersion="2.0.3" hexVersion="0x020003f0" fileVersion="1.5" timeStamp="2023-01-08 19:10:50">
|
||||
<project id="e2be99af-f9bf-4403-857a-c3d1ac25abea" saveCount="1467" autoCount="237" editTime="74387">
|
||||
<name>Sample Project</name>
|
||||
<title>Sample Project</title>
|
||||
<author>Jane Smith</author>
|
||||
|
||||
@@ -8,7 +8,7 @@ File History:
|
||||
Created: 2019-05-16 [0.5.1]
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -835,7 +835,7 @@ def makeDebianPackage(signKey=None, sourceBuild=False, distName="unstable", buil
|
||||
##
|
||||
|
||||
def makeForLaunchpad(doSign=False, isFirst=False, isSnapshot=False):
|
||||
"""Wrapper for building debian packages for launcpad.
|
||||
"""Wrapper for building debian packages for launchpad.
|
||||
"""
|
||||
print("")
|
||||
print("Launchpad Packages")
|
||||
@@ -853,6 +853,7 @@ def makeForLaunchpad(doSign=False, isFirst=False, isSnapshot=False):
|
||||
("20.04", "focal"),
|
||||
("22.04", "jammy"),
|
||||
("22.10", "kinetic"),
|
||||
("23.04", "lunar"),
|
||||
]
|
||||
|
||||
tStamp = datetime.datetime.now().strftime("%Y%m%d~%H%M%S")
|
||||
|
||||
@@ -3,7 +3,7 @@ novelWriter – Test Suite Configuration
|
||||
======================================
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -3,7 +3,7 @@ novelWriter – Test Suite Mocked Classes
|
||||
=======================================
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -3,7 +3,7 @@ novelWriter – Common Functions Tester
|
||||
=====================================
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -3,7 +3,7 @@ novelWriter – Config Class Tester
|
||||
=================================
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -3,7 +3,7 @@ novelWriter – Error Handler Tester
|
||||
==================================
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -3,7 +3,7 @@ novelWriter – Main Init Tester
|
||||
==============================
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -3,7 +3,7 @@ novelWriter – Project Document Tools Tester
|
||||
===========================================
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -3,7 +3,7 @@ novelWriter – NWDocument Class Tester
|
||||
=====================================
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -3,7 +3,7 @@ novelWriter – NWIndex Class Tester
|
||||
==================================
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -3,7 +3,7 @@ novelWriter – NWItem Class Tester
|
||||
=================================
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -3,7 +3,7 @@ novelWriter – OptionState Class Tester
|
||||
======================================
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -3,7 +3,7 @@ novelWriter – NWProject Class Tester
|
||||
====================================
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -3,7 +3,7 @@ novelWriter – ProjectXMLReader/Writer Class Tester
|
||||
==================================================
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -3,7 +3,7 @@ novelWriter – Spell Check Classes Tester
|
||||
========================================
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -3,7 +3,7 @@ novelWriter – NWStatus Class Tester
|
||||
===================================
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -3,7 +3,7 @@ novelWriter – NWStorage Class Tester
|
||||
====================================
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -64,12 +64,15 @@ def testCoreStorage_OpenProjectInPlace(mockGUI, fncPath, mockRnd):
|
||||
# Open project as a new project should fail
|
||||
assert storage.openProjectInPlace(fncPath, newProject=True) is False
|
||||
|
||||
# Opening as a no-new project is fine
|
||||
# Opening as a non-new project is fine
|
||||
assert storage.openProjectInPlace(fncPath, newProject=False) is True
|
||||
|
||||
# Opening the project file is also fine
|
||||
assert storage.openProjectInPlace(fncPath / nwFiles.PROJ_FILE, newProject=False) is True
|
||||
|
||||
# Opening as a non-new project on a non-existing folder should fail
|
||||
assert storage.openProjectInPlace(fncPath / "foobar", newProject=False) is False
|
||||
|
||||
# Check settings
|
||||
assert storage.storagePath == fncPath
|
||||
assert storage.runtimePath == fncPath
|
||||
|
||||
@@ -3,7 +3,7 @@ novelWriter – ToHtml Class Tester
|
||||
=================================
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -3,7 +3,7 @@ novelWriter – Tokenizer Class Tester
|
||||
====================================
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -3,7 +3,7 @@ novelWriter – ToMd Class Tester
|
||||
===============================
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -3,7 +3,7 @@ novelWriter – ToOdt Class Tester
|
||||
=================================
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -3,7 +3,7 @@ novelWriter – NWTree Class Tester
|
||||
=================================
|
||||
|
||||
This file is a part of novelWriter
|
||||
Copyright 2018–2022, Veronica Berglyd Olsen
|
||||
Copyright 2018–2023, Veronica Berglyd Olsen
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||