Merge 2.0.5 (#1363)

This commit is contained in:
Veronica Berglyd Olsen
2023-02-12 17:38:40 +01:00
committed by GitHub
48 changed files with 5998 additions and 650 deletions
+41
View File
@@ -33,3 +33,44 @@ jobs:
novelwriter/assets/i18n/*.qm novelwriter/assets/i18n/*.qm
if-no-files-found: error if-no-files-found: error
retention-days: 1 retention-days: 1
buildMac:
needs: buildAssets
strategy:
fail-fast: false
runs-on: macos-12
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Get Version
shell: bash
run: |
NW_VERSION=`awk '/^__version__/{print substr($NF,2,length($NF)-2)}' novelwriter/__init__.py`
echo "novelWriter Version: $NW_VERSION"
echo "VERSION=$NW_VERSION" >> $GITHUB_ENV
- name: Download Artifact
uses: actions/download-artifact@v3
with:
name: nw-assets-${{ github.sha }}
path: novelwriter/assets
- name: Build
run: |
./setup/macos/build.sh
- name: Upload ZIP
uses: actions/upload-artifact@v3
with:
name: novelWriter-${{ env.VERSION }}-macos.app.zip
path: dist_macos/novelWriter-${{ env.VERSION }}.app.zip
retention-days: 1
- name: Upload DMG
uses: actions/upload-artifact@v3
with:
name: novelWriter-${{ env.VERSION }}-macos.dmg
path: dist_macos/novelWriter-${{ env.VERSION }}.dmg
retention-days: 1
+1
View File
@@ -9,6 +9,7 @@
setup.iss setup.iss
/novelwriter.desktop /novelwriter.desktop
/novelWriter.pyw /novelWriter.pyw
/setup/macos/Info.plist
# Translations # Translations
/novelwriter/assets/i18n/*.qm /novelwriter/assets/i18n/*.qm
+72 -14
View File
@@ -1,5 +1,63 @@
# novelWriter Changelog # novelWriter Changelog
## Version 2.0.5 [2023-02-12]
### Release Notes
This is a patch release that fixes a number of minor bugs and usability issues.
The Project Details dialog now properly updates when another project is opened, and the "Total
editing time" value has a less ambiguous time format. The editor no longer inserts blank lines if
block formats are applied to an empty line. The optional last column in the Novel Tree will now
show all items of the selected type, not only the first, and the column size can be adjusted from
the same menu where the column content is selected. The Open Document build output has been updated
to ODF 1.3 extended format, and passes validation.
An Italian translation has been added, and Russian is currently available for project builds. A
full translation into Russian is on its way.
### Detailed Changelog
**Bugfixes**
* Fixed an issue where the Title, Project Name and Author values of the Project Dialog would not
refresh when a project was closed and another opened. The issue is with the Qt library and
caching of the dialog, but novelWriter forces a refresh of the labels. These three were
previously missing though. Issue #1336. PR #1339.
* Add a check to the data storage class that a path exists before it is returned to other classes
that uses them for file I/O. Issue #1317. PR #1342.
* Fixed some issues with the Open Document build format as the produced document wasn't compliant
with the standard. It is now compliant with ODF 1.3 extended format. Issue #1359. PR #1360.
**Usability Fixes**
* The "Total editing time" label on the Project Details dialog now uses the same time format as the
status bar. That is, HH:MM:SS for times less than 24 hours, and D-HH:MM:SS for times from 24
hours and above. Issue #1335. PR #1339.
* Fixed an issue where applying block formatting to an empty line would insert a blank line before
it. This is a consequence of the change from #1175. The line break is now only added if the line
is _not_ blank. Issues #1349 and #1350. PR #1354.
* The optional third column in the Novel Tree now shows all references for the selected category
instead of just the first one. The maximum width of the column can also be selected from the
Novel Tree config menu. Issue #1351. PR #1355.
* The Open Document produced by the build tool now has the necessary title and author meta data set
so that it can be used in LibreOffice. Other meta data has also been added. Issue #1359.
PR #1360.
**Internationalisation**
* Existing translations for US English, Norwegian, Brazilian Portuguese, Latin American Spanish,
and German have been updated. French and Dutch are partially updated. PR #1341.
* Russian project variables have been added. Full translation is forthcoming. Contributed by
Aleksey (@SKYnv). PR #1341.
* A complete Italian translation has been added. Contributed by Riccardo Mangili. PR #1341.
**Packaging**
* Added App Bundle and DMG packages for MacOS. Contributed by @Ryex. PRs #1276 and #1340.
----
## Version 2.0.4 [2023-01-29] ## Version 2.0.4 [2023-01-29]
### Release Notes ### Release Notes
@@ -11,8 +69,8 @@ installed and imported.
**Bugfixes** **Bugfixes**
* Fix an issue with the version check against PyQt5, which was imported from the wrong package when * Fixed an issue with the version check against PyQt5, which was imported from the wrong package
running novelWriter with PyQt5 version 5.15.8, released 2023-01-28. Issue #1324. PR #1325. when running novelWriter with PyQt5 version 5.15.8, released 2023-01-28. Issue #1324. PR #1325.
---- ----
@@ -32,15 +90,15 @@ dialog box, replacing the Credits section on the main About tab.
**Bugfixes** **Bugfixes**
* Fix an issue with one of the active icons for the project tree. The SVG paths were not properly * Fixed an issue with one of the active icons for the project tree. The SVG paths were not properly
joined. Issue #1297. PR #1299. joined. Issue #1297. PR #1299.
* Fix an issue where the new open project routine for 2.0 would not check that a project exists * Fixed 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 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. 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 * Fixed an issue with the convert folder to document or note functionality was no longer working.
context menu entries were actually just calling the function for converting a file. Issue #1305. The context menu entries were actually just calling the function for converting a file.
PR #1306. 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 * Fixed 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 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 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 into the project tree. The issue was caused by an invalid project file, and is not likely to
@@ -52,7 +110,7 @@ dialog box, replacing the Credits section on the main About tab.
* The CREDITS.md file has been updated, and its content is now also available in a "Credits" tab in * 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. the About dialog in the app. The old credits section of the "About" tab has been removed.
PR #1298. PR #1298.
* Fix a usability issue where double-clicking an entry in the Outline that belongs to a document * Fixed 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 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. 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 * Change how the editing of status and importance labels work in Project Settings. The form at the
@@ -83,7 +141,7 @@ highlighting preferences were changed. It also fixes an issue that broke the Fre
**Bugfixes** **Bugfixes**
* Fix an issue where changing the Highlighting Preferences for highlighting quotes, emphasis, and * Fixed an issue where changing the Highlighting Preferences for highlighting quotes, emphasis, and
multiple or trailing spaces would not reload the syntax highlighter in the editor. The changes multiple or trailing spaces would not reload the syntax highlighter in the editor. The changes
would only take effect after restarting the app. Issue #1274. PR #1278. would only take effect after restarting the app. Issue #1274. PR #1278.
@@ -105,7 +163,7 @@ updated to include the icon theme setting. The patch also updates the French tra
**Bugfixes** **Bugfixes**
* Fix an issue where starting the app with a custom GUI theme enabled would not load any icons at * Fixed an issue where starting the app with a custom GUI theme enabled would not load any icons at
all if the `icontheme` setting isn't specified. The app now loads the `typicons_light` theme by all if the `icontheme` setting isn't specified. The app now loads the `typicons_light` theme by
default if no icon theme is set. Issue #1263. PR #1264. default if no icon theme is set. Issue #1263. PR #1264.
@@ -194,7 +252,7 @@ icons. They are technically no longer tree views, but rather a Table of Contents
novel root folder. If you have multiple novel root folders, you can select which one to view. novel root folder. If you have multiple novel root folders, you can select which one to view.
In the Novel Tree View, you now also have the option to hide or show a third column of data. In the Novel Tree View, you now also have the option to hide or show a third column of data.
Currently, you can chose between "Point of View Character", "Focus Character" and "Novel Plot". If Currently, you can choose between "Point of View Character", "Focus Character" and "Novel Plot". If
you referenced more than one in the document, the column will only show the first entry, so make you referenced more than one in the document, the column will only show the first entry, so make
sure the most important one is listed first in your document if you use this feature. An arrow icon sure the most important one is listed first in your document if you use this feature. An arrow icon
is also visible at the end of each row in the tree, and if you click on it, a tool tip should pop is also visible at the end of each row in the tree, and if you click on it, a tool tip should pop
@@ -248,7 +306,7 @@ _These Release Notes also include the changes from 2.0 pre-releases._
**Code Improvements** **Code Improvements**
* Fix an issue with circular imports mainly triggered from the test suite. PR #1166. * Fixed an issue with circular imports mainly triggered from the test suite. PR #1166.
* Instead of assigning headers in a document a key by its line number, the headings are now * Instead of assigning headers in a document a key by its line number, the headings are now
assigned sequential keys. This makes it easier to detect actual meta data changes, which would assigned sequential keys. This makes it easier to detect actual meta data changes, which would
otherwise be triggered by a change of line number as well. PR #1241. otherwise be triggered by a change of line number as well. PR #1241.
@@ -386,7 +444,7 @@ Interface. PR #1146.
**Bugfixes** **Bugfixes**
* Fix a typo in the Lorem Ipsum tool and set a max width for the views bar. PR #1065. * Fixed a typo in the Lorem Ipsum tool and set a max width for the views bar. PR #1065.
* The language set in the Build Tool is now properly exported to Open Document files. Previously, * The language set in the Build Tool is now properly exported to Open Document files. Previously,
it would be set to English regardless of the user's selection. Issue #1073. PR #1077. it would be set to English regardless of the user's selection. Issue #1073. PR #1077.
* Since the text editor cursor extends to the right of its position in the window, it would * Since the text editor cursor extends to the right of its position in the window, it would
+1
View File
@@ -20,6 +20,7 @@ translators for the languages currently available:
* Dutch: Martijn van der Kleijn (@mvdkleijn) * Dutch: Martijn van der Kleijn (@mvdkleijn)
* French: Jan Lüdke (@jyhelle) * French: Jan Lüdke (@jyhelle)
* German: Myian (@heymyian) * German: Myian (@heymyian)
* Italian: Riccardo Mangili
* Latin American Spanish: Tommy Marplatt (@tmarplatt) * Latin American Spanish: Tommy Marplatt (@tmarplatt)
* Norwegian: Veronica Berglyd Olsen (@vkbo) * Norwegian: Veronica Berglyd Olsen (@vkbo)
* Portuguese: Bruno Meneguello (@bkmeneguello) * Portuguese: Bruno Meneguello (@bkmeneguello)
+87 -76
View File
@@ -4,72 +4,72 @@
<context> <context>
<name>Common</name> <name>Common</name>
<message> <message>
<location filename="../novelwriter/common.py" line="333" /> <location filename="../novelwriter/common.py" line="306" />
<source>in the future</source> <source>in the future</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="337" /> <location filename="../novelwriter/common.py" line="310" />
<source>just now</source> <source>just now</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="341" /> <location filename="../novelwriter/common.py" line="314" />
<source>a minute ago</source> <source>a minute ago</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="345" /> <location filename="../novelwriter/common.py" line="318" />
<source>{0} minutes ago</source> <source>{0} minutes ago</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="349" /> <location filename="../novelwriter/common.py" line="322" />
<source>an hour ago</source> <source>an hour ago</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="353" /> <location filename="../novelwriter/common.py" line="326" />
<source>{0} hours ago</source> <source>{0} hours ago</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="357" /> <location filename="../novelwriter/common.py" line="330" />
<source>a day ago</source> <source>a day ago</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="361" /> <location filename="../novelwriter/common.py" line="334" />
<source>{0} days ago</source> <source>{0} days ago</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="365" /> <location filename="../novelwriter/common.py" line="338" />
<source>a week ago</source> <source>a week ago</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="369" /> <location filename="../novelwriter/common.py" line="342" />
<source>{0} weeks ago</source> <source>{0} weeks ago</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="373" /> <location filename="../novelwriter/common.py" line="346" />
<source>a month ago</source> <source>a month ago</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="377" /> <location filename="../novelwriter/common.py" line="350" />
<source>{0} months ago</source> <source>{0} months ago</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="381" /> <location filename="../novelwriter/common.py" line="354" />
<source>a year ago</source> <source>a year ago</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="385" /> <location filename="../novelwriter/common.py" line="358" />
<source>{0} years ago</source> <source>{0} years ago</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
@@ -757,32 +757,32 @@
<context> <context>
<name>GuiDocEditFooter</name> <name>GuiDocEditFooter</name>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2924" /> <location filename="../novelwriter/gui/doceditor.py" line="2931" />
<source>Status</source> <source>Status</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="3073" /> <location filename="../novelwriter/gui/doceditor.py" line="3080" />
<source>Line: {0} ({1})</source> <source>Line: {0} ({1})</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="3102" /> <location filename="../novelwriter/gui/doceditor.py" line="3109" />
<source>Words: {0} ({1})</source> <source>Words: {0} ({1})</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="3107" /> <location filename="../novelwriter/gui/doceditor.py" line="3114" />
<source>Document size is {0} bytes</source> <source>Document size is {0} bytes</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="3119" /> <location filename="../novelwriter/gui/doceditor.py" line="3126" />
<source>Words: {0} selected</source> <source>Words: {0} selected</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="3122" /> <location filename="../novelwriter/gui/doceditor.py" line="3129" />
<source>Character count: {0}</source> <source>Character count: {0}</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
@@ -790,22 +790,22 @@
<context> <context>
<name>GuiDocEditHeader</name> <name>GuiDocEditHeader</name>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2694" /> <location filename="../novelwriter/gui/doceditor.py" line="2701" />
<source>Edit document label</source> <source>Edit document label</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2703" /> <location filename="../novelwriter/gui/doceditor.py" line="2710" />
<source>Search document</source> <source>Search document</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2712" /> <location filename="../novelwriter/gui/doceditor.py" line="2719" />
<source>Toggle Focus Mode</source> <source>Toggle Focus Mode</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2721" /> <location filename="../novelwriter/gui/doceditor.py" line="2728" />
<source>Close the document</source> <source>Close the document</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
@@ -813,58 +813,58 @@
<context> <context>
<name>GuiDocEditSearch</name> <name>GuiDocEditSearch</name>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2287" /> <location filename="../novelwriter/gui/doceditor.py" line="2294" />
<location filename="../novelwriter/gui/doceditor.py" line="2274" /> <location filename="../novelwriter/gui/doceditor.py" line="2281" />
<source>Search</source> <source>Search</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2279" /> <location filename="../novelwriter/gui/doceditor.py" line="2286" />
<source>Replace</source> <source>Replace</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2295" /> <location filename="../novelwriter/gui/doceditor.py" line="2302" />
<source>Case Sensitive</source> <source>Case Sensitive</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2301" /> <location filename="../novelwriter/gui/doceditor.py" line="2308" />
<source>Whole Words Only</source> <source>Whole Words Only</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2307" /> <location filename="../novelwriter/gui/doceditor.py" line="2314" />
<source>RegEx Mode</source> <source>RegEx Mode</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2313" /> <location filename="../novelwriter/gui/doceditor.py" line="2320" />
<source>Loop Search</source> <source>Loop Search</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2319" /> <location filename="../novelwriter/gui/doceditor.py" line="2326" />
<source>Search Next File</source> <source>Search Next File</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2327" /> <location filename="../novelwriter/gui/doceditor.py" line="2334" />
<source>Preserve Case</source> <source>Preserve Case</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2335" /> <location filename="../novelwriter/gui/doceditor.py" line="2342" />
<source>Close Search</source> <source>Close Search</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2351" /> <location filename="../novelwriter/gui/doceditor.py" line="2358" />
<source>Find in current document</source> <source>Find in current document</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2356" /> <location filename="../novelwriter/gui/doceditor.py" line="2363" />
<source>Find and replace in current document</source> <source>Find and replace in current document</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
@@ -2050,55 +2050,66 @@
<context> <context>
<name>GuiNovelToolBar</name> <name>GuiNovelToolBar</name>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="207" /> <location filename="../novelwriter/gui/noveltree.py" line="216" />
<source>Outline of {0}</source> <source>Outline of {0}</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="215" /> <location filename="../novelwriter/gui/noveltree.py" line="224" />
<source>Novel Root</source> <source>Novel Root</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="221" /> <location filename="../novelwriter/gui/noveltree.py" line="230" />
<source>Refresh</source> <source>Refresh</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="228" /> <location filename="../novelwriter/gui/noveltree.py" line="237" />
<source>Last Column</source> <source>Last Column</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="231" /> <location filename="../novelwriter/gui/noveltree.py" line="240" />
<source>Hidden</source> <source>Hidden</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="232" /> <location filename="../novelwriter/gui/noveltree.py" line="241" />
<source>Point of View Character</source> <source>Point of View Character</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="233" /> <location filename="../novelwriter/gui/noveltree.py" line="242" />
<source>Focus Character</source> <source>Focus Character</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="234" /> <location filename="../novelwriter/gui/noveltree.py" line="243" />
<source>Novel Plot</source> <source>Novel Plot</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="237" /> <location filename="../novelwriter/gui/noveltree.py" line="361" />
<location filename="../novelwriter/gui/noveltree.py" line="246" />
<source>Column Size</source>
<translation type="unfinished" />
</message>
<message>
<location filename="../novelwriter/gui/noveltree.py" line="250" />
<source>More Options</source> <source>More Options</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message>
<location filename="../novelwriter/gui/noveltree.py" line="361" />
<source>Maximum column size in %</source>
<translation type="unfinished" />
</message>
</context> </context>
<context> <context>
<name>GuiNovelTree</name> <name>GuiNovelTree</name>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="778" /> <location filename="../novelwriter/gui/noveltree.py" line="815" />
<source>No meta data</source> <source>No meta data</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
@@ -2884,72 +2895,72 @@
<context> <context>
<name>GuiProjectDetailsContents</name> <name>GuiProjectDetailsContents</name>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="295" /> <location filename="../novelwriter/dialogs/projdetails.py" line="297" />
<source>Table of Contents</source> <source>Table of Contents</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="314" /> <location filename="../novelwriter/dialogs/projdetails.py" line="316" />
<source>Title</source> <source>Title</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="315" /> <location filename="../novelwriter/dialogs/projdetails.py" line="317" />
<source>Words</source> <source>Words</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="316" /> <location filename="../novelwriter/dialogs/projdetails.py" line="318" />
<source>Pages</source> <source>Pages</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="317" /> <location filename="../novelwriter/dialogs/projdetails.py" line="319" />
<source>Page</source> <source>Page</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="318" /> <location filename="../novelwriter/dialogs/projdetails.py" line="320" />
<source>Progress</source> <source>Progress</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="353" /> <location filename="../novelwriter/dialogs/projdetails.py" line="355" />
<source>Typical word count for a 5 by 8 inch book page with 11 pt font is 350.</source> <source>Typical word count for a 5 by 8 inch book page with 11 pt font is 350.</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="356" /> <location filename="../novelwriter/dialogs/projdetails.py" line="358" />
<source>Start counting page numbers from this page.</source> <source>Start counting page numbers from this page.</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="359" /> <location filename="../novelwriter/dialogs/projdetails.py" line="361" />
<source>Assume a new chapter or partition always start on an odd numbered page.</source> <source>Assume a new chapter or partition always start on an odd numbered page.</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="362" /> <location filename="../novelwriter/dialogs/projdetails.py" line="364" />
<source>Words per page</source> <source>Words per page</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="373" /> <location filename="../novelwriter/dialogs/projdetails.py" line="375" />
<source>Count pages from</source> <source>Count pages from</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="384" /> <location filename="../novelwriter/dialogs/projdetails.py" line="386" />
<source>Clear double pages</source> <source>Clear double pages</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="447" /> <location filename="../novelwriter/dialogs/projdetails.py" line="449" />
<source>END</source> <source>END</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="501" /> <location filename="../novelwriter/dialogs/projdetails.py" line="503" />
<source>Untitled</source> <source>Untitled</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
@@ -2957,45 +2968,45 @@
<context> <context>
<name>GuiProjectDetailsMain</name> <name>GuiProjectDetailsMain</name>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="168" /> <location filename="../novelwriter/dialogs/projdetails.py" line="185" />
<source>Working Title: {0}</source>
<translation type="unfinished" />
</message>
<message>
<location filename="../novelwriter/dialogs/projdetails.py" line="177" />
<source>By {0}</source>
<translation type="unfinished" />
</message>
<message>
<location filename="../novelwriter/dialogs/projdetails.py" line="187" />
<source>Words</source> <source>Words</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="190" /> <location filename="../novelwriter/dialogs/projdetails.py" line="188" />
<source>Chapters</source> <source>Chapters</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="193" /> <location filename="../novelwriter/dialogs/projdetails.py" line="191" />
<source>Scenes</source> <source>Scenes</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="196" /> <location filename="../novelwriter/dialogs/projdetails.py" line="194" />
<source>Revisions</source> <source>Revisions</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="199" /> <location filename="../novelwriter/dialogs/projdetails.py" line="197" />
<source>Editing Time</source> <source>Editing Time</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="219" /> <location filename="../novelwriter/dialogs/projdetails.py" line="217" />
<source>Path</source> <source>Path</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message>
<location filename="../novelwriter/dialogs/projdetails.py" line="253" />
<source>Project: {0}</source>
<translation type="unfinished" />
</message>
<message>
<location filename="../novelwriter/dialogs/projdetails.py" line="254" />
<source>By {0}</source>
<translation type="unfinished" />
</message>
</context> </context>
<context> <context>
<name>GuiProjectEditMain</name> <name>GuiProjectEditMain</name>
+87 -76
View File
@@ -4,72 +4,72 @@
<context> <context>
<name>Common</name> <name>Common</name>
<message> <message>
<location filename="../novelwriter/common.py" line="333" /> <location filename="../novelwriter/common.py" line="306" />
<source>in the future</source> <source>in the future</source>
<translation>in der Zukunft</translation> <translation>in der Zukunft</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="337" /> <location filename="../novelwriter/common.py" line="310" />
<source>just now</source> <source>just now</source>
<translation>gerade eben</translation> <translation>gerade eben</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="341" /> <location filename="../novelwriter/common.py" line="314" />
<source>a minute ago</source> <source>a minute ago</source>
<translation>vor einer Minute</translation> <translation>vor einer Minute</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="345" /> <location filename="../novelwriter/common.py" line="318" />
<source>{0} minutes ago</source> <source>{0} minutes ago</source>
<translation>{0} Minuten her</translation> <translation>{0} Minuten her</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="349" /> <location filename="../novelwriter/common.py" line="322" />
<source>an hour ago</source> <source>an hour ago</source>
<translation>eine Stunde her</translation> <translation>eine Stunde her</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="353" /> <location filename="../novelwriter/common.py" line="326" />
<source>{0} hours ago</source> <source>{0} hours ago</source>
<translation>{0} Stunden her</translation> <translation>{0} Stunden her</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="357" /> <location filename="../novelwriter/common.py" line="330" />
<source>a day ago</source> <source>a day ago</source>
<translation>einen Tag her</translation> <translation>einen Tag her</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="361" /> <location filename="../novelwriter/common.py" line="334" />
<source>{0} days ago</source> <source>{0} days ago</source>
<translation>{0} Tage her</translation> <translation>{0} Tage her</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="365" /> <location filename="../novelwriter/common.py" line="338" />
<source>a week ago</source> <source>a week ago</source>
<translation>eine Woche her</translation> <translation>eine Woche her</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="369" /> <location filename="../novelwriter/common.py" line="342" />
<source>{0} weeks ago</source> <source>{0} weeks ago</source>
<translation>{0} Wochen her</translation> <translation>{0} Wochen her</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="373" /> <location filename="../novelwriter/common.py" line="346" />
<source>a month ago</source> <source>a month ago</source>
<translation>einen Monat her</translation> <translation>einen Monat her</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="377" /> <location filename="../novelwriter/common.py" line="350" />
<source>{0} months ago</source> <source>{0} months ago</source>
<translation>{0} Monate her</translation> <translation>{0} Monate her</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="381" /> <location filename="../novelwriter/common.py" line="354" />
<source>a year ago</source> <source>a year ago</source>
<translation>ein Jahr her</translation> <translation>ein Jahr her</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="385" /> <location filename="../novelwriter/common.py" line="358" />
<source>{0} years ago</source> <source>{0} years ago</source>
<translation>{0} Jahre her</translation> <translation>{0} Jahre her</translation>
</message> </message>
@@ -757,32 +757,32 @@
<context> <context>
<name>GuiDocEditFooter</name> <name>GuiDocEditFooter</name>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2924" /> <location filename="../novelwriter/gui/doceditor.py" line="2931" />
<source>Status</source> <source>Status</source>
<translation>Status</translation> <translation>Status</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="3073" /> <location filename="../novelwriter/gui/doceditor.py" line="3080" />
<source>Line: {0} ({1})</source> <source>Line: {0} ({1})</source>
<translation>Zeile: {0} ({1})</translation> <translation>Zeile: {0} ({1})</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="3102" /> <location filename="../novelwriter/gui/doceditor.py" line="3109" />
<source>Words: {0} ({1})</source> <source>Words: {0} ({1})</source>
<translation>Wörter: {0} ({1})</translation> <translation>Wörter: {0} ({1})</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="3107" /> <location filename="../novelwriter/gui/doceditor.py" line="3114" />
<source>Document size is {0} bytes</source> <source>Document size is {0} bytes</source>
<translation>Dateigröße: {0} bytes</translation> <translation>Dateigröße: {0} bytes</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="3119" /> <location filename="../novelwriter/gui/doceditor.py" line="3126" />
<source>Words: {0} selected</source> <source>Words: {0} selected</source>
<translation>Wörter: {0} markiert</translation> <translation>Wörter: {0} markiert</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="3122" /> <location filename="../novelwriter/gui/doceditor.py" line="3129" />
<source>Character count: {0}</source> <source>Character count: {0}</source>
<translation>Zeichenanzahl: {0}</translation> <translation>Zeichenanzahl: {0}</translation>
</message> </message>
@@ -790,22 +790,22 @@
<context> <context>
<name>GuiDocEditHeader</name> <name>GuiDocEditHeader</name>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2694" /> <location filename="../novelwriter/gui/doceditor.py" line="2701" />
<source>Edit document label</source> <source>Edit document label</source>
<translation>Name des Dokuments ändern</translation> <translation>Name des Dokuments ändern</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2703" /> <location filename="../novelwriter/gui/doceditor.py" line="2710" />
<source>Search document</source> <source>Search document</source>
<translation>Dokument durchsuchen</translation> <translation>Dokument durchsuchen</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2712" /> <location filename="../novelwriter/gui/doceditor.py" line="2719" />
<source>Toggle Focus Mode</source> <source>Toggle Focus Mode</source>
<translation>Ablenkungsfrei ein/aus</translation> <translation>Ablenkungsfrei ein/aus</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2721" /> <location filename="../novelwriter/gui/doceditor.py" line="2728" />
<source>Close the document</source> <source>Close the document</source>
<translation>Dokument schließen</translation> <translation>Dokument schließen</translation>
</message> </message>
@@ -813,58 +813,58 @@
<context> <context>
<name>GuiDocEditSearch</name> <name>GuiDocEditSearch</name>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2287" /> <location filename="../novelwriter/gui/doceditor.py" line="2294" />
<location filename="../novelwriter/gui/doceditor.py" line="2274" /> <location filename="../novelwriter/gui/doceditor.py" line="2281" />
<source>Search</source> <source>Search</source>
<translation>Suchen</translation> <translation>Suchen</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2279" /> <location filename="../novelwriter/gui/doceditor.py" line="2286" />
<source>Replace</source> <source>Replace</source>
<translation>Ersetzen</translation> <translation>Ersetzen</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2295" /> <location filename="../novelwriter/gui/doceditor.py" line="2302" />
<source>Case Sensitive</source> <source>Case Sensitive</source>
<translation>Groß-/Kleinschreibung beachten</translation> <translation>Groß-/Kleinschreibung beachten</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2301" /> <location filename="../novelwriter/gui/doceditor.py" line="2308" />
<source>Whole Words Only</source> <source>Whole Words Only</source>
<translation>Nur ganze Wörter</translation> <translation>Nur ganze Wörter</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2307" /> <location filename="../novelwriter/gui/doceditor.py" line="2314" />
<source>RegEx Mode</source> <source>RegEx Mode</source>
<translation>RegEx-Modus</translation> <translation>RegEx-Modus</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2313" /> <location filename="../novelwriter/gui/doceditor.py" line="2320" />
<source>Loop Search</source> <source>Loop Search</source>
<translation>Suche am Anfang fortsetzen</translation> <translation>Suche am Anfang fortsetzen</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2319" /> <location filename="../novelwriter/gui/doceditor.py" line="2326" />
<source>Search Next File</source> <source>Search Next File</source>
<translation>Nächstes Dokument durchsuchen</translation> <translation>Nächstes Dokument durchsuchen</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2327" /> <location filename="../novelwriter/gui/doceditor.py" line="2334" />
<source>Preserve Case</source> <source>Preserve Case</source>
<translation>Groß-/Kleinschreibung beibehalten</translation> <translation>Groß-/Kleinschreibung beibehalten</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2335" /> <location filename="../novelwriter/gui/doceditor.py" line="2342" />
<source>Close Search</source> <source>Close Search</source>
<translation>Suche schließen</translation> <translation>Suche schließen</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2351" /> <location filename="../novelwriter/gui/doceditor.py" line="2358" />
<source>Find in current document</source> <source>Find in current document</source>
<translation>Im geöffneten Dokument suchen</translation> <translation>Im geöffneten Dokument suchen</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2356" /> <location filename="../novelwriter/gui/doceditor.py" line="2363" />
<source>Find and replace in current document</source> <source>Find and replace in current document</source>
<translation>Im geöffneten Dokument suchen und ersetzen</translation> <translation>Im geöffneten Dokument suchen und ersetzen</translation>
</message> </message>
@@ -2050,55 +2050,66 @@
<context> <context>
<name>GuiNovelToolBar</name> <name>GuiNovelToolBar</name>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="207" /> <location filename="../novelwriter/gui/noveltree.py" line="216" />
<source>Outline of {0}</source> <source>Outline of {0}</source>
<translation>Gliederung für {0}</translation> <translation>Gliederung für {0}</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="215" /> <location filename="../novelwriter/gui/noveltree.py" line="224" />
<source>Novel Root</source> <source>Novel Root</source>
<translation>Hauptordner für den Roman</translation> <translation>Hauptordner für den Roman</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="221" /> <location filename="../novelwriter/gui/noveltree.py" line="230" />
<source>Refresh</source> <source>Refresh</source>
<translation>Aktualisieren</translation> <translation>Aktualisieren</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="228" /> <location filename="../novelwriter/gui/noveltree.py" line="237" />
<source>Last Column</source> <source>Last Column</source>
<translation>Letzte Spalte</translation> <translation>Letzte Spalte</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="231" /> <location filename="../novelwriter/gui/noveltree.py" line="240" />
<source>Hidden</source> <source>Hidden</source>
<translation>Ausblenden</translation> <translation>Ausblenden</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="232" /> <location filename="../novelwriter/gui/noveltree.py" line="241" />
<source>Point of View Character</source> <source>Point of View Character</source>
<translation>Erzählperspektive</translation> <translation>Erzählperspektive</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="233" /> <location filename="../novelwriter/gui/noveltree.py" line="242" />
<source>Focus Character</source> <source>Focus Character</source>
<translation>Figur im Mittelpunkt</translation> <translation>Figur im Mittelpunkt</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="234" /> <location filename="../novelwriter/gui/noveltree.py" line="243" />
<source>Novel Plot</source> <source>Novel Plot</source>
<translation>Romanhandlung</translation> <translation>Romanhandlung</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="237" /> <location filename="../novelwriter/gui/noveltree.py" line="361" />
<location filename="../novelwriter/gui/noveltree.py" line="246" />
<source>Column Size</source>
<translation>Spaltenbreite</translation>
</message>
<message>
<location filename="../novelwriter/gui/noveltree.py" line="250" />
<source>More Options</source> <source>More Options</source>
<translation>Weitere Optionen</translation> <translation>Weitere Optionen</translation>
</message> </message>
<message>
<location filename="../novelwriter/gui/noveltree.py" line="361" />
<source>Maximum column size in %</source>
<translation>Maximale Spaltenbreite in %</translation>
</message>
</context> </context>
<context> <context>
<name>GuiNovelTree</name> <name>GuiNovelTree</name>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="778" /> <location filename="../novelwriter/gui/noveltree.py" line="815" />
<source>No meta data</source> <source>No meta data</source>
<translation>Keine Meta-Daten</translation> <translation>Keine Meta-Daten</translation>
</message> </message>
@@ -2884,72 +2895,72 @@
<context> <context>
<name>GuiProjectDetailsContents</name> <name>GuiProjectDetailsContents</name>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="295" /> <location filename="../novelwriter/dialogs/projdetails.py" line="297" />
<source>Table of Contents</source> <source>Table of Contents</source>
<translation>Inhaltsverzeichnis</translation> <translation>Inhaltsverzeichnis</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="314" /> <location filename="../novelwriter/dialogs/projdetails.py" line="316" />
<source>Title</source> <source>Title</source>
<translation>Name</translation> <translation>Name</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="315" /> <location filename="../novelwriter/dialogs/projdetails.py" line="317" />
<source>Words</source> <source>Words</source>
<translation>Wörter</translation> <translation>Wörter</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="316" /> <location filename="../novelwriter/dialogs/projdetails.py" line="318" />
<source>Pages</source> <source>Pages</source>
<translation>Seiten</translation> <translation>Seiten</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="317" /> <location filename="../novelwriter/dialogs/projdetails.py" line="319" />
<source>Page</source> <source>Page</source>
<translation>Seite</translation> <translation>Seite</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="318" /> <location filename="../novelwriter/dialogs/projdetails.py" line="320" />
<source>Progress</source> <source>Progress</source>
<translation>Fortschritt</translation> <translation>Fortschritt</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="353" /> <location filename="../novelwriter/dialogs/projdetails.py" line="355" />
<source>Typical word count for a 5 by 8 inch book page with 11 pt font is 350.</source> <source>Typical word count for a 5 by 8 inch book page with 11 pt font is 350.</source>
<translation>Üblicherweise sind ca. 350 Wörter auf einer Buchseite (5 x 8 Zoll, 11 pt).</translation> <translation>Üblicherweise sind ca. 350 Wörter auf einer Buchseite (5 x 8 Zoll, 11 pt).</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="356" /> <location filename="../novelwriter/dialogs/projdetails.py" line="358" />
<source>Start counting page numbers from this page.</source> <source>Start counting page numbers from this page.</source>
<translation>Ab dieser Seite mit arabischen Ziffern beginnen zu zählen.</translation> <translation>Ab dieser Seite mit arabischen Ziffern beginnen zu zählen.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="359" /> <location filename="../novelwriter/dialogs/projdetails.py" line="361" />
<source>Assume a new chapter or partition always start on an odd numbered page.</source> <source>Assume a new chapter or partition always start on an odd numbered page.</source>
<translation>Angenommen ein neues Kapitel oder neuer Teil beginnt immer auf einer ungeraden Seite.</translation> <translation>Angenommen ein neues Kapitel oder neuer Teil beginnt immer auf einer ungeraden Seite.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="362" /> <location filename="../novelwriter/dialogs/projdetails.py" line="364" />
<source>Words per page</source> <source>Words per page</source>
<translation>Wörter pro Seite</translation> <translation>Wörter pro Seite</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="373" /> <location filename="../novelwriter/dialogs/projdetails.py" line="375" />
<source>Count pages from</source> <source>Count pages from</source>
<translation>Seiten zählen ab</translation> <translation>Seiten zählen ab</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="384" /> <location filename="../novelwriter/dialogs/projdetails.py" line="386" />
<source>Clear double pages</source> <source>Clear double pages</source>
<translation>Leere linke Seiten auslassen</translation> <translation>Leere linke Seiten auslassen</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="447" /> <location filename="../novelwriter/dialogs/projdetails.py" line="449" />
<source>END</source> <source>END</source>
<translation>ENDE</translation> <translation>ENDE</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="501" /> <location filename="../novelwriter/dialogs/projdetails.py" line="503" />
<source>Untitled</source> <source>Untitled</source>
<translation>Ohne Titel</translation> <translation>Ohne Titel</translation>
</message> </message>
@@ -2957,45 +2968,45 @@
<context> <context>
<name>GuiProjectDetailsMain</name> <name>GuiProjectDetailsMain</name>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="168" /> <location filename="../novelwriter/dialogs/projdetails.py" line="185" />
<source>Working Title: {0}</source>
<translation>Arbeitstitel: {0}</translation>
</message>
<message>
<location filename="../novelwriter/dialogs/projdetails.py" line="177" />
<source>By {0}</source>
<translation>Von {0}</translation>
</message>
<message>
<location filename="../novelwriter/dialogs/projdetails.py" line="187" />
<source>Words</source> <source>Words</source>
<translation>Wörter</translation> <translation>Wörter</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="190" /> <location filename="../novelwriter/dialogs/projdetails.py" line="188" />
<source>Chapters</source> <source>Chapters</source>
<translation>Kapitel</translation> <translation>Kapitel</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="193" /> <location filename="../novelwriter/dialogs/projdetails.py" line="191" />
<source>Scenes</source> <source>Scenes</source>
<translation>Szenen</translation> <translation>Szenen</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="196" /> <location filename="../novelwriter/dialogs/projdetails.py" line="194" />
<source>Revisions</source> <source>Revisions</source>
<translation>Revisionen</translation> <translation>Revisionen</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="199" /> <location filename="../novelwriter/dialogs/projdetails.py" line="197" />
<source>Editing Time</source> <source>Editing Time</source>
<translation>Bearbeitungszeit</translation> <translation>Bearbeitungszeit</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="219" /> <location filename="../novelwriter/dialogs/projdetails.py" line="217" />
<source>Path</source> <source>Path</source>
<translation>Pfad</translation> <translation>Pfad</translation>
</message> </message>
<message>
<location filename="../novelwriter/dialogs/projdetails.py" line="253" />
<source>Project: {0}</source>
<translation>Projekt: {0}</translation>
</message>
<message>
<location filename="../novelwriter/dialogs/projdetails.py" line="254" />
<source>By {0}</source>
<translation>Von {0}</translation>
</message>
</context> </context>
<context> <context>
<name>GuiProjectEditMain</name> <name>GuiProjectEditMain</name>
+87 -76
View File
@@ -4,72 +4,72 @@
<context> <context>
<name>Common</name> <name>Common</name>
<message> <message>
<location filename="../novelwriter/common.py" line="333" /> <location filename="../novelwriter/common.py" line="306" />
<source>in the future</source> <source>in the future</source>
<translation>in the future</translation> <translation>in the future</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="337" /> <location filename="../novelwriter/common.py" line="310" />
<source>just now</source> <source>just now</source>
<translation>just now</translation> <translation>just now</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="341" /> <location filename="../novelwriter/common.py" line="314" />
<source>a minute ago</source> <source>a minute ago</source>
<translation>a minute ago</translation> <translation>a minute ago</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="345" /> <location filename="../novelwriter/common.py" line="318" />
<source>{0} minutes ago</source> <source>{0} minutes ago</source>
<translation>{0} minutes ago</translation> <translation>{0} minutes ago</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="349" /> <location filename="../novelwriter/common.py" line="322" />
<source>an hour ago</source> <source>an hour ago</source>
<translation>an hour ago</translation> <translation>an hour ago</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="353" /> <location filename="../novelwriter/common.py" line="326" />
<source>{0} hours ago</source> <source>{0} hours ago</source>
<translation>{0} hours ago</translation> <translation>{0} hours ago</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="357" /> <location filename="../novelwriter/common.py" line="330" />
<source>a day ago</source> <source>a day ago</source>
<translation>a day ago</translation> <translation>a day ago</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="361" /> <location filename="../novelwriter/common.py" line="334" />
<source>{0} days ago</source> <source>{0} days ago</source>
<translation>{0} days ago</translation> <translation>{0} days ago</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="365" /> <location filename="../novelwriter/common.py" line="338" />
<source>a week ago</source> <source>a week ago</source>
<translation>a week ago</translation> <translation>a week ago</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="369" /> <location filename="../novelwriter/common.py" line="342" />
<source>{0} weeks ago</source> <source>{0} weeks ago</source>
<translation>{0} weeks ago</translation> <translation>{0} weeks ago</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="373" /> <location filename="../novelwriter/common.py" line="346" />
<source>a month ago</source> <source>a month ago</source>
<translation>a month ago</translation> <translation>a month ago</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="377" /> <location filename="../novelwriter/common.py" line="350" />
<source>{0} months ago</source> <source>{0} months ago</source>
<translation>{0} months ago</translation> <translation>{0} months ago</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="381" /> <location filename="../novelwriter/common.py" line="354" />
<source>a year ago</source> <source>a year ago</source>
<translation>a year ago</translation> <translation>a year ago</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="385" /> <location filename="../novelwriter/common.py" line="358" />
<source>{0} years ago</source> <source>{0} years ago</source>
<translation>{0} years ago</translation> <translation>{0} years ago</translation>
</message> </message>
@@ -757,32 +757,32 @@
<context> <context>
<name>GuiDocEditFooter</name> <name>GuiDocEditFooter</name>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2924" /> <location filename="../novelwriter/gui/doceditor.py" line="2931" />
<source>Status</source> <source>Status</source>
<translation>Status</translation> <translation>Status</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="3073" /> <location filename="../novelwriter/gui/doceditor.py" line="3080" />
<source>Line: {0} ({1})</source> <source>Line: {0} ({1})</source>
<translation>Line: {0} ({1})</translation> <translation>Line: {0} ({1})</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="3102" /> <location filename="../novelwriter/gui/doceditor.py" line="3109" />
<source>Words: {0} ({1})</source> <source>Words: {0} ({1})</source>
<translation>Words: {0} ({1})</translation> <translation>Words: {0} ({1})</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="3107" /> <location filename="../novelwriter/gui/doceditor.py" line="3114" />
<source>Document size is {0} bytes</source> <source>Document size is {0} bytes</source>
<translation>Document size is {0} bytes</translation> <translation>Document size is {0} bytes</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="3119" /> <location filename="../novelwriter/gui/doceditor.py" line="3126" />
<source>Words: {0} selected</source> <source>Words: {0} selected</source>
<translation>Words: {0} selected</translation> <translation>Words: {0} selected</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="3122" /> <location filename="../novelwriter/gui/doceditor.py" line="3129" />
<source>Character count: {0}</source> <source>Character count: {0}</source>
<translation>Character count: {0}</translation> <translation>Character count: {0}</translation>
</message> </message>
@@ -790,22 +790,22 @@
<context> <context>
<name>GuiDocEditHeader</name> <name>GuiDocEditHeader</name>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2694" /> <location filename="../novelwriter/gui/doceditor.py" line="2701" />
<source>Edit document label</source> <source>Edit document label</source>
<translation>Edit document label</translation> <translation>Edit document label</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2703" /> <location filename="../novelwriter/gui/doceditor.py" line="2710" />
<source>Search document</source> <source>Search document</source>
<translation>Search document</translation> <translation>Search document</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2712" /> <location filename="../novelwriter/gui/doceditor.py" line="2719" />
<source>Toggle Focus Mode</source> <source>Toggle Focus Mode</source>
<translation>Toggle Focus Mode</translation> <translation>Toggle Focus Mode</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2721" /> <location filename="../novelwriter/gui/doceditor.py" line="2728" />
<source>Close the document</source> <source>Close the document</source>
<translation>Close the document</translation> <translation>Close the document</translation>
</message> </message>
@@ -813,58 +813,58 @@
<context> <context>
<name>GuiDocEditSearch</name> <name>GuiDocEditSearch</name>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2287" /> <location filename="../novelwriter/gui/doceditor.py" line="2294" />
<location filename="../novelwriter/gui/doceditor.py" line="2274" /> <location filename="../novelwriter/gui/doceditor.py" line="2281" />
<source>Search</source> <source>Search</source>
<translation>Search</translation> <translation>Search</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2279" /> <location filename="../novelwriter/gui/doceditor.py" line="2286" />
<source>Replace</source> <source>Replace</source>
<translation>Replace</translation> <translation>Replace</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2295" /> <location filename="../novelwriter/gui/doceditor.py" line="2302" />
<source>Case Sensitive</source> <source>Case Sensitive</source>
<translation>Case Sensitive</translation> <translation>Case Sensitive</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2301" /> <location filename="../novelwriter/gui/doceditor.py" line="2308" />
<source>Whole Words Only</source> <source>Whole Words Only</source>
<translation>Whole Words Only</translation> <translation>Whole Words Only</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2307" /> <location filename="../novelwriter/gui/doceditor.py" line="2314" />
<source>RegEx Mode</source> <source>RegEx Mode</source>
<translation>RegEx Mode</translation> <translation>RegEx Mode</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2313" /> <location filename="../novelwriter/gui/doceditor.py" line="2320" />
<source>Loop Search</source> <source>Loop Search</source>
<translation>Loop Search</translation> <translation>Loop Search</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2319" /> <location filename="../novelwriter/gui/doceditor.py" line="2326" />
<source>Search Next File</source> <source>Search Next File</source>
<translation>Search Next File</translation> <translation>Search Next File</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2327" /> <location filename="../novelwriter/gui/doceditor.py" line="2334" />
<source>Preserve Case</source> <source>Preserve Case</source>
<translation>Preserve Case</translation> <translation>Preserve Case</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2335" /> <location filename="../novelwriter/gui/doceditor.py" line="2342" />
<source>Close Search</source> <source>Close Search</source>
<translation>Close Search</translation> <translation>Close Search</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2351" /> <location filename="../novelwriter/gui/doceditor.py" line="2358" />
<source>Find in current document</source> <source>Find in current document</source>
<translation>Find in current document</translation> <translation>Find in current document</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2356" /> <location filename="../novelwriter/gui/doceditor.py" line="2363" />
<source>Find and replace in current document</source> <source>Find and replace in current document</source>
<translation>Find and replace in current document</translation> <translation>Find and replace in current document</translation>
</message> </message>
@@ -2050,55 +2050,66 @@
<context> <context>
<name>GuiNovelToolBar</name> <name>GuiNovelToolBar</name>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="207" /> <location filename="../novelwriter/gui/noveltree.py" line="216" />
<source>Outline of {0}</source> <source>Outline of {0}</source>
<translation>Outline of {0}</translation> <translation>Outline of {0}</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="215" /> <location filename="../novelwriter/gui/noveltree.py" line="224" />
<source>Novel Root</source> <source>Novel Root</source>
<translation>Novel Root</translation> <translation>Novel Root</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="221" /> <location filename="../novelwriter/gui/noveltree.py" line="230" />
<source>Refresh</source> <source>Refresh</source>
<translation>Refresh</translation> <translation>Refresh</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="228" /> <location filename="../novelwriter/gui/noveltree.py" line="237" />
<source>Last Column</source> <source>Last Column</source>
<translation>Last Column</translation> <translation>Last Column</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="231" /> <location filename="../novelwriter/gui/noveltree.py" line="240" />
<source>Hidden</source> <source>Hidden</source>
<translation>Hidden</translation> <translation>Hidden</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="232" /> <location filename="../novelwriter/gui/noveltree.py" line="241" />
<source>Point of View Character</source> <source>Point of View Character</source>
<translation>Point of View Character</translation> <translation>Point of View Character</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="233" /> <location filename="../novelwriter/gui/noveltree.py" line="242" />
<source>Focus Character</source> <source>Focus Character</source>
<translation>Focus Character</translation> <translation>Focus Character</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="234" /> <location filename="../novelwriter/gui/noveltree.py" line="243" />
<source>Novel Plot</source> <source>Novel Plot</source>
<translation>Novel Plot</translation> <translation>Novel Plot</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="237" /> <location filename="../novelwriter/gui/noveltree.py" line="361" />
<location filename="../novelwriter/gui/noveltree.py" line="246" />
<source>Column Size</source>
<translation>Column Size</translation>
</message>
<message>
<location filename="../novelwriter/gui/noveltree.py" line="250" />
<source>More Options</source> <source>More Options</source>
<translation>More Options</translation> <translation>More Options</translation>
</message> </message>
<message>
<location filename="../novelwriter/gui/noveltree.py" line="361" />
<source>Maximum column size in %</source>
<translation>Maximum column size in %</translation>
</message>
</context> </context>
<context> <context>
<name>GuiNovelTree</name> <name>GuiNovelTree</name>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="778" /> <location filename="../novelwriter/gui/noveltree.py" line="815" />
<source>No meta data</source> <source>No meta data</source>
<translation>No meta data</translation> <translation>No meta data</translation>
</message> </message>
@@ -2884,72 +2895,72 @@
<context> <context>
<name>GuiProjectDetailsContents</name> <name>GuiProjectDetailsContents</name>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="295" /> <location filename="../novelwriter/dialogs/projdetails.py" line="297" />
<source>Table of Contents</source> <source>Table of Contents</source>
<translation>Table of Contents</translation> <translation>Table of Contents</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="314" /> <location filename="../novelwriter/dialogs/projdetails.py" line="316" />
<source>Title</source> <source>Title</source>
<translation>Title</translation> <translation>Title</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="315" /> <location filename="../novelwriter/dialogs/projdetails.py" line="317" />
<source>Words</source> <source>Words</source>
<translation>Words</translation> <translation>Words</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="316" /> <location filename="../novelwriter/dialogs/projdetails.py" line="318" />
<source>Pages</source> <source>Pages</source>
<translation>Pages</translation> <translation>Pages</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="317" /> <location filename="../novelwriter/dialogs/projdetails.py" line="319" />
<source>Page</source> <source>Page</source>
<translation>Page</translation> <translation>Page</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="318" /> <location filename="../novelwriter/dialogs/projdetails.py" line="320" />
<source>Progress</source> <source>Progress</source>
<translation>Progress</translation> <translation>Progress</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="353" /> <location filename="../novelwriter/dialogs/projdetails.py" line="355" />
<source>Typical word count for a 5 by 8 inch book page with 11 pt font is 350.</source> <source>Typical word count for a 5 by 8 inch book page with 11 pt font is 350.</source>
<translation>Typical word count for a 5 by 8 inch book page with 11 pt font is 350.</translation> <translation>Typical word count for a 5 by 8 inch book page with 11 pt font is 350.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="356" /> <location filename="../novelwriter/dialogs/projdetails.py" line="358" />
<source>Start counting page numbers from this page.</source> <source>Start counting page numbers from this page.</source>
<translation>Start counting page numbers from this page.</translation> <translation>Start counting page numbers from this page.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="359" /> <location filename="../novelwriter/dialogs/projdetails.py" line="361" />
<source>Assume a new chapter or partition always start on an odd numbered page.</source> <source>Assume a new chapter or partition always start on an odd numbered page.</source>
<translation>Assume a new chapter or partition always start on an odd numbered page.</translation> <translation>Assume a new chapter or partition always start on an odd numbered page.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="362" /> <location filename="../novelwriter/dialogs/projdetails.py" line="364" />
<source>Words per page</source> <source>Words per page</source>
<translation>Words per page</translation> <translation>Words per page</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="373" /> <location filename="../novelwriter/dialogs/projdetails.py" line="375" />
<source>Count pages from</source> <source>Count pages from</source>
<translation>Count pages from</translation> <translation>Count pages from</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="384" /> <location filename="../novelwriter/dialogs/projdetails.py" line="386" />
<source>Clear double pages</source> <source>Clear double pages</source>
<translation>Clear double pages</translation> <translation>Clear double pages</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="447" /> <location filename="../novelwriter/dialogs/projdetails.py" line="449" />
<source>END</source> <source>END</source>
<translation>END</translation> <translation>END</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="501" /> <location filename="../novelwriter/dialogs/projdetails.py" line="503" />
<source>Untitled</source> <source>Untitled</source>
<translation>Untitled</translation> <translation>Untitled</translation>
</message> </message>
@@ -2957,45 +2968,45 @@
<context> <context>
<name>GuiProjectDetailsMain</name> <name>GuiProjectDetailsMain</name>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="168" /> <location filename="../novelwriter/dialogs/projdetails.py" line="185" />
<source>Working Title: {0}</source>
<translation>Working Title: {0}</translation>
</message>
<message>
<location filename="../novelwriter/dialogs/projdetails.py" line="177" />
<source>By {0}</source>
<translation>By {0}</translation>
</message>
<message>
<location filename="../novelwriter/dialogs/projdetails.py" line="187" />
<source>Words</source> <source>Words</source>
<translation>Words</translation> <translation>Words</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="190" /> <location filename="../novelwriter/dialogs/projdetails.py" line="188" />
<source>Chapters</source> <source>Chapters</source>
<translation>Chapters</translation> <translation>Chapters</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="193" /> <location filename="../novelwriter/dialogs/projdetails.py" line="191" />
<source>Scenes</source> <source>Scenes</source>
<translation>Scenes</translation> <translation>Scenes</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="196" /> <location filename="../novelwriter/dialogs/projdetails.py" line="194" />
<source>Revisions</source> <source>Revisions</source>
<translation>Revisions</translation> <translation>Revisions</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="199" /> <location filename="../novelwriter/dialogs/projdetails.py" line="197" />
<source>Editing Time</source> <source>Editing Time</source>
<translation>Editing Time</translation> <translation>Editing Time</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="219" /> <location filename="../novelwriter/dialogs/projdetails.py" line="217" />
<source>Path</source> <source>Path</source>
<translation>Path</translation> <translation>Path</translation>
</message> </message>
<message>
<location filename="../novelwriter/dialogs/projdetails.py" line="253" />
<source>Project: {0}</source>
<translation>Project: {0}</translation>
</message>
<message>
<location filename="../novelwriter/dialogs/projdetails.py" line="254" />
<source>By {0}</source>
<translation>By {0}</translation>
</message>
</context> </context>
<context> <context>
<name>GuiProjectEditMain</name> <name>GuiProjectEditMain</name>
+87 -76
View File
@@ -4,72 +4,72 @@
<context> <context>
<name>Common</name> <name>Common</name>
<message> <message>
<location filename="../novelwriter/common.py" line="333" /> <location filename="../novelwriter/common.py" line="306" />
<source>in the future</source> <source>in the future</source>
<translation>en el futuro</translation> <translation>en el futuro</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="337" /> <location filename="../novelwriter/common.py" line="310" />
<source>just now</source> <source>just now</source>
<translation>ahora mismo</translation> <translation>ahora mismo</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="341" /> <location filename="../novelwriter/common.py" line="314" />
<source>a minute ago</source> <source>a minute ago</source>
<translation>hace un minuto</translation> <translation>hace un minuto</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="345" /> <location filename="../novelwriter/common.py" line="318" />
<source>{0} minutes ago</source> <source>{0} minutes ago</source>
<translation>hace {0} minutos</translation> <translation>hace {0} minutos</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="349" /> <location filename="../novelwriter/common.py" line="322" />
<source>an hour ago</source> <source>an hour ago</source>
<translation>hace una hora</translation> <translation>hace una hora</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="353" /> <location filename="../novelwriter/common.py" line="326" />
<source>{0} hours ago</source> <source>{0} hours ago</source>
<translation>hace {0} horas</translation> <translation>hace {0} horas</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="357" /> <location filename="../novelwriter/common.py" line="330" />
<source>a day ago</source> <source>a day ago</source>
<translation>hace un día</translation> <translation>hace un día</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="361" /> <location filename="../novelwriter/common.py" line="334" />
<source>{0} days ago</source> <source>{0} days ago</source>
<translation>hace {0} días</translation> <translation>hace {0} días</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="365" /> <location filename="../novelwriter/common.py" line="338" />
<source>a week ago</source> <source>a week ago</source>
<translation>hace una semana</translation> <translation>hace una semana</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="369" /> <location filename="../novelwriter/common.py" line="342" />
<source>{0} weeks ago</source> <source>{0} weeks ago</source>
<translation>hace {0} semanas</translation> <translation>hace {0} semanas</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="373" /> <location filename="../novelwriter/common.py" line="346" />
<source>a month ago</source> <source>a month ago</source>
<translation>hace un mes</translation> <translation>hace un mes</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="377" /> <location filename="../novelwriter/common.py" line="350" />
<source>{0} months ago</source> <source>{0} months ago</source>
<translation>hace {0} meses</translation> <translation>hace {0} meses</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="381" /> <location filename="../novelwriter/common.py" line="354" />
<source>a year ago</source> <source>a year ago</source>
<translation>hace un año</translation> <translation>hace un año</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="385" /> <location filename="../novelwriter/common.py" line="358" />
<source>{0} years ago</source> <source>{0} years ago</source>
<translation>hace {0} años</translation> <translation>hace {0} años</translation>
</message> </message>
@@ -757,32 +757,32 @@
<context> <context>
<name>GuiDocEditFooter</name> <name>GuiDocEditFooter</name>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2924" /> <location filename="../novelwriter/gui/doceditor.py" line="2931" />
<source>Status</source> <source>Status</source>
<translation>Estado</translation> <translation>Estado</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="3073" /> <location filename="../novelwriter/gui/doceditor.py" line="3080" />
<source>Line: {0} ({1})</source> <source>Line: {0} ({1})</source>
<translation>Línea: {0} ({1})</translation> <translation>Línea: {0} ({1})</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="3102" /> <location filename="../novelwriter/gui/doceditor.py" line="3109" />
<source>Words: {0} ({1})</source> <source>Words: {0} ({1})</source>
<translation>Palabras: {0} ({1})</translation> <translation>Palabras: {0} ({1})</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="3107" /> <location filename="../novelwriter/gui/doceditor.py" line="3114" />
<source>Document size is {0} bytes</source> <source>Document size is {0} bytes</source>
<translation>El tamaño del documento es de {0} bytes</translation> <translation>El tamaño del documento es de {0} bytes</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="3119" /> <location filename="../novelwriter/gui/doceditor.py" line="3126" />
<source>Words: {0} selected</source> <source>Words: {0} selected</source>
<translation>Palabras: {0} seleccionadas</translation> <translation>Palabras: {0} seleccionadas</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="3122" /> <location filename="../novelwriter/gui/doceditor.py" line="3129" />
<source>Character count: {0}</source> <source>Character count: {0}</source>
<translation>Total de caracteres: {0}</translation> <translation>Total de caracteres: {0}</translation>
</message> </message>
@@ -790,22 +790,22 @@
<context> <context>
<name>GuiDocEditHeader</name> <name>GuiDocEditHeader</name>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2694" /> <location filename="../novelwriter/gui/doceditor.py" line="2701" />
<source>Edit document label</source> <source>Edit document label</source>
<translation>Editar el rótulo del documento</translation> <translation>Editar el rótulo del documento</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2703" /> <location filename="../novelwriter/gui/doceditor.py" line="2710" />
<source>Search document</source> <source>Search document</source>
<translation>Buscar en el documento</translation> <translation>Buscar en el documento</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2712" /> <location filename="../novelwriter/gui/doceditor.py" line="2719" />
<source>Toggle Focus Mode</source> <source>Toggle Focus Mode</source>
<translation>Alternar el Modo Enfocado</translation> <translation>Alternar el Modo Enfocado</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2721" /> <location filename="../novelwriter/gui/doceditor.py" line="2728" />
<source>Close the document</source> <source>Close the document</source>
<translation>Cerrar el documento</translation> <translation>Cerrar el documento</translation>
</message> </message>
@@ -813,58 +813,58 @@
<context> <context>
<name>GuiDocEditSearch</name> <name>GuiDocEditSearch</name>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2287" /> <location filename="../novelwriter/gui/doceditor.py" line="2294" />
<location filename="../novelwriter/gui/doceditor.py" line="2274" /> <location filename="../novelwriter/gui/doceditor.py" line="2281" />
<source>Search</source> <source>Search</source>
<translation>Buscar</translation> <translation>Buscar</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2279" /> <location filename="../novelwriter/gui/doceditor.py" line="2286" />
<source>Replace</source> <source>Replace</source>
<translation>Reemplazar</translation> <translation>Reemplazar</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2295" /> <location filename="../novelwriter/gui/doceditor.py" line="2302" />
<source>Case Sensitive</source> <source>Case Sensitive</source>
<translation>Sensibilidad a Mayúsculas y Minúsculas</translation> <translation>Sensibilidad a Mayúsculas y Minúsculas</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2301" /> <location filename="../novelwriter/gui/doceditor.py" line="2308" />
<source>Whole Words Only</source> <source>Whole Words Only</source>
<translation>Sólo Palabras Enteras</translation> <translation>Sólo Palabras Enteras</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2307" /> <location filename="../novelwriter/gui/doceditor.py" line="2314" />
<source>RegEx Mode</source> <source>RegEx Mode</source>
<translation>Modo ExReg</translation> <translation>Modo ExReg</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2313" /> <location filename="../novelwriter/gui/doceditor.py" line="2320" />
<source>Loop Search</source> <source>Loop Search</source>
<translation>Reiniciar la Búsqueda</translation> <translation>Reiniciar la Búsqueda</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2319" /> <location filename="../novelwriter/gui/doceditor.py" line="2326" />
<source>Search Next File</source> <source>Search Next File</source>
<translation>Buscar en el Siguiente Archivo</translation> <translation>Buscar en el Siguiente Archivo</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2327" /> <location filename="../novelwriter/gui/doceditor.py" line="2334" />
<source>Preserve Case</source> <source>Preserve Case</source>
<translation>Conservar Mayúsculas y Minúsculas</translation> <translation>Conservar Mayúsculas y Minúsculas</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2335" /> <location filename="../novelwriter/gui/doceditor.py" line="2342" />
<source>Close Search</source> <source>Close Search</source>
<translation>Cerrar la Búsqueda</translation> <translation>Cerrar la Búsqueda</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2351" /> <location filename="../novelwriter/gui/doceditor.py" line="2358" />
<source>Find in current document</source> <source>Find in current document</source>
<translation>Buscar en el documento actual</translation> <translation>Buscar en el documento actual</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2356" /> <location filename="../novelwriter/gui/doceditor.py" line="2363" />
<source>Find and replace in current document</source> <source>Find and replace in current document</source>
<translation>Buscar y reemplazar en el documento actual</translation> <translation>Buscar y reemplazar en el documento actual</translation>
</message> </message>
@@ -2050,55 +2050,66 @@
<context> <context>
<name>GuiNovelToolBar</name> <name>GuiNovelToolBar</name>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="207" /> <location filename="../novelwriter/gui/noveltree.py" line="216" />
<source>Outline of {0}</source> <source>Outline of {0}</source>
<translation>Estructura de {0}</translation> <translation>Estructura de {0}</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="215" /> <location filename="../novelwriter/gui/noveltree.py" line="224" />
<source>Novel Root</source> <source>Novel Root</source>
<translation>Raíz de la Novela</translation> <translation>Raíz de la Novela</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="221" /> <location filename="../novelwriter/gui/noveltree.py" line="230" />
<source>Refresh</source> <source>Refresh</source>
<translation>Actualizar</translation> <translation>Actualizar</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="228" /> <location filename="../novelwriter/gui/noveltree.py" line="237" />
<source>Last Column</source> <source>Last Column</source>
<translation>Última Columna</translation> <translation>Última Columna</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="231" /> <location filename="../novelwriter/gui/noveltree.py" line="240" />
<source>Hidden</source> <source>Hidden</source>
<translation>Ocultar</translation> <translation>Ocultar</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="232" /> <location filename="../novelwriter/gui/noveltree.py" line="241" />
<source>Point of View Character</source> <source>Point of View Character</source>
<translation>Personaje Vehículo del Punto de Vista</translation> <translation>Personaje Vehículo del Punto de Vista</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="233" /> <location filename="../novelwriter/gui/noveltree.py" line="242" />
<source>Focus Character</source> <source>Focus Character</source>
<translation>Personaje bajo Enfoque</translation> <translation>Personaje bajo Enfoque</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="234" /> <location filename="../novelwriter/gui/noveltree.py" line="243" />
<source>Novel Plot</source> <source>Novel Plot</source>
<translation>Argumento de la Novela</translation> <translation>Argumento de la Novela</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="237" /> <location filename="../novelwriter/gui/noveltree.py" line="361" />
<location filename="../novelwriter/gui/noveltree.py" line="246" />
<source>Column Size</source>
<translation>Tamaño de Columna</translation>
</message>
<message>
<location filename="../novelwriter/gui/noveltree.py" line="250" />
<source>More Options</source> <source>More Options</source>
<translation>Más Opciones</translation> <translation>Más Opciones</translation>
</message> </message>
<message>
<location filename="../novelwriter/gui/noveltree.py" line="361" />
<source>Maximum column size in %</source>
<translation>Tamaño de columna máximo en %</translation>
</message>
</context> </context>
<context> <context>
<name>GuiNovelTree</name> <name>GuiNovelTree</name>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="778" /> <location filename="../novelwriter/gui/noveltree.py" line="815" />
<source>No meta data</source> <source>No meta data</source>
<translation>Sin metadatos</translation> <translation>Sin metadatos</translation>
</message> </message>
@@ -2884,72 +2895,72 @@
<context> <context>
<name>GuiProjectDetailsContents</name> <name>GuiProjectDetailsContents</name>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="295" /> <location filename="../novelwriter/dialogs/projdetails.py" line="297" />
<source>Table of Contents</source> <source>Table of Contents</source>
<translation>Tabla de Contenido</translation> <translation>Tabla de Contenido</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="314" /> <location filename="../novelwriter/dialogs/projdetails.py" line="316" />
<source>Title</source> <source>Title</source>
<translation>Título</translation> <translation>Título</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="315" /> <location filename="../novelwriter/dialogs/projdetails.py" line="317" />
<source>Words</source> <source>Words</source>
<translation>Palabras</translation> <translation>Palabras</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="316" /> <location filename="../novelwriter/dialogs/projdetails.py" line="318" />
<source>Pages</source> <source>Pages</source>
<translation>Páginas</translation> <translation>Páginas</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="317" /> <location filename="../novelwriter/dialogs/projdetails.py" line="319" />
<source>Page</source> <source>Page</source>
<translation>Página</translation> <translation>Página</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="318" /> <location filename="../novelwriter/dialogs/projdetails.py" line="320" />
<source>Progress</source> <source>Progress</source>
<translation>Progreso</translation> <translation>Progreso</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="353" /> <location filename="../novelwriter/dialogs/projdetails.py" line="355" />
<source>Typical word count for a 5 by 8 inch book page with 11 pt font is 350.</source> <source>Typical word count for a 5 by 8 inch book page with 11 pt font is 350.</source>
<translation>El total de palabras característico para una página de libro de 12cm por 20cm con una fuente a 11pt es de 350.</translation> <translation>El total de palabras característico para una página de libro de 12cm por 20cm con una fuente a 11pt es de 350.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="356" /> <location filename="../novelwriter/dialogs/projdetails.py" line="358" />
<source>Start counting page numbers from this page.</source> <source>Start counting page numbers from this page.</source>
<translation>Comenzar a contar los números de página a partir de esta página.</translation> <translation>Comenzar a contar los números de página a partir de esta página.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="359" /> <location filename="../novelwriter/dialogs/projdetails.py" line="361" />
<source>Assume a new chapter or partition always start on an odd numbered page.</source> <source>Assume a new chapter or partition always start on an odd numbered page.</source>
<translation>Dar por sentado que un capítulo o partición nueva siempre comenzará en una página impar.</translation> <translation>Dar por sentado que un capítulo o partición nueva siempre comenzará en una página impar.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="362" /> <location filename="../novelwriter/dialogs/projdetails.py" line="364" />
<source>Words per page</source> <source>Words per page</source>
<translation>Palabras por página</translation> <translation>Palabras por página</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="373" /> <location filename="../novelwriter/dialogs/projdetails.py" line="375" />
<source>Count pages from</source> <source>Count pages from</source>
<translation>Contar páginas desde</translation> <translation>Contar páginas desde</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="384" /> <location filename="../novelwriter/dialogs/projdetails.py" line="386" />
<source>Clear double pages</source> <source>Clear double pages</source>
<translation>Eliminar páginas dobles</translation> <translation>Eliminar páginas dobles</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="447" /> <location filename="../novelwriter/dialogs/projdetails.py" line="449" />
<source>END</source> <source>END</source>
<translation>FIN</translation> <translation>FIN</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="501" /> <location filename="../novelwriter/dialogs/projdetails.py" line="503" />
<source>Untitled</source> <source>Untitled</source>
<translation>Sin Título</translation> <translation>Sin Título</translation>
</message> </message>
@@ -2957,45 +2968,45 @@
<context> <context>
<name>GuiProjectDetailsMain</name> <name>GuiProjectDetailsMain</name>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="168" /> <location filename="../novelwriter/dialogs/projdetails.py" line="185" />
<source>Working Title: {0}</source>
<translation>Título Provisional: {0}</translation>
</message>
<message>
<location filename="../novelwriter/dialogs/projdetails.py" line="177" />
<source>By {0}</source>
<translation>Por {0}</translation>
</message>
<message>
<location filename="../novelwriter/dialogs/projdetails.py" line="187" />
<source>Words</source> <source>Words</source>
<translation>Palabras</translation> <translation>Palabras</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="190" /> <location filename="../novelwriter/dialogs/projdetails.py" line="188" />
<source>Chapters</source> <source>Chapters</source>
<translation>Capítulos</translation> <translation>Capítulos</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="193" /> <location filename="../novelwriter/dialogs/projdetails.py" line="191" />
<source>Scenes</source> <source>Scenes</source>
<translation>Escenas</translation> <translation>Escenas</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="196" /> <location filename="../novelwriter/dialogs/projdetails.py" line="194" />
<source>Revisions</source> <source>Revisions</source>
<translation>Revisiones</translation> <translation>Revisiones</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="199" /> <location filename="../novelwriter/dialogs/projdetails.py" line="197" />
<source>Editing Time</source> <source>Editing Time</source>
<translation>Tiempo de Edición</translation> <translation>Tiempo de Edición</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="219" /> <location filename="../novelwriter/dialogs/projdetails.py" line="217" />
<source>Path</source> <source>Path</source>
<translation>Ruta</translation> <translation>Ruta</translation>
</message> </message>
<message>
<location filename="../novelwriter/dialogs/projdetails.py" line="253" />
<source>Project: {0}</source>
<translation>Proyecto: {0}</translation>
</message>
<message>
<location filename="../novelwriter/dialogs/projdetails.py" line="254" />
<source>By {0}</source>
<translation>Por {0}</translation>
</message>
</context> </context>
<context> <context>
<name>GuiProjectEditMain</name> <name>GuiProjectEditMain</name>
+45 -45
View File
@@ -4,72 +4,72 @@
<context> <context>
<name>Common</name> <name>Common</name>
<message> <message>
<location filename="../novelwriter/common.py" line="333" /> <location filename="../novelwriter/common.py" line="306" />
<source>in the future</source> <source>in the future</source>
<translation>dans le futur</translation> <translation>dans le futur</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="337" /> <location filename="../novelwriter/common.py" line="310" />
<source>just now</source> <source>just now</source>
<translation>maintenant</translation> <translation>maintenant</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="341" /> <location filename="../novelwriter/common.py" line="314" />
<source>a minute ago</source> <source>a minute ago</source>
<translation>il y a une minute</translation> <translation>il y a une minute</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="345" /> <location filename="../novelwriter/common.py" line="318" />
<source>{0} minutes ago</source> <source>{0} minutes ago</source>
<translation>il y a {0} minutes</translation> <translation>il y a {0} minutes</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="349" /> <location filename="../novelwriter/common.py" line="322" />
<source>an hour ago</source> <source>an hour ago</source>
<translation>il y a une heure</translation> <translation>il y a une heure</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="353" /> <location filename="../novelwriter/common.py" line="326" />
<source>{0} hours ago</source> <source>{0} hours ago</source>
<translation>il y a {0} heures</translation> <translation>il y a {0} heures</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="357" /> <location filename="../novelwriter/common.py" line="330" />
<source>a day ago</source> <source>a day ago</source>
<translation>hier</translation> <translation>hier</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="361" /> <location filename="../novelwriter/common.py" line="334" />
<source>{0} days ago</source> <source>{0} days ago</source>
<translation>il y a {0} jours</translation> <translation>il y a {0} jours</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="365" /> <location filename="../novelwriter/common.py" line="338" />
<source>a week ago</source> <source>a week ago</source>
<translation>il y a une semaine</translation> <translation>il y a une semaine</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="369" /> <location filename="../novelwriter/common.py" line="342" />
<source>{0} weeks ago</source> <source>{0} weeks ago</source>
<translation>il y a {0} semaines</translation> <translation>il y a {0} semaines</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="373" /> <location filename="../novelwriter/common.py" line="346" />
<source>a month ago</source> <source>a month ago</source>
<translation>il y a un mois</translation> <translation>il y a un mois</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="377" /> <location filename="../novelwriter/common.py" line="350" />
<source>{0} months ago</source> <source>{0} months ago</source>
<translation>il y a {0} mois</translation> <translation>il y a {0} mois</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="381" /> <location filename="../novelwriter/common.py" line="354" />
<source>a year ago</source> <source>a year ago</source>
<translation>il y a un an</translation> <translation>il y a un an</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="385" /> <location filename="../novelwriter/common.py" line="358" />
<source>{0} years ago</source> <source>{0} years ago</source>
<translation>il y a {0} ans</translation> <translation>il y a {0} ans</translation>
</message> </message>
@@ -2884,72 +2884,72 @@
<context> <context>
<name>GuiProjectDetailsContents</name> <name>GuiProjectDetailsContents</name>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="295" /> <location filename="../novelwriter/dialogs/projdetails.py" line="297" />
<source>Table of Contents</source> <source>Table of Contents</source>
<translation>Table des matières</translation> <translation>Table des matières</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="314" /> <location filename="../novelwriter/dialogs/projdetails.py" line="316" />
<source>Title</source> <source>Title</source>
<translation>Titre</translation> <translation>Titre</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="315" /> <location filename="../novelwriter/dialogs/projdetails.py" line="317" />
<source>Words</source> <source>Words</source>
<translation>Mots</translation> <translation>Mots</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="316" /> <location filename="../novelwriter/dialogs/projdetails.py" line="318" />
<source>Pages</source> <source>Pages</source>
<translation>Pages</translation> <translation>Pages</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="317" /> <location filename="../novelwriter/dialogs/projdetails.py" line="319" />
<source>Page</source> <source>Page</source>
<translation>Page</translation> <translation>Page</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="318" /> <location filename="../novelwriter/dialogs/projdetails.py" line="320" />
<source>Progress</source> <source>Progress</source>
<translation>Progression</translation> <translation>Progression</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="353" /> <location filename="../novelwriter/dialogs/projdetails.py" line="355" />
<source>Typical word count for a 5 by 8 inch book page with 11 pt font is 350.</source> <source>Typical word count for a 5 by 8 inch book page with 11 pt font is 350.</source>
<translation>Le nombre de mots moyen pour une page de livre de format 13 X 20 cm avec une police en taille 11pt est de 350.</translation> <translation>Le nombre de mots moyen pour une page de livre de format 13 X 20 cm avec une police en taille 11pt est de 350.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="356" /> <location filename="../novelwriter/dialogs/projdetails.py" line="358" />
<source>Start counting page numbers from this page.</source> <source>Start counting page numbers from this page.</source>
<translation>Commencer à compter les pages depuis cette page.</translation> <translation>Commencer à compter les pages depuis cette page.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="359" /> <location filename="../novelwriter/dialogs/projdetails.py" line="361" />
<source>Assume a new chapter or partition always start on an odd numbered page.</source> <source>Assume a new chapter or partition always start on an odd numbered page.</source>
<translation>On suppose qu'un nouveau chapitre ou une nouvelle partie débute sur une page de droite, numérotée impaire.</translation> <translation>On suppose qu'un nouveau chapitre ou une nouvelle partie débute sur une page de droite, numérotée impaire.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="362" /> <location filename="../novelwriter/dialogs/projdetails.py" line="364" />
<source>Words per page</source> <source>Words per page</source>
<translation>Mots par page</translation> <translation>Mots par page</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="373" /> <location filename="../novelwriter/dialogs/projdetails.py" line="375" />
<source>Count pages from</source> <source>Count pages from</source>
<translation>Compter les pages depuis</translation> <translation>Compter les pages depuis</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="384" /> <location filename="../novelwriter/dialogs/projdetails.py" line="386" />
<source>Clear double pages</source> <source>Clear double pages</source>
<translation>Ignorer les doubles pages</translation> <translation>Ignorer les doubles pages</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="447" /> <location filename="../novelwriter/dialogs/projdetails.py" line="449" />
<source>END</source> <source>END</source>
<translation>FIN</translation> <translation>FIN</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="501" /> <location filename="../novelwriter/dialogs/projdetails.py" line="503" />
<source>Untitled</source> <source>Untitled</source>
<translation>Sans titre</translation> <translation>Sans titre</translation>
</message> </message>
@@ -2957,45 +2957,45 @@
<context> <context>
<name>GuiProjectDetailsMain</name> <name>GuiProjectDetailsMain</name>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="168" /> <location filename="../novelwriter/dialogs/projdetails.py" line="185" />
<source>Working Title: {0}</source>
<translation>Titre de travail : {0}</translation>
</message>
<message>
<location filename="../novelwriter/dialogs/projdetails.py" line="177" />
<source>By {0}</source>
<translation>Par {0}</translation>
</message>
<message>
<location filename="../novelwriter/dialogs/projdetails.py" line="187" />
<source>Words</source> <source>Words</source>
<translation>Mots</translation> <translation>Mots</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="190" /> <location filename="../novelwriter/dialogs/projdetails.py" line="188" />
<source>Chapters</source> <source>Chapters</source>
<translation>Chapitres</translation> <translation>Chapitres</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="193" /> <location filename="../novelwriter/dialogs/projdetails.py" line="191" />
<source>Scenes</source> <source>Scenes</source>
<translation>Scènes</translation> <translation>Scènes</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="196" /> <location filename="../novelwriter/dialogs/projdetails.py" line="194" />
<source>Revisions</source> <source>Revisions</source>
<translation>Révisions</translation> <translation>Révisions</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="199" /> <location filename="../novelwriter/dialogs/projdetails.py" line="197" />
<source>Editing Time</source> <source>Editing Time</source>
<translation>Durée d'édition</translation> <translation>Durée d'édition</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="219" /> <location filename="../novelwriter/dialogs/projdetails.py" line="217" />
<source>Path</source> <source>Path</source>
<translation>Chemin</translation> <translation>Chemin</translation>
</message> </message>
<message>
<location filename="../novelwriter/dialogs/projdetails.py" line="253" />
<source>Project: {0}</source>
<translation>Projet : {0}</translation>
</message>
<message>
<location filename="../novelwriter/dialogs/projdetails.py" line="254" />
<source>By {0}</source>
<translation>Par {0}</translation>
</message>
</context> </context>
<context> <context>
<name>GuiProjectEditMain</name> <name>GuiProjectEditMain</name>
@@ -3782,7 +3782,7 @@
<message> <message>
<location filename="../novelwriter/core/project.py" line="254" /> <location filename="../novelwriter/core/project.py" line="254" />
<source>Could not open project with path: {0}</source> <source>Could not open project with path: {0}</source>
<translation type="unfinished" /> <translation>N'a pas pu ouvrir le projet avec le chemin : {0}</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/core/project.py" line="291" /> <location filename="../novelwriter/core/project.py" line="291" />
+4480
View File
File diff suppressed because it is too large Load Diff
+87 -76
View File
@@ -4,72 +4,72 @@
<context> <context>
<name>Common</name> <name>Common</name>
<message> <message>
<location filename="../novelwriter/common.py" line="333" /> <location filename="../novelwriter/common.py" line="306" />
<source>in the future</source> <source>in the future</source>
<translation>i fremtiden</translation> <translation>i fremtiden</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="337" /> <location filename="../novelwriter/common.py" line="310" />
<source>just now</source> <source>just now</source>
<translation> nettopp</translation> <translation> nettopp</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="341" /> <location filename="../novelwriter/common.py" line="314" />
<source>a minute ago</source> <source>a minute ago</source>
<translation>for et minutt siden</translation> <translation>for et minutt siden</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="345" /> <location filename="../novelwriter/common.py" line="318" />
<source>{0} minutes ago</source> <source>{0} minutes ago</source>
<translation>for {0} minutter siden</translation> <translation>for {0} minutter siden</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="349" /> <location filename="../novelwriter/common.py" line="322" />
<source>an hour ago</source> <source>an hour ago</source>
<translation>for en time siden</translation> <translation>for en time siden</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="353" /> <location filename="../novelwriter/common.py" line="326" />
<source>{0} hours ago</source> <source>{0} hours ago</source>
<translation>for {0} timer siden</translation> <translation>for {0} timer siden</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="357" /> <location filename="../novelwriter/common.py" line="330" />
<source>a day ago</source> <source>a day ago</source>
<translation>for en dag siden</translation> <translation>for en dag siden</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="361" /> <location filename="../novelwriter/common.py" line="334" />
<source>{0} days ago</source> <source>{0} days ago</source>
<translation>for {0} dager siden</translation> <translation>for {0} dager siden</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="365" /> <location filename="../novelwriter/common.py" line="338" />
<source>a week ago</source> <source>a week ago</source>
<translation>for en uke siden</translation> <translation>for en uke siden</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="369" /> <location filename="../novelwriter/common.py" line="342" />
<source>{0} weeks ago</source> <source>{0} weeks ago</source>
<translation>for {0} uker siden</translation> <translation>for {0} uker siden</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="373" /> <location filename="../novelwriter/common.py" line="346" />
<source>a month ago</source> <source>a month ago</source>
<translation>for en måned siden</translation> <translation>for en måned siden</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="377" /> <location filename="../novelwriter/common.py" line="350" />
<source>{0} months ago</source> <source>{0} months ago</source>
<translation>for {0} måneder siden</translation> <translation>for {0} måneder siden</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="381" /> <location filename="../novelwriter/common.py" line="354" />
<source>a year ago</source> <source>a year ago</source>
<translation>for et år siden</translation> <translation>for et år siden</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="385" /> <location filename="../novelwriter/common.py" line="358" />
<source>{0} years ago</source> <source>{0} years ago</source>
<translation>for {0} år siden</translation> <translation>for {0} år siden</translation>
</message> </message>
@@ -757,32 +757,32 @@
<context> <context>
<name>GuiDocEditFooter</name> <name>GuiDocEditFooter</name>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2924" /> <location filename="../novelwriter/gui/doceditor.py" line="2931" />
<source>Status</source> <source>Status</source>
<translation>Status</translation> <translation>Status</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="3073" /> <location filename="../novelwriter/gui/doceditor.py" line="3080" />
<source>Line: {0} ({1})</source> <source>Line: {0} ({1})</source>
<translation>Linje: {0} ({1})</translation> <translation>Linje: {0} ({1})</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="3102" /> <location filename="../novelwriter/gui/doceditor.py" line="3109" />
<source>Words: {0} ({1})</source> <source>Words: {0} ({1})</source>
<translation>Ord: {0} ({1})</translation> <translation>Ord: {0} ({1})</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="3107" /> <location filename="../novelwriter/gui/doceditor.py" line="3114" />
<source>Document size is {0} bytes</source> <source>Document size is {0} bytes</source>
<translation>Dokumentet er {0} byte</translation> <translation>Dokumentet er {0} byte</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="3119" /> <location filename="../novelwriter/gui/doceditor.py" line="3126" />
<source>Words: {0} selected</source> <source>Words: {0} selected</source>
<translation>Ord: {0} valgt</translation> <translation>Ord: {0} valgt</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="3122" /> <location filename="../novelwriter/gui/doceditor.py" line="3129" />
<source>Character count: {0}</source> <source>Character count: {0}</source>
<translation>Antall tegn: {0}</translation> <translation>Antall tegn: {0}</translation>
</message> </message>
@@ -790,22 +790,22 @@
<context> <context>
<name>GuiDocEditHeader</name> <name>GuiDocEditHeader</name>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2694" /> <location filename="../novelwriter/gui/doceditor.py" line="2701" />
<source>Edit document label</source> <source>Edit document label</source>
<translation>Endre dokumentnavn</translation> <translation>Endre dokumentnavn</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2703" /> <location filename="../novelwriter/gui/doceditor.py" line="2710" />
<source>Search document</source> <source>Search document</source>
<translation>Søk i dokumentet</translation> <translation>Søk i dokumentet</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2712" /> <location filename="../novelwriter/gui/doceditor.py" line="2719" />
<source>Toggle Focus Mode</source> <source>Toggle Focus Mode</source>
<translation>Slå av/ "Fokus-modus"</translation> <translation>Slå av/ "Fokus-modus"</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2721" /> <location filename="../novelwriter/gui/doceditor.py" line="2728" />
<source>Close the document</source> <source>Close the document</source>
<translation>Lukk dokumentet</translation> <translation>Lukk dokumentet</translation>
</message> </message>
@@ -813,58 +813,58 @@
<context> <context>
<name>GuiDocEditSearch</name> <name>GuiDocEditSearch</name>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2287" /> <location filename="../novelwriter/gui/doceditor.py" line="2294" />
<location filename="../novelwriter/gui/doceditor.py" line="2274" /> <location filename="../novelwriter/gui/doceditor.py" line="2281" />
<source>Search</source> <source>Search</source>
<translation>Søk</translation> <translation>Søk</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2279" /> <location filename="../novelwriter/gui/doceditor.py" line="2286" />
<source>Replace</source> <source>Replace</source>
<translation>Erstatt</translation> <translation>Erstatt</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2295" /> <location filename="../novelwriter/gui/doceditor.py" line="2302" />
<source>Case Sensitive</source> <source>Case Sensitive</source>
<translation>Skill store/små bokstaver</translation> <translation>Skill store/små bokstaver</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2301" /> <location filename="../novelwriter/gui/doceditor.py" line="2308" />
<source>Whole Words Only</source> <source>Whole Words Only</source>
<translation>Kun hele ord</translation> <translation>Kun hele ord</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2307" /> <location filename="../novelwriter/gui/doceditor.py" line="2314" />
<source>RegEx Mode</source> <source>RegEx Mode</source>
<translation>RegEx-modus</translation> <translation>RegEx-modus</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2313" /> <location filename="../novelwriter/gui/doceditor.py" line="2320" />
<source>Loop Search</source> <source>Loop Search</source>
<translation>Søk rundt</translation> <translation>Søk rundt</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2319" /> <location filename="../novelwriter/gui/doceditor.py" line="2326" />
<source>Search Next File</source> <source>Search Next File</source>
<translation>Søk i neste file</translation> <translation>Søk i neste file</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2327" /> <location filename="../novelwriter/gui/doceditor.py" line="2334" />
<source>Preserve Case</source> <source>Preserve Case</source>
<translation>Behold store/små bokstaver</translation> <translation>Behold store/små bokstaver</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2335" /> <location filename="../novelwriter/gui/doceditor.py" line="2342" />
<source>Close Search</source> <source>Close Search</source>
<translation>Lukk søk</translation> <translation>Lukk søk</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2351" /> <location filename="../novelwriter/gui/doceditor.py" line="2358" />
<source>Find in current document</source> <source>Find in current document</source>
<translation>Søk i det åpne dokumentet</translation> <translation>Søk i det åpne dokumentet</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2356" /> <location filename="../novelwriter/gui/doceditor.py" line="2363" />
<source>Find and replace in current document</source> <source>Find and replace in current document</source>
<translation>Søk og erstatt i det åpne dokumentet</translation> <translation>Søk og erstatt i det åpne dokumentet</translation>
</message> </message>
@@ -2050,55 +2050,66 @@
<context> <context>
<name>GuiNovelToolBar</name> <name>GuiNovelToolBar</name>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="207" /> <location filename="../novelwriter/gui/noveltree.py" line="216" />
<source>Outline of {0}</source> <source>Outline of {0}</source>
<translation>Innhold i {0}</translation> <translation>Innhold i {0}</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="215" /> <location filename="../novelwriter/gui/noveltree.py" line="224" />
<source>Novel Root</source> <source>Novel Root</source>
<translation>Roman-mappe</translation> <translation>Roman-mappe</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="221" /> <location filename="../novelwriter/gui/noveltree.py" line="230" />
<source>Refresh</source> <source>Refresh</source>
<translation>Oppdatér</translation> <translation>Oppdatér</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="228" /> <location filename="../novelwriter/gui/noveltree.py" line="237" />
<source>Last Column</source> <source>Last Column</source>
<translation>Siste kolonne</translation> <translation>Siste kolonne</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="231" /> <location filename="../novelwriter/gui/noveltree.py" line="240" />
<source>Hidden</source> <source>Hidden</source>
<translation>Skjult</translation> <translation>Skjult</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="232" /> <location filename="../novelwriter/gui/noveltree.py" line="241" />
<source>Point of View Character</source> <source>Point of View Character</source>
<translation>Synsvinkel-karakter</translation> <translation>Synsvinkel-karakter</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="233" /> <location filename="../novelwriter/gui/noveltree.py" line="242" />
<source>Focus Character</source> <source>Focus Character</source>
<translation>Fokus-karakter</translation> <translation>Fokus-karakter</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="234" /> <location filename="../novelwriter/gui/noveltree.py" line="243" />
<source>Novel Plot</source> <source>Novel Plot</source>
<translation>Roman-plott</translation> <translation>Roman-plott</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="237" /> <location filename="../novelwriter/gui/noveltree.py" line="361" />
<location filename="../novelwriter/gui/noveltree.py" line="246" />
<source>Column Size</source>
<translation>Kolonnebredde</translation>
</message>
<message>
<location filename="../novelwriter/gui/noveltree.py" line="250" />
<source>More Options</source> <source>More Options</source>
<translation>Flere valg</translation> <translation>Flere valg</translation>
</message> </message>
<message>
<location filename="../novelwriter/gui/noveltree.py" line="361" />
<source>Maximum column size in %</source>
<translation>Maksimal kolonnebredde i %</translation>
</message>
</context> </context>
<context> <context>
<name>GuiNovelTree</name> <name>GuiNovelTree</name>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="778" /> <location filename="../novelwriter/gui/noveltree.py" line="815" />
<source>No meta data</source> <source>No meta data</source>
<translation>Ingen meta-data</translation> <translation>Ingen meta-data</translation>
</message> </message>
@@ -2884,72 +2895,72 @@
<context> <context>
<name>GuiProjectDetailsContents</name> <name>GuiProjectDetailsContents</name>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="295" /> <location filename="../novelwriter/dialogs/projdetails.py" line="297" />
<source>Table of Contents</source> <source>Table of Contents</source>
<translation>Innholdsfortegnelse</translation> <translation>Innholdsfortegnelse</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="314" /> <location filename="../novelwriter/dialogs/projdetails.py" line="316" />
<source>Title</source> <source>Title</source>
<translation>Tittel</translation> <translation>Tittel</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="315" /> <location filename="../novelwriter/dialogs/projdetails.py" line="317" />
<source>Words</source> <source>Words</source>
<translation>Ord</translation> <translation>Ord</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="316" /> <location filename="../novelwriter/dialogs/projdetails.py" line="318" />
<source>Pages</source> <source>Pages</source>
<translation>Sider</translation> <translation>Sider</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="317" /> <location filename="../novelwriter/dialogs/projdetails.py" line="319" />
<source>Page</source> <source>Page</source>
<translation>Side</translation> <translation>Side</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="318" /> <location filename="../novelwriter/dialogs/projdetails.py" line="320" />
<source>Progress</source> <source>Progress</source>
<translation>Fremdrift</translation> <translation>Fremdrift</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="353" /> <location filename="../novelwriter/dialogs/projdetails.py" line="355" />
<source>Typical word count for a 5 by 8 inch book page with 11 pt font is 350.</source> <source>Typical word count for a 5 by 8 inch book page with 11 pt font is 350.</source>
<translation>Typisk antall ord for en 5 x 8 tommers bokside med 11 pt tekst er 350.</translation> <translation>Typisk antall ord for en 5 x 8 tommers bokside med 11 pt tekst er 350.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="356" /> <location filename="../novelwriter/dialogs/projdetails.py" line="358" />
<source>Start counting page numbers from this page.</source> <source>Start counting page numbers from this page.</source>
<translation>Begynn sidetall fra denne siden.</translation> <translation>Begynn sidetall fra denne siden.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="359" /> <location filename="../novelwriter/dialogs/projdetails.py" line="361" />
<source>Assume a new chapter or partition always start on an odd numbered page.</source> <source>Assume a new chapter or partition always start on an odd numbered page.</source>
<translation>Beregn at nye kapitler og partisjoner alltid starter en høyreside.</translation> <translation>Beregn at nye kapitler og partisjoner alltid starter en høyreside.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="362" /> <location filename="../novelwriter/dialogs/projdetails.py" line="364" />
<source>Words per page</source> <source>Words per page</source>
<translation>Ord per side</translation> <translation>Ord per side</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="373" /> <location filename="../novelwriter/dialogs/projdetails.py" line="375" />
<source>Count pages from</source> <source>Count pages from</source>
<translation>Tell sider fra</translation> <translation>Tell sider fra</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="384" /> <location filename="../novelwriter/dialogs/projdetails.py" line="386" />
<source>Clear double pages</source> <source>Clear double pages</source>
<translation>Tøm doble sider</translation> <translation>Tøm doble sider</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="447" /> <location filename="../novelwriter/dialogs/projdetails.py" line="449" />
<source>END</source> <source>END</source>
<translation>SLUTT</translation> <translation>SLUTT</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="501" /> <location filename="../novelwriter/dialogs/projdetails.py" line="503" />
<source>Untitled</source> <source>Untitled</source>
<translation>Uten tittel</translation> <translation>Uten tittel</translation>
</message> </message>
@@ -2957,45 +2968,45 @@
<context> <context>
<name>GuiProjectDetailsMain</name> <name>GuiProjectDetailsMain</name>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="168" /> <location filename="../novelwriter/dialogs/projdetails.py" line="185" />
<source>Working Title: {0}</source>
<translation>Arbeidstittel: {0}</translation>
</message>
<message>
<location filename="../novelwriter/dialogs/projdetails.py" line="177" />
<source>By {0}</source>
<translation>Av {0}</translation>
</message>
<message>
<location filename="../novelwriter/dialogs/projdetails.py" line="187" />
<source>Words</source> <source>Words</source>
<translation>Ord</translation> <translation>Ord</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="190" /> <location filename="../novelwriter/dialogs/projdetails.py" line="188" />
<source>Chapters</source> <source>Chapters</source>
<translation>Kapitler</translation> <translation>Kapitler</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="193" /> <location filename="../novelwriter/dialogs/projdetails.py" line="191" />
<source>Scenes</source> <source>Scenes</source>
<translation>Scener</translation> <translation>Scener</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="196" /> <location filename="../novelwriter/dialogs/projdetails.py" line="194" />
<source>Revisions</source> <source>Revisions</source>
<translation>Revisjoner</translation> <translation>Revisjoner</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="199" /> <location filename="../novelwriter/dialogs/projdetails.py" line="197" />
<source>Editing Time</source> <source>Editing Time</source>
<translation>Redigeringstid</translation> <translation>Redigeringstid</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="219" /> <location filename="../novelwriter/dialogs/projdetails.py" line="217" />
<source>Path</source> <source>Path</source>
<translation>Filbane</translation> <translation>Filbane</translation>
</message> </message>
<message>
<location filename="../novelwriter/dialogs/projdetails.py" line="253" />
<source>Project: {0}</source>
<translation>Prosjekt: {0}</translation>
</message>
<message>
<location filename="../novelwriter/dialogs/projdetails.py" line="254" />
<source>By {0}</source>
<translation>Av {0}</translation>
</message>
</context> </context>
<context> <context>
<name>GuiProjectEditMain</name> <name>GuiProjectEditMain</name>
+45 -45
View File
@@ -4,72 +4,72 @@
<context> <context>
<name>Common</name> <name>Common</name>
<message> <message>
<location filename="../novelwriter/common.py" line="333" /> <location filename="../novelwriter/common.py" line="306" />
<source>in the future</source> <source>in the future</source>
<translation>in de toekomst</translation> <translation>in de toekomst</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="337" /> <location filename="../novelwriter/common.py" line="310" />
<source>just now</source> <source>just now</source>
<translation>zojuist</translation> <translation>zojuist</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="341" /> <location filename="../novelwriter/common.py" line="314" />
<source>a minute ago</source> <source>a minute ago</source>
<translation>een minuut geleden</translation> <translation>een minuut geleden</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="345" /> <location filename="../novelwriter/common.py" line="318" />
<source>{0} minutes ago</source> <source>{0} minutes ago</source>
<translation>{0} minuten geleden</translation> <translation>{0} minuten geleden</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="349" /> <location filename="../novelwriter/common.py" line="322" />
<source>an hour ago</source> <source>an hour ago</source>
<translation>een uur geleden</translation> <translation>een uur geleden</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="353" /> <location filename="../novelwriter/common.py" line="326" />
<source>{0} hours ago</source> <source>{0} hours ago</source>
<translation>{0} uur geleden</translation> <translation>{0} uur geleden</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="357" /> <location filename="../novelwriter/common.py" line="330" />
<source>a day ago</source> <source>a day ago</source>
<translation>een dag geleden</translation> <translation>een dag geleden</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="361" /> <location filename="../novelwriter/common.py" line="334" />
<source>{0} days ago</source> <source>{0} days ago</source>
<translation>{0} dagen geleden</translation> <translation>{0} dagen geleden</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="365" /> <location filename="../novelwriter/common.py" line="338" />
<source>a week ago</source> <source>a week ago</source>
<translation>een week geleden</translation> <translation>een week geleden</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="369" /> <location filename="../novelwriter/common.py" line="342" />
<source>{0} weeks ago</source> <source>{0} weeks ago</source>
<translation>{0} weken geleden</translation> <translation>{0} weken geleden</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="373" /> <location filename="../novelwriter/common.py" line="346" />
<source>a month ago</source> <source>a month ago</source>
<translation>een maand geleden</translation> <translation>een maand geleden</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="377" /> <location filename="../novelwriter/common.py" line="350" />
<source>{0} months ago</source> <source>{0} months ago</source>
<translation>{0} maanden geleden</translation> <translation>{0} maanden geleden</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="381" /> <location filename="../novelwriter/common.py" line="354" />
<source>a year ago</source> <source>a year ago</source>
<translation>een jaar geleden</translation> <translation>een jaar geleden</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="385" /> <location filename="../novelwriter/common.py" line="358" />
<source>{0} years ago</source> <source>{0} years ago</source>
<translation>{0} jaren geleden</translation> <translation>{0} jaren geleden</translation>
</message> </message>
@@ -2884,72 +2884,72 @@
<context> <context>
<name>GuiProjectDetailsContents</name> <name>GuiProjectDetailsContents</name>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="295" /> <location filename="../novelwriter/dialogs/projdetails.py" line="297" />
<source>Table of Contents</source> <source>Table of Contents</source>
<translation>Inhoudsopgave</translation> <translation>Inhoudsopgave</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="314" /> <location filename="../novelwriter/dialogs/projdetails.py" line="316" />
<source>Title</source> <source>Title</source>
<translation>Titel</translation> <translation>Titel</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="315" /> <location filename="../novelwriter/dialogs/projdetails.py" line="317" />
<source>Words</source> <source>Words</source>
<translation>Woorden</translation> <translation>Woorden</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="316" /> <location filename="../novelwriter/dialogs/projdetails.py" line="318" />
<source>Pages</source> <source>Pages</source>
<translation>Pagina's</translation> <translation>Pagina's</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="317" /> <location filename="../novelwriter/dialogs/projdetails.py" line="319" />
<source>Page</source> <source>Page</source>
<translation>Pagina</translation> <translation>Pagina</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="318" /> <location filename="../novelwriter/dialogs/projdetails.py" line="320" />
<source>Progress</source> <source>Progress</source>
<translation>Voortgang</translation> <translation>Voortgang</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="353" /> <location filename="../novelwriter/dialogs/projdetails.py" line="355" />
<source>Typical word count for a 5 by 8 inch book page with 11 pt font is 350.</source> <source>Typical word count for a 5 by 8 inch book page with 11 pt font is 350.</source>
<translation>Typische woord telling voor een 5 bij 8 inch boek pagina met 11 pt lettertype is 350.</translation> <translation>Typische woord telling voor een 5 bij 8 inch boek pagina met 11 pt lettertype is 350.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="356" /> <location filename="../novelwriter/dialogs/projdetails.py" line="358" />
<source>Start counting page numbers from this page.</source> <source>Start counting page numbers from this page.</source>
<translation>Begin met het tellen van paginanummers vanaf deze pagina.</translation> <translation>Begin met het tellen van paginanummers vanaf deze pagina.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="359" /> <location filename="../novelwriter/dialogs/projdetails.py" line="361" />
<source>Assume a new chapter or partition always start on an odd numbered page.</source> <source>Assume a new chapter or partition always start on an odd numbered page.</source>
<translation>Neem aan dat een nieuw hoofdstuk of partitie altijd op een oneven genummerde pagina begint.</translation> <translation>Neem aan dat een nieuw hoofdstuk of partitie altijd op een oneven genummerde pagina begint.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="362" /> <location filename="../novelwriter/dialogs/projdetails.py" line="364" />
<source>Words per page</source> <source>Words per page</source>
<translation>Woorden per pagina</translation> <translation>Woorden per pagina</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="373" /> <location filename="../novelwriter/dialogs/projdetails.py" line="375" />
<source>Count pages from</source> <source>Count pages from</source>
<translation>Pagina's tellen vanaf</translation> <translation>Pagina's tellen vanaf</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="384" /> <location filename="../novelwriter/dialogs/projdetails.py" line="386" />
<source>Clear double pages</source> <source>Clear double pages</source>
<translation>Dubbele pagina's wissen</translation> <translation>Dubbele pagina's wissen</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="447" /> <location filename="../novelwriter/dialogs/projdetails.py" line="449" />
<source>END</source> <source>END</source>
<translation>EINDE</translation> <translation>EINDE</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="501" /> <location filename="../novelwriter/dialogs/projdetails.py" line="503" />
<source>Untitled</source> <source>Untitled</source>
<translation>Naamloos</translation> <translation>Naamloos</translation>
</message> </message>
@@ -2957,45 +2957,45 @@
<context> <context>
<name>GuiProjectDetailsMain</name> <name>GuiProjectDetailsMain</name>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="168" /> <location filename="../novelwriter/dialogs/projdetails.py" line="185" />
<source>Working Title: {0}</source>
<translation>Werktitel: {0}</translation>
</message>
<message>
<location filename="../novelwriter/dialogs/projdetails.py" line="177" />
<source>By {0}</source>
<translation>Door {0}</translation>
</message>
<message>
<location filename="../novelwriter/dialogs/projdetails.py" line="187" />
<source>Words</source> <source>Words</source>
<translation>Woorden</translation> <translation>Woorden</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="190" /> <location filename="../novelwriter/dialogs/projdetails.py" line="188" />
<source>Chapters</source> <source>Chapters</source>
<translation>Hoofdstukken</translation> <translation>Hoofdstukken</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="193" /> <location filename="../novelwriter/dialogs/projdetails.py" line="191" />
<source>Scenes</source> <source>Scenes</source>
<translation>Scènes</translation> <translation>Scènes</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="196" /> <location filename="../novelwriter/dialogs/projdetails.py" line="194" />
<source>Revisions</source> <source>Revisions</source>
<translation>Revisies</translation> <translation>Revisies</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="199" /> <location filename="../novelwriter/dialogs/projdetails.py" line="197" />
<source>Editing Time</source> <source>Editing Time</source>
<translation>Bewerk tijd</translation> <translation>Bewerk tijd</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="219" /> <location filename="../novelwriter/dialogs/projdetails.py" line="217" />
<source>Path</source> <source>Path</source>
<translation>Pad</translation> <translation>Pad</translation>
</message> </message>
<message>
<location filename="../novelwriter/dialogs/projdetails.py" line="253" />
<source>Project: {0}</source>
<translation>Project: {0}</translation>
</message>
<message>
<location filename="../novelwriter/dialogs/projdetails.py" line="254" />
<source>By {0}</source>
<translation>Door {0}</translation>
</message>
</context> </context>
<context> <context>
<name>GuiProjectEditMain</name> <name>GuiProjectEditMain</name>
@@ -3782,7 +3782,7 @@
<message> <message>
<location filename="../novelwriter/core/project.py" line="254" /> <location filename="../novelwriter/core/project.py" line="254" />
<source>Could not open project with path: {0}</source> <source>Could not open project with path: {0}</source>
<translation type="unfinished" /> <translation>Kon project niet openen met pad: {0}</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/core/project.py" line="291" /> <location filename="../novelwriter/core/project.py" line="291" />
+88 -77
View File
@@ -4,72 +4,72 @@
<context> <context>
<name>Common</name> <name>Common</name>
<message> <message>
<location filename="../novelwriter/common.py" line="333" /> <location filename="../novelwriter/common.py" line="306" />
<source>in the future</source> <source>in the future</source>
<translation>no futuro</translation> <translation>no futuro</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="337" /> <location filename="../novelwriter/common.py" line="310" />
<source>just now</source> <source>just now</source>
<translation>agora</translation> <translation>agora</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="341" /> <location filename="../novelwriter/common.py" line="314" />
<source>a minute ago</source> <source>a minute ago</source>
<translation>um minuto atrás</translation> <translation>um minuto atrás</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="345" /> <location filename="../novelwriter/common.py" line="318" />
<source>{0} minutes ago</source> <source>{0} minutes ago</source>
<translation>{0} minutos atrás</translation> <translation>{0} minutos atrás</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="349" /> <location filename="../novelwriter/common.py" line="322" />
<source>an hour ago</source> <source>an hour ago</source>
<translation>uma hora atrás</translation> <translation>uma hora atrás</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="353" /> <location filename="../novelwriter/common.py" line="326" />
<source>{0} hours ago</source> <source>{0} hours ago</source>
<translation>{0} horas atrás</translation> <translation>{0} horas atrás</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="357" /> <location filename="../novelwriter/common.py" line="330" />
<source>a day ago</source> <source>a day ago</source>
<translation>um dia atrás</translation> <translation>um dia atrás</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="361" /> <location filename="../novelwriter/common.py" line="334" />
<source>{0} days ago</source> <source>{0} days ago</source>
<translation>{0} dias atrás</translation> <translation>{0} dias atrás</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="365" /> <location filename="../novelwriter/common.py" line="338" />
<source>a week ago</source> <source>a week ago</source>
<translation>uma semana atrás</translation> <translation>uma semana atrás</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="369" /> <location filename="../novelwriter/common.py" line="342" />
<source>{0} weeks ago</source> <source>{0} weeks ago</source>
<translation>{0} semanas atrás</translation> <translation>{0} semanas atrás</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="373" /> <location filename="../novelwriter/common.py" line="346" />
<source>a month ago</source> <source>a month ago</source>
<translation>um mês atrás</translation> <translation>um mês atrás</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="377" /> <location filename="../novelwriter/common.py" line="350" />
<source>{0} months ago</source> <source>{0} months ago</source>
<translation>{0} meses atrás</translation> <translation>{0} meses atrás</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="381" /> <location filename="../novelwriter/common.py" line="354" />
<source>a year ago</source> <source>a year ago</source>
<translation>um ano atrás</translation> <translation>um ano atrás</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/common.py" line="385" /> <location filename="../novelwriter/common.py" line="358" />
<source>{0} years ago</source> <source>{0} years ago</source>
<translation>{0} anos atrás</translation> <translation>{0} anos atrás</translation>
</message> </message>
@@ -757,32 +757,32 @@
<context> <context>
<name>GuiDocEditFooter</name> <name>GuiDocEditFooter</name>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2924" /> <location filename="../novelwriter/gui/doceditor.py" line="2931" />
<source>Status</source> <source>Status</source>
<translation>Estado</translation> <translation>Estado</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="3073" /> <location filename="../novelwriter/gui/doceditor.py" line="3080" />
<source>Line: {0} ({1})</source> <source>Line: {0} ({1})</source>
<translation>Linha: {0} ({1})</translation> <translation>Linha: {0} ({1})</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="3102" /> <location filename="../novelwriter/gui/doceditor.py" line="3109" />
<source>Words: {0} ({1})</source> <source>Words: {0} ({1})</source>
<translation>Palavras: {0} ({1})</translation> <translation>Palavras: {0} ({1})</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="3107" /> <location filename="../novelwriter/gui/doceditor.py" line="3114" />
<source>Document size is {0} bytes</source> <source>Document size is {0} bytes</source>
<translation>O tamanho do documento é {0} bytes</translation> <translation>O tamanho do documento é {0} bytes</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="3119" /> <location filename="../novelwriter/gui/doceditor.py" line="3126" />
<source>Words: {0} selected</source> <source>Words: {0} selected</source>
<translation>Palavras: {0} selecionadas</translation> <translation>Palavras: {0} selecionadas</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="3122" /> <location filename="../novelwriter/gui/doceditor.py" line="3129" />
<source>Character count: {0}</source> <source>Character count: {0}</source>
<translation>Contagem de carecteres: {0}</translation> <translation>Contagem de carecteres: {0}</translation>
</message> </message>
@@ -790,22 +790,22 @@
<context> <context>
<name>GuiDocEditHeader</name> <name>GuiDocEditHeader</name>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2694" /> <location filename="../novelwriter/gui/doceditor.py" line="2701" />
<source>Edit document label</source> <source>Edit document label</source>
<translation>Editar etiqueta do documento</translation> <translation>Editar etiqueta do documento</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2703" /> <location filename="../novelwriter/gui/doceditor.py" line="2710" />
<source>Search document</source> <source>Search document</source>
<translation>Procurar no documento</translation> <translation>Procurar no documento</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2712" /> <location filename="../novelwriter/gui/doceditor.py" line="2719" />
<source>Toggle Focus Mode</source> <source>Toggle Focus Mode</source>
<translation>Alternar o "Modo Foco"</translation> <translation>Alternar o "Modo Foco"</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2721" /> <location filename="../novelwriter/gui/doceditor.py" line="2728" />
<source>Close the document</source> <source>Close the document</source>
<translation>Fechar o documento</translation> <translation>Fechar o documento</translation>
</message> </message>
@@ -813,58 +813,58 @@
<context> <context>
<name>GuiDocEditSearch</name> <name>GuiDocEditSearch</name>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2287" /> <location filename="../novelwriter/gui/doceditor.py" line="2294" />
<location filename="../novelwriter/gui/doceditor.py" line="2274" /> <location filename="../novelwriter/gui/doceditor.py" line="2281" />
<source>Search</source> <source>Search</source>
<translation>Pesquisa</translation> <translation>Pesquisa</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2279" /> <location filename="../novelwriter/gui/doceditor.py" line="2286" />
<source>Replace</source> <source>Replace</source>
<translation>Substituir</translation> <translation>Substituir</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2295" /> <location filename="../novelwriter/gui/doceditor.py" line="2302" />
<source>Case Sensitive</source> <source>Case Sensitive</source>
<translation>Diferenciar Maiúsculas e Minúsculas</translation> <translation>Diferenciar Maiúsculas e Minúsculas</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2301" /> <location filename="../novelwriter/gui/doceditor.py" line="2308" />
<source>Whole Words Only</source> <source>Whole Words Only</source>
<translation>Apenas Palavras Inteiras</translation> <translation>Apenas Palavras Inteiras</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2307" /> <location filename="../novelwriter/gui/doceditor.py" line="2314" />
<source>RegEx Mode</source> <source>RegEx Mode</source>
<translation>Expressão Regular</translation> <translation>Expressão Regular</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2313" /> <location filename="../novelwriter/gui/doceditor.py" line="2320" />
<source>Loop Search</source> <source>Loop Search</source>
<translation>Pesquisa do Início</translation> <translation>Pesquisa do Início</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2319" /> <location filename="../novelwriter/gui/doceditor.py" line="2326" />
<source>Search Next File</source> <source>Search Next File</source>
<translation>Busca no Próximo Arquivo</translation> <translation>Busca no Próximo Arquivo</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2327" /> <location filename="../novelwriter/gui/doceditor.py" line="2334" />
<source>Preserve Case</source> <source>Preserve Case</source>
<translation>Preserva Maiúsculas e Minúsculas</translation> <translation>Preserva Maiúsculas e Minúsculas</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2335" /> <location filename="../novelwriter/gui/doceditor.py" line="2342" />
<source>Close Search</source> <source>Close Search</source>
<translation>Fechar a Busca</translation> <translation>Fechar a Busca</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2351" /> <location filename="../novelwriter/gui/doceditor.py" line="2358" />
<source>Find in current document</source> <source>Find in current document</source>
<translation>Encontrar no documento atual</translation> <translation>Encontrar no documento atual</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="2356" /> <location filename="../novelwriter/gui/doceditor.py" line="2363" />
<source>Find and replace in current document</source> <source>Find and replace in current document</source>
<translation>Encontrar e substituir no documento atual</translation> <translation>Encontrar e substituir no documento atual</translation>
</message> </message>
@@ -2050,55 +2050,66 @@
<context> <context>
<name>GuiNovelToolBar</name> <name>GuiNovelToolBar</name>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="207" /> <location filename="../novelwriter/gui/noveltree.py" line="216" />
<source>Outline of {0}</source> <source>Outline of {0}</source>
<translation>Esboço de {0}</translation> <translation>Esboço de {0}</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="215" /> <location filename="../novelwriter/gui/noveltree.py" line="224" />
<source>Novel Root</source> <source>Novel Root</source>
<translation>Raiz do Livro</translation> <translation>Raiz do Livro</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="221" /> <location filename="../novelwriter/gui/noveltree.py" line="230" />
<source>Refresh</source> <source>Refresh</source>
<translation>Atualizar</translation> <translation>Atualizar</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="228" /> <location filename="../novelwriter/gui/noveltree.py" line="237" />
<source>Last Column</source> <source>Last Column</source>
<translation>Última Coluna</translation> <translation>Última Coluna</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="231" /> <location filename="../novelwriter/gui/noveltree.py" line="240" />
<source>Hidden</source> <source>Hidden</source>
<translation>Oculto</translation> <translation>Oculto</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="232" /> <location filename="../novelwriter/gui/noveltree.py" line="241" />
<source>Point of View Character</source> <source>Point of View Character</source>
<translation>Ponto de Vista do Personagem</translation> <translation>Ponto de Vista do Personagem</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="233" /> <location filename="../novelwriter/gui/noveltree.py" line="242" />
<source>Focus Character</source> <source>Focus Character</source>
<translation>Personagem em Foco</translation> <translation>Personagem em Foco</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="234" /> <location filename="../novelwriter/gui/noveltree.py" line="243" />
<source>Novel Plot</source> <source>Novel Plot</source>
<translation>Enredo do Livro</translation> <translation>Enredo do Livro</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="237" /> <location filename="../novelwriter/gui/noveltree.py" line="361" />
<location filename="../novelwriter/gui/noveltree.py" line="246" />
<source>Column Size</source>
<translation>Tamanho da Coluna</translation>
</message>
<message>
<location filename="../novelwriter/gui/noveltree.py" line="250" />
<source>More Options</source> <source>More Options</source>
<translation>Mais Opções</translation> <translation>Mais Opções</translation>
</message> </message>
<message>
<location filename="../novelwriter/gui/noveltree.py" line="361" />
<source>Maximum column size in %</source>
<translation>Tamanho máximo da coluna em %</translation>
</message>
</context> </context>
<context> <context>
<name>GuiNovelTree</name> <name>GuiNovelTree</name>
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="778" /> <location filename="../novelwriter/gui/noveltree.py" line="815" />
<source>No meta data</source> <source>No meta data</source>
<translation>Sem metadados</translation> <translation>Sem metadados</translation>
</message> </message>
@@ -2884,72 +2895,72 @@
<context> <context>
<name>GuiProjectDetailsContents</name> <name>GuiProjectDetailsContents</name>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="295" /> <location filename="../novelwriter/dialogs/projdetails.py" line="297" />
<source>Table of Contents</source> <source>Table of Contents</source>
<translation>Sumário</translation> <translation>Sumário</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="314" /> <location filename="../novelwriter/dialogs/projdetails.py" line="316" />
<source>Title</source> <source>Title</source>
<translation>Título</translation> <translation>Título</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="315" /> <location filename="../novelwriter/dialogs/projdetails.py" line="317" />
<source>Words</source> <source>Words</source>
<translation>Palavras</translation> <translation>Palavras</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="316" /> <location filename="../novelwriter/dialogs/projdetails.py" line="318" />
<source>Pages</source> <source>Pages</source>
<translation>Páginas</translation> <translation>Páginas</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="317" /> <location filename="../novelwriter/dialogs/projdetails.py" line="319" />
<source>Page</source> <source>Page</source>
<translation>Página</translation> <translation>Página</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="318" /> <location filename="../novelwriter/dialogs/projdetails.py" line="320" />
<source>Progress</source> <source>Progress</source>
<translation>Progresso</translation> <translation>Progresso</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="353" /> <location filename="../novelwriter/dialogs/projdetails.py" line="355" />
<source>Typical word count for a 5 by 8 inch book page with 11 pt font is 350.</source> <source>Typical word count for a 5 by 8 inch book page with 11 pt font is 350.</source>
<translation>Contagem de palavras típica para uma página de livro de 5 por 8 polegadas com a fonte de 11 pt é 350.</translation> <translation>Contagem de palavras típica para uma página de livro de 5 por 8 polegadas com a fonte de 11 pt é 350.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="356" /> <location filename="../novelwriter/dialogs/projdetails.py" line="358" />
<source>Start counting page numbers from this page.</source> <source>Start counting page numbers from this page.</source>
<translation>Inicia a contagem de numero de páginas à partir dessa página.</translation> <translation>Inicia a contagem de numero de páginas à partir dessa página.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="359" /> <location filename="../novelwriter/dialogs/projdetails.py" line="361" />
<source>Assume a new chapter or partition always start on an odd numbered page.</source> <source>Assume a new chapter or partition always start on an odd numbered page.</source>
<translation>Assume que um capítulo ou partição sempre começa em uma página com numeração ímpar.</translation> <translation>Assume que um capítulo ou partição sempre começa em uma página com numeração ímpar.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="362" /> <location filename="../novelwriter/dialogs/projdetails.py" line="364" />
<source>Words per page</source> <source>Words per page</source>
<translation>Palavras por página</translation> <translation>Palavras por página</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="373" /> <location filename="../novelwriter/dialogs/projdetails.py" line="375" />
<source>Count pages from</source> <source>Count pages from</source>
<translation>Contar páginas à partir da página</translation> <translation>Contar páginas à partir da página</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="384" /> <location filename="../novelwriter/dialogs/projdetails.py" line="386" />
<source>Clear double pages</source> <source>Clear double pages</source>
<translation>Eliminar páginas duplas</translation> <translation>Eliminar páginas duplas</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="447" /> <location filename="../novelwriter/dialogs/projdetails.py" line="449" />
<source>END</source> <source>END</source>
<translation>FIM</translation> <translation>FIM</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="501" /> <location filename="../novelwriter/dialogs/projdetails.py" line="503" />
<source>Untitled</source> <source>Untitled</source>
<translation>Sem Título</translation> <translation>Sem Título</translation>
</message> </message>
@@ -2957,45 +2968,45 @@
<context> <context>
<name>GuiProjectDetailsMain</name> <name>GuiProjectDetailsMain</name>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="168" /> <location filename="../novelwriter/dialogs/projdetails.py" line="185" />
<source>Working Title: {0}</source>
<translation>Nome do projeto</translation>
</message>
<message>
<location filename="../novelwriter/dialogs/projdetails.py" line="177" />
<source>By {0}</source>
<translation>Por {0}</translation>
</message>
<message>
<location filename="../novelwriter/dialogs/projdetails.py" line="187" />
<source>Words</source> <source>Words</source>
<translation>Palavras</translation> <translation>Palavras</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="190" /> <location filename="../novelwriter/dialogs/projdetails.py" line="188" />
<source>Chapters</source> <source>Chapters</source>
<translation>Capítulos</translation> <translation>Capítulos</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="193" /> <location filename="../novelwriter/dialogs/projdetails.py" line="191" />
<source>Scenes</source> <source>Scenes</source>
<translation>Cenas</translation> <translation>Cenas</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="196" /> <location filename="../novelwriter/dialogs/projdetails.py" line="194" />
<source>Revisions</source> <source>Revisions</source>
<translation>Revisões</translation> <translation>Revisões</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="199" /> <location filename="../novelwriter/dialogs/projdetails.py" line="197" />
<source>Editing Time</source> <source>Editing Time</source>
<translation>Tempo de Edição</translation> <translation>Tempo de Edição</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projdetails.py" line="219" /> <location filename="../novelwriter/dialogs/projdetails.py" line="217" />
<source>Path</source> <source>Path</source>
<translation>Caminho</translation> <translation>Caminho</translation>
</message> </message>
<message>
<location filename="../novelwriter/dialogs/projdetails.py" line="253" />
<source>Project: {0}</source>
<translation>Projeto: {0}</translation>
</message>
<message>
<location filename="../novelwriter/dialogs/projdetails.py" line="254" />
<source>By {0}</source>
<translation>Por {0}</translation>
</message>
</context> </context>
<context> <context>
<name>GuiProjectEditMain</name> <name>GuiProjectEditMain</name>
@@ -3782,7 +3793,7 @@
<message> <message>
<location filename="../novelwriter/core/project.py" line="254" /> <location filename="../novelwriter/core/project.py" line="254" />
<source>Could not open project with path: {0}</source> <source>Could not open project with path: {0}</source>
<translation type="unfinished" /> <translation>Não foi possível abrir o projeto com o caminho: {0}</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/core/project.py" line="291" /> <location filename="../novelwriter/core/project.py" line="291" />
+3 -3
View File
@@ -59,9 +59,9 @@ __license__ = "GPLv3"
__author__ = "Veronica Berglyd Olsen" __author__ = "Veronica Berglyd Olsen"
__maintainer__ = "Veronica Berglyd Olsen" __maintainer__ = "Veronica Berglyd Olsen"
__email__ = "code@vkbo.net" __email__ = "code@vkbo.net"
__version__ = "2.0.4" __version__ = "2.0.5"
__hexversion__ = "0x020004f0" __hexversion__ = "0x020005f0"
__date__ = "2023-01-29" __date__ = "2023-02-12"
__status__ = "Stable" __status__ = "Stable"
__domain__ = "novelwriter.io" __domain__ = "novelwriter.io"
__url__ = "https://novelwriter.io" __url__ = "https://novelwriter.io"
+105
View File
@@ -0,0 +1,105 @@
{
"Synopsis": "Sinossi",
"Comment": "Commento",
"Notes": "Note",
"0": "Zero",
"1": "Uno",
"2": "Due",
"3": "Tre",
"4": "Quattro",
"5": "Cinque",
"6": "Sei",
"7": "Sette",
"8": "Otto",
"9": "Nove",
"10": "Dieci",
"11": "Undici",
"12": "Dodici",
"13": "Tredici",
"14": "Quattordici",
"15": "Quindici",
"16": "Sedici",
"17": "Diciassette",
"18": "Diciotto",
"19": "Diciannove",
"20": "Venti",
"21": "Ventuno",
"22": "Ventidue",
"23": "Ventitré",
"24": "Ventiquattro",
"25": "Venticinque",
"26": "Ventisei",
"27": "Ventisette",
"28": "Ventotto",
"29": "Ventinove",
"30": "Trenta",
"31": "Trentuno",
"32": "Trentadue",
"33": "Trentatré",
"34": "Trentaquattro",
"35": "Trentacinque",
"36": "Trentasei",
"37": "Trentasette",
"38": "Trentotto",
"39": "Trentanove",
"40": "Quaranta",
"41": "Quarantuno",
"42": "Quarantadue",
"43": "Quarantatré",
"44": "Quarantaquattro",
"45": "Quarantacinque",
"46": "Quarantasei",
"47": "Quarantasette",
"48": "Quarantotto",
"49": "Quarantanove",
"50": "Cinquanta",
"51": "Cinquantuno",
"52": "Cinquantadue",
"53": "Cinquantatré",
"54": "Cinquantaquattro",
"55": "Cinquantacinque",
"56": "Cinquantasei",
"57": "Cinquantasette",
"58": "Cinquantotto",
"59": "Cinquantanove",
"60": "Sessanta",
"61": "Sessantuno",
"62": "Sessantadue",
"63": "Sessantatre",
"64": "Sessantaquattro",
"65": "Sessantacinque",
"66": "Sessantasei",
"67": "Sessantasette",
"68": "Sessantotto",
"69": "Sessantanove",
"70": "Settanta",
"71": "Settantuno",
"72": "Settantadue",
"73": "Settantatré",
"74": "Settantaquattro",
"75": "Settantacinque",
"76": "Settantasei",
"77": "Settantasette",
"78": "Settantotto",
"79": "Settantanove",
"80": "Ottanta",
"81": "Ottantuno",
"82": "Ottantadue",
"83": "Ottantatré",
"84": "Ottantaquattro",
"85": "Ottantacinque",
"86": "Ottantasei",
"87": "Ottantasette",
"88": "Ottantotto",
"89": "Ottantanove",
"90": "Novanta",
"91": "Novantuno",
"92": "Novantadue",
"93": "Novantatré",
"94": "Novantaquattro",
"95": "Novantacinque",
"96": "Novantasei",
"97": "Novantasette",
"98": "Novantotto",
"99": "Novantanove"
}
+105
View File
@@ -0,0 +1,105 @@
{
"Synopsis": "Сводка",
"Comment": "Комментарий",
"Notes": "Заметки",
"0": "Ноль",
"1": "Один",
"2": "Два",
"3": "Три",
"4": "Четыре",
"5": "Пять",
"6": "Шесть",
"7": "Семь",
"8": "Восемь",
"9": "Девять",
"10": "Десять",
"11": "Одиннадцать",
"12": "Двенадцать",
"13": "Тринадцать",
"14": "Четырнадцать",
"15": "Пятнадцать",
"16": "Шестнадцать",
"17": "Семнадцать",
"18": "Восемнадцатая",
"19": "Девятнадцать",
"20": "Двадцать",
"21": "Двадцать один",
"22": "Двадцать два",
"23": "Двадцать три",
"24": "Двадцать четыре",
"25": "Двадцать пять",
"26": "Двадцать шесть",
"27": "Двадцать семь",
"28": "Двадцать восемь",
"29": "Двадцать девять",
"30": "Тридцать",
"31": "Тридцать один",
"32": "Тридцать два",
"33": "Тридцать три",
"34": "Тридцать четыре",
"35": "Тридцать пятая",
"36": "Тридцать пять",
"37": "Тридцать семь",
"38": "Тридцать восемь",
"39": "Тридцать девять",
"40": "Сорок",
"41": "Сорок один",
"42": "Сорок два",
"43": "Сорок три",
"44": "Сорок четыре",
"45": "Сорок пять",
"46": "Сорок шесть",
"47": "Сорок семь",
"48": "Сорок восемь",
"49": "Сорок девять",
"50": "Пятьдесят",
"51": "Пятьдесят один",
"52": "Пятьдесят два",
"53": "Пятьдесят три",
"54": "Пятьдесят четыре",
"55": "Пятьдесят пять",
"56": "Пятьдесят шесть",
"57": "Пятьдесят семь",
"58": "Пятьдесят восемь",
"59": "Пятьдесят девять",
"60": "Шестьдесят",
"61": "Шестьдесят один",
"62": "Шестьдесят два",
"63": "Шестьдесят три",
"64": "Шестьдесят четыре",
"65": "Шестьдесят пять",
"66": "Шестьдесят шесть",
"67": "Шестьдесят семь",
"68": "Шестьдесят восемь",
"69": "Шестьдесят девять",
"70": "Семьдесят",
"71": "Семьдесят один",
"72": "Семьдесят два",
"73": "Семьдесят три",
"74": "Семьдесят четыре",
"75": "Семьдесят пять",
"76": "Семьдесят шесть",
"77": "Семьдесят семь",
"78": "Семьдесят восемь",
"79": "Семьдесят девять",
"80": "Восемьдесят",
"81": "Восемьдесят один",
"82": "Восемьдесят два",
"83": "Восемьдесят три",
"84": "Восемьдесят четыре",
"85": "Восемьдесят пять",
"86": "Восемьдесят шесть",
"87": "Восемьдесят семь",
"88": "Восемьдесят восемь",
"89": "Восемьдесят девять",
"90": "Девяносто",
"91": "Девяносто один",
"92": "Девяносто два",
"93": "Девяносто три",
"94": "Девяносто четыре",
"95": "Девяносто пять",
"96": "Девяносто шесть",
"97": "Девяносто семь",
"98": "Девяносто восемь",
"99": "Девяносто девять"
}
+1
View File
@@ -25,6 +25,7 @@ translators for the languages currently available:</p>
<b>Dutch:</b> Martijn van der Kleijn (<a href="https://github.com/mvdkleijn">@mvdkleijn</a>)<br> <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>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>German:</b> Myian (<a href="https://github.com/heymyian">@heymyian</a>)<br>
<b>Italian:</b> Riccardo Mangili<br>
<b>Latin American Spanish:</b> Tommy Marplatt (<a href="https://github.com/tmarplatt">@tmarplatt</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>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>Portuguese:</b> Bruno Meneguello (<a href="https://github.com/bkmeneguello">@bkmeneguello</a>)<br>
+13 -1
View File
@@ -70,7 +70,7 @@ document icons. They are technically no longer tree views, but rather a Table of
specific novel root folder. If you have multiple novel root folders, you can select which one to specific novel root folder. If you have multiple novel root folders, you can select which one to
view.</p> view.</p>
<p>In the Novel Tree View, you now also have the option to hide or show a third column of data. <p>In the Novel Tree View, you now also have the option to hide or show a third column of data.
Currently, you can chose between "Point of View Character", "Focus Character" and "Novel Plot". If Currently, you can choose between "Point of View Character", "Focus Character" and "Novel Plot". If
you referenced more than one in the document, the column will only show the first entry, so make you referenced more than one in the document, the column will only show the first entry, so make
sure the most important one is listed first in your document if you use this feature. An arrow icon sure the most important one is listed first in your document if you use this feature. An arrow icon
is also visible at the end of each row in the tree, and if you click on it, a tool tip should pop is also visible at the end of each row in the tree, and if you click on it, a tool tip should pop
@@ -114,5 +114,17 @@ dialog box, replacing the Credits section on the main About tab.</p>
<p>This is a patch release that fixes a bug where novelWriter would crash if PyQt5 version 5.15.8 <p>This is a patch release that fixes a bug where novelWriter would crash if PyQt5 version 5.15.8
was installed and imported.</p> was installed and imported.</p>
<h3>Patch 2.0.5 &ndash; 12 February 2023</h3>
<p>This is a patch release that fixes a number of minor bugs and usability issues.</p>
<p>The Project Details dialog now properly updates when another project is opened, and the "Total
editing time" value has a less ambiguous time format. The editor no longer inserts blank lines if
block formats are applied to an empty line. The optional last column in the Novel Tree will now
show all items of the selected type, not only the first, and the column size can be adjusted from
the same menu where the column content is selected. The Open Document build output has been updated
to ODF 1.3 extended format, and passes validation.</p>
<p>An Italian translation has been added, and Russian is currently available for project builds. A
full translation into Russian is on its way.</p>
</body> </body>
</html> </html>
+1 -1
View File
@@ -59,7 +59,7 @@ VALID_MAP = {
"widthCol3", "widthCol4", "wordsPerPage", "countFrom", "clearDouble", "widthCol3", "widthCol4", "wordsPerPage", "countFrom", "clearDouble",
}, },
"GuiWordList": {"winWidth", "winHeight"}, "GuiWordList": {"winWidth", "winHeight"},
"GuiNovelView": {"lastCol"}, "GuiNovelView": {"lastCol", "lastColSize"},
} }
+3 -3
View File
@@ -207,7 +207,7 @@ class NWProjectData:
"""Set a new project name. """Set a new project name.
""" """
if value != self._name: if value != self._name:
self._name = simplified(str(value)) self._name = simplified(str(value or ""))
self.theProject.setProjectChanged(True) self.theProject.setProjectChanged(True)
return return
@@ -215,7 +215,7 @@ class NWProjectData:
"""Set a new novel title. """Set a new novel title.
""" """
if value != self._title: if value != self._title:
self._title = simplified(str(value)) self._title = simplified(str(value or ""))
self.theProject.setProjectChanged(True) self.theProject.setProjectChanged(True)
return return
@@ -223,7 +223,7 @@ class NWProjectData:
"""Set the author value. """Set the author value.
""" """
if value != self._title: if value != self._title:
self._author = simplified(str(value)) self._author = simplified(str(value or ""))
self.theProject.setProjectChanged(True) self.theProject.setProjectChanged(True)
return return
+9 -1
View File
@@ -79,8 +79,16 @@ class NWStorage:
@property @property
def contentPath(self): def contentPath(self):
"""Return the path used for project content. The folder must
already exist, otherwise this property is None.
"""
if self._runtimePath is not None: if self._runtimePath is not None:
return self._runtimePath / "content" contentPath = self._runtimePath / "content"
if contentPath.is_dir():
return contentPath
else:
logger.error("Path not found: %s", contentPath)
return None
return None return None
## ##
+33 -9
View File
@@ -44,12 +44,13 @@ XML_NS = {
"text": "urn:oasis:names:tc:opendocument:xmlns:text:1.0", "text": "urn:oasis:names:tc:opendocument:xmlns:text:1.0",
"meta": "urn:oasis:names:tc:opendocument:xmlns:meta:1.0", "meta": "urn:oasis:names:tc:opendocument:xmlns:meta:1.0",
"fo": "urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0", "fo": "urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0",
"dc": "http://purl.org/dc/elements/1.1/",
} }
MANI_NS = { MANI_NS = {
"manifest": "urn:oasis:names:tc:opendocument:xmlns:manifest:1.0" "manifest": "urn:oasis:names:tc:opendocument:xmlns:manifest:1.0"
} }
OFFICE_NS = { OFFICE_NS = {
"office": XML_NS["office"] "office": "urn:oasis:names:tc:opendocument:xmlns:office:1.0",
} }
@@ -65,7 +66,7 @@ def _mkTag(nsName, tagName, nsMap=XML_NS):
# Mimetype and Version # Mimetype and Version
X_MIME = "application/vnd.oasis.opendocument.text" X_MIME = "application/vnd.oasis.opendocument.text"
X_VERS = "1.2" X_VERS = "1.3"
# Text Formatting Tags # Text Formatting Tags
TAG_BR = _mkTag("text", "line-break") TAG_BR = _mkTag("text", "line-break")
@@ -261,7 +262,7 @@ class ToOdt(Tokenizer):
# =============== # ===============
if self._headerText == "": if self._headerText == "":
theTitle = self.theProject.data.title theTitle = self.theProject.data.title or self.theProject.data.name
theAuth = self.theProject.data.author theAuth = self.theProject.data.author
self._headerText = f"{theTitle} / {theAuth} /" self._headerText = f"{theTitle} / {theAuth} /"
@@ -328,13 +329,37 @@ class ToOdt(Tokenizer):
self._xText = etree.SubElement(self._xBody, _mkTag("office", "text")) self._xText = etree.SubElement(self._xBody, _mkTag("office", "text"))
# Meta Data timeStamp = datetime.now().isoformat(sep="T", timespec="seconds")
# Office Meta Data
xMeta = etree.SubElement(self._xMeta, _mkTag("meta", "creation-date")) xMeta = etree.SubElement(self._xMeta, _mkTag("meta", "creation-date"))
xMeta.text = datetime.now().isoformat(sep="T", timespec="seconds") xMeta.text = timeStamp
xMeta = etree.SubElement(self._xMeta, _mkTag("meta", "generator")) xMeta = etree.SubElement(self._xMeta, _mkTag("meta", "generator"))
xMeta.text = f"novelWriter/{novelwriter.__version__}" xMeta.text = f"novelWriter/{novelwriter.__version__}"
xMeta = etree.SubElement(self._xMeta, _mkTag("meta", "initial-creator"))
xMeta.text = self.theProject.data.author
xMeta = etree.SubElement(self._xMeta, _mkTag("meta", "editing-cycles"))
xMeta.text = str(self.theProject.data.saveCount)
# Format is: PnYnMnDTnHnMnS
# https://www.w3.org/TR/2004/REC-xmlschema-2-20041028/#duration
eT = self.theProject.data.editTime
xMeta = etree.SubElement(self._xMeta, _mkTag("meta", "editing-duration"))
xMeta.text = f"P{eT//86400:d}DT{eT%86400//3600:d}H{eT%3600//60:d}M{eT%60:d}S"
# Dublin Core Meta Data
xMeta = etree.SubElement(self._xMeta, _mkTag("dc", "title"))
xMeta.text = self.theProject.data.title or self.theProject.data.name
xMeta = etree.SubElement(self._xMeta, _mkTag("dc", "date"))
xMeta.text = timeStamp
xMeta = etree.SubElement(self._xMeta, _mkTag("dc", "creator"))
xMeta.text = self.theProject.data.author
self._pageStyles() self._pageStyles()
self._defaultStyles() self._defaultStyles()
self._useableStyles() self._useableStyles()
@@ -408,7 +433,7 @@ class ToOdt(Tokenizer):
elif tType == self.T_TITLE: elif tType == self.T_TITLE:
tHead = tText.replace(r"\\", "\n") tHead = tText.replace(r"\\", "\n")
self._addTextPar("Title", oStyle, tHead, isHead=True) self._addTextPar("Title", oStyle, tHead, isHead=False) # Title must be text:p
elif tType == self.T_UNNUM: elif tType == self.T_UNNUM:
tHead = tText.replace(r"\\", "\n") tHead = tText.replace(r"\\", "\n")
@@ -503,9 +528,8 @@ class ToOdt(Tokenizer):
etree.SubElement(xMani, mFile, attrib={mPath: "styles.xml", mType: "text/xml"}) etree.SubElement(xMani, mFile, attrib={mPath: "styles.xml", mType: "text/xml"})
oRoot = _mkTag("office", "document-settings", nsMap=OFFICE_NS) oRoot = _mkTag("office", "document-settings", nsMap=OFFICE_NS)
oSett = _mkTag("office", "settings", nsMap=OFFICE_NS) oVers = _mkTag("office", "version", nsMap=OFFICE_NS)
xSett = etree.Element(oRoot, nsmap=OFFICE_NS) xSett = etree.Element(oRoot, nsmap=OFFICE_NS, attrib={oVers: X_VERS})
etree.SubElement(xSett, oSett)
with ZipFile(savePath, mode="w") as outFile: with ZipFile(savePath, mode="w") as outFile:
outFile.writestr("mimetype", X_MIME) outFile.writestr("mimetype", X_MIME)
+9 -7
View File
@@ -34,7 +34,7 @@ from PyQt5.QtWidgets import (
QLineEdit, QSpinBox, QTreeWidget, QTreeWidgetItem, QVBoxLayout, QWidget QLineEdit, QSpinBox, QTreeWidget, QTreeWidgetItem, QVBoxLayout, QWidget
) )
from novelwriter.common import numberToRoman from novelwriter.common import formatTime, numberToRoman
from novelwriter.custom import PagedDialog, QSwitch from novelwriter.custom import PagedDialog, QSwitch
from novelwriter.constants import nwUnicode from novelwriter.constants import nwUnicode
from novelwriter.gui.components import NovelSelector from novelwriter.gui.components import NovelSelector
@@ -156,7 +156,7 @@ class GuiProjectDetailsMain(QWidget):
# Header # Header
# ====== # ======
self.bookTitle = QLabel(self.theProject.data.title) self.bookTitle = QLabel("")
bookFont = self.bookTitle.font() bookFont = self.bookTitle.font()
bookFont.setPointSizeF(2.2*fPt) bookFont.setPointSizeF(2.2*fPt)
bookFont.setWeight(QFont.Bold) bookFont.setWeight(QFont.Bold)
@@ -164,9 +164,7 @@ class GuiProjectDetailsMain(QWidget):
self.bookTitle.setAlignment(Qt.AlignHCenter) self.bookTitle.setAlignment(Qt.AlignHCenter)
self.bookTitle.setWordWrap(True) self.bookTitle.setWordWrap(True)
self.projName = QLabel( self.projName = QLabel("")
self.tr("Working Title: {0}").format(self.theProject.data.name)
)
workFont = self.projName.font() workFont = self.projName.font()
workFont.setPointSizeF(0.8*fPt) workFont.setPointSizeF(0.8*fPt)
workFont.setItalic(True) workFont.setItalic(True)
@@ -174,7 +172,7 @@ class GuiProjectDetailsMain(QWidget):
self.projName.setAlignment(Qt.AlignHCenter) self.projName.setAlignment(Qt.AlignHCenter)
self.projName.setWordWrap(True) self.projName.setWordWrap(True)
self.bookAuthors = QLabel(self.tr("By {0}").format(self.theProject.data.author)) self.bookAuthors = QLabel("")
authFont = self.bookAuthors.font() authFont = self.bookAuthors.font()
authFont.setPointSizeF(1.2*fPt) authFont.setPointSizeF(1.2*fPt)
self.bookAuthors.setFont(authFont) self.bookAuthors.setFont(authFont)
@@ -251,11 +249,15 @@ class GuiProjectDetailsMain(QWidget):
nwCount = pIndex.getNovelWordCount() nwCount = pIndex.getNovelWordCount()
edTime = self.theProject.getCurrentEditTime() edTime = self.theProject.getCurrentEditTime()
self.bookTitle.setText(self.theProject.data.title or self.theProject.data.name)
self.projName.setText(self.tr("Project: {0}").format(self.theProject.data.name))
self.bookAuthors.setText(self.tr("By {0}").format(self.theProject.data.author))
self.wordCountVal.setText(f"{nwCount:n}") self.wordCountVal.setText(f"{nwCount:n}")
self.chapCountVal.setText(f"{hCounts[2]:n}") self.chapCountVal.setText(f"{hCounts[2]:n}")
self.sceneCountVal.setText(f"{hCounts[3]:n}") self.sceneCountVal.setText(f"{hCounts[3]:n}")
self.revCountVal.setText(f"{self.theProject.data.saveCount:n}") self.revCountVal.setText(f"{self.theProject.data.saveCount:n}")
self.editTimeVal.setText(f"{edTime//3600:02d}:{edTime%3600//60:02d}") self.editTimeVal.setText(formatTime(edTime))
self.projPathVal.setText(str(self.theProject.storage.storagePath)) self.projPathVal.setText(str(self.theProject.storage.storagePath))
+8 -1
View File
@@ -1750,6 +1750,7 @@ class GuiDocEditor(QTextEdit):
# Remove existing format first, if any # Remove existing format first, if any
theText = theBlock.text() theText = theBlock.text()
hasText = len(theText) > 0
if theText.startswith("@"): if theText.startswith("@"):
logger.error("Cannot apply block format to keyword/value line") logger.error("Cannot apply block format to keyword/value line")
return False return False
@@ -1855,11 +1856,17 @@ class GuiDocEditor(QTextEdit):
posS = theCursor.selectionStart() posS = theCursor.selectionStart()
theCursor.removeSelectedText() theCursor.removeSelectedText()
theCursor.setPosition(posS) theCursor.setPosition(posS)
if posS > 0:
if posS > 0 and hasText:
# If the block already had text, we must insert a new block
# first before we can add back the text to it.
theCursor.insertBlock() theCursor.insertBlock()
theCursor.insertText(theText) theCursor.insertText(theText)
if posO - cOffset >= 0: if posO - cOffset >= 0:
theCursor.setPosition(posO - cOffset) theCursor.setPosition(posO - cOffset)
theCursor.endEditBlock() theCursor.endEditBlock()
self.setTextCursor(theCursor) self.setTextCursor(theCursor)
+47 -10
View File
@@ -34,12 +34,13 @@ from time import time
from PyQt5.QtGui import QFont, QPalette from PyQt5.QtGui import QFont, QPalette
from PyQt5.QtCore import Qt, QSize, pyqtSlot, pyqtSignal from PyQt5.QtCore import Qt, QSize, pyqtSlot, pyqtSignal
from PyQt5.QtWidgets import ( from PyQt5.QtWidgets import (
QAbstractItemView, QActionGroup, QFrame, QHBoxLayout, QHeaderView, QMenu, QAbstractItemView, QActionGroup, QFrame, QHBoxLayout, QHeaderView,
QSizePolicy, QToolButton, QToolTip, QTreeWidget, QTreeWidgetItem, QInputDialog, QMenu, QSizePolicy, QToolButton, QToolTip, QTreeWidget,
QVBoxLayout, QWidget QTreeWidgetItem, QVBoxLayout, QWidget
) )
from novelwriter.enum import nwDocMode, nwItemClass, nwOutline from novelwriter.enum import nwDocMode, nwItemClass, nwOutline
from novelwriter.common import minmax
from novelwriter.constants import nwHeaders, nwKeyWords, nwLabels, trConst from novelwriter.constants import nwHeaders, nwKeyWords, nwLabels, trConst
from novelwriter.gui.components import NovelSelector from novelwriter.gui.components import NovelSelector
@@ -126,20 +127,28 @@ class GuiNovelView(QWidget):
lastCol = self.theProject.options.getEnum( lastCol = self.theProject.options.getEnum(
"GuiNovelView", "lastCol", NovelTreeColumn, NovelTreeColumn.HIDDEN "GuiNovelView", "lastCol", NovelTreeColumn, NovelTreeColumn.HIDDEN
) )
lastColSize = self.theProject.options.getInt(
"GuiNovelView", "lastColSize", 25
)
self.clearProject() self.clearProject()
self.novelBar.buildNovelRootMenu() self.novelBar.buildNovelRootMenu()
self.novelBar.setLastColType(lastCol, doRefresh=False) self.novelBar.setLastColType(lastCol, doRefresh=False)
self.novelBar.setCurrentRoot(lastNovel) self.novelBar.setCurrentRoot(lastNovel)
self.novelBar.setEnabled(True) self.novelBar.setEnabled(True)
self.novelTree.setLastColSize(lastColSize)
return return
def closeProjectTasks(self): def closeProjectTasks(self):
"""Run closing project tasks. """Run closing project tasks.
""" """
lastColType = self.novelTree.lastColType lastColType = self.novelTree.lastColType
lastColSize = self.novelTree.lastColSize
self.theProject.options.setValue("GuiNovelView", "lastCol", lastColType) self.theProject.options.setValue("GuiNovelView", "lastCol", lastColType)
self.theProject.options.setValue("GuiNovelView", "lastColSize", lastColSize)
return return
def setTreeFocus(self): def setTreeFocus(self):
@@ -233,6 +242,10 @@ class GuiNovelToolBar(QWidget):
self._addLastColAction(NovelTreeColumn.FOCUS, self.tr("Focus Character")) self._addLastColAction(NovelTreeColumn.FOCUS, self.tr("Focus Character"))
self._addLastColAction(NovelTreeColumn.PLOT, self.tr("Novel Plot")) self._addLastColAction(NovelTreeColumn.PLOT, self.tr("Novel Plot"))
self.mLastCol.addSeparator()
self.aLastColSize = self.mLastCol.addAction(self.tr("Column Size"))
self.aLastColSize.triggered.connect(self._selectLastColumnSize)
self.tbMore = QToolButton(self) self.tbMore = QToolButton(self)
self.tbMore.setToolTip(self.tr("More Options")) self.tbMore.setToolTip(self.tr("More Options"))
self.tbMore.setIconSize(QSize(iPx, iPx)) self.tbMore.setIconSize(QSize(iPx, iPx))
@@ -339,6 +352,19 @@ class GuiNovelToolBar(QWidget):
self.novelView.novelTree.refreshTree(rootHandle=rootHandle, overRide=True) self.novelView.novelTree.refreshTree(rootHandle=rootHandle, overRide=True)
return return
@pyqtSlot()
def _selectLastColumnSize(self):
"""Set the maximum width for the last column.
"""
oldSize = self.novelView.novelTree.lastColSize
newSize, isOk = QInputDialog.getInt(
self, self.tr("Column Size"), self.tr("Maximum column size in %"), oldSize, 15, 75, 5
)
if isOk:
self.novelView.novelTree.setLastColSize(newSize)
self._refreshNovelTree()
return
## ##
# Internal Functions # Internal Functions
## ##
@@ -379,10 +405,11 @@ class GuiNovelTree(QTreeWidget):
self.theProject = novelView.mainGui.theProject self.theProject = novelView.mainGui.theProject
# Internal Variables # Internal Variables
self._treeMap = {} self._treeMap = {}
self._lastBuild = 0 self._lastBuild = 0
self._lastCol = NovelTreeColumn.POV self._lastCol = NovelTreeColumn.POV
self._actHandle = None self._lastColSize = 0.25
self._actHandle = None
# Cached Strings # Cached Strings
self._povLabel = trConst(nwLabels.KEY_NAME[nwKeyWords.POV_KEY]) self._povLabel = trConst(nwLabels.KEY_NAME[nwKeyWords.POV_KEY])
@@ -470,6 +497,10 @@ class GuiNovelTree(QTreeWidget):
def lastColType(self): def lastColType(self):
return self._lastCol return self._lastCol
@property
def lastColSize(self):
return int(self._lastColSize * 100)
## ##
# Class Methods # Class Methods
## ##
@@ -552,6 +583,12 @@ class GuiNovelTree(QTreeWidget):
self.refreshTree(rootHandle=lastNovel, overRide=True) self.refreshTree(rootHandle=lastNovel, overRide=True)
return return
def setLastColSize(self, colSize):
"""Set the column size in integer values between 15 and 75.
"""
self._lastColSize = minmax(colSize, 15, 75)/100.0
return
def setActiveHandle(self, tHandle): def setActiveHandle(self, tHandle):
"""Highlight the rows associated with a given handle. """Highlight the rows associated with a given handle.
""" """
@@ -619,7 +656,7 @@ class GuiNovelTree(QTreeWidget):
newW = event.size().width() newW = event.size().width()
oldW = event.oldSize().width() oldW = event.oldSize().width()
if newW != oldW: if newW != oldW:
eliW = int(0.25 * newW) eliW = int(self._lastColSize * newW)
fMetric = self.fontMetrics() fMetric = self.fontMetrics()
for i in range(self.topLevelItemCount()): for i in range(self.topLevelItemCount()):
trItem = self.topLevelItem(i) trItem = self.topLevelItem(i)
@@ -709,7 +746,7 @@ class GuiNovelTree(QTreeWidget):
trItem.setData(self.C_MORE, Qt.DecorationRole, self._pMore) trItem.setData(self.C_MORE, Qt.DecorationRole, self._pMore)
# Custom column # Custom column
mW = int(0.25 * self.viewport().width()) mW = int(self._lastColSize * self.viewport().width())
lastText, toolTip = self._getLastColumnText(tHandle, sTitle) lastText, toolTip = self._getLastColumnText(tHandle, sTitle)
elideText = self.fontMetrics().elidedText(lastText, Qt.ElideRight, mW) elideText = self.fontMetrics().elidedText(lastText, Qt.ElideRight, mW)
trItem.setText(self.C_EXTRA, elideText) trItem.setText(self.C_EXTRA, elideText)
@@ -741,7 +778,7 @@ class GuiNovelTree(QTreeWidget):
if refData: if refData:
toolText = ", ".join(refData) toolText = ", ".join(refData)
return refData[0], f"{refName}: {toolText}" return toolText, f"{refName}: {toolText}"
return "", "" return "", ""
+2 -2
View File
@@ -1,6 +1,6 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<novelWriterXML appVersion="2.0.4" hexVersion="0x020004f0" fileVersion="1.5" timeStamp="2023-01-29 02:33:40"> <novelWriterXML appVersion="2.0.5" hexVersion="0x020005f0" fileVersion="1.5" timeStamp="2023-02-12 16:02:30">
<project id="e2be99af-f9bf-4403-857a-c3d1ac25abea" saveCount="1468" autoCount="237" editTime="74401"> <project id="e2be99af-f9bf-4403-857a-c3d1ac25abea" saveCount="1471" autoCount="237" editTime="74437">
<name>Sample Project</name> <name>Sample Project</name>
<title>Sample Project</title> <title>Sample Project</title>
<author>Jane Smith</author> <author>Jane Smith</author>
+35
View File
@@ -396,6 +396,36 @@ def buildQtI18nTS(sysArgs):
return return
##
# Generage MacOS PList
##
def genMacOSPlist():
"""Set necessary values for .plist file.
"""
numVers, _, _ = extractVersion()
pkgVers = compactVersion(numVers)
outDir = "setup/macos"
copyrightYear = datetime.datetime.now().year
# These keys are no longer used but are present for compatability
pkgVersMaj, pkgVersMin, _ = pkgVers.split(".")
plistXML = readFile(f"{outDir}/Info.plist.template").format(
macosBundleSVers=pkgVers,
macosBundleVers=numVers,
macosBundleVersMajor=pkgVersMaj,
macosBundleVersMinor=pkgVersMin,
macosBundleCopyright=f"Copyright 2018{copyrightYear}, Veronica Berglyd Olsen",
)
print(f"Writing Info.plist to {outDir}/Info.plist")
writeFile(f"{outDir}/Info.plist", plistXML)
return
## ##
# Sample Project ZIP File Builder (sample) # Sample Project ZIP File Builder (sample)
## ##
@@ -1862,6 +1892,7 @@ if __name__ == "__main__":
" The files to be updated must be provided as arguments.", " The files to be updated must be provided as arguments.",
" qtlrelease Build the language files for internationalisation.", " qtlrelease Build the language files for internationalisation.",
" clean-assets Delete assets built by manual, sample and qtlrelease.", " clean-assets Delete assets built by manual, sample and qtlrelease.",
" gen-plist Generates an Info.plist for use in a MacOS Bundle",
"", "",
"Python Packaging:", "Python Packaging:",
"", "",
@@ -1944,6 +1975,10 @@ if __name__ == "__main__":
sys.argv.remove("clean-assets") sys.argv.remove("clean-assets")
cleanBuiltAssets() cleanBuiltAssets()
if "gen-plist" in sys.argv:
sys.argv.remove("gen-plist")
genMacOSPlist()
# Python Packaging # Python Packaging
# ================ # ================
+10
View File
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
<key>com.apple.security.cs.allow-dyld-environment-variables</key>
<true/>
</dict>
</plist>
+62
View File
@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
<key>NSHighResolutionCapable</key>
<string>True</string>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>novelWriter</string>
<key>CFBundleGetInfoString</key>
<string>novelWriter: A markdown-like text editor for planning and writing novels.</string>
<key>CFBundleIconFile</key>
<string>novelwriter.icns</string>
<key>CFBundleIdentifier</key>
<string>io.novelwriter.novelWriter</string>
<key>CFBundleName</key>
<string>novelWriter</string>
<key>CFBundleDisplayName</key>
<string>novelWriter</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleShortVersionString</key>
<string>{macosBundleSVers}</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>{macosBundleVers}</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>NSHumanReadableCopyright</key>
<string>{macosBundleCopyright}</string>
<key>IFMajorVersion</key>
<integer>{macosBundleVersMajor}</integer>
<key>IFMinorVersion</key>
<integer>{macosBundleVersMinor}</integer>
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>nwx</string>
</array>
<key>CFBundleTypeName</key>
<string>novelWriter Project</string>
<key>CFBundleTypeOSTypes</key>
<array>
<string>TEXT</string>
<string>utxt</string>
<string>TUTX</string>
<string>****</string>
</array>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSHandlerRank</key>
<string>Alternate</string>
</dict>
</array>
</dict>
</plist>
+171
View File
@@ -0,0 +1,171 @@
#! /bin/bash
# use RAM disk if possible
if [ -d /dev/shm ]; then
TEMP_BASE=/dev/shm
else
TEMP_BASE=/tmp
fi
BUILD_DIR=$(mktemp -d "$TEMP_BASE/novelWriter-build-XXXXXX")
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
SRC_DIR="$SCRIPT_DIR/../.."
RLS_DIR="$SRC_DIR/dist_macos"
echo "Script Dir: $SCRIPT_DIR"
cleanup () {
if [ -d "$BUILD_DIR" ]; then
rm -rf "$BUILD_DIR"
fi
}
trap cleanup EXIT
echo "Building in: $BUILD_DIR"
OLD_CWD="$(pwd)"
VERSION="$(awk '/^__version__/{print substr($NF,2,length($NF)-2)}' $SRC_DIR/novelwriter/__init__.py)"
pushd "$SRC_DIR" || exit 1
python3 setup.py gen-plist
if [ -f $SRC_DIR/setup/macos/Info.plist ]; then
echo "Found: setup/macos/Info.plist"
else
echo "Missing: setup/macos/Info.plist"
exit 1
fi
# Check that other assets are present
if [ -f $SRC_DIR/novelwriter/assets/sample.zip ]; then
echo "Found: novelwriter/assets/sample.zip"
else
echo "Missing: novelwriter/assets/sample.zip"
exit 1
fi
if [ -f $SRC_DIR/novelwriter/assets/manual.pdf ]; then
echo "Found: novelwriter/assets/manual.pdf"
else
echo "Missing: novelwriter/assets/manual.pdf"
exit 1
fi
if [ -f $SRC_DIR/novelwriter/assets/i18n/nw_en_US.qm ]; then
echo "Found: novelwriter/assets/i18n/nw_en_US.qm"
else
echo "Missing: novelwriter/assets/i18n/nw_en_US.qm"
exit 1
fi
ls -lah .
popd || exit 1
pushd "$BUILD_DIR"/ || exit 1
echo "Downloading Miniconda ..."
# install Miniconda, a self-contained Python distribution
curl -LO https://repo.continuum.io/miniconda/Miniconda3-latest-MacOSX-x86_64.sh
bash Miniconda3-latest-MacOSX-x86_64.sh -b -p ~/miniconda -f
rm Miniconda3-latest-MacOSX-x86_64.sh
export PATH="$HOME/miniconda/bin:$PATH"
echo "Creating conda env ..."
# create conda env
conda create -n novelWriter -c conda-forge python=3.10 --yes
source activate novelWriter
echo "installing dictionaries ..."
conda install -c conda-forge enchant hunspell-en --yes
echo "installing python deps ..."
# install dependencies
pip install -r "$SRC_DIR/requirements.txt"
# leave conda env
conda deactivate
echo "Building app bundle ..."
# create .app Framework
mkdir -p novelWriter.app/Contents/
mkdir novelWriter.app/Contents/MacOS novelWriter.app/Contents/Resources novelWriter.app/Contents/Resources/novelWriter
cp $SRC_DIR/setup/macos/Info.plist novelWriter.app/Contents/Info.plist
echo "Copying miniconda env to bundle ..."
cp -R ~/miniconda/envs/novelWriter/* novelWriter.app/Contents/Resources/
echo "Copying novelWriter to bundle ..."
FILES_COPY=(
"CHANGELOG.md" "MANIFEST.in" "CREDITS.md" "LICENSE.md"
"CONTRIBUTING.md" "CODE_OF_CONDUCT.md" "novelwriter"
"novelWriter.py"
)
for file in "${FILES_COPY[@]}"; do
echo "Copying $SRC_DIR/$file ..."
cp -R $SRC_DIR/$file novelWriter.app/Contents/Resources/novelWriter/
done
cp $SRC_DIR/setup/macos/novelwriter.icns novelWriter.app/Contents/Resources/
# create entry script
cat > novelWriter.app/Contents/MacOS/novelWriter <<\EOF
#!/bin/bash
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
$DIR/../Resources/bin/python -sE $DIR/../Resources/novelWriter/novelWriter.py $@
EOF
# make executable
chmod a+x novelWriter.app/Contents/MacOS/novelWriter
#do codesigning
#echo "Signing bundle ..."
#sudo codesign --sign - --deep --force --entitlements "$SCRIPT_DIR/../macos/App.entitlements" --options runtime "novelWriter.app/Contents/MacOS/novelWriter"
# remove bloat
pushd novelWriter.app/Contents/Resources || exit 1
echo "Cleaning unused files from bundle ..."
# cleanup commands HERE
find . -type d -iname '__pycache__' -print0 | xargs -0 rm -r
rm -rf pkgs
rm -rf cmake
rm -rf share/{gtk-,}doc
# Remove the files from the 3.1 symlink
rm -rf lib/python3.1
# remove web engine
rm lib/python3.*/site-packages/PyQt5/QtWebEngine* || true
rm -r lib/python3.*/site-packages/PyQt5/Qt/translations/qtwebengine* || true
rm lib/python3.*/site-packages/PyQt5/Qt/resources/qtwebengine* || true
rm -r lib/python3.*/site-packages/PyQt5/Qt/qml/QtWebEngine* || true
rm -r lib/python3.*/site-packages/PyQt5/Qt/plugins/webview/libqtwebview* || true
rm lib/python3.*/site-packages/PyQt5/Qt/libexec/QtWebEngineProcess* || true
rm lib/python3.*/site-packages/PyQt5/Qt/lib/libQt5WebEngine* || true
popd || exit 1
popd || exit 1
echo "Packageing App ..."
mkdir -p $RLS_DIR
# generate .dmg
brew install create-dmg
# "--skip-jenkins" is a temporary workaround for https://github.com/create-dmg/create-dmg/issues/72
create-dmg --volname "novelWriter $VERSION" --volicon $SRC_DIR/setup/macos/novelwriter.icns \
--window-pos 200 120 --window-size 800 400 --icon-size 100 --icon novelWriter.app 200 190 --hide-extension novelWriter.app \
--app-drop-link 600 185 $RLS_DIR/novelWriter-"${VERSION}".dmg "$BUILD_DIR"/
pushd $BUILD_DIR || exit 1
zip -qr novelWriter.app.zip novelWriter.app
popd || exit 1
mv $BUILD_DIR/novelWriter.app.zip $RLS_DIR/novelWriter-"${VERSION}".app.zip
+70
View File
@@ -0,0 +1,70 @@
#! /usr/bin/env bash
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
function generate_linux () {
echo "Generating on Linux ..."
if ! command -v png2icns &> /dev/null
then
echo "png2icns cound not be found, it is required. Please install a package like icnsutils or libicns."
exit
fi
if ! command -v convert $> /dev/null
then
echo "convert could not be found, it is required. please install a imagemagick package."
exit
fi
mkdir -p $SCRIPT_DIR/icons
sizes=( 16 32 64 128 256 )
for base in "${sizes[@]}"; do
let basex2=${base}*2
size="${base}x${base}"
echo "Copying files for $size"
double=${basex2}x${basex2}
cp $SCRIPT_DIR/../data/hicolor/${size}/apps/novelwriter.png $SCRIPT_DIR/icons/icon_${size}.png
echo "Resizing ${size}@2x to $double from $size"
convert $SCRIPT_DIR/icons/icon_${size}.png -resize $double $SCRIPT_DIR/icons/icon_${size}@2x.png
done
png2icns $SCRIPT_DIR/novelwriter.icns $SCRIPT_DIR/icons/icon_*.png
rm -r $SCRIPT_DIR/icons
echo "Done"
}
function generate_macos () {
echo "Generating on MacOs ..."
mkdir -p $SCRIPT_DIR/icons
echo "Building Iconset ..."
sizes=( 16 32 64 128 256 )
for base in "${sizes[@]}"; do
let basex2=${base}*2
size="${base}x${base}"
echo "Copying files for $size"
double=${basex2}x${basex2}
cp $SCRIPT_DIR/../data/hicolor/${size}/apps/novelwriter.png $SCRIPT_DIR/icons/icon_${size}.png
cp $SCRIPT_DIR/../data/hicolor/${size}/apps/novelwriter.png $SCRIPT_DIR/icons/icon_${size}@2x.png
echo "Resizing ${size}@2x to $double from $size"
sips -Z $basex2 $SCRIPT_DIR/icons/icon_${size}@2x.png
done
rm -rf $SCRIPT_DIR/novelwriter.iconset
mv $SCRIPT_DIR/icons $SCRIPT_DIR/novelwriter.iconset
echo "Generating icns ..."
iconutil -c icns $SCRIPT_DIR/novelwriter.iconset
echo "Done"
}
unameOut="$(uname -s)"
case "$unameOut" in
Linux*) generate_linux;;
Darwin*) generate_macos;;
*) echo "Unsupported OS"
esac
Binary file not shown.
@@ -1,8 +1,14 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" office:version="1.2" office:mimetype="application/vnd.oasis.opendocument.text"> <office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" office:version="1.3" office:mimetype="application/vnd.oasis.opendocument.text">
<office:meta> <office:meta>
<meta:creation-date>2022-01-02T19:56:15</meta:creation-date> <meta:creation-date>2023-02-12T15:10:11</meta:creation-date>
<meta:generator>novelWriter/1.6-alpha0</meta:generator> <meta:generator>novelWriter/2.0.4</meta:generator>
<meta:initial-creator>Jane Smith</meta:initial-creator>
<meta:editing-cycles>1234</meta:editing-cycles>
<meta:editing-duration>P42DT12H34M56S</meta:editing-duration>
<dc:title>Test Project</dc:title>
<dc:date>2023-02-12T15:10:11</dc:date>
<dc:creator>Jane Smith</dc:creator>
</office:meta> </office:meta>
<office:font-face-decls> <office:font-face-decls>
<style:font-face style:name="Liberation Serif" style:font-pitch="variable"/> <style:font-face style:name="Liberation Serif" style:font-pitch="variable"/>
@@ -66,7 +72,7 @@
<office:master-styles> <office:master-styles>
<style:master-page style:name="Standard" style:page-layout-name="PM1"> <style:master-page style:name="Standard" style:page-layout-name="PM1">
<style:header> <style:header>
<text:p text:style-name="Header">/ / <text:page-number text:select-page="current">2</text:page-number></text:p> <text:p text:style-name="Header">Test Project / Jane Smith / <text:page-number text:select-page="current">2</text:page-number></text:p>
</style:header> </style:header>
<style:header-first> <style:header-first>
<text:p text:style-name="Header"/> <text:p text:style-name="Header"/>
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<office:document-content xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" office:version="1.2"> <office:document-content xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" office:version="1.3">
<office:font-face-decls> <office:font-face-decls>
<style:font-face style:name="Liberation Serif" style:font-pitch="variable"/> <style:font-face style:name="Liberation Serif" style:font-pitch="variable"/>
</office:font-face-decls> </office:font-face-decls>
@@ -1,6 +1,6 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<manifest:manifest xmlns:manifest="urn:oasis:names:tc:opendocument:xmlns:manifest:1.0" manifest:version="1.2"> <manifest:manifest xmlns:manifest="urn:oasis:names:tc:opendocument:xmlns:manifest:1.0" manifest:version="1.3">
<manifest:file-entry manifest:full-path="/" manifest:version="1.2" manifest:media-type="application/vnd.oasis.opendocument.text"/> <manifest:file-entry manifest:full-path="/" manifest:version="1.3" manifest:media-type="application/vnd.oasis.opendocument.text"/>
<manifest:file-entry manifest:full-path="settings.xml" manifest:media-type="text/xml"/> <manifest:file-entry manifest:full-path="settings.xml" manifest:media-type="text/xml"/>
<manifest:file-entry manifest:full-path="content.xml" manifest:media-type="text/xml"/> <manifest:file-entry manifest:full-path="content.xml" manifest:media-type="text/xml"/>
<manifest:file-entry manifest:full-path="meta.xml" manifest:media-type="text/xml"/> <manifest:file-entry manifest:full-path="meta.xml" manifest:media-type="text/xml"/>
+9 -3
View File
@@ -1,7 +1,13 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<office:document-meta xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" office:version="1.2"> <office:document-meta xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" office:version="1.3">
<office:meta> <office:meta>
<meta:creation-date>2021-08-13T18:54:46</meta:creation-date> <meta:creation-date>2023-02-12T15:09:03</meta:creation-date>
<meta:generator>novelWriter/1.5-alpha0</meta:generator> <meta:generator>novelWriter/2.0.4</meta:generator>
<meta:initial-creator>Jane Smith</meta:initial-creator>
<meta:editing-cycles>1234</meta:editing-cycles>
<meta:editing-duration>P42DT12H34M56S</meta:editing-duration>
<dc:title>Test Project</dc:title>
<dc:date>2023-02-12T15:09:03</dc:date>
<dc:creator>Jane Smith</dc:creator>
</office:meta> </office:meta>
</office:document-meta> </office:document-meta>
@@ -1,4 +1,2 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<office:document-settings xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"> <office:document-settings xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" office:version="1.3"/>
<office:settings/>
</office:document-settings>
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<office:document-styles xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" office:version="1.2"> <office:document-styles xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" office:version="1.3">
<office:font-face-decls> <office:font-face-decls>
<style:font-face style:name="Liberation Serif" style:font-pitch="variable"/> <style:font-face style:name="Liberation Serif" style:font-pitch="variable"/>
</office:font-face-decls> </office:font-face-decls>
@@ -59,7 +59,7 @@
<office:master-styles> <office:master-styles>
<style:master-page style:name="Standard" style:page-layout-name="PM1"> <style:master-page style:name="Standard" style:page-layout-name="PM1">
<style:header> <style:header>
<text:p text:style-name="Header">/ / <text:page-number text:select-page="current">2</text:page-number></text:p> <text:p text:style-name="Header">Test Project / Jane Smith / <text:page-number text:select-page="current">2</text:page-number></text:p>
</style:header> </style:header>
<style:header-first> <style:header-first>
<text:p text:style-name="Header"/> <text:p text:style-name="Header"/>
@@ -1,8 +1,14 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" office:version="1.2" office:mimetype="application/vnd.oasis.opendocument.text"> <office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" office:version="1.3" office:mimetype="application/vnd.oasis.opendocument.text">
<office:meta> <office:meta>
<meta:creation-date>2022-01-02T19:51:47</meta:creation-date> <meta:creation-date>2023-02-12T14:52:03</meta:creation-date>
<meta:generator>novelWriter/1.6-alpha0</meta:generator> <meta:generator>novelWriter/2.0.4</meta:generator>
<meta:initial-creator>lipsum.com</meta:initial-creator>
<meta:editing-cycles>38</meta:editing-cycles>
<meta:editing-duration>P0DT0H31M40S</meta:editing-duration>
<dc:title>Lorem Ipsum</dc:title>
<dc:date>2023-02-12T14:52:03</dc:date>
<dc:creator>lipsum.com</dc:creator>
</office:meta> </office:meta>
<office:font-face-decls> <office:font-face-decls>
<style:font-face style:name="DejaVu Sans" style:font-pitch="variable"/> <style:font-face style:name="DejaVu Sans" style:font-pitch="variable"/>
@@ -87,7 +93,7 @@
</office:master-styles> </office:master-styles>
<office:body> <office:body>
<office:text> <office:text>
<text:h text:style-name="Title">Lorem Ipsum</text:h> <text:p text:style-name="Title">Lorem Ipsum</text:p>
<text:p text:style-name="P1"><text:span text:style-name="T1">By lipsum.com</text:span></text:p> <text:p text:style-name="P1"><text:span text:style-name="T1">By lipsum.com</text:span></text:p>
<text:p text:style-name="P1">“Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit…”</text:p> <text:p text:style-name="P1">“Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit…”</text:p>
<text:p text:style-name="P1">“There is no one who loves pain itself, who seeks after it and wants to have it, simply because it is pain…”</text:p> <text:p text:style-name="P1">“There is no one who loves pain itself, who seeks after it and wants to have it, simply because it is pain…”</text:p>
@@ -1,8 +1,14 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" office:version="1.2" office:mimetype="application/vnd.oasis.opendocument.text"> <office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" office:version="1.3" office:mimetype="application/vnd.oasis.opendocument.text">
<office:meta> <office:meta>
<meta:creation-date>2022-01-02T19:52:00</meta:creation-date> <meta:creation-date>2023-02-12T15:00:22</meta:creation-date>
<meta:generator>novelWriter/1.6-alpha0</meta:generator> <meta:generator>novelWriter/2.0.4</meta:generator>
<meta:initial-creator>lipsum.com</meta:initial-creator>
<meta:editing-cycles>38</meta:editing-cycles>
<meta:editing-duration>P0DT0H31M40S</meta:editing-duration>
<dc:title>Lorem Ipsum</dc:title>
<dc:date>2023-02-12T15:00:22</dc:date>
<dc:creator>lipsum.com</dc:creator>
</office:meta> </office:meta>
<office:font-face-decls> <office:font-face-decls>
<style:font-face style:name="DejaVu Sans" style:font-pitch="variable"/> <style:font-face style:name="DejaVu Sans" style:font-pitch="variable"/>
@@ -99,7 +105,7 @@
</office:master-styles> </office:master-styles>
<office:body> <office:body>
<office:text> <office:text>
<text:h text:style-name="Title">Lorem Ipsum</text:h> <text:p text:style-name="Title">Lorem Ipsum</text:p>
<text:p text:style-name="P1"><text:span text:style-name="T1">By lipsum.com</text:span></text:p> <text:p text:style-name="P1"><text:span text:style-name="T1">By lipsum.com</text:span></text:p>
<text:p text:style-name="P1">“Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit…”</text:p> <text:p text:style-name="P1">“Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit…”</text:p>
<text:p text:style-name="P1">“There is no one who loves pain itself, who seeks after it and wants to have it, simply because it is pain…”</text:p> <text:p text:style-name="P1">“There is no one who loves pain itself, who seeks after it and wants to have it, simply because it is pain…”</text:p>
@@ -180,19 +186,19 @@
<text:p text:style-name="Text_20_body">Donec luctus lectus efficitur, blandit nisi vitae, dignissim tellus. Pellentesque euismod pharetra augue gravida hendrerit. Quisque nisi mi, mattis ac nisi non, maximus malesuada ante. Nulla lobortis, diam eu ornare ornare, tellus enim feugiat arcu, non vestibulum tortor nunc eu justo. Integer blandit felis justo, eu semper est scelerisque vel. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Nam ultricies, nisi vel elementum commodo, nisl dolor tincidunt magna, sed varius est nunc at lectus. Aliquam dolor tortor, sodales placerat ultricies quis, sodales quis sapien. Duis ullamcorper sollicitudin risus at mattis. Integer consequat et nunc at condimentum. Pellentesque cursus congue augue, non suscipit lectus sodales ut. Nam a mi bibendum, blandit nisl eu, accumsan nunc. Aliquam a ex mauris. Sed nec sem quis arcu dignissim tempus eget et turpis. Ut sed ex nec ipsum ultrices lobortis.</text:p> <text:p text:style-name="Text_20_body">Donec luctus lectus efficitur, blandit nisi vitae, dignissim tellus. Pellentesque euismod pharetra augue gravida hendrerit. Quisque nisi mi, mattis ac nisi non, maximus malesuada ante. Nulla lobortis, diam eu ornare ornare, tellus enim feugiat arcu, non vestibulum tortor nunc eu justo. Integer blandit felis justo, eu semper est scelerisque vel. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Nam ultricies, nisi vel elementum commodo, nisl dolor tincidunt magna, sed varius est nunc at lectus. Aliquam dolor tortor, sodales placerat ultricies quis, sodales quis sapien. Duis ullamcorper sollicitudin risus at mattis. Integer consequat et nunc at condimentum. Pellentesque cursus congue augue, non suscipit lectus sodales ut. Nam a mi bibendum, blandit nisl eu, accumsan nunc. Aliquam a ex mauris. Sed nec sem quis arcu dignissim tempus eget et turpis. Ut sed ex nec ipsum ultrices lobortis.</text:p>
<text:p text:style-name="Text_20_body">Pellentesque rhoncus pharetra eros, non mollis nisi pretium non. Mauris accumsan quis odio quis euismod. Maecenas ultrices, augue et aliquam tincidunt, erat tellus ornare ligula, quis ultrices turpis nibh vel justo. Fusce gravida odio tellus. In a congue diam. Mauris consequat ex id leo lacinia dictum. Fusce id sem sodales, ultrices sapien ac, convallis orci. Donec gravida nunc sit amet nisi hendrerit, sed porta enim aliquam. In hac habitasse platea dictumst. Cras a orci felis. Curabitur non felis nec urna maximus auctor ut ut nisi. Curabitur at turpis eleifend, blandit eros at, molestie odio. Phasellus euismod neque augue.</text:p> <text:p text:style-name="Text_20_body">Pellentesque rhoncus pharetra eros, non mollis nisi pretium non. Mauris accumsan quis odio quis euismod. Maecenas ultrices, augue et aliquam tincidunt, erat tellus ornare ligula, quis ultrices turpis nibh vel justo. Fusce gravida odio tellus. In a congue diam. Mauris consequat ex id leo lacinia dictum. Fusce id sem sodales, ultrices sapien ac, convallis orci. Donec gravida nunc sit amet nisi hendrerit, sed porta enim aliquam. In hac habitasse platea dictumst. Cras a orci felis. Curabitur non felis nec urna maximus auctor ut ut nisi. Curabitur at turpis eleifend, blandit eros at, molestie odio. Phasellus euismod neque augue.</text:p>
<text:p text:style-name="Text_20_body">Integer egestas maximus leo eu facilisis. Nunc rhoncus dignissim lectus eu lacinia. Praesent lacinia urna porttitor aliquam condimentum. Nulla eu eros dictum, dictum nunc vitae, sagittis nibh. Integer ante neque, consequat nec sollicitudin id, consectetur vitae dolor. Nullam volutpat sem orci, quis viverra magna auctor a. Suspendisse potenti. Maecenas commodo sed neque pellentesque vehicula. Sed luctus nisl risus, elementum semper purus interdum vel. Ut pulvinar, massa sit amet venenatis placerat, nunc lacus hendrerit odio, non aliquet nunc risus eu lectus. Maecenas feugiat semper ligula, id lobortis sem porta eu. Integer posuere elit magna, at mollis eros bibendum et. Ut imperdiet purus vel nulla aliquam maximus. Morbi sodales purus tellus, a rhoncus sem rutrum sit amet. Quisque risus sem, laoreet nec convallis nec, rutrum vitae justo.</text:p> <text:p text:style-name="Text_20_body">Integer egestas maximus leo eu facilisis. Nunc rhoncus dignissim lectus eu lacinia. Praesent lacinia urna porttitor aliquam condimentum. Nulla eu eros dictum, dictum nunc vitae, sagittis nibh. Integer ante neque, consequat nec sollicitudin id, consectetur vitae dolor. Nullam volutpat sem orci, quis viverra magna auctor a. Suspendisse potenti. Maecenas commodo sed neque pellentesque vehicula. Sed luctus nisl risus, elementum semper purus interdum vel. Ut pulvinar, massa sit amet venenatis placerat, nunc lacus hendrerit odio, non aliquet nunc risus eu lectus. Maecenas feugiat semper ligula, id lobortis sem porta eu. Integer posuere elit magna, at mollis eros bibendum et. Ut imperdiet purus vel nulla aliquam maximus. Morbi sodales purus tellus, a rhoncus sem rutrum sit amet. Quisque risus sem, laoreet nec convallis nec, rutrum vitae justo.</text:p>
<text:h text:style-name="P7">Notes: Characters</text:h> <text:p text:style-name="P7">Notes: Characters</text:p>
<text:h text:style-name="Heading_20_1" text:outline-level="1">Nobody Owens</text:h> <text:h text:style-name="Heading_20_1" text:outline-level="1">Nobody Owens</text:h>
<text:p text:style-name="P5"><text:span text:style-name="T1">Tag:</text:span> Bod</text:p> <text:p text:style-name="P5"><text:span text:style-name="T1">Tag:</text:span> Bod</text:p>
<text:p text:style-name="Text_20_Meta"><text:span text:style-name="T1">Plot:</text:span> Main</text:p> <text:p text:style-name="Text_20_Meta"><text:span text:style-name="T1">Plot:</text:span> Main</text:p>
<text:p text:style-name="Text_20_body">Pellentesque nec erat ut nulla posuere commodo. Curabitur nisi augue, imperdiet et porta imperdiet, efficitur id leo. Cras finibus arcu at nibh commodo congue. Proin suscipit placerat condimentum. Aenean ante enim, cursus id lorem a, blandit venenatis nibh. Maecenas suscipit porta elit, sit amet porta felis porttitor eu. Sed a dui nibh. Phasellus sed faucibus dui. Pellentesque felis nulla, ultrices non efficitur quis, rutrum id mi. Mauris tempus auctor nisl, in bibendum enim pellentesque sit amet. Proin nunc lacus, imperdiet nec posuere ac, interdum non lectus.</text:p> <text:p text:style-name="Text_20_body">Pellentesque nec erat ut nulla posuere commodo. Curabitur nisi augue, imperdiet et porta imperdiet, efficitur id leo. Cras finibus arcu at nibh commodo congue. Proin suscipit placerat condimentum. Aenean ante enim, cursus id lorem a, blandit venenatis nibh. Maecenas suscipit porta elit, sit amet porta felis porttitor eu. Sed a dui nibh. Phasellus sed faucibus dui. Pellentesque felis nulla, ultrices non efficitur quis, rutrum id mi. Mauris tempus auctor nisl, in bibendum enim pellentesque sit amet. Proin nunc lacus, imperdiet nec posuere ac, interdum non lectus.</text:p>
<text:p text:style-name="Text_20_body">Suspendisse faucibus est auctor orci mollis luctus. Praesent quis sodales neque. Interdum et malesuada fames ac ante ipsum primis in faucibus. Donec sodales rutrum mattis. In in sem ornare, consequat nulla ac, convallis arcu. Duis ac metus id felis commodo commodo sit amet eget diam. Curabitur rhoncus lacinia leo at sodales. Etiam finibus porta diam a viverra. Praesent nisi urna, volutpat sit amet odio at, vehicula vehicula leo. In non enim eget nisl luctus commodo. Pellentesque pellentesque at lectus at luctus. Quisque nec felis bibendum, lacinia libero ut, lacinia eros. Integer finibus ultricies nibh sit amet placerat.</text:p> <text:p text:style-name="Text_20_body">Suspendisse faucibus est auctor orci mollis luctus. Praesent quis sodales neque. Interdum et malesuada fames ac ante ipsum primis in faucibus. Donec sodales rutrum mattis. In in sem ornare, consequat nulla ac, convallis arcu. Duis ac metus id felis commodo commodo sit amet eget diam. Curabitur rhoncus lacinia leo at sodales. Etiam finibus porta diam a viverra. Praesent nisi urna, volutpat sit amet odio at, vehicula vehicula leo. In non enim eget nisl luctus commodo. Pellentesque pellentesque at lectus at luctus. Quisque nec felis bibendum, lacinia libero ut, lacinia eros. Integer finibus ultricies nibh sit amet placerat.</text:p>
<text:p text:style-name="Text_20_body">Nullam scelerisque velit et tortor congue vestibulum a at nisi. Vivamus sodales ut turpis a convallis. In dignissim nibh at luctus sodales. Etiam sit amet rhoncus massa. Phasellus ligula magna, sollicitudin non imperdiet sit amet, volutpat vel magna. Nunc vestibulum tempor lectus, sit amet porta nunc hendrerit in. Curabitur non odio sit amet massa tincidunt facilisis. Integer et luctus nunc, eget euismod leo. Praesent faucibus metus sed purus convallis scelerisque. Fusce viverra lorem et placerat malesuada. In at elit malesuada, ullamcorper risus vitae, sodales dolor. Donec quis elementum lectus. Quisque eu eros at dui imperdiet euismod ut id neque.</text:p> <text:p text:style-name="Text_20_body">Nullam scelerisque velit et tortor congue vestibulum a at nisi. Vivamus sodales ut turpis a convallis. In dignissim nibh at luctus sodales. Etiam sit amet rhoncus massa. Phasellus ligula magna, sollicitudin non imperdiet sit amet, volutpat vel magna. Nunc vestibulum tempor lectus, sit amet porta nunc hendrerit in. Curabitur non odio sit amet massa tincidunt facilisis. Integer et luctus nunc, eget euismod leo. Praesent faucibus metus sed purus convallis scelerisque. Fusce viverra lorem et placerat malesuada. In at elit malesuada, ullamcorper risus vitae, sodales dolor. Donec quis elementum lectus. Quisque eu eros at dui imperdiet euismod ut id neque.</text:p>
<text:h text:style-name="P7">Notes: Plot</text:h> <text:p text:style-name="P7">Notes: Plot</text:p>
<text:h text:style-name="Heading_20_1" text:outline-level="1">Main Plot</text:h> <text:h text:style-name="Heading_20_1" text:outline-level="1">Main Plot</text:h>
<text:p text:style-name="Text_20_Meta"><text:span text:style-name="T1">Tag:</text:span> Main</text:p> <text:p text:style-name="Text_20_Meta"><text:span text:style-name="T1">Tag:</text:span> Main</text:p>
<text:p text:style-name="Text_20_body">Suspendisse vulputate malesuada pellentesque. Aenean sollicitudin cursus mi, vitae ultricies felis ullamcorper eu. Duis luctus risus mi, in accumsan velit cursus ut. Vestibulum eleifend leo in magna eleifend fermentum. Proin nec ornare elit. Phasellus nec interdum risus. In a volutpat augue, quis egestas justo. Morbi porta mauris mattis bibendum imperdiet.</text:p> <text:p text:style-name="Text_20_body">Suspendisse vulputate malesuada pellentesque. Aenean sollicitudin cursus mi, vitae ultricies felis ullamcorper eu. Duis luctus risus mi, in accumsan velit cursus ut. Vestibulum eleifend leo in magna eleifend fermentum. Proin nec ornare elit. Phasellus nec interdum risus. In a volutpat augue, quis egestas justo. Morbi porta mauris mattis bibendum imperdiet.</text:p>
<text:p text:style-name="Text_20_body">Mauris ut erat eu lorem malesuada egestas vel vel urna. Maecenas ac semper quam. Maecenas aliquet metus non interdum mattis. Proin consectetur molestie ligula. Aliquam sollicitudin pulvinar urna a pellentesque. Suspendisse ultrices, est mattis scelerisque porta, nisi nisi laoreet nisl, non condimentum quam ante a velit. Proin scelerisque justo augue, nec laoreet ligula egestas at. Etiam enim quam, ultrices non accumsan hendrerit, elementum vel ligula. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nam efficitur odio libero, in vestibulum arcu aliquam at. Cras non vehicula augue. Integer lobortis, est vitae aliquam facilisis, metus ligula aliquet eros, at porttitor sem tortor eget massa. Aliquam varius scelerisque neque sed gravida. Aenean eleifend lorem id ante elementum sollicitudin. Proin commodo massa a quam volutpat, mollis fermentum turpis efficitur.</text:p> <text:p text:style-name="Text_20_body">Mauris ut erat eu lorem malesuada egestas vel vel urna. Maecenas ac semper quam. Maecenas aliquet metus non interdum mattis. Proin consectetur molestie ligula. Aliquam sollicitudin pulvinar urna a pellentesque. Suspendisse ultrices, est mattis scelerisque porta, nisi nisi laoreet nisl, non condimentum quam ante a velit. Proin scelerisque justo augue, nec laoreet ligula egestas at. Etiam enim quam, ultrices non accumsan hendrerit, elementum vel ligula. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nam efficitur odio libero, in vestibulum arcu aliquam at. Cras non vehicula augue. Integer lobortis, est vitae aliquam facilisis, metus ligula aliquet eros, at porttitor sem tortor eget massa. Aliquam varius scelerisque neque sed gravida. Aenean eleifend lorem id ante elementum sollicitudin. Proin commodo massa a quam volutpat, mollis fermentum turpis efficitur.</text:p>
<text:h text:style-name="P7">Notes: World</text:h> <text:p text:style-name="P7">Notes: World</text:p>
<text:h text:style-name="Heading_20_1" text:outline-level="1">Ancient Europe</text:h> <text:h text:style-name="Heading_20_1" text:outline-level="1">Ancient Europe</text:h>
<text:p text:style-name="Text_20_Meta"><text:span text:style-name="T1">Tag:</text:span> Europe</text:p> <text:p text:style-name="Text_20_Meta"><text:span text:style-name="T1">Tag:</text:span> Europe</text:p>
<text:p text:style-name="Text_20_body">Vivamus sodales risus ac accumsan posuere. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Nunc vel enim felis. Vestibulum dignissim massa nunc, a auctor magna eleifend et. Proin dignissim sodales erat vitae convallis. Aliquam id tellus dui. Curabitur sollicitudin scelerisque ex sit amet posuere. Nam rutrum felis id rhoncus feugiat. Duis sagittis quam quis purus efficitur, quis rutrum odio iaculis. Maecenas semper ante turpis, at vulputate mi consectetur non. Sed rutrum nibh turpis, quis rhoncus purus ornare quis. Vestibulum at rutrum mauris. Integer dolor nisi, tincidunt eget vehicula ac, ultricies at ligula.</text:p> <text:p text:style-name="Text_20_body">Vivamus sodales risus ac accumsan posuere. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Nunc vel enim felis. Vestibulum dignissim massa nunc, a auctor magna eleifend et. Proin dignissim sodales erat vitae convallis. Aliquam id tellus dui. Curabitur sollicitudin scelerisque ex sit amet posuere. Nam rutrum felis id rhoncus feugiat. Duis sagittis quam quis purus efficitur, quis rutrum odio iaculis. Maecenas semper ante turpis, at vulputate mi consectetur non. Sed rutrum nibh turpis, quis rhoncus purus ornare quis. Vestibulum at rutrum mauris. Integer dolor nisi, tincidunt eget vehicula ac, ultricies at ligula.</text:p>
@@ -1,8 +1,14 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" office:version="1.2" office:mimetype="application/vnd.oasis.opendocument.text"> <office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" office:version="1.3" office:mimetype="application/vnd.oasis.opendocument.text">
<office:meta> <office:meta>
<meta:creation-date>2022-01-02T19:52:33</meta:creation-date> <meta:creation-date>2023-02-12T15:01:25</meta:creation-date>
<meta:generator>novelWriter/1.6-alpha0</meta:generator> <meta:generator>novelWriter/2.0.4</meta:generator>
<meta:initial-creator>lipsum.com</meta:initial-creator>
<meta:editing-cycles>38</meta:editing-cycles>
<meta:editing-duration>P0DT0H31M40S</meta:editing-duration>
<dc:title>Lorem Ipsum</dc:title>
<dc:date>2023-02-12T15:01:25</dc:date>
<dc:creator>lipsum.com</dc:creator>
</office:meta> </office:meta>
<office:font-face-decls> <office:font-face-decls>
<style:font-face style:name="DejaVu Sans" style:font-pitch="variable"/> <style:font-face style:name="DejaVu Sans" style:font-pitch="variable"/>
@@ -99,7 +105,7 @@
</office:master-styles> </office:master-styles>
<office:body> <office:body>
<office:text> <office:text>
<text:h text:style-name="Title">Lorem Ipsum</text:h> <text:p text:style-name="Title">Lorem Ipsum</text:p>
<text:p text:style-name="P1"><text:span text:style-name="T1">By lipsum.com</text:span></text:p> <text:p text:style-name="P1"><text:span text:style-name="T1">By lipsum.com</text:span></text:p>
<text:p text:style-name="P1">“Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit…”</text:p> <text:p text:style-name="P1">“Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit…”</text:p>
<text:p text:style-name="P1">“There is no one who loves pain itself, who seeks after it and wants to have it, simply because it is pain…”</text:p> <text:p text:style-name="P1">“There is no one who loves pain itself, who seeks after it and wants to have it, simply because it is pain…”</text:p>
@@ -180,19 +186,19 @@
<text:p text:style-name="Text_20_body">Donec luctus lectus efficitur, blandit nisi vitae, dignissim tellus. Pellentesque euismod pharetra augue gravida hendrerit. Quisque nisi mi, mattis ac nisi non, maximus malesuada ante. Nulla lobortis, diam eu ornare ornare, tellus enim feugiat arcu, non vestibulum tortor nunc eu justo. Integer blandit felis justo, eu semper est scelerisque vel. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Nam ultricies, nisi vel elementum commodo, nisl dolor tincidunt magna, sed varius est nunc at lectus. Aliquam dolor tortor, sodales placerat ultricies quis, sodales quis sapien. Duis ullamcorper sollicitudin risus at mattis. Integer consequat et nunc at condimentum. Pellentesque cursus congue augue, non suscipit lectus sodales ut. Nam a mi bibendum, blandit nisl eu, accumsan nunc. Aliquam a ex mauris. Sed nec sem quis arcu dignissim tempus eget et turpis. Ut sed ex nec ipsum ultrices lobortis.</text:p> <text:p text:style-name="Text_20_body">Donec luctus lectus efficitur, blandit nisi vitae, dignissim tellus. Pellentesque euismod pharetra augue gravida hendrerit. Quisque nisi mi, mattis ac nisi non, maximus malesuada ante. Nulla lobortis, diam eu ornare ornare, tellus enim feugiat arcu, non vestibulum tortor nunc eu justo. Integer blandit felis justo, eu semper est scelerisque vel. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Nam ultricies, nisi vel elementum commodo, nisl dolor tincidunt magna, sed varius est nunc at lectus. Aliquam dolor tortor, sodales placerat ultricies quis, sodales quis sapien. Duis ullamcorper sollicitudin risus at mattis. Integer consequat et nunc at condimentum. Pellentesque cursus congue augue, non suscipit lectus sodales ut. Nam a mi bibendum, blandit nisl eu, accumsan nunc. Aliquam a ex mauris. Sed nec sem quis arcu dignissim tempus eget et turpis. Ut sed ex nec ipsum ultrices lobortis.</text:p>
<text:p text:style-name="Text_20_body">Pellentesque rhoncus pharetra eros, non mollis nisi pretium non. Mauris accumsan quis odio quis euismod. Maecenas ultrices, augue et aliquam tincidunt, erat tellus ornare ligula, quis ultrices turpis nibh vel justo. Fusce gravida odio tellus. In a congue diam. Mauris consequat ex id leo lacinia dictum. Fusce id sem sodales, ultrices sapien ac, convallis orci. Donec gravida nunc sit amet nisi hendrerit, sed porta enim aliquam. In hac habitasse platea dictumst. Cras a orci felis. Curabitur non felis nec urna maximus auctor ut ut nisi. Curabitur at turpis eleifend, blandit eros at, molestie odio. Phasellus euismod neque augue.</text:p> <text:p text:style-name="Text_20_body">Pellentesque rhoncus pharetra eros, non mollis nisi pretium non. Mauris accumsan quis odio quis euismod. Maecenas ultrices, augue et aliquam tincidunt, erat tellus ornare ligula, quis ultrices turpis nibh vel justo. Fusce gravida odio tellus. In a congue diam. Mauris consequat ex id leo lacinia dictum. Fusce id sem sodales, ultrices sapien ac, convallis orci. Donec gravida nunc sit amet nisi hendrerit, sed porta enim aliquam. In hac habitasse platea dictumst. Cras a orci felis. Curabitur non felis nec urna maximus auctor ut ut nisi. Curabitur at turpis eleifend, blandit eros at, molestie odio. Phasellus euismod neque augue.</text:p>
<text:p text:style-name="Text_20_body">Integer egestas maximus leo eu facilisis. Nunc rhoncus dignissim lectus eu lacinia. Praesent lacinia urna porttitor aliquam condimentum. Nulla eu eros dictum, dictum nunc vitae, sagittis nibh. Integer ante neque, consequat nec sollicitudin id, consectetur vitae dolor. Nullam volutpat sem orci, quis viverra magna auctor a. Suspendisse potenti. Maecenas commodo sed neque pellentesque vehicula. Sed luctus nisl risus, elementum semper purus interdum vel. Ut pulvinar, massa sit amet venenatis placerat, nunc lacus hendrerit odio, non aliquet nunc risus eu lectus. Maecenas feugiat semper ligula, id lobortis sem porta eu. Integer posuere elit magna, at mollis eros bibendum et. Ut imperdiet purus vel nulla aliquam maximus. Morbi sodales purus tellus, a rhoncus sem rutrum sit amet. Quisque risus sem, laoreet nec convallis nec, rutrum vitae justo.</text:p> <text:p text:style-name="Text_20_body">Integer egestas maximus leo eu facilisis. Nunc rhoncus dignissim lectus eu lacinia. Praesent lacinia urna porttitor aliquam condimentum. Nulla eu eros dictum, dictum nunc vitae, sagittis nibh. Integer ante neque, consequat nec sollicitudin id, consectetur vitae dolor. Nullam volutpat sem orci, quis viverra magna auctor a. Suspendisse potenti. Maecenas commodo sed neque pellentesque vehicula. Sed luctus nisl risus, elementum semper purus interdum vel. Ut pulvinar, massa sit amet venenatis placerat, nunc lacus hendrerit odio, non aliquet nunc risus eu lectus. Maecenas feugiat semper ligula, id lobortis sem porta eu. Integer posuere elit magna, at mollis eros bibendum et. Ut imperdiet purus vel nulla aliquam maximus. Morbi sodales purus tellus, a rhoncus sem rutrum sit amet. Quisque risus sem, laoreet nec convallis nec, rutrum vitae justo.</text:p>
<text:h text:style-name="P7">Notes: Characters</text:h> <text:p text:style-name="P7">Notes: Characters</text:p>
<text:h text:style-name="Heading_20_1" text:outline-level="1">Nobody Owens</text:h> <text:h text:style-name="Heading_20_1" text:outline-level="1">Nobody Owens</text:h>
<text:p text:style-name="P5"><text:span text:style-name="T1">Tag:</text:span> Bod</text:p> <text:p text:style-name="P5"><text:span text:style-name="T1">Tag:</text:span> Bod</text:p>
<text:p text:style-name="Text_20_Meta"><text:span text:style-name="T1">Plot:</text:span> Main</text:p> <text:p text:style-name="Text_20_Meta"><text:span text:style-name="T1">Plot:</text:span> Main</text:p>
<text:p text:style-name="Text_20_body">Pellentesque nec erat ut nulla posuere commodo. Curabitur nisi augue, imperdiet et porta imperdiet, efficitur id leo. Cras finibus arcu at nibh commodo congue. Proin suscipit placerat condimentum. Aenean ante enim, cursus id lorem a, blandit venenatis nibh. Maecenas suscipit porta elit, sit amet porta felis porttitor eu. Sed a dui nibh. Phasellus sed faucibus dui. Pellentesque felis nulla, ultrices non efficitur quis, rutrum id mi. Mauris tempus auctor nisl, in bibendum enim pellentesque sit amet. Proin nunc lacus, imperdiet nec posuere ac, interdum non lectus.</text:p> <text:p text:style-name="Text_20_body">Pellentesque nec erat ut nulla posuere commodo. Curabitur nisi augue, imperdiet et porta imperdiet, efficitur id leo. Cras finibus arcu at nibh commodo congue. Proin suscipit placerat condimentum. Aenean ante enim, cursus id lorem a, blandit venenatis nibh. Maecenas suscipit porta elit, sit amet porta felis porttitor eu. Sed a dui nibh. Phasellus sed faucibus dui. Pellentesque felis nulla, ultrices non efficitur quis, rutrum id mi. Mauris tempus auctor nisl, in bibendum enim pellentesque sit amet. Proin nunc lacus, imperdiet nec posuere ac, interdum non lectus.</text:p>
<text:p text:style-name="Text_20_body">Suspendisse faucibus est auctor orci mollis luctus. Praesent quis sodales neque. Interdum et malesuada fames ac ante ipsum primis in faucibus. Donec sodales rutrum mattis. In in sem ornare, consequat nulla ac, convallis arcu. Duis ac metus id felis commodo commodo sit amet eget diam. Curabitur rhoncus lacinia leo at sodales. Etiam finibus porta diam a viverra. Praesent nisi urna, volutpat sit amet odio at, vehicula vehicula leo. In non enim eget nisl luctus commodo. Pellentesque pellentesque at lectus at luctus. Quisque nec felis bibendum, lacinia libero ut, lacinia eros. Integer finibus ultricies nibh sit amet placerat.</text:p> <text:p text:style-name="Text_20_body">Suspendisse faucibus est auctor orci mollis luctus. Praesent quis sodales neque. Interdum et malesuada fames ac ante ipsum primis in faucibus. Donec sodales rutrum mattis. In in sem ornare, consequat nulla ac, convallis arcu. Duis ac metus id felis commodo commodo sit amet eget diam. Curabitur rhoncus lacinia leo at sodales. Etiam finibus porta diam a viverra. Praesent nisi urna, volutpat sit amet odio at, vehicula vehicula leo. In non enim eget nisl luctus commodo. Pellentesque pellentesque at lectus at luctus. Quisque nec felis bibendum, lacinia libero ut, lacinia eros. Integer finibus ultricies nibh sit amet placerat.</text:p>
<text:p text:style-name="Text_20_body">Nullam scelerisque velit et tortor congue vestibulum a at nisi. Vivamus sodales ut turpis a convallis. In dignissim nibh at luctus sodales. Etiam sit amet rhoncus massa. Phasellus ligula magna, sollicitudin non imperdiet sit amet, volutpat vel magna. Nunc vestibulum tempor lectus, sit amet porta nunc hendrerit in. Curabitur non odio sit amet massa tincidunt facilisis. Integer et luctus nunc, eget euismod leo. Praesent faucibus metus sed purus convallis scelerisque. Fusce viverra lorem et placerat malesuada. In at elit malesuada, ullamcorper risus vitae, sodales dolor. Donec quis elementum lectus. Quisque eu eros at dui imperdiet euismod ut id neque.</text:p> <text:p text:style-name="Text_20_body">Nullam scelerisque velit et tortor congue vestibulum a at nisi. Vivamus sodales ut turpis a convallis. In dignissim nibh at luctus sodales. Etiam sit amet rhoncus massa. Phasellus ligula magna, sollicitudin non imperdiet sit amet, volutpat vel magna. Nunc vestibulum tempor lectus, sit amet porta nunc hendrerit in. Curabitur non odio sit amet massa tincidunt facilisis. Integer et luctus nunc, eget euismod leo. Praesent faucibus metus sed purus convallis scelerisque. Fusce viverra lorem et placerat malesuada. In at elit malesuada, ullamcorper risus vitae, sodales dolor. Donec quis elementum lectus. Quisque eu eros at dui imperdiet euismod ut id neque.</text:p>
<text:h text:style-name="P7">Notes: Plot</text:h> <text:p text:style-name="P7">Notes: Plot</text:p>
<text:h text:style-name="Heading_20_1" text:outline-level="1">Main Plot</text:h> <text:h text:style-name="Heading_20_1" text:outline-level="1">Main Plot</text:h>
<text:p text:style-name="Text_20_Meta"><text:span text:style-name="T1">Tag:</text:span> Main</text:p> <text:p text:style-name="Text_20_Meta"><text:span text:style-name="T1">Tag:</text:span> Main</text:p>
<text:p text:style-name="Text_20_body">Suspendisse vulputate malesuada pellentesque. Aenean sollicitudin cursus mi, vitae ultricies felis ullamcorper eu. Duis luctus risus mi, in accumsan velit cursus ut. Vestibulum eleifend leo in magna eleifend fermentum. Proin nec ornare elit. Phasellus nec interdum risus. In a volutpat augue, quis egestas justo. Morbi porta mauris mattis bibendum imperdiet.</text:p> <text:p text:style-name="Text_20_body">Suspendisse vulputate malesuada pellentesque. Aenean sollicitudin cursus mi, vitae ultricies felis ullamcorper eu. Duis luctus risus mi, in accumsan velit cursus ut. Vestibulum eleifend leo in magna eleifend fermentum. Proin nec ornare elit. Phasellus nec interdum risus. In a volutpat augue, quis egestas justo. Morbi porta mauris mattis bibendum imperdiet.</text:p>
<text:p text:style-name="Text_20_body">Mauris ut erat eu lorem malesuada egestas vel vel urna. Maecenas ac semper quam. Maecenas aliquet metus non interdum mattis. Proin consectetur molestie ligula. Aliquam sollicitudin pulvinar urna a pellentesque. Suspendisse ultrices, est mattis scelerisque porta, nisi nisi laoreet nisl, non condimentum quam ante a velit. Proin scelerisque justo augue, nec laoreet ligula egestas at. Etiam enim quam, ultrices non accumsan hendrerit, elementum vel ligula. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nam efficitur odio libero, in vestibulum arcu aliquam at. Cras non vehicula augue. Integer lobortis, est vitae aliquam facilisis, metus ligula aliquet eros, at porttitor sem tortor eget massa. Aliquam varius scelerisque neque sed gravida. Aenean eleifend lorem id ante elementum sollicitudin. Proin commodo massa a quam volutpat, mollis fermentum turpis efficitur.</text:p> <text:p text:style-name="Text_20_body">Mauris ut erat eu lorem malesuada egestas vel vel urna. Maecenas ac semper quam. Maecenas aliquet metus non interdum mattis. Proin consectetur molestie ligula. Aliquam sollicitudin pulvinar urna a pellentesque. Suspendisse ultrices, est mattis scelerisque porta, nisi nisi laoreet nisl, non condimentum quam ante a velit. Proin scelerisque justo augue, nec laoreet ligula egestas at. Etiam enim quam, ultrices non accumsan hendrerit, elementum vel ligula. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nam efficitur odio libero, in vestibulum arcu aliquam at. Cras non vehicula augue. Integer lobortis, est vitae aliquam facilisis, metus ligula aliquet eros, at porttitor sem tortor eget massa. Aliquam varius scelerisque neque sed gravida. Aenean eleifend lorem id ante elementum sollicitudin. Proin commodo massa a quam volutpat, mollis fermentum turpis efficitur.</text:p>
<text:h text:style-name="P7">Notes: World</text:h> <text:p text:style-name="P7">Notes: World</text:p>
<text:h text:style-name="Heading_20_1" text:outline-level="1">Ancient Europe</text:h> <text:h text:style-name="Heading_20_1" text:outline-level="1">Ancient Europe</text:h>
<text:p text:style-name="Text_20_Meta"><text:span text:style-name="T1">Tag:</text:span> Europe</text:p> <text:p text:style-name="Text_20_Meta"><text:span text:style-name="T1">Tag:</text:span> Europe</text:p>
<text:p text:style-name="Text_20_body">Vivamus sodales risus ac accumsan posuere. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Nunc vel enim felis. Vestibulum dignissim massa nunc, a auctor magna eleifend et. Proin dignissim sodales erat vitae convallis. Aliquam id tellus dui. Curabitur sollicitudin scelerisque ex sit amet posuere. Nam rutrum felis id rhoncus feugiat. Duis sagittis quam quis purus efficitur, quis rutrum odio iaculis. Maecenas semper ante turpis, at vulputate mi consectetur non. Sed rutrum nibh turpis, quis rhoncus purus ornare quis. Vestibulum at rutrum mauris. Integer dolor nisi, tincidunt eget vehicula ac, ultricies at ligula.</text:p> <text:p text:style-name="Text_20_body">Vivamus sodales risus ac accumsan posuere. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Nunc vel enim felis. Vestibulum dignissim massa nunc, a auctor magna eleifend et. Proin dignissim sodales erat vitae convallis. Aliquam id tellus dui. Curabitur sollicitudin scelerisque ex sit amet posuere. Nam rutrum felis id rhoncus feugiat. Duis sagittis quam quis purus efficitur, quis rutrum odio iaculis. Maecenas semper ante turpis, at vulputate mi consectetur non. Sed rutrum nibh turpis, quis rhoncus purus ornare quis. Vestibulum at rutrum mauris. Integer dolor nisi, tincidunt eget vehicula ac, ultricies at ligula.</text:p>
@@ -1,8 +1,14 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" office:version="1.2" office:mimetype="application/vnd.oasis.opendocument.text"> <office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" office:version="1.3" office:mimetype="application/vnd.oasis.opendocument.text">
<office:meta> <office:meta>
<meta:creation-date>2023-01-11T10:54:59</meta:creation-date> <meta:creation-date>2023-02-12T17:28:07</meta:creation-date>
<meta:generator>novelWriter/2.0.3</meta:generator> <meta:generator>novelWriter/2.0.5</meta:generator>
<meta:initial-creator>lipsum.com</meta:initial-creator>
<meta:editing-cycles>38</meta:editing-cycles>
<meta:editing-duration>P0DT0H31M40S</meta:editing-duration>
<dc:title>Lorem Ipsum</dc:title>
<dc:date>2023-02-12T17:28:07</dc:date>
<dc:creator>lipsum.com</dc:creator>
</office:meta> </office:meta>
<office:font-face-decls> <office:font-face-decls>
<style:font-face style:name="Arial" style:font-pitch="variable"/> <style:font-face style:name="Arial" style:font-pitch="variable"/>
@@ -99,7 +105,7 @@
</office:master-styles> </office:master-styles>
<office:body> <office:body>
<office:text> <office:text>
<text:h text:style-name="Title">Lorem Ipsum</text:h> <text:p text:style-name="Title">Lorem Ipsum</text:p>
<text:p text:style-name="P1"><text:span text:style-name="T1">By lipsum.com</text:span></text:p> <text:p text:style-name="P1"><text:span text:style-name="T1">By lipsum.com</text:span></text:p>
<text:p text:style-name="P1">“Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit…”</text:p> <text:p text:style-name="P1">“Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit…”</text:p>
<text:p text:style-name="P1">“There is no one who loves pain itself, who seeks after it and wants to have it, simply because it is pain…”</text:p> <text:p text:style-name="P1">“There is no one who loves pain itself, who seeks after it and wants to have it, simply because it is pain…”</text:p>
@@ -180,19 +186,19 @@
<text:p text:style-name="Text_20_body">Donec luctus lectus efficitur, blandit nisi vitae, dignissim tellus. Pellentesque euismod pharetra augue gravida hendrerit. Quisque nisi mi, mattis ac nisi non, maximus malesuada ante. Nulla lobortis, diam eu ornare ornare, tellus enim feugiat arcu, non vestibulum tortor nunc eu justo. Integer blandit felis justo, eu semper est scelerisque vel. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Nam ultricies, nisi vel elementum commodo, nisl dolor tincidunt magna, sed varius est nunc at lectus. Aliquam dolor tortor, sodales placerat ultricies quis, sodales quis sapien. Duis ullamcorper sollicitudin risus at mattis. Integer consequat et nunc at condimentum. Pellentesque cursus congue augue, non suscipit lectus sodales ut. Nam a mi bibendum, blandit nisl eu, accumsan nunc. Aliquam a ex mauris. Sed nec sem quis arcu dignissim tempus eget et turpis. Ut sed ex nec ipsum ultrices lobortis.</text:p> <text:p text:style-name="Text_20_body">Donec luctus lectus efficitur, blandit nisi vitae, dignissim tellus. Pellentesque euismod pharetra augue gravida hendrerit. Quisque nisi mi, mattis ac nisi non, maximus malesuada ante. Nulla lobortis, diam eu ornare ornare, tellus enim feugiat arcu, non vestibulum tortor nunc eu justo. Integer blandit felis justo, eu semper est scelerisque vel. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Nam ultricies, nisi vel elementum commodo, nisl dolor tincidunt magna, sed varius est nunc at lectus. Aliquam dolor tortor, sodales placerat ultricies quis, sodales quis sapien. Duis ullamcorper sollicitudin risus at mattis. Integer consequat et nunc at condimentum. Pellentesque cursus congue augue, non suscipit lectus sodales ut. Nam a mi bibendum, blandit nisl eu, accumsan nunc. Aliquam a ex mauris. Sed nec sem quis arcu dignissim tempus eget et turpis. Ut sed ex nec ipsum ultrices lobortis.</text:p>
<text:p text:style-name="Text_20_body">Pellentesque rhoncus pharetra eros, non mollis nisi pretium non. Mauris accumsan quis odio quis euismod. Maecenas ultrices, augue et aliquam tincidunt, erat tellus ornare ligula, quis ultrices turpis nibh vel justo. Fusce gravida odio tellus. In a congue diam. Mauris consequat ex id leo lacinia dictum. Fusce id sem sodales, ultrices sapien ac, convallis orci. Donec gravida nunc sit amet nisi hendrerit, sed porta enim aliquam. In hac habitasse platea dictumst. Cras a orci felis. Curabitur non felis nec urna maximus auctor ut ut nisi. Curabitur at turpis eleifend, blandit eros at, molestie odio. Phasellus euismod neque augue.</text:p> <text:p text:style-name="Text_20_body">Pellentesque rhoncus pharetra eros, non mollis nisi pretium non. Mauris accumsan quis odio quis euismod. Maecenas ultrices, augue et aliquam tincidunt, erat tellus ornare ligula, quis ultrices turpis nibh vel justo. Fusce gravida odio tellus. In a congue diam. Mauris consequat ex id leo lacinia dictum. Fusce id sem sodales, ultrices sapien ac, convallis orci. Donec gravida nunc sit amet nisi hendrerit, sed porta enim aliquam. In hac habitasse platea dictumst. Cras a orci felis. Curabitur non felis nec urna maximus auctor ut ut nisi. Curabitur at turpis eleifend, blandit eros at, molestie odio. Phasellus euismod neque augue.</text:p>
<text:p text:style-name="Text_20_body">Integer egestas maximus leo eu facilisis. Nunc rhoncus dignissim lectus eu lacinia. Praesent lacinia urna porttitor aliquam condimentum. Nulla eu eros dictum, dictum nunc vitae, sagittis nibh. Integer ante neque, consequat nec sollicitudin id, consectetur vitae dolor. Nullam volutpat sem orci, quis viverra magna auctor a. Suspendisse potenti. Maecenas commodo sed neque pellentesque vehicula. Sed luctus nisl risus, elementum semper purus interdum vel. Ut pulvinar, massa sit amet venenatis placerat, nunc lacus hendrerit odio, non aliquet nunc risus eu lectus. Maecenas feugiat semper ligula, id lobortis sem porta eu. Integer posuere elit magna, at mollis eros bibendum et. Ut imperdiet purus vel nulla aliquam maximus. Morbi sodales purus tellus, a rhoncus sem rutrum sit amet. Quisque risus sem, laoreet nec convallis nec, rutrum vitae justo.</text:p> <text:p text:style-name="Text_20_body">Integer egestas maximus leo eu facilisis. Nunc rhoncus dignissim lectus eu lacinia. Praesent lacinia urna porttitor aliquam condimentum. Nulla eu eros dictum, dictum nunc vitae, sagittis nibh. Integer ante neque, consequat nec sollicitudin id, consectetur vitae dolor. Nullam volutpat sem orci, quis viverra magna auctor a. Suspendisse potenti. Maecenas commodo sed neque pellentesque vehicula. Sed luctus nisl risus, elementum semper purus interdum vel. Ut pulvinar, massa sit amet venenatis placerat, nunc lacus hendrerit odio, non aliquet nunc risus eu lectus. Maecenas feugiat semper ligula, id lobortis sem porta eu. Integer posuere elit magna, at mollis eros bibendum et. Ut imperdiet purus vel nulla aliquam maximus. Morbi sodales purus tellus, a rhoncus sem rutrum sit amet. Quisque risus sem, laoreet nec convallis nec, rutrum vitae justo.</text:p>
<text:h text:style-name="P7">Notes: Characters</text:h> <text:p text:style-name="P7">Notes: Characters</text:p>
<text:h text:style-name="Heading_20_1" text:outline-level="1">Nobody Owens</text:h> <text:h text:style-name="Heading_20_1" text:outline-level="1">Nobody Owens</text:h>
<text:p text:style-name="P5"><text:span text:style-name="T1">Tag:</text:span> Bod</text:p> <text:p text:style-name="P5"><text:span text:style-name="T1">Tag:</text:span> Bod</text:p>
<text:p text:style-name="Text_20_Meta"><text:span text:style-name="T1">Plot:</text:span> Main</text:p> <text:p text:style-name="Text_20_Meta"><text:span text:style-name="T1">Plot:</text:span> Main</text:p>
<text:p text:style-name="Text_20_body">Pellentesque nec erat ut nulla posuere commodo. Curabitur nisi augue, imperdiet et porta imperdiet, efficitur id leo. Cras finibus arcu at nibh commodo congue. Proin suscipit placerat condimentum. Aenean ante enim, cursus id lorem a, blandit venenatis nibh. Maecenas suscipit porta elit, sit amet porta felis porttitor eu. Sed a dui nibh. Phasellus sed faucibus dui. Pellentesque felis nulla, ultrices non efficitur quis, rutrum id mi. Mauris tempus auctor nisl, in bibendum enim pellentesque sit amet. Proin nunc lacus, imperdiet nec posuere ac, interdum non lectus.</text:p> <text:p text:style-name="Text_20_body">Pellentesque nec erat ut nulla posuere commodo. Curabitur nisi augue, imperdiet et porta imperdiet, efficitur id leo. Cras finibus arcu at nibh commodo congue. Proin suscipit placerat condimentum. Aenean ante enim, cursus id lorem a, blandit venenatis nibh. Maecenas suscipit porta elit, sit amet porta felis porttitor eu. Sed a dui nibh. Phasellus sed faucibus dui. Pellentesque felis nulla, ultrices non efficitur quis, rutrum id mi. Mauris tempus auctor nisl, in bibendum enim pellentesque sit amet. Proin nunc lacus, imperdiet nec posuere ac, interdum non lectus.</text:p>
<text:p text:style-name="Text_20_body">Suspendisse faucibus est auctor orci mollis luctus. Praesent quis sodales neque. Interdum et malesuada fames ac ante ipsum primis in faucibus. Donec sodales rutrum mattis. In in sem ornare, consequat nulla ac, convallis arcu. Duis ac metus id felis commodo commodo sit amet eget diam. Curabitur rhoncus lacinia leo at sodales. Etiam finibus porta diam a viverra. Praesent nisi urna, volutpat sit amet odio at, vehicula vehicula leo. In non enim eget nisl luctus commodo. Pellentesque pellentesque at lectus at luctus. Quisque nec felis bibendum, lacinia libero ut, lacinia eros. Integer finibus ultricies nibh sit amet placerat.</text:p> <text:p text:style-name="Text_20_body">Suspendisse faucibus est auctor orci mollis luctus. Praesent quis sodales neque. Interdum et malesuada fames ac ante ipsum primis in faucibus. Donec sodales rutrum mattis. In in sem ornare, consequat nulla ac, convallis arcu. Duis ac metus id felis commodo commodo sit amet eget diam. Curabitur rhoncus lacinia leo at sodales. Etiam finibus porta diam a viverra. Praesent nisi urna, volutpat sit amet odio at, vehicula vehicula leo. In non enim eget nisl luctus commodo. Pellentesque pellentesque at lectus at luctus. Quisque nec felis bibendum, lacinia libero ut, lacinia eros. Integer finibus ultricies nibh sit amet placerat.</text:p>
<text:p text:style-name="Text_20_body">Nullam scelerisque velit et tortor congue vestibulum a at nisi. Vivamus sodales ut turpis a convallis. In dignissim nibh at luctus sodales. Etiam sit amet rhoncus massa. Phasellus ligula magna, sollicitudin non imperdiet sit amet, volutpat vel magna. Nunc vestibulum tempor lectus, sit amet porta nunc hendrerit in. Curabitur non odio sit amet massa tincidunt facilisis. Integer et luctus nunc, eget euismod leo. Praesent faucibus metus sed purus convallis scelerisque. Fusce viverra lorem et placerat malesuada. In at elit malesuada, ullamcorper risus vitae, sodales dolor. Donec quis elementum lectus. Quisque eu eros at dui imperdiet euismod ut id neque.</text:p> <text:p text:style-name="Text_20_body">Nullam scelerisque velit et tortor congue vestibulum a at nisi. Vivamus sodales ut turpis a convallis. In dignissim nibh at luctus sodales. Etiam sit amet rhoncus massa. Phasellus ligula magna, sollicitudin non imperdiet sit amet, volutpat vel magna. Nunc vestibulum tempor lectus, sit amet porta nunc hendrerit in. Curabitur non odio sit amet massa tincidunt facilisis. Integer et luctus nunc, eget euismod leo. Praesent faucibus metus sed purus convallis scelerisque. Fusce viverra lorem et placerat malesuada. In at elit malesuada, ullamcorper risus vitae, sodales dolor. Donec quis elementum lectus. Quisque eu eros at dui imperdiet euismod ut id neque.</text:p>
<text:h text:style-name="P7">Notes: Plot</text:h> <text:p text:style-name="P7">Notes: Plot</text:p>
<text:h text:style-name="Heading_20_1" text:outline-level="1">Main Plot</text:h> <text:h text:style-name="Heading_20_1" text:outline-level="1">Main Plot</text:h>
<text:p text:style-name="Text_20_Meta"><text:span text:style-name="T1">Tag:</text:span> Main</text:p> <text:p text:style-name="Text_20_Meta"><text:span text:style-name="T1">Tag:</text:span> Main</text:p>
<text:p text:style-name="Text_20_body">Suspendisse vulputate malesuada pellentesque. Aenean sollicitudin cursus mi, vitae ultricies felis ullamcorper eu. Duis luctus risus mi, in accumsan velit cursus ut. Vestibulum eleifend leo in magna eleifend fermentum. Proin nec ornare elit. Phasellus nec interdum risus. In a volutpat augue, quis egestas justo. Morbi porta mauris mattis bibendum imperdiet.</text:p> <text:p text:style-name="Text_20_body">Suspendisse vulputate malesuada pellentesque. Aenean sollicitudin cursus mi, vitae ultricies felis ullamcorper eu. Duis luctus risus mi, in accumsan velit cursus ut. Vestibulum eleifend leo in magna eleifend fermentum. Proin nec ornare elit. Phasellus nec interdum risus. In a volutpat augue, quis egestas justo. Morbi porta mauris mattis bibendum imperdiet.</text:p>
<text:p text:style-name="Text_20_body">Mauris ut erat eu lorem malesuada egestas vel vel urna. Maecenas ac semper quam. Maecenas aliquet metus non interdum mattis. Proin consectetur molestie ligula. Aliquam sollicitudin pulvinar urna a pellentesque. Suspendisse ultrices, est mattis scelerisque porta, nisi nisi laoreet nisl, non condimentum quam ante a velit. Proin scelerisque justo augue, nec laoreet ligula egestas at. Etiam enim quam, ultrices non accumsan hendrerit, elementum vel ligula. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nam efficitur odio libero, in vestibulum arcu aliquam at. Cras non vehicula augue. Integer lobortis, est vitae aliquam facilisis, metus ligula aliquet eros, at porttitor sem tortor eget massa. Aliquam varius scelerisque neque sed gravida. Aenean eleifend lorem id ante elementum sollicitudin. Proin commodo massa a quam volutpat, mollis fermentum turpis efficitur.</text:p> <text:p text:style-name="Text_20_body">Mauris ut erat eu lorem malesuada egestas vel vel urna. Maecenas ac semper quam. Maecenas aliquet metus non interdum mattis. Proin consectetur molestie ligula. Aliquam sollicitudin pulvinar urna a pellentesque. Suspendisse ultrices, est mattis scelerisque porta, nisi nisi laoreet nisl, non condimentum quam ante a velit. Proin scelerisque justo augue, nec laoreet ligula egestas at. Etiam enim quam, ultrices non accumsan hendrerit, elementum vel ligula. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nam efficitur odio libero, in vestibulum arcu aliquam at. Cras non vehicula augue. Integer lobortis, est vitae aliquam facilisis, metus ligula aliquet eros, at porttitor sem tortor eget massa. Aliquam varius scelerisque neque sed gravida. Aenean eleifend lorem id ante elementum sollicitudin. Proin commodo massa a quam volutpat, mollis fermentum turpis efficitur.</text:p>
<text:h text:style-name="P7">Notes: World</text:h> <text:p text:style-name="P7">Notes: World</text:p>
<text:h text:style-name="Heading_20_1" text:outline-level="1">Ancient Europe</text:h> <text:h text:style-name="Heading_20_1" text:outline-level="1">Ancient Europe</text:h>
<text:p text:style-name="Text_20_Meta"><text:span text:style-name="T1">Tag:</text:span> Europe</text:p> <text:p text:style-name="Text_20_Meta"><text:span text:style-name="T1">Tag:</text:span> Europe</text:p>
<text:p text:style-name="Text_20_body">Vivamus sodales risus ac accumsan posuere. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Nunc vel enim felis. Vestibulum dignissim massa nunc, a auctor magna eleifend et. Proin dignissim sodales erat vitae convallis. Aliquam id tellus dui. Curabitur sollicitudin scelerisque ex sit amet posuere. Nam rutrum felis id rhoncus feugiat. Duis sagittis quam quis purus efficitur, quis rutrum odio iaculis. Maecenas semper ante turpis, at vulputate mi consectetur non. Sed rutrum nibh turpis, quis rhoncus purus ornare quis. Vestibulum at rutrum mauris. Integer dolor nisi, tincidunt eget vehicula ac, ultricies at ligula.</text:p> <text:p text:style-name="Text_20_body">Vivamus sodales risus ac accumsan posuere. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Nunc vel enim felis. Vestibulum dignissim massa nunc, a auctor magna eleifend et. Proin dignissim sodales erat vitae convallis. Aliquam id tellus dui. Curabitur sollicitudin scelerisque ex sit amet posuere. Nam rutrum felis id rhoncus feugiat. Duis sagittis quam quis purus efficitur, quis rutrum odio iaculis. Maecenas semper ante turpis, at vulputate mi consectetur non. Sed rutrum nibh turpis, quis rhoncus purus ornare quis. Vestibulum at rutrum mauris. Integer dolor nisi, tincidunt eget vehicula ac, ultricies at ligula.</text:p>
+13 -4
View File
@@ -25,7 +25,7 @@ import zipfile
from lxml import etree from lxml import etree
from shutil import copyfile from shutil import copyfile
from tools import cmpFiles from tools import ODT_IGNORE, cmpFiles
from novelwriter.core.toodt import ToOdt, ODTParagraphStyle, ODTTextStyle, XMLParagraph, _mkTag from novelwriter.core.toodt import ToOdt, ODTParagraphStyle, ODTTextStyle, XMLParagraph, _mkTag
from novelwriter.core.project import NWProject from novelwriter.core.project import NWProject
@@ -37,6 +37,7 @@ XML_NS = [
' xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"', ' xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"',
' xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0"', ' xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0"',
' xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"', ' xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"',
' xmlns:dc="http://purl.org/dc/elements/1.1/"'
] ]
@@ -304,7 +305,7 @@ def testCoreToOdt_Convert(mockGUI):
assert theDoc.getErrors() == [] assert theDoc.getErrors() == []
assert xmlToText(theDoc._xText) == ( assert xmlToText(theDoc._xText) == (
'<office:text>' '<office:text>'
'<text:h text:style-name="Title">Title</text:h>' '<text:p text:style-name="Title">Title</text:p>'
'</office:text>' '</office:text>'
) )
@@ -615,6 +616,10 @@ def testCoreToOdt_SaveFlat(mockGUI, fncPath, tstPaths):
"""Test the document save functions. """Test the document save functions.
""" """
theProject = NWProject(mockGUI) theProject = NWProject(mockGUI)
theProject.data.setAuthor("Jane Smith")
theProject.data.setName("Test Project")
theProject.data.setSaveCount(1234)
theProject.data.setEditTime(3674096)
theDoc = ToOdt(theProject, isFlat=True) theDoc = ToOdt(theProject, isFlat=True)
theDoc._isNovel = True theDoc._isNovel = True
@@ -641,7 +646,7 @@ def testCoreToOdt_SaveFlat(mockGUI, fncPath, tstPaths):
assert flatFile.exists() assert flatFile.exists()
copyfile(flatFile, testFile) copyfile(flatFile, testFile)
assert cmpFiles(testFile, compFile, [4, 5]) assert cmpFiles(testFile, compFile, ignoreStart=ODT_IGNORE)
# END Test testCoreToOdt_SaveFlat # END Test testCoreToOdt_SaveFlat
@@ -651,6 +656,10 @@ def testCoreToOdt_SaveFull(mockGUI, fncPath, tstPaths):
"""Test the document save functions. """Test the document save functions.
""" """
theProject = NWProject(mockGUI) theProject = NWProject(mockGUI)
theProject.data.setAuthor("Jane Smith")
theProject.data.setName("Test Project")
theProject.data.setSaveCount(1234)
theProject.data.setEditTime(3674096)
theDoc = ToOdt(theProject, isFlat=False) theDoc = ToOdt(theProject, isFlat=False)
theDoc._isNovel = True theDoc._isNovel = True
@@ -719,7 +728,7 @@ def testCoreToOdt_SaveFull(mockGUI, fncPath, tstPaths):
assert cmpFiles(maniFile, maniComp) assert cmpFiles(maniFile, maniComp)
assert cmpFiles(settFile, settComp) assert cmpFiles(settFile, settComp)
assert cmpFiles(contFile, contComp) assert cmpFiles(contFile, contComp)
assert cmpFiles(metaFile, metaComp, [4, 5]) assert cmpFiles(metaFile, metaComp, ignoreStart=ODT_IGNORE)
assert cmpFiles(stylFile, stylComp) assert cmpFiles(stylFile, stylComp)
# END Test testCoreToOdt_SaveFull # END Test testCoreToOdt_SaveFull
+1
View File
@@ -469,6 +469,7 @@ def testCoreTree_ToCFile(monkeypatch, mockGUI, mockItems, tmpPath):
assert theTree.writeToCFile() is False assert theTree.writeToCFile() is False
theProject._storage._runtimePath = tmpPath theProject._storage._runtimePath = tmpPath
(tmpPath / "content").mkdir()
assert theTree.writeToCFile() is True assert theTree.writeToCFile() is True
pathA = str(Path("content") / "c000000000001.nwd") pathA = str(Path("content") / "c000000000001.nwd")
+8 -1
View File
@@ -27,7 +27,7 @@ from tools import C, buildTestProject
from PyQt5.QtGui import QFocusEvent from PyQt5.QtGui import QFocusEvent
from PyQt5.QtCore import Qt, QEvent from PyQt5.QtCore import Qt, QEvent
from PyQt5.QtWidgets import QToolTip from PyQt5.QtWidgets import QInputDialog, QToolTip
from novelwriter.enum import nwWidget, nwItemType from novelwriter.enum import nwWidget, nwItemType
from novelwriter.gui.noveltree import NovelTreeColumn from novelwriter.gui.noveltree import NovelTreeColumn
@@ -82,6 +82,8 @@ def testGuiNovelTree_TreeItems(qtbot, monkeypatch, nwGUI, projPath, mockRnd):
# Populate Tree # Populate Tree
# ============= # =============
novelView.setTreeFocus()
nwGUI.projStack.setCurrentIndex(nwGUI.idxNovelView) nwGUI.projStack.setCurrentIndex(nwGUI.idxNovelView)
nwGUI.rebuildIndex() nwGUI.rebuildIndex()
novelTree._populateTree(rootHandle=None) novelTree._populateTree(rootHandle=None)
@@ -172,6 +174,11 @@ def testGuiNovelTree_TreeItems(qtbot, monkeypatch, nwGUI, projPath, mockRnd):
spSize = nwGUI.splitMain.sizes() spSize = nwGUI.splitMain.sizes()
nwGUI.splitMain.setSizes([spSize[0] + 10, spSize[1] - 10]) nwGUI.splitMain.setSizes([spSize[0] + 10, spSize[1] - 10])
# Resize the last column
with monkeypatch.context() as mp:
mp.setattr(QInputDialog, "getInt", lambda *a, **k: (40, True))
novelBar._selectLastColumnSize()
# Item Meta # Item Meta
# ========= # =========
+2 -2
View File
@@ -24,7 +24,7 @@ import pytest
from shutil import copyfile from shutil import copyfile
from mock import causeException, causeOSError from mock import causeException, causeOSError
from tools import cmpFiles from tools import ODT_IGNORE, cmpFiles
from novelwriter.core.project import NWProject from novelwriter.core.project import NWProject
from novelwriter.mbuild.docbuild import NWBuildDocument from novelwriter.mbuild.docbuild import NWBuildDocument
@@ -85,7 +85,7 @@ def testMBuildDocBuild_OpenDocument(monkeypatch, mockGUI, prjLipsum, fncPath, ts
assert error == [] assert error == []
copyfile(docFile, tstFile) copyfile(docFile, tstFile)
assert cmpFiles(tstFile, cmpFile, ignoreStart="<meta:") assert cmpFiles(tstFile, cmpFile, ignoreStart=ODT_IGNORE)
# Check ODT Build # Check ODT Build
# =============== # ===============
+4 -4
View File
@@ -23,7 +23,7 @@ import pytest
from shutil import copyfile from shutil import copyfile
from tools import cmpFiles, getGuiItem from tools import ODT_IGNORE, cmpFiles, getGuiItem
from PyQt5.QtCore import Qt from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QAction, QFileDialog from PyQt5.QtWidgets import QAction, QFileDialog
@@ -103,7 +103,7 @@ def testToolBuild_Main(qtbot, monkeypatch, nwGUI, prjLipsum, tstPaths):
testFile = tstPaths.outDir / "guiBuild_Tool_Step1_Lorem_Ipsum.fodt" testFile = tstPaths.outDir / "guiBuild_Tool_Step1_Lorem_Ipsum.fodt"
compFile = tstPaths.refDir / "guiBuild_Tool_Step1_Lorem_Ipsum.fodt" compFile = tstPaths.refDir / "guiBuild_Tool_Step1_Lorem_Ipsum.fodt"
copyfile(projFile, testFile) copyfile(projFile, testFile)
assert cmpFiles(testFile, compFile, [4, 5]) assert cmpFiles(testFile, compFile, ignoreStart=ODT_IGNORE)
# Change Title Formats and Flip Switches # Change Title Formats and Flip Switches
nwBuild.fmtChapter.setText(r"Chapter %chw%: %title%") nwBuild.fmtChapter.setText(r"Chapter %chw%: %title%")
@@ -147,7 +147,7 @@ def testToolBuild_Main(qtbot, monkeypatch, nwGUI, prjLipsum, tstPaths):
testFile = tstPaths.outDir / "guiBuild_Tool_Step2_Lorem_Ipsum.fodt" testFile = tstPaths.outDir / "guiBuild_Tool_Step2_Lorem_Ipsum.fodt"
compFile = tstPaths.refDir / "guiBuild_Tool_Step2_Lorem_Ipsum.fodt" compFile = tstPaths.refDir / "guiBuild_Tool_Step2_Lorem_Ipsum.fodt"
copyfile(projFile, testFile) copyfile(projFile, testFile)
assert cmpFiles(testFile, compFile, [4, 5]) assert cmpFiles(testFile, compFile, ignoreStart=ODT_IGNORE)
# Replace Tabs with Spaces # Replace Tabs with Spaces
qtbot.mouseClick(nwBuild.replaceTabs, Qt.LeftButton) qtbot.mouseClick(nwBuild.replaceTabs, Qt.LeftButton)
@@ -181,7 +181,7 @@ def testToolBuild_Main(qtbot, monkeypatch, nwGUI, prjLipsum, tstPaths):
testFile = tstPaths.outDir / "guiBuild_Tool_Step3_Lorem_Ipsum.fodt" testFile = tstPaths.outDir / "guiBuild_Tool_Step3_Lorem_Ipsum.fodt"
compFile = tstPaths.refDir / "guiBuild_Tool_Step3_Lorem_Ipsum.fodt" compFile = tstPaths.refDir / "guiBuild_Tool_Step3_Lorem_Ipsum.fodt"
copyfile(projFile, testFile) copyfile(projFile, testFile)
assert cmpFiles(testFile, compFile, [4, 5]) assert cmpFiles(testFile, compFile, ignoreStart=ODT_IGNORE)
# Putline Mode # Putline Mode
nwBuild.fmtChapter.setText(r"Chapter %chw%: %title%") nwBuild.fmtChapter.setText(r"Chapter %chw%: %title%")
+1
View File
@@ -27,6 +27,7 @@ from pathlib import Path
from PyQt5.QtWidgets import qApp from PyQt5.QtWidgets import qApp
XML_IGNORE = ("<novelWriterXML", "<project") XML_IGNORE = ("<novelWriterXML", "<project")
ODT_IGNORE = ("<meta:generator", "<meta:creation-date", "<dc:date")
class C: class C: