novelWriter 2.5b1__tar.gz → 2.5rc1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/CHANGELOG.md +97 -6
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/PKG-INFO +1 -1
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelWriter.egg-info/PKG-INFO +1 -1
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelWriter.egg-info/SOURCES.txt +2 -2
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/__init__.py +3 -3
- novelwriter-2.5rc1/novelwriter/assets/i18n/nw_pt_BR.qm +0 -0
- novelwriter-2.5rc1/novelwriter/assets/i18n/project_pt_BR.json +116 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/manual.pdf +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/sample.zip +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/themes/cyberpunk_night.conf +1 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/themes/default_dark.conf +1 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/themes/default_light.conf +1 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/themes/dracula.conf +1 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/themes/solarized_dark.conf +1 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/themes/solarized_light.conf +1 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/common.py +2 -3
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/config.py +67 -15
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/constants.py +8 -10
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/core/buildsettings.py +5 -3
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/core/coretools.py +3 -1
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/core/docbuild.py +1 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/core/tohtml.py +69 -29
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/core/tokenizer.py +83 -14
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/core/toodt.py +48 -21
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/core/toqdoc.py +25 -9
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/dialogs/about.py +10 -15
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/dialogs/docmerge.py +16 -16
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/dialogs/docsplit.py +16 -16
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/dialogs/editlabel.py +6 -8
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/dialogs/preferences.py +94 -68
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/dialogs/projectsettings.py +10 -10
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/dialogs/quotes.py +9 -5
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/dialogs/wordlist.py +6 -6
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/enum.py +4 -5
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/extensions/configlayout.py +23 -4
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/extensions/modified.py +22 -3
- novelwriter-2.5b1/novelwriter/extensions/circularprogress.py → novelwriter-2.5rc1/novelwriter/extensions/progressbars.py +26 -3
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/extensions/statusled.py +28 -22
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/gui/doceditor.py +20 -11
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/gui/dochighlight.py +30 -39
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/gui/docviewer.py +21 -14
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/gui/mainmenu.py +11 -11
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/gui/outline.py +3 -3
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/gui/projtree.py +19 -28
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/gui/search.py +10 -1
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/gui/statusbar.py +25 -29
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/gui/theme.py +3 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/guimain.py +91 -84
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/shared.py +10 -8
- novelwriter-2.5rc1/novelwriter/text/patterns.py +113 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/tools/dictionaries.py +2 -8
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/tools/lipsum.py +8 -12
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/tools/manusbuild.py +9 -9
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/tools/manuscript.py +10 -5
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/tools/manussettings.py +7 -3
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/tools/noveldetails.py +10 -10
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/tools/welcome.py +10 -10
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/tools/writingstats.py +3 -3
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/types.py +5 -2
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/pkgutils.py +7 -3
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/win_setup_embed.iss +8 -5
- novelwriter-2.5b1/novelwriter/assets/i18n/nw_pt_BR.qm +0 -0
- novelwriter-2.5b1/novelwriter/assets/i18n/project_pt_BR.json +0 -116
- novelwriter-2.5b1/novelwriter/extensions/simpleprogress.py +0 -53
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/CREDITS.md +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/LICENSE.md +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/MANIFEST.in +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/README.md +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelWriter.egg-info/dependency_links.txt +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelWriter.egg-info/entry_points.txt +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelWriter.egg-info/requires.txt +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelWriter.egg-info/top_level.txt +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/i18n/nw_de_DE.qm +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/i18n/nw_en_US.qm +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/i18n/nw_es_419.qm +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/i18n/nw_fr_FR.qm +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/i18n/nw_it_IT.qm +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/i18n/nw_ja_JP.qm +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/i18n/nw_nb_NO.qm +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/i18n/nw_nl_NL.qm +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/i18n/nw_zh_CN.qm +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/i18n/project_de_DE.json +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/i18n/project_en_GB.json +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/i18n/project_en_US.json +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/i18n/project_es_419.json +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/i18n/project_fr_FR.json +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/i18n/project_it_IT.json +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/i18n/project_ja_JP.json +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/i18n/project_nb_NO.json +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/i18n/project_nl_NL.json +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/i18n/project_nn_NO.json +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/i18n/project_ru_RU.json +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/i18n/project_zh_CN.json +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/none.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/novelwriter.ico +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/novelwriter.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/README.md +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/icons.conf +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/mixed_document-chapter.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/mixed_document-new.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/mixed_document-note.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/mixed_document-scene.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/mixed_document-section.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/mixed_document-title.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/mixed_edit.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/mixed_import.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/mixed_input-checked.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/mixed_input-none.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/mixed_input-unchecked.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/mixed_search-replace.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_deco-h0.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_deco-h1.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_deco-h2-narrow.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_deco-h2.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_deco-h3-narrow.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_deco-h3.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_deco-h4-narrow.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_deco-h4.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_deco-note.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_deco-noveltree-more.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_font.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_panel.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_quote.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_search-case.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_search-preserve.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_search-regex.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_search-word.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_tb-bold-md.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_tb-bold.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_tb-italic-md.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_tb-italic.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_tb-mark.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_tb-strike-md.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_tb-strike.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_tb-subscript.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_tb-superscript.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/nw_tb-underline.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_arrow-down-thick-grey.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_arrow-forward.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_arrow-maximise.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_arrow-minimise.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_arrow-repeat-grey.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_book-grey.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_book.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_bookmark.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_calendar.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_cancel-grey.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_cancel.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_chart-bar-grey.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_chevron-down.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_chevron-left.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_chevron-right.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_chevron-up.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_cog.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_delete-full.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_delete.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_directions-full.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_document-add.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_document-text.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_document.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_export-grey.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_export.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_eye.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_flag.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_folder-open.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_folder.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_globe-grey.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_key.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_lightbulb-full.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_location.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_media-pause-grey.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_media-record-outline.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_media-record.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_minus.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_pencil.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_pin-outline.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_pin.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_plus.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_puzzle-outline.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_puzzle.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_refresh-flipped.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_refresh.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_search-grey.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_search.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_star.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_stopwatch-grey.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_th-dot-menu.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_th-dot-more.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_th-list-grey.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_th-list.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_times.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_trash.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_unfold-hidden.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_unfold-visible.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_user.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_dark/typ_warning-full.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/README.md +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/icons.conf +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/mixed_document-chapter.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/mixed_document-new.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/mixed_document-note.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/mixed_document-scene.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/mixed_document-section.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/mixed_document-title.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/mixed_edit.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/mixed_import.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/mixed_input-checked.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/mixed_input-none.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/mixed_input-unchecked.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/mixed_search-replace.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_deco-h0.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_deco-h1.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_deco-h2-narrow.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_deco-h2.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_deco-h3-narrow.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_deco-h3.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_deco-h4-narrow.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_deco-h4.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_deco-note.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_deco-noveltree-more.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_font.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_panel.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_quote.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_search-case.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_search-preserve.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_search-regex.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_search-word.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_tb-bold-md.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_tb-bold.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_tb-italic-md.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_tb-italic.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_tb-mark.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_tb-strike-md.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_tb-strike.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_tb-subscript.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_tb-superscript.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/nw_tb-underline.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_arrow-down-thick-grey.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_arrow-forward.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_arrow-maximise.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_arrow-minimise.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_arrow-repeat-grey.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_book-grey.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_book.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_bookmark.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_calendar.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_cancel-grey.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_cancel.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_chart-bar-grey.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_chevron-down.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_chevron-left.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_chevron-right.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_chevron-up.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_cog.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_delete-full.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_delete.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_directions-full.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_document-add.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_document-text.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_document.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_export-grey.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_export.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_eye.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_flag.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_folder-open.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_folder.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_globe-grey.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_key.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_lightbulb-full.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_location.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_media-pause-grey.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_media-record-outline.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_media-record.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_minus.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_pencil.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_pin-outline.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_pin.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_plus.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_puzzle-outline.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_puzzle.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_refresh-flipped.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_refresh.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_search-grey.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_search.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_star.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_stopwatch-grey.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_th-dot-menu.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_th-dot-more.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_th-list-grey.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_th-list.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_times.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_trash.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_unfold-hidden.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_unfold-visible.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_user.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/typicons_light/typ_warning-full.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/x-novelwriter-project.ico +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/icons/x-novelwriter-project.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/images/novelwriter-text-dark.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/images/novelwriter-text-light.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/images/welcome-dark.jpg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/images/welcome-light.jpg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/syntax/cyberpunk_night.conf +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/syntax/default_dark.conf +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/syntax/default_light.conf +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/syntax/dracula.conf +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/syntax/grey_dark.conf +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/syntax/grey_light.conf +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/syntax/light_owl.conf +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/syntax/night_owl.conf +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/syntax/snazzy.conf +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/syntax/solarized_dark.conf +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/syntax/solarized_light.conf +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/syntax/tango.conf +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/syntax/tomorrow.conf +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/syntax/tomorrow_night.conf +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/syntax/tomorrow_night_blue.conf +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/syntax/tomorrow_night_bright.conf +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/syntax/tomorrow_night_eighties.conf +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/text/credits_en.htm +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/text/lipsum.txt +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/assets/themes/default.conf +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/core/document.py +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/core/index.py +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/core/item.py +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/core/options.py +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/core/project.py +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/core/projectdata.py +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/core/projectxml.py +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/core/sessions.py +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/core/spellcheck.py +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/core/status.py +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/core/storage.py +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/core/tomarkdown.py +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/core/tree.py +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/error.py +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/extensions/eventfilters.py +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/extensions/novelselector.py +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/extensions/pagedsidebar.py +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/extensions/switch.py +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/extensions/switchbox.py +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/extensions/versioninfo.py +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/gui/docviewerpanel.py +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/gui/editordocument.py +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/gui/itemdetails.py +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/gui/noveltree.py +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/gui/sidebar.py +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/novelwriter/text/counting.py +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/pyproject.toml +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/appimage_launcher.sh +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/data/hicolor/128x128/apps/novelwriter.png +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/data/hicolor/128x128/mimetypes/application-x-novelwriter-project.png +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/data/hicolor/16x16/apps/novelwriter.png +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/data/hicolor/16x16/mimetypes/application-x-novelwriter-project.png +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/data/hicolor/24x24/apps/novelwriter.png +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/data/hicolor/24x24/mimetypes/application-x-novelwriter-project.png +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/data/hicolor/256x256/apps/novelwriter.png +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/data/hicolor/256x256/mimetypes/application-x-novelwriter-project.png +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/data/hicolor/32x32/apps/novelwriter.png +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/data/hicolor/32x32/mimetypes/application-x-novelwriter-project.png +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/data/hicolor/48x48/apps/novelwriter.png +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/data/hicolor/48x48/mimetypes/application-x-novelwriter-project.png +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/data/hicolor/512x512/apps/novelwriter.png +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/data/hicolor/512x512/mimetypes/application-x-novelwriter-project.png +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/data/hicolor/64x64/apps/novelwriter.png +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/data/hicolor/64x64/mimetypes/application-x-novelwriter-project.png +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/data/hicolor/scalable/apps/novelwriter.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/data/hicolor/scalable/mimetypes/application-x-novelwriter-project.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/data/novelwriter.desktop +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/data/novelwriter.png +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/data/x-novelwriter-project.xml +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/debian/compat +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/debian/control +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/debian/copyright +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/debian/install +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/debian/py3dist-overrides +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/debian/rules +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/debian/source/format +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/description_pypi.md +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/description_short.txt +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/icons/novelwriter.ico +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/icons/novelwriter.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/icons/x-novelwriter-project.ico +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/icons/x-novelwriter-project.svg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/iss_license.txt +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/launchpad_setup.cfg +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/macos/App.entitlements +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/macos/Info.plist.template +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/macos/build.sh +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/macos/novelwriter.iconset/icon_128x128.png +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/macos/novelwriter.iconset/icon_128x128@2x.png +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/macos/novelwriter.iconset/icon_16x16.png +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/macos/novelwriter.iconset/icon_16x16@2x.png +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/macos/novelwriter.iconset/icon_256x256.png +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/macos/novelwriter.iconset/icon_256x256@2x.png +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/macos/novelwriter.iconset/icon_32x32.png +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/macos/novelwriter.iconset/icon_32x32@2x.png +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/macos/novelwriter.iconset/icon_512x512.png +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/macos/novelwriter.iconset/icon_512x512@2x.png +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/make_clean.sh +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/make_pip.sh +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/make_release.sh +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/novelwriter.appdata.xml +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/novelwriter_readme.png +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup/novelwriter_text.png +0 -0
- {novelwriter-2.5b1 → novelwriter-2.5rc1}/setup.cfg +0 -0
@@ -1,5 +1,70 @@
|
|
1
1
|
# novelWriter Changelog
|
2
2
|
|
3
|
+
## Version 2.5 RC 1 [2024-06-22]
|
4
|
+
|
5
|
+
### Release Notes
|
6
|
+
|
7
|
+
This is a release candidate of the next release version, and is intended for testing purposes.
|
8
|
+
Please be careful when using this version on live writing projects, and make sure you take frequent
|
9
|
+
backups.
|
10
|
+
|
11
|
+
### Detailed Changelog
|
12
|
+
|
13
|
+
**Bugfixes**
|
14
|
+
|
15
|
+
* The Status bar LEDs are now properly updated when the theme changes. Issue #1893. PR #1906.
|
16
|
+
* All HTML tags are now properly closed at the end of each paragraph in HTML output. After
|
17
|
+
shortcodes were introduced, it was possible to leave formatting tags open. Issue #1919. PR #1926.
|
18
|
+
|
19
|
+
**Improvements**
|
20
|
+
|
21
|
+
* Move the first line indent setting from being an Open Document feature to a general build
|
22
|
+
settings feature that also applies to HTML, and make it visible in the Manuscript build tool
|
23
|
+
preview. Issue #1839 and #1858. PR #1898.
|
24
|
+
* Make sure the document in the editor is saved before the same document is opened in the viewer.
|
25
|
+
Issue #1884. PR #1902.
|
26
|
+
* The project name now appears before "novelWriter" in the main window title, which improves the
|
27
|
+
task bar label on at least Linux Mint Cinnamon, and Windows. Issue #1910. PR #1911.
|
28
|
+
* Dialogue highlighting now only applies to novel documents, not notes. It is also possible to
|
29
|
+
apply it to HTML and ODT manuscripts, and it also shows up in the preview and in the document
|
30
|
+
viewer. Issue #1774. PR #1908.
|
31
|
+
* The Welcome dialog and other tools that use the project name to generate files of folder names
|
32
|
+
are now less restrictive on what characters it allows in the file or folder names. Issue #1917.
|
33
|
+
PR #1922.
|
34
|
+
* Last used folder paths are now remembered individually for each tool or feature that requires
|
35
|
+
path input from the user. Issues #1930 and #1933. PR #1934.
|
36
|
+
* The Manuscript preview will now show line height as set in build settings. Issue #1920. PR #1935.
|
37
|
+
* Global search now refreshes if any of the search option buttons are toggled, and the search
|
38
|
+
result will show the complete word if the search term only matches part of a word. Issue #1830.
|
39
|
+
PR #1936.
|
40
|
+
* When a new note is created from a reference tag in the editor, the syntax highlighting is
|
41
|
+
properly updated to indicate the tag is now valid. Issue #1916. PR #1938.
|
42
|
+
* The `Ctrl+E` shortcut now toggles focus between editor and viewer instead of just going to the
|
43
|
+
editor. The header text colour changes to indicate which panel has focus. This should make it
|
44
|
+
easier to scroll the content of the viewer without having to click it with the mouse first.
|
45
|
+
Issue #1387. PRs #1940 and #1941.
|
46
|
+
|
47
|
+
**Code Improvements**
|
48
|
+
|
49
|
+
* Change how dialogs are handled in memory, and drop the calls to deleteLater for the underlying Qt
|
50
|
+
object as it caused problems in some cases. Instead, the dialog is disconnected from the parent
|
51
|
+
object, which seems to let the Python and Qt garbage collectors to kick in.
|
52
|
+
PRs #1899. #1913 and #1921.
|
53
|
+
* Overload the reject call for dialogs rather to call close, which the default implementation does
|
54
|
+
not. This simplifies the logic when closing dialogs, as reject() is also a slot, which close() is
|
55
|
+
not. Issue #1915. PR #1918.
|
56
|
+
* Processing of dialogue highlighting has been added to the Tokenizer class, and the RegEx handling
|
57
|
+
moved to a separate factory class. PR #1908.
|
58
|
+
* The progress bar widgets have been moved to a single module, and test coverage added. PR #1937.
|
59
|
+
|
60
|
+
**Packaging**
|
61
|
+
|
62
|
+
* The Windows installer is now built with Inno Setup 6.3, and uses zip compression rather than
|
63
|
+
lzma. It also properly sets the undelete icon, and the undelete process is better at cleaning up
|
64
|
+
files. PR #1932.
|
65
|
+
|
66
|
+
----
|
67
|
+
|
3
68
|
## Version 2.5 Beta 1 [2024-05-26]
|
4
69
|
|
5
70
|
### Release Notes
|
@@ -98,6 +163,32 @@ careful when using this version on live writing projects, and make sure you take
|
|
98
163
|
|
99
164
|
----
|
100
165
|
|
166
|
+
## Version 2.4.4 [2024-06-12]
|
167
|
+
|
168
|
+
### Release Notes
|
169
|
+
|
170
|
+
This is a patch release that fixes a usage issue when setting document label from an unsaved
|
171
|
+
document, fixes a rare chance of a crash when closing the Manuscript tool, and updates the
|
172
|
+
Portuguese translation.
|
173
|
+
|
174
|
+
### Detailed Changelog
|
175
|
+
|
176
|
+
**Bugfixes**
|
177
|
+
|
178
|
+
* Backported some memory improvements from the upcoming 2.5 release. This also fixes a potential,
|
179
|
+
but low probability crash in the Manuscript tool. If the tool is closed during the milliseconds
|
180
|
+
long window when the clock on the yellow label is updated, the app can crash with a segmentation
|
181
|
+
fault. PRs #1903 and #1905.
|
182
|
+
* Fixed an issue where changing a document's label to match the document heading would suggest the
|
183
|
+
wrong title if the document was open in the editor, but in an unsaved state. An easy condition to
|
184
|
+
encounter when creating a new document and setting the heading first. Issue #1914. PR #1923.
|
185
|
+
|
186
|
+
**Internationalisation**
|
187
|
+
|
188
|
+
* Portuguese translation updated by Oli Maia. PR #1904.
|
189
|
+
|
190
|
+
----
|
191
|
+
|
101
192
|
## Version 2.4.3 [2024-05-20]
|
102
193
|
|
103
194
|
### Release Notes
|
@@ -110,14 +201,14 @@ the spell check dictionary install tool.
|
|
110
201
|
|
111
202
|
**Bugfixes**
|
112
203
|
|
113
|
-
*
|
204
|
+
* Fixed a crash in the dictionaries install tool on Windows if the config folder reported by the
|
114
205
|
third party Enchant spell checker tool didn't already exist prior to adding new dictionaries.
|
115
206
|
The folder is now created when the tool is opened if it doesn't exist. Issue #1874. PR #1876.
|
116
|
-
*
|
117
|
-
preview in the Manuscript Build tool, on certain platforms. Changing the font and
|
118
|
-
non-standard font sizes produced unexpected results when reloading. The issue seems to be
|
119
|
-
to Qt 5.15.3, but that is not fully confirmed. However, the only place so far where the
|
120
|
-
observed is on Mint 21.3. Issues #1862 and #1875. PR #1877.
|
207
|
+
* Fixed issues when setting a different text font for the editor and viewer, and related issues
|
208
|
+
with the preview in the Manuscript Build tool, on certain platforms. Changing the font and
|
209
|
+
setting non-standard font sizes produced unexpected results when reloading. The issue seems to be
|
210
|
+
related to Qt 5.15.3, but that is not fully confirmed. However, the only place so far where the
|
211
|
+
issue is observed is on Mint 21.3. Issues #1862 and #1875. PR #1877.
|
121
212
|
|
122
213
|
----
|
123
214
|
|
@@ -308,13 +308,12 @@ novelwriter/dialogs/preferences.py
|
|
308
308
|
novelwriter/dialogs/projectsettings.py
|
309
309
|
novelwriter/dialogs/quotes.py
|
310
310
|
novelwriter/dialogs/wordlist.py
|
311
|
-
novelwriter/extensions/circularprogress.py
|
312
311
|
novelwriter/extensions/configlayout.py
|
313
312
|
novelwriter/extensions/eventfilters.py
|
314
313
|
novelwriter/extensions/modified.py
|
315
314
|
novelwriter/extensions/novelselector.py
|
316
315
|
novelwriter/extensions/pagedsidebar.py
|
317
|
-
novelwriter/extensions/
|
316
|
+
novelwriter/extensions/progressbars.py
|
318
317
|
novelwriter/extensions/statusled.py
|
319
318
|
novelwriter/extensions/switch.py
|
320
319
|
novelwriter/extensions/switchbox.py
|
@@ -334,6 +333,7 @@ novelwriter/gui/sidebar.py
|
|
334
333
|
novelwriter/gui/statusbar.py
|
335
334
|
novelwriter/gui/theme.py
|
336
335
|
novelwriter/text/counting.py
|
336
|
+
novelwriter/text/patterns.py
|
337
337
|
novelwriter/tools/dictionaries.py
|
338
338
|
novelwriter/tools/lipsum.py
|
339
339
|
novelwriter/tools/manusbuild.py
|
@@ -47,9 +47,9 @@ __license__ = "GPLv3"
|
|
47
47
|
__author__ = "Veronica Berglyd Olsen"
|
48
48
|
__maintainer__ = "Veronica Berglyd Olsen"
|
49
49
|
__email__ = "code@vkbo.net"
|
50
|
-
__version__ = "2.
|
51
|
-
__hexversion__ = "
|
52
|
-
__date__ = "2024-
|
50
|
+
__version__ = "2.5rc1"
|
51
|
+
__hexversion__ = "0x020500c1"
|
52
|
+
__date__ = "2024-06-22"
|
53
53
|
__status__ = "Stable"
|
54
54
|
__domain__ = "novelwriter.io"
|
55
55
|
|
Binary file
|
@@ -0,0 +1,116 @@
|
|
1
|
+
{
|
2
|
+
"Synopsis": "Sinopse",
|
3
|
+
"Short Description": "Descrição breve",
|
4
|
+
"Comment": "Comentário",
|
5
|
+
"Notes": "Notas",
|
6
|
+
"Tag": "Etiqueta",
|
7
|
+
"Point of View": "Ponto de vista",
|
8
|
+
"Focus": "Foco",
|
9
|
+
"Characters": "Personagens",
|
10
|
+
"Plot": "Trama",
|
11
|
+
"Timeline": "Linha do tempo",
|
12
|
+
"Locations": "Lugares",
|
13
|
+
"Objects": "Objetos",
|
14
|
+
"Entities": "Entidades",
|
15
|
+
"Custom": "Outros",
|
16
|
+
"0": "Zero",
|
17
|
+
"1": "Um",
|
18
|
+
"2": "Dois",
|
19
|
+
"3": "Três",
|
20
|
+
"4": "Quatro",
|
21
|
+
"5": "Cinco",
|
22
|
+
"6": "Seis",
|
23
|
+
"7": "Sete",
|
24
|
+
"8": "Oito",
|
25
|
+
"9": "Nove",
|
26
|
+
"10": "Dez",
|
27
|
+
"11": "Onze",
|
28
|
+
"12": "Doze",
|
29
|
+
"13": "Treze",
|
30
|
+
"14": "Quatorze",
|
31
|
+
"15": "Quinze",
|
32
|
+
"16": "Dezesseis",
|
33
|
+
"17": "Dezessete",
|
34
|
+
"18": "Dezoito",
|
35
|
+
"19": "Dezenove",
|
36
|
+
"20": "Vinte",
|
37
|
+
"21": "Vinte e um",
|
38
|
+
"22": "Vinte e dois",
|
39
|
+
"23": "Vinte e três",
|
40
|
+
"24": "Vinte e quatro",
|
41
|
+
"25": "Vinte e cinco",
|
42
|
+
"26": "Vinte e seis",
|
43
|
+
"27": "Vinte e sete",
|
44
|
+
"28": "Vinte e oito",
|
45
|
+
"29": "Vinte e nove",
|
46
|
+
"30": "Trinta",
|
47
|
+
"31": "Trinta e um",
|
48
|
+
"32": "Trinta e dois",
|
49
|
+
"33": "Trinta e três",
|
50
|
+
"34": "Trinta e quatro",
|
51
|
+
"35": "Trinta e cinco",
|
52
|
+
"36": "Trinta e seis",
|
53
|
+
"37": "Trinta e sete",
|
54
|
+
"38": "Trinta e oito",
|
55
|
+
"39": "Trinta e nove",
|
56
|
+
"40": "Quarenta",
|
57
|
+
"41": "Quarenta e um",
|
58
|
+
"42": "Quarenta e dois",
|
59
|
+
"43": "Quarenta e três",
|
60
|
+
"44": "Quarenta e quatro",
|
61
|
+
"45": "Quarenta e cinco",
|
62
|
+
"46": "Quarenta e seis",
|
63
|
+
"47": "Quarenta e sete",
|
64
|
+
"48": "Quarenta e oito",
|
65
|
+
"49": "Quarenta e nove",
|
66
|
+
"50": "Cinquenta",
|
67
|
+
"51": "Cinquenta e um",
|
68
|
+
"52": "Cinquenta e dois",
|
69
|
+
"53": "Cinquenta e três",
|
70
|
+
"54": "Cinquenta e quatro",
|
71
|
+
"55": "Cinquenta e cinco",
|
72
|
+
"56": "Cinquenta e seis",
|
73
|
+
"57": "Cinquenta e sete",
|
74
|
+
"58": "Cinquenta e oito",
|
75
|
+
"59": "Cinquenta e nove",
|
76
|
+
"60": "Sessenta",
|
77
|
+
"61": "Sessenta e um",
|
78
|
+
"62": "Sessenta e dois",
|
79
|
+
"63": "Sessenta e três",
|
80
|
+
"64": "Sessenta e quatro",
|
81
|
+
"65": "Sessenta e cinco",
|
82
|
+
"66": "Sessenta e seis",
|
83
|
+
"67": "Sessenta e sete",
|
84
|
+
"68": "Sessenta e oito",
|
85
|
+
"69": "Sessenta e nove",
|
86
|
+
"70": "Setenta",
|
87
|
+
"71": "Setenta e um",
|
88
|
+
"72": "Setenta e dois",
|
89
|
+
"73": "Setenta e três",
|
90
|
+
"74": "Setenta e quatro",
|
91
|
+
"75": "Setenta e cinco",
|
92
|
+
"76": "Setenta e seis",
|
93
|
+
"77": "Setenta e sete",
|
94
|
+
"78": "Setenta e oito",
|
95
|
+
"79": "Setenta e nove",
|
96
|
+
"80": "Oitenta",
|
97
|
+
"81": "Oitenta e um",
|
98
|
+
"82": "Oitenta e dois",
|
99
|
+
"83": "Oitenta e três",
|
100
|
+
"84": "Oitenta e quatro",
|
101
|
+
"85": "Oitenta e cinco",
|
102
|
+
"86": "Oitenta e seis",
|
103
|
+
"87": "Oitenta e sete",
|
104
|
+
"88": "Oitenta e oito",
|
105
|
+
"89": "Oitenta e nove",
|
106
|
+
"90": "Noventa",
|
107
|
+
"91": "Noventa e um",
|
108
|
+
"92": "Noventa e dois",
|
109
|
+
"93": "Noventa e três",
|
110
|
+
"94": "Noventa e quatro",
|
111
|
+
"95": "Noventa e cinco",
|
112
|
+
"96": "Noventa e seis",
|
113
|
+
"97": "Noventa e sete",
|
114
|
+
"98": "Noventa e oito",
|
115
|
+
"99": "Noventa e nove"
|
116
|
+
}
|
Binary file
|
Binary file
|
@@ -523,12 +523,11 @@ def readTextFile(path: str | Path) -> str:
|
|
523
523
|
|
524
524
|
|
525
525
|
def makeFileNameSafe(text: str) -> str:
|
526
|
-
"""Return a filename
|
526
|
+
"""Return a filename-safe string.
|
527
527
|
See: https://unicode.org/reports/tr15/#Norm_Forms
|
528
528
|
"""
|
529
529
|
text = unicodedata.normalize("NFKC", text).strip()
|
530
|
-
|
531
|
-
return "".join(c for c in text if c.isalnum() or c in allowed)
|
530
|
+
return "".join(c for c in text if c.isprintable() and c not in r'\/:*?"<>|')
|
532
531
|
|
533
532
|
|
534
533
|
def getFileSize(path: Path) -> int:
|
@@ -5,6 +5,7 @@ novelWriter – Config Class
|
|
5
5
|
File History:
|
6
6
|
Created: 2018-09-22 [0.0.1] Config
|
7
7
|
Created: 2022-11-09 [2.0rc2] RecentProjects
|
8
|
+
Created: 2024-06-16 [2.5rc1] RecentPaths
|
8
9
|
|
9
10
|
This file is a part of novelWriter
|
10
11
|
Copyright 2018–2024, Veronica Berglyd Olsen
|
@@ -103,7 +104,8 @@ class Config:
|
|
103
104
|
# User Settings
|
104
105
|
# =============
|
105
106
|
|
106
|
-
self.
|
107
|
+
self._recentProjects = RecentProjects(self)
|
108
|
+
self._recentPaths = RecentPaths(self)
|
107
109
|
|
108
110
|
# General GUI Settings
|
109
111
|
self.guiLocale = self._qLocale.name()
|
@@ -180,7 +182,6 @@ class Config:
|
|
180
182
|
self.fmtPadThin = False
|
181
183
|
|
182
184
|
# User Paths
|
183
|
-
self._lastPath = self._homePath # The user's last used path
|
184
185
|
self._backupPath = self._backPath # Backup path to use, can be none
|
185
186
|
|
186
187
|
# Spell Checking Settings
|
@@ -253,7 +254,7 @@ class Config:
|
|
253
254
|
|
254
255
|
@property
|
255
256
|
def recentProjects(self) -> RecentProjects:
|
256
|
-
return self.
|
257
|
+
return self._recentProjects
|
257
258
|
|
258
259
|
@property
|
259
260
|
def mainWinSize(self) -> list[int]:
|
@@ -343,7 +344,7 @@ class Config:
|
|
343
344
|
self._outlnPanePos = [int(x/self.guiScale) for x in pos]
|
344
345
|
return
|
345
346
|
|
346
|
-
def setLastPath(self, path: str | Path) -> None:
|
347
|
+
def setLastPath(self, key: str, path: str | Path) -> None:
|
347
348
|
"""Set the last used path. Only the folder is saved, so if the
|
348
349
|
path is not a folder, the parent of the path is used instead.
|
349
350
|
"""
|
@@ -352,8 +353,7 @@ class Config:
|
|
352
353
|
if not path.is_dir():
|
353
354
|
path = path.parent
|
354
355
|
if path.is_dir():
|
355
|
-
self.
|
356
|
-
logger.debug("Last path updated: %s" % self._lastPath)
|
356
|
+
self._recentPaths.setPath(key, path)
|
357
357
|
return
|
358
358
|
|
359
359
|
def setBackupPath(self, path: Path | str) -> None:
|
@@ -438,11 +438,12 @@ class Config:
|
|
438
438
|
return self._appPath / "assets" / target
|
439
439
|
return self._appPath / "assets"
|
440
440
|
|
441
|
-
def lastPath(self) -> Path:
|
441
|
+
def lastPath(self, key: str) -> Path:
|
442
442
|
"""Return the last path used by the user, if it exists."""
|
443
|
-
if
|
444
|
-
|
445
|
-
|
443
|
+
if path := self._recentPaths.getPath(key):
|
444
|
+
asPath = Path(path)
|
445
|
+
if asPath.is_dir():
|
446
|
+
return asPath
|
446
447
|
return self._homePath
|
447
448
|
|
448
449
|
def backupPath(self) -> Path:
|
@@ -516,7 +517,6 @@ class Config:
|
|
516
517
|
logger.debug("Data Path: %s", self._dataPath)
|
517
518
|
logger.debug("App Root: %s", self._appRoot)
|
518
519
|
logger.debug("App Path: %s", self._appPath)
|
519
|
-
logger.debug("Last Path: %s", self._lastPath)
|
520
520
|
logger.debug("PDF Manual: %s", self.pdfDocs)
|
521
521
|
|
522
522
|
# If the config and data folders don't exist, create them
|
@@ -531,7 +531,8 @@ class Config:
|
|
531
531
|
(self._dataPath / "syntax").mkdir(exist_ok=True)
|
532
532
|
(self._dataPath / "themes").mkdir(exist_ok=True)
|
533
533
|
|
534
|
-
self.
|
534
|
+
self._recentPaths.loadCache()
|
535
|
+
self._recentProjects.loadCache()
|
535
536
|
self._checkOptionalPackages()
|
536
537
|
|
537
538
|
logger.debug("Config instance initialised")
|
@@ -600,7 +601,6 @@ class Config:
|
|
600
601
|
self.hideHScroll = conf.rdBool(sec, "hidehscroll", self.hideHScroll)
|
601
602
|
self.lastNotes = conf.rdStr(sec, "lastnotes", self.lastNotes)
|
602
603
|
self.nativeFont = conf.rdBool(sec, "nativefont", self.nativeFont)
|
603
|
-
self._lastPath = conf.rdPath(sec, "lastpath", self._lastPath)
|
604
604
|
|
605
605
|
# Sizes
|
606
606
|
sec = "Sizes"
|
@@ -710,7 +710,6 @@ class Config:
|
|
710
710
|
"hidehscroll": str(self.hideHScroll),
|
711
711
|
"lastnotes": str(self.lastNotes),
|
712
712
|
"nativefont": str(self.nativeFont),
|
713
|
-
"lastpath": str(self._lastPath),
|
714
713
|
}
|
715
714
|
|
716
715
|
conf["Sizes"] = {
|
@@ -811,7 +810,7 @@ class Config:
|
|
811
810
|
"""Pack a list of items into a comma-separated string for saving
|
812
811
|
to the config file.
|
813
812
|
"""
|
814
|
-
return ", ".join(
|
813
|
+
return ", ".join(str(inVal) for inVal in data)
|
815
814
|
|
816
815
|
def _checkOptionalPackages(self) -> None:
|
817
816
|
"""Check optional packages used by some features."""
|
@@ -893,3 +892,56 @@ class RecentProjects:
|
|
893
892
|
logger.debug("Removed recent: %s", path)
|
894
893
|
self.saveCache()
|
895
894
|
return
|
895
|
+
|
896
|
+
|
897
|
+
class RecentPaths:
|
898
|
+
|
899
|
+
KEYS = ["default", "project", "import", "outline", "stats"]
|
900
|
+
|
901
|
+
def __init__(self, config: Config) -> None:
|
902
|
+
self._conf = config
|
903
|
+
self._data = {}
|
904
|
+
return
|
905
|
+
|
906
|
+
def setPath(self, key: str, path: Path | str) -> None:
|
907
|
+
"""Set a path for a given key, and save the cache."""
|
908
|
+
if key in self.KEYS:
|
909
|
+
self._data[key] = str(path)
|
910
|
+
self.saveCache()
|
911
|
+
return
|
912
|
+
|
913
|
+
def getPath(self, key: str) -> str | None:
|
914
|
+
"""Get a path for a given key, or return None."""
|
915
|
+
return self._data.get(key)
|
916
|
+
|
917
|
+
def loadCache(self) -> bool:
|
918
|
+
"""Load the cache file for recent paths."""
|
919
|
+
self._data = {}
|
920
|
+
cacheFile = self._conf.dataPath(nwFiles.RECENT_PATH)
|
921
|
+
if cacheFile.is_file():
|
922
|
+
try:
|
923
|
+
with open(cacheFile, mode="r", encoding="utf-8") as inFile:
|
924
|
+
data = json.load(inFile)
|
925
|
+
if isinstance(data, dict):
|
926
|
+
for key, path in data.items():
|
927
|
+
if key in self.KEYS and isinstance(path, str):
|
928
|
+
self._data[key] = path
|
929
|
+
except Exception:
|
930
|
+
logger.error("Could not load recent paths cache")
|
931
|
+
logException()
|
932
|
+
return False
|
933
|
+
return True
|
934
|
+
|
935
|
+
def saveCache(self) -> bool:
|
936
|
+
"""Save the cache dictionary of recent paths."""
|
937
|
+
cacheFile = self._conf.dataPath(nwFiles.RECENT_PATH)
|
938
|
+
cacheTemp = cacheFile.with_suffix(".tmp")
|
939
|
+
try:
|
940
|
+
with open(cacheTemp, mode="w+", encoding="utf-8") as outFile:
|
941
|
+
json.dump(self._data, outFile, indent=2)
|
942
|
+
cacheTemp.replace(cacheFile)
|
943
|
+
except Exception:
|
944
|
+
logger.error("Could not save recent paths cache")
|
945
|
+
logException()
|
946
|
+
return False
|
947
|
+
return True
|
@@ -57,17 +57,14 @@ class nwConst:
|
|
57
57
|
STATUS_MSG_TIMEOUT = 15000 # milliseconds
|
58
58
|
MAX_SEARCH_RESULT = 1000
|
59
59
|
|
60
|
-
# Dialogs
|
61
|
-
DLG_FINISHED = 2
|
62
|
-
|
63
60
|
|
64
61
|
class nwRegEx:
|
65
62
|
|
66
63
|
FMT_EI = r"(?<![\w\\])(_)(?![\s_])(.+?)(?<![\s\\])(\1)(?!\w)"
|
67
|
-
FMT_EB = r"(?<![\w\\])(
|
68
|
-
FMT_ST = r"(?<![\w\\])(
|
69
|
-
FMT_SC = r"(?i)(?<!\\)(\[[\/\!]?(?:i|
|
70
|
-
FMT_SV = r"(?<!\\)(\[(
|
64
|
+
FMT_EB = r"(?<![\w\\])(\*{2})(?![\s\*])(.+?)(?<![\s\\])(\1)(?!\w)"
|
65
|
+
FMT_ST = r"(?<![\w\\])(~{2})(?![\s~])(.+?)(?<![\s\\])(\1)(?!\w)"
|
66
|
+
FMT_SC = r"(?i)(?<!\\)(\[[\/\!]?(?:b|i|s|u|m|sup|sub)\])"
|
67
|
+
FMT_SV = r"(?i)(?<!\\)(\[(?:footnote):)(.+?)(?<!\\)(\])"
|
71
68
|
|
72
69
|
|
73
70
|
class nwShortcode:
|
@@ -107,6 +104,7 @@ class nwFiles:
|
|
107
104
|
# Config Files
|
108
105
|
CONF_FILE = "novelwriter.conf"
|
109
106
|
RECENT_FILE = "recentProjects.json"
|
107
|
+
RECENT_PATH = "recentPaths.json"
|
110
108
|
|
111
109
|
# Project Root Files
|
112
110
|
PROJ_FILE = "nwProject.nwx"
|
@@ -414,7 +412,7 @@ class nwUnicode:
|
|
414
412
|
U_EMDASH = "\u2014" # Long dash
|
415
413
|
U_HBAR = "\u2015" # Horizontal bar
|
416
414
|
U_HELLIP = "\u2026" # Ellipsis
|
417
|
-
|
415
|
+
U_MAPOS = "\u02bc" # Modifier letter single apostrophe
|
418
416
|
U_PRIME = "\u2032" # Prime
|
419
417
|
U_DPRIME = "\u2033" # Double prime
|
420
418
|
|
@@ -481,7 +479,7 @@ class nwUnicode:
|
|
481
479
|
H_EMDASH = "—"
|
482
480
|
H_HBAR = "―"
|
483
481
|
H_HELLIP = "…"
|
484
|
-
|
482
|
+
H_MAPOS = "ʼ"
|
485
483
|
H_PRIME = "′"
|
486
484
|
H_DPRIME = "″"
|
487
485
|
|
@@ -546,7 +544,7 @@ class nwHtmlUnicode():
|
|
546
544
|
nwUnicode.U_EMDASH: nwUnicode.H_EMDASH,
|
547
545
|
nwUnicode.U_HBAR: nwUnicode.H_HBAR,
|
548
546
|
nwUnicode.U_HELLIP: nwUnicode.H_HELLIP,
|
549
|
-
nwUnicode.
|
547
|
+
nwUnicode.U_MAPOS: nwUnicode.H_MAPOS,
|
550
548
|
nwUnicode.U_PRIME: nwUnicode.H_PRIME,
|
551
549
|
nwUnicode.U_DPRIME: nwUnicode.H_DPRIME,
|
552
550
|
|
@@ -82,6 +82,7 @@ SETTINGS_TEMPLATE = {
|
|
82
82
|
"format.stripUnicode": (bool, False),
|
83
83
|
"format.replaceTabs": (bool, False),
|
84
84
|
"format.keepBreaks": (bool, True),
|
85
|
+
"format.showDialogue": (bool, False),
|
85
86
|
"format.firstLineIndent": (bool, False),
|
86
87
|
"format.firstIndentWidth": (float, 1.4),
|
87
88
|
"format.indentFirstPar": (bool, False),
|
@@ -131,6 +132,7 @@ SETTINGS_LABELS = {
|
|
131
132
|
"format.stripUnicode": QT_TRANSLATE_NOOP("Builds", "Replace Unicode Characters"),
|
132
133
|
"format.replaceTabs": QT_TRANSLATE_NOOP("Builds", "Replace Tabs with Spaces"),
|
133
134
|
"format.keepBreaks": QT_TRANSLATE_NOOP("Builds", "Preserve Hard Line Breaks"),
|
135
|
+
"format.showDialogue": QT_TRANSLATE_NOOP("Builds", "Apply Dialogue Highlighting"),
|
134
136
|
|
135
137
|
"format.grpParIndent": QT_TRANSLATE_NOOP("Builds", "First Line Indent"),
|
136
138
|
"format.firstLineIndent": QT_TRANSLATE_NOOP("Builds", "Enable Indent"),
|
@@ -217,7 +219,7 @@ class BuildSettings:
|
|
217
219
|
return self._order
|
218
220
|
|
219
221
|
@property
|
220
|
-
def
|
222
|
+
def lastBuildPath(self) -> Path:
|
221
223
|
"""The last used build path."""
|
222
224
|
if self._path.is_dir():
|
223
225
|
return self._path
|
@@ -291,7 +293,7 @@ class BuildSettings:
|
|
291
293
|
self._order = value
|
292
294
|
return
|
293
295
|
|
294
|
-
def
|
296
|
+
def setLastBuildPath(self, path: Path | str | None) -> None:
|
295
297
|
"""Set the last used build path."""
|
296
298
|
if isinstance(path, str):
|
297
299
|
path = Path(path)
|
@@ -459,7 +461,7 @@ class BuildSettings:
|
|
459
461
|
self.setName(data.get("name", ""))
|
460
462
|
self.setBuildID(data.get("uuid", ""))
|
461
463
|
self.setOrder(data.get("order", 0))
|
462
|
-
self.
|
464
|
+
self.setLastBuildPath(data.get("path", None))
|
463
465
|
self.setLastBuildName(data.get("build", ""))
|
464
466
|
|
465
467
|
buildFmt = str(data.get("format", ""))
|
@@ -348,7 +348,9 @@ class DocSearch:
|
|
348
348
|
rxMatch = rxItt.next()
|
349
349
|
pos = rxMatch.capturedStart()
|
350
350
|
num = rxMatch.capturedLength()
|
351
|
-
|
351
|
+
lim = text[:pos].rfind("\n") + 1
|
352
|
+
cut = text[lim:pos].rfind(" ") + lim + 1
|
353
|
+
context = text[cut:cut+100].partition("\n")[0]
|
352
354
|
if context:
|
353
355
|
results.append((pos, num, context))
|
354
356
|
count += 1
|
@@ -338,6 +338,7 @@ class NWBuildDocument:
|
|
338
338
|
bldObj.setJustify(self._build.getBool("format.justifyText"))
|
339
339
|
bldObj.setLineHeight(self._build.getFloat("format.lineHeight"))
|
340
340
|
bldObj.setKeepLineBreaks(self._build.getBool("format.keepBreaks"))
|
341
|
+
bldObj.setDialogueHighlight(self._build.getBool("format.showDialogue"))
|
341
342
|
bldObj.setFirstLineIndent(
|
342
343
|
self._build.getBool("format.firstLineIndent"),
|
343
344
|
self._build.getFloat("format.firstIndentWidth"),
|