novelWriter 2.6b1__tar.gz → 2.6b2__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.6b1 → novelwriter-2.6b2}/CHANGELOG.md +85 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/CREDITS.md +1 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/PKG-INFO +1 -1
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelWriter.egg-info/PKG-INFO +1 -1
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelWriter.egg-info/SOURCES.txt +16 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/__init__.py +49 -10
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/i18n/nw_de_DE.qm +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/i18n/nw_pt_BR.qm +0 -0
- novelwriter-2.6b2/novelwriter/assets/i18n/nw_ru_RU.qm +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/i18n/project_de_DE.json +2 -2
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/i18n/project_ru_RU.json +11 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/icons.conf +7 -0
- novelwriter-2.6b2/novelwriter/assets/icons/typicons_dark/mixed_margin-bottom.svg +6 -0
- novelwriter-2.6b2/novelwriter/assets/icons/typicons_dark/mixed_margin-left.svg +6 -0
- novelwriter-2.6b2/novelwriter/assets/icons/typicons_dark/mixed_margin-right.svg +6 -0
- novelwriter-2.6b2/novelwriter/assets/icons/typicons_dark/mixed_margin-top.svg +6 -0
- novelwriter-2.6b2/novelwriter/assets/icons/typicons_dark/mixed_size-height.svg +6 -0
- novelwriter-2.6b2/novelwriter/assets/icons/typicons_dark/mixed_size-width.svg +6 -0
- novelwriter-2.6b2/novelwriter/assets/icons/typicons_dark/nw_toolbar.svg +5 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/icons.conf +7 -0
- novelwriter-2.6b2/novelwriter/assets/icons/typicons_light/mixed_margin-bottom.svg +6 -0
- novelwriter-2.6b2/novelwriter/assets/icons/typicons_light/mixed_margin-left.svg +6 -0
- novelwriter-2.6b2/novelwriter/assets/icons/typicons_light/mixed_margin-right.svg +6 -0
- novelwriter-2.6b2/novelwriter/assets/icons/typicons_light/mixed_margin-top.svg +6 -0
- novelwriter-2.6b2/novelwriter/assets/icons/typicons_light/mixed_size-height.svg +6 -0
- novelwriter-2.6b2/novelwriter/assets/icons/typicons_light/mixed_size-width.svg +6 -0
- novelwriter-2.6b2/novelwriter/assets/icons/typicons_light/nw_toolbar.svg +5 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/manual.pdf +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/sample.zip +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/text/credits_en.htm +1 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/common.py +37 -2
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/config.py +15 -12
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/constants.py +24 -9
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/core/coretools.py +111 -125
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/core/docbuild.py +3 -2
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/core/index.py +9 -19
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/core/item.py +39 -6
- novelwriter-2.6b2/novelwriter/core/itemmodel.py +518 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/core/project.py +67 -89
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/core/status.py +7 -5
- novelwriter-2.6b2/novelwriter/core/tree.py +503 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/dialogs/docmerge.py +7 -17
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/dialogs/preferences.py +3 -3
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/dialogs/projectsettings.py +2 -2
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/enum.py +7 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/extensions/configlayout.py +6 -4
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/formats/todocx.py +34 -38
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/formats/tohtml.py +14 -15
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/formats/tokenizer.py +21 -17
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/formats/toodt.py +53 -124
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/formats/toqdoc.py +92 -44
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/gui/doceditor.py +230 -219
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/gui/docviewer.py +38 -9
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/gui/docviewerpanel.py +14 -22
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/gui/itemdetails.py +17 -24
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/gui/mainmenu.py +13 -8
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/gui/noveltree.py +12 -12
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/gui/outline.py +10 -11
- novelwriter-2.6b2/novelwriter/gui/projtree.py +1428 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/gui/search.py +9 -10
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/gui/theme.py +7 -3
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/guimain.py +59 -43
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/shared.py +52 -23
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/text/patterns.py +17 -5
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/tools/manusbuild.py +13 -11
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/tools/manussettings.py +42 -52
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/types.py +7 -1
- novelwriter-2.6b1/novelwriter/core/tree.py +0 -522
- novelwriter-2.6b1/novelwriter/gui/projtree.py +0 -2082
- {novelwriter-2.6b1 → novelwriter-2.6b2}/LICENSE.md +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/MANIFEST.in +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/README.md +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelWriter.egg-info/dependency_links.txt +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelWriter.egg-info/entry_points.txt +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelWriter.egg-info/requires.txt +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelWriter.egg-info/top_level.txt +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/i18n/nw_en_US.qm +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/i18n/nw_es_419.qm +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/i18n/nw_fr_FR.qm +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/i18n/nw_it_IT.qm +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/i18n/nw_ja_JP.qm +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/i18n/nw_nb_NO.qm +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/i18n/nw_nl_NL.qm +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/i18n/nw_pl_PL.qm +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/i18n/nw_zh_CN.qm +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/i18n/project_en_GB.json +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/i18n/project_en_US.json +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/i18n/project_es_419.json +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/i18n/project_fr_FR.json +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/i18n/project_it_IT.json +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/i18n/project_ja_JP.json +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/i18n/project_nb_NO.json +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/i18n/project_nl_NL.json +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/i18n/project_nn_NO.json +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/i18n/project_pl_PL.json +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/i18n/project_pt_BR.json +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/i18n/project_zh_CN.json +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/none.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/novelwriter.ico +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/novelwriter.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/README.md +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/mixed_copy.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/mixed_document-chapter.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/mixed_document-new.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/mixed_document-note.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/mixed_document-scene.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/mixed_document-section.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/mixed_document-title.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/mixed_edit.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/mixed_import.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/mixed_input-checked.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/mixed_input-none.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/mixed_input-unchecked.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/mixed_search-replace.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/nw_deco-h0.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/nw_deco-h1.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/nw_deco-h2-narrow.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/nw_deco-h2.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/nw_deco-h3-narrow.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/nw_deco-h3.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/nw_deco-h4-narrow.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/nw_deco-h4.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/nw_deco-note.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/nw_deco-noveltree-more.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/nw_font.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/nw_panel.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/nw_quote.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/nw_search-case.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/nw_search-preserve.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/nw_search-regex.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/nw_search-word.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/nw_tb-bold-md.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/nw_tb-bold.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/nw_tb-italic-md.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/nw_tb-italic.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/nw_tb-mark.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/nw_tb-strike-md.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/nw_tb-strike.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/nw_tb-subscript.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/nw_tb-superscript.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/nw_tb-underline.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_arrow-down-thick-grey.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_arrow-forward.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_arrow-maximise.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_arrow-minimise.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_arrow-repeat-grey.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_book-grey.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_book.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_bookmark.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_calendar.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_cancel-grey.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_cancel.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_chart-bar-grey.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_chevron-down.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_chevron-left.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_chevron-right.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_chevron-up.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_cog.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_delete-full.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_delete.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_directions-full.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_document-add.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_document-text.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_document.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_export-grey.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_export.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_eye.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_flag.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_folder-open.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_folder.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_globe-grey.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_key.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_lightbulb-full.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_location.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_media-pause-grey.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_media-record-outline.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_media-record.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_minus.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_pencil.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_pin-outline.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_pin.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_plus.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_puzzle-outline.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_puzzle.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_refresh-flipped.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_refresh.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_search-grey.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_search.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_star.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_stopwatch-grey.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_th-dot-menu.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_th-dot-more.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_th-list-grey.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_th-list.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_times.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_trash.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_unfold-hidden.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_unfold-visible.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_user.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_dark/typ_warning-full.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/README.md +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/mixed_copy.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/mixed_document-chapter.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/mixed_document-new.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/mixed_document-note.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/mixed_document-scene.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/mixed_document-section.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/mixed_document-title.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/mixed_edit.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/mixed_import.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/mixed_input-checked.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/mixed_input-none.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/mixed_input-unchecked.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/mixed_search-replace.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/nw_deco-h0.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/nw_deco-h1.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/nw_deco-h2-narrow.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/nw_deco-h2.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/nw_deco-h3-narrow.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/nw_deco-h3.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/nw_deco-h4-narrow.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/nw_deco-h4.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/nw_deco-note.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/nw_deco-noveltree-more.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/nw_font.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/nw_panel.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/nw_quote.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/nw_search-case.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/nw_search-preserve.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/nw_search-regex.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/nw_search-word.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/nw_tb-bold-md.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/nw_tb-bold.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/nw_tb-italic-md.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/nw_tb-italic.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/nw_tb-mark.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/nw_tb-strike-md.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/nw_tb-strike.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/nw_tb-subscript.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/nw_tb-superscript.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/nw_tb-underline.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_arrow-down-thick-grey.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_arrow-forward.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_arrow-maximise.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_arrow-minimise.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_arrow-repeat-grey.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_book-grey.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_book.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_bookmark.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_calendar.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_cancel-grey.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_cancel.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_chart-bar-grey.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_chevron-down.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_chevron-left.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_chevron-right.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_chevron-up.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_cog.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_delete-full.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_delete.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_directions-full.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_document-add.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_document-text.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_document.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_export-grey.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_export.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_eye.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_flag.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_folder-open.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_folder.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_globe-grey.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_key.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_lightbulb-full.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_location.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_media-pause-grey.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_media-record-outline.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_media-record.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_minus.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_pencil.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_pin-outline.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_pin.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_plus.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_puzzle-outline.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_puzzle.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_refresh-flipped.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_refresh.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_search-grey.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_search.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_star.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_stopwatch-grey.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_th-dot-menu.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_th-dot-more.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_th-list-grey.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_th-list.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_times.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_trash.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_unfold-hidden.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_unfold-visible.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_user.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/typicons_light/typ_warning-full.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/x-novelwriter-project.ico +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/icons/x-novelwriter-project.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/images/novelwriter-text-dark.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/images/novelwriter-text-light.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/images/welcome-dark.jpg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/images/welcome-light.jpg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/syntax/cyberpunk_night.conf +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/syntax/default_dark.conf +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/syntax/default_light.conf +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/syntax/dracula.conf +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/syntax/grey_dark.conf +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/syntax/grey_light.conf +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/syntax/light_owl.conf +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/syntax/night_owl.conf +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/syntax/snazzy.conf +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/syntax/solarized_dark.conf +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/syntax/solarized_light.conf +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/syntax/tango.conf +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/syntax/tomorrow.conf +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/syntax/tomorrow_night.conf +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/syntax/tomorrow_night_blue.conf +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/syntax/tomorrow_night_bright.conf +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/syntax/tomorrow_night_eighties.conf +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/text/lipsum.txt +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/themes/cyberpunk_night.conf +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/themes/default.conf +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/themes/default_dark.conf +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/themes/default_light.conf +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/themes/dracula.conf +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/themes/solarized_dark.conf +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/assets/themes/solarized_light.conf +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/core/buildsettings.py +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/core/document.py +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/core/options.py +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/core/projectdata.py +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/core/projectxml.py +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/core/sessions.py +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/core/spellcheck.py +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/core/storage.py +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/dialogs/about.py +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/dialogs/docsplit.py +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/dialogs/editlabel.py +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/dialogs/quotes.py +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/dialogs/wordlist.py +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/error.py +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/extensions/eventfilters.py +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/extensions/modified.py +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/extensions/novelselector.py +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/extensions/pagedsidebar.py +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/extensions/progressbars.py +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/extensions/statusled.py +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/extensions/switch.py +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/extensions/switchbox.py +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/extensions/versioninfo.py +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/formats/shared.py +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/formats/tomarkdown.py +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/formats/toraw.py +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/gui/dochighlight.py +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/gui/editordocument.py +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/gui/sidebar.py +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/gui/statusbar.py +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/text/counting.py +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/tools/dictionaries.py +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/tools/lipsum.py +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/tools/manuscript.py +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/tools/noveldetails.py +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/tools/welcome.py +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/novelwriter/tools/writingstats.py +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/pkgutils.py +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/pyproject.toml +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/appimage_launcher.sh +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/data/hicolor/128x128/apps/novelwriter.png +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/data/hicolor/128x128/mimetypes/application-x-novelwriter-project.png +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/data/hicolor/16x16/apps/novelwriter.png +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/data/hicolor/16x16/mimetypes/application-x-novelwriter-project.png +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/data/hicolor/24x24/apps/novelwriter.png +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/data/hicolor/24x24/mimetypes/application-x-novelwriter-project.png +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/data/hicolor/256x256/apps/novelwriter.png +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/data/hicolor/256x256/mimetypes/application-x-novelwriter-project.png +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/data/hicolor/32x32/apps/novelwriter.png +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/data/hicolor/32x32/mimetypes/application-x-novelwriter-project.png +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/data/hicolor/48x48/apps/novelwriter.png +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/data/hicolor/48x48/mimetypes/application-x-novelwriter-project.png +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/data/hicolor/512x512/apps/novelwriter.png +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/data/hicolor/512x512/mimetypes/application-x-novelwriter-project.png +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/data/hicolor/64x64/apps/novelwriter.png +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/data/hicolor/64x64/mimetypes/application-x-novelwriter-project.png +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/data/hicolor/scalable/apps/novelwriter.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/data/hicolor/scalable/mimetypes/application-x-novelwriter-project.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/data/novelwriter.desktop +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/data/novelwriter.png +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/data/x-novelwriter-project.xml +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/debian/compat +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/debian/control +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/debian/copyright +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/debian/install +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/debian/py3dist-overrides +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/debian/rules +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/debian/source/format +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/description_pypi.md +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/description_short.txt +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/icons/novelwriter.ico +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/icons/novelwriter.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/icons/x-novelwriter-project.ico +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/icons/x-novelwriter-project.svg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/iss_license.txt +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/launchpad_setup.cfg +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/macos/App.entitlements +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/macos/Info.plist.template +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/macos/build.sh +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/macos/novelwriter.iconset/icon_128x128.png +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/macos/novelwriter.iconset/icon_128x128@2x.png +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/macos/novelwriter.iconset/icon_16x16.png +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/macos/novelwriter.iconset/icon_16x16@2x.png +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/macos/novelwriter.iconset/icon_256x256.png +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/macos/novelwriter.iconset/icon_256x256@2x.png +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/macos/novelwriter.iconset/icon_32x32.png +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/macos/novelwriter.iconset/icon_32x32@2x.png +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/macos/novelwriter.iconset/icon_512x512.png +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/macos/novelwriter.iconset/icon_512x512@2x.png +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/make_clean.sh +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/make_pip.sh +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/make_release.sh +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/novelwriter.appdata.xml +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/novelwriter_readme.png +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/novelwriter_text.png +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/signpath_logo.png +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup/win_setup_embed.iss +0 -0
- {novelwriter-2.6b1 → novelwriter-2.6b2}/setup.cfg +0 -0
@@ -1,5 +1,59 @@
|
|
1
1
|
# novelWriter Changelog
|
2
2
|
|
3
|
+
## Version 2.6 Beta 2 [2024-12-23]
|
4
|
+
|
5
|
+
### Release Notes
|
6
|
+
|
7
|
+
This is a beta release of the next release version, and is intended for testing purposes. Please be
|
8
|
+
careful when using this version on live writing projects, and make sure you take frequent backups.
|
9
|
+
|
10
|
+
### Detailed Changelog
|
11
|
+
|
12
|
+
**New Features**
|
13
|
+
|
14
|
+
* The project tree has been completely rewritten under the hood. The main difference in the GUI is
|
15
|
+
a lifting of restrictions on drag and drop. You can now select multiple items in multiple places
|
16
|
+
in the tree, and drag them to a new location. It is still not allowed to drag root level items,
|
17
|
+
or drop items on the root level. PR #2119.
|
18
|
+
* You can now drag and drop items from the project tree onto the editor and viewer to load the
|
19
|
+
documents there. PR #2119.
|
20
|
+
|
21
|
+
**Bugfixes**
|
22
|
+
|
23
|
+
* Make line height in DocX scale correctly. Issue #2099. PR #2102.
|
24
|
+
* Make margins scale with font size in ODT and HTML output. PR #2102.
|
25
|
+
* Fix DocX page count to work with Office 365. PR #2102.
|
26
|
+
* Fix font scaling issues for PDF output. Issue #2100. PR #2104.
|
27
|
+
* Fix an issue that cleared the editor when the return key was used on a folder item. PR #2113.
|
28
|
+
* Fix an issue where the viewer and preview would not reset text emphasis when selecting a default
|
29
|
+
font style with emphasis features. Issue #2121. PR #2122.
|
30
|
+
* Change how custom fonts are loaded to ensure that the Qt framework don't take shortcuts by using
|
31
|
+
a similar font instead of the chosen font. This is a side effect of the Qt font matching feature.
|
32
|
+
Issue #2118. PR #2122.
|
33
|
+
|
34
|
+
**Improvements**
|
35
|
+
|
36
|
+
* Move processing of alternative apostrophe and dash to a later point in the tokenization process.
|
37
|
+
It needs to happen after dialogue is processed to work as intended. PR #2095.
|
38
|
+
* Use icons for text margin settings in Build Settings. Issue #2098. PR #2102.
|
39
|
+
* Replace the toolbar icon in the editor. PR #2103.
|
40
|
+
* Turn off auto-default button on the Build dialog. Issue #2101. PR #2105.
|
41
|
+
* Add ANSI colours to log output for easier debugging. PRs #2114 and #2117.
|
42
|
+
* Document header is now aligned to the bottom of the top page margin in the same way for ODT and
|
43
|
+
DocX output. Issue #2120. PR #2128.
|
44
|
+
* Dialogue detection for quoted dialogue has been improved to better support Chinese, and other
|
45
|
+
languages that don't use whitespaces to separate words. Some improvements have also been made to
|
46
|
+
how single quoted dialogues are processed when apostrophes are present. Issue #2131. PR #2138.
|
47
|
+
|
48
|
+
**Code Improvements**
|
49
|
+
|
50
|
+
* Completely rewrite the project tree into a model/view set with one single definition if the
|
51
|
+
project structure. PR #2109.
|
52
|
+
* The auto-replace feature in the editor has been refactored. It is now better separated from the
|
53
|
+
editor code, and may have some minor performance improvements. Issue #2129. PR #2132.
|
54
|
+
|
55
|
+
----
|
56
|
+
|
3
57
|
## Version 2.6 Beta 1 [2024-11-12]
|
4
58
|
|
5
59
|
### Release Notes
|
@@ -72,6 +126,37 @@ careful when using this version on live writing projects, and make sure you take
|
|
72
126
|
|
73
127
|
----
|
74
128
|
|
129
|
+
## Version 2.5.3 [2024-11-26]
|
130
|
+
|
131
|
+
### Release Notes
|
132
|
+
|
133
|
+
This is a patch release that fixes a few minor bugs in the user interface, and with the HTML
|
134
|
+
manuscript format. This patch also adds a Russian translation, and updated the German and
|
135
|
+
Portuguese translations.
|
136
|
+
|
137
|
+
### Detailed Changelog
|
138
|
+
|
139
|
+
**Bugfixes**
|
140
|
+
|
141
|
+
* Fixed the red/green LEDs on the statusbar for the Default Light theme. The colours were swapped.
|
142
|
+
Issue #2057. PR #2059.
|
143
|
+
* Moved the styles tag into the head tag for HTML manuscript output, which is the correct placement
|
144
|
+
for them. Issue #2080. PR #2085.
|
145
|
+
* Fixed a bug in the project tree where it was possible to drag content to root level on some Qt
|
146
|
+
versions where the disallow flag is not obeyed. The illegal action is now additionally blocked by
|
147
|
+
code. Issue #2108. PR #2109.
|
148
|
+
|
149
|
+
**Documentation**
|
150
|
+
|
151
|
+
* Updated a dead link to the spell check library with the new one. Issue #2042. PR #2059.
|
152
|
+
|
153
|
+
**Internationalisation**
|
154
|
+
|
155
|
+
* Russian translation added by Konstantin Tan (@k1kimosha). PR #2126
|
156
|
+
* Updated German and Portuguese translations. PR #2126
|
157
|
+
|
158
|
+
----
|
159
|
+
|
75
160
|
## Version 2.5.2 [2024-09-17]
|
76
161
|
|
77
162
|
### Release Notes
|
@@ -30,6 +30,7 @@ translators for the languages currently available:
|
|
30
30
|
* **Norwegian:** Veronica Berglyd Olsen (vkbo)
|
31
31
|
* **Polish:** Anna Maria Polak (Nauthiz)
|
32
32
|
* **Portuguese:** Bruno Meneguello (bkmeneguello)
|
33
|
+
* **Russian:** Konstantin Tan (k1kimosha)
|
33
34
|
* **Simplified Chinese:** Qianzhi Long (longqzh)
|
34
35
|
|
35
36
|
Additional larger translation contributions:
|
@@ -32,6 +32,7 @@ novelwriter/assets/i18n/nw_nb_NO.qm
|
|
32
32
|
novelwriter/assets/i18n/nw_nl_NL.qm
|
33
33
|
novelwriter/assets/i18n/nw_pl_PL.qm
|
34
34
|
novelwriter/assets/i18n/nw_pt_BR.qm
|
35
|
+
novelwriter/assets/i18n/nw_ru_RU.qm
|
35
36
|
novelwriter/assets/i18n/nw_zh_CN.qm
|
36
37
|
novelwriter/assets/i18n/project_de_DE.json
|
37
38
|
novelwriter/assets/i18n/project_en_GB.json
|
@@ -66,7 +67,13 @@ novelwriter/assets/icons/typicons_dark/mixed_import.svg
|
|
66
67
|
novelwriter/assets/icons/typicons_dark/mixed_input-checked.svg
|
67
68
|
novelwriter/assets/icons/typicons_dark/mixed_input-none.svg
|
68
69
|
novelwriter/assets/icons/typicons_dark/mixed_input-unchecked.svg
|
70
|
+
novelwriter/assets/icons/typicons_dark/mixed_margin-bottom.svg
|
71
|
+
novelwriter/assets/icons/typicons_dark/mixed_margin-left.svg
|
72
|
+
novelwriter/assets/icons/typicons_dark/mixed_margin-right.svg
|
73
|
+
novelwriter/assets/icons/typicons_dark/mixed_margin-top.svg
|
69
74
|
novelwriter/assets/icons/typicons_dark/mixed_search-replace.svg
|
75
|
+
novelwriter/assets/icons/typicons_dark/mixed_size-height.svg
|
76
|
+
novelwriter/assets/icons/typicons_dark/mixed_size-width.svg
|
70
77
|
novelwriter/assets/icons/typicons_dark/nw_deco-h0.svg
|
71
78
|
novelwriter/assets/icons/typicons_dark/nw_deco-h1.svg
|
72
79
|
novelwriter/assets/icons/typicons_dark/nw_deco-h2-narrow.svg
|
@@ -94,6 +101,7 @@ novelwriter/assets/icons/typicons_dark/nw_tb-strike.svg
|
|
94
101
|
novelwriter/assets/icons/typicons_dark/nw_tb-subscript.svg
|
95
102
|
novelwriter/assets/icons/typicons_dark/nw_tb-superscript.svg
|
96
103
|
novelwriter/assets/icons/typicons_dark/nw_tb-underline.svg
|
104
|
+
novelwriter/assets/icons/typicons_dark/nw_toolbar.svg
|
97
105
|
novelwriter/assets/icons/typicons_dark/typ_arrow-down-thick-grey.svg
|
98
106
|
novelwriter/assets/icons/typicons_dark/typ_arrow-forward.svg
|
99
107
|
novelwriter/assets/icons/typicons_dark/typ_arrow-maximise.svg
|
@@ -167,7 +175,13 @@ novelwriter/assets/icons/typicons_light/mixed_import.svg
|
|
167
175
|
novelwriter/assets/icons/typicons_light/mixed_input-checked.svg
|
168
176
|
novelwriter/assets/icons/typicons_light/mixed_input-none.svg
|
169
177
|
novelwriter/assets/icons/typicons_light/mixed_input-unchecked.svg
|
178
|
+
novelwriter/assets/icons/typicons_light/mixed_margin-bottom.svg
|
179
|
+
novelwriter/assets/icons/typicons_light/mixed_margin-left.svg
|
180
|
+
novelwriter/assets/icons/typicons_light/mixed_margin-right.svg
|
181
|
+
novelwriter/assets/icons/typicons_light/mixed_margin-top.svg
|
170
182
|
novelwriter/assets/icons/typicons_light/mixed_search-replace.svg
|
183
|
+
novelwriter/assets/icons/typicons_light/mixed_size-height.svg
|
184
|
+
novelwriter/assets/icons/typicons_light/mixed_size-width.svg
|
171
185
|
novelwriter/assets/icons/typicons_light/nw_deco-h0.svg
|
172
186
|
novelwriter/assets/icons/typicons_light/nw_deco-h1.svg
|
173
187
|
novelwriter/assets/icons/typicons_light/nw_deco-h2-narrow.svg
|
@@ -195,6 +209,7 @@ novelwriter/assets/icons/typicons_light/nw_tb-strike.svg
|
|
195
209
|
novelwriter/assets/icons/typicons_light/nw_tb-subscript.svg
|
196
210
|
novelwriter/assets/icons/typicons_light/nw_tb-superscript.svg
|
197
211
|
novelwriter/assets/icons/typicons_light/nw_tb-underline.svg
|
212
|
+
novelwriter/assets/icons/typicons_light/nw_toolbar.svg
|
198
213
|
novelwriter/assets/icons/typicons_light/typ_arrow-down-thick-grey.svg
|
199
214
|
novelwriter/assets/icons/typicons_light/typ_arrow-forward.svg
|
200
215
|
novelwriter/assets/icons/typicons_light/typ_arrow-maximise.svg
|
@@ -290,6 +305,7 @@ novelwriter/core/docbuild.py
|
|
290
305
|
novelwriter/core/document.py
|
291
306
|
novelwriter/core/index.py
|
292
307
|
novelwriter/core/item.py
|
308
|
+
novelwriter/core/itemmodel.py
|
293
309
|
novelwriter/core/options.py
|
294
310
|
novelwriter/core/project.py
|
295
311
|
novelwriter/core/projectdata.py
|
@@ -3,7 +3,7 @@ novelWriter – Init File
|
|
3
3
|
=======================
|
4
4
|
|
5
5
|
File History:
|
6
|
-
Created: 2018-09-22 [0.0.1]
|
6
|
+
Created: 2018-09-22 [0.0.1] main
|
7
7
|
|
8
8
|
This file is a part of novelWriter
|
9
9
|
Copyright 2018–2024, Veronica Berglyd Olsen
|
@@ -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.6b2"
|
51
|
+
__hexversion__ = "0x020600b2"
|
52
|
+
__date__ = "2024-12-23"
|
53
53
|
__status__ = "Stable"
|
54
54
|
__domain__ = "novelwriter.io"
|
55
55
|
|
@@ -60,10 +60,26 @@ logger = logging.getLogger(__name__)
|
|
60
60
|
# Main Program
|
61
61
|
##
|
62
62
|
|
63
|
-
#
|
63
|
+
# Globals Singletons
|
64
64
|
CONFIG = Config()
|
65
65
|
SHARED = SharedData()
|
66
66
|
|
67
|
+
# ANSI Colours
|
68
|
+
C_RED = "\033[91m"
|
69
|
+
C_GREEN = "\033[92m"
|
70
|
+
C_YELLOW = "\033[93m"
|
71
|
+
C_BLUE = "\033[94m"
|
72
|
+
C_WHITE = "\033[97m"
|
73
|
+
C_END = "\033[0m"
|
74
|
+
|
75
|
+
# Log Formats
|
76
|
+
L_TIME = "[{asctime:}]"
|
77
|
+
L_FILE = "{filename:>18}"
|
78
|
+
L_LINE = "{lineno:<4d}"
|
79
|
+
L_LVLP = "{levelname:8}"
|
80
|
+
L_LVLC = "{levelname:17}"
|
81
|
+
L_TEXT = "{message:}"
|
82
|
+
|
67
83
|
|
68
84
|
def main(sysArgs: list | None = None) -> GuiMain | None:
|
69
85
|
"""Parse command line, set up logging, and launch main GUI."""
|
@@ -77,6 +93,7 @@ def main(sysArgs: list | None = None) -> GuiMain | None:
|
|
77
93
|
"version",
|
78
94
|
"info",
|
79
95
|
"debug",
|
96
|
+
"color",
|
80
97
|
"style=",
|
81
98
|
"config=",
|
82
99
|
"data=",
|
@@ -98,6 +115,7 @@ def main(sysArgs: list | None = None) -> GuiMain | None:
|
|
98
115
|
" -v, --version Print program version and exit.\n"
|
99
116
|
" --info Print additional runtime information.\n"
|
100
117
|
" --debug Print debug output. Includes --info.\n"
|
118
|
+
" --color Add ANSI colors to log output.\n"
|
101
119
|
" --meminfo Show memory usage information in the status bar.\n"
|
102
120
|
" --style= Sets Qt5 style flag. Defaults to 'Fusion'.\n"
|
103
121
|
" --config= Alternative config file.\n"
|
@@ -106,12 +124,12 @@ def main(sysArgs: list | None = None) -> GuiMain | None:
|
|
106
124
|
|
107
125
|
# Defaults
|
108
126
|
logLevel = logging.WARN
|
109
|
-
|
127
|
+
fmtFlags = 0b00
|
110
128
|
confPath = None
|
111
129
|
dataPath = None
|
112
130
|
testMode = False
|
113
|
-
qtStyle
|
114
|
-
cmdOpen
|
131
|
+
qtStyle = "Fusion"
|
132
|
+
cmdOpen = None
|
115
133
|
|
116
134
|
# Parse Options
|
117
135
|
try:
|
@@ -135,8 +153,10 @@ def main(sysArgs: list | None = None) -> GuiMain | None:
|
|
135
153
|
logLevel = logging.INFO
|
136
154
|
elif inOpt == "--debug":
|
137
155
|
CONFIG.isDebug = True
|
156
|
+
fmtFlags = fmtFlags | 0b10
|
138
157
|
logLevel = logging.DEBUG
|
139
|
-
|
158
|
+
elif inOpt == "--color":
|
159
|
+
fmtFlags = fmtFlags | 0b01
|
140
160
|
elif inOpt == "--style":
|
141
161
|
qtStyle = inArg
|
142
162
|
elif inOpt == "--config":
|
@@ -148,13 +168,32 @@ def main(sysArgs: list | None = None) -> GuiMain | None:
|
|
148
168
|
elif inOpt == "--meminfo":
|
149
169
|
CONFIG.memInfo = True
|
150
170
|
|
171
|
+
if fmtFlags & 0b01:
|
172
|
+
# This will overwrite the default level names, and also ensure that
|
173
|
+
# they can be converted back to integer levels
|
174
|
+
logging.addLevelName(logging.DEBUG, f"{C_BLUE}DEBUG{C_END}")
|
175
|
+
logging.addLevelName(logging.INFO, f"{C_GREEN}INFO{C_END}")
|
176
|
+
logging.addLevelName(logging.WARNING, f"{C_YELLOW}WARNING{C_END}")
|
177
|
+
logging.addLevelName(logging.ERROR, f"{C_RED}ERROR{C_END}")
|
178
|
+
logging.addLevelName(logging.CRITICAL, f"{C_RED}CRITICAL{C_END}")
|
179
|
+
|
180
|
+
# Determine Log Format
|
181
|
+
if fmtFlags == 0b00:
|
182
|
+
logFmt = f"{L_LVLP} {L_TEXT}"
|
183
|
+
elif fmtFlags == 0b01:
|
184
|
+
logFmt = f"{L_LVLC} {L_TEXT}"
|
185
|
+
elif fmtFlags == 0b10:
|
186
|
+
logFmt = f"{L_TIME} {L_FILE}:{L_LINE} {L_LVLP} {L_TEXT}"
|
187
|
+
elif fmtFlags == 0b11:
|
188
|
+
logFmt = f"{L_TIME} {C_BLUE}{L_FILE}{C_END}:{C_WHITE}{L_LINE}{C_END} {L_LVLC} {L_TEXT}"
|
189
|
+
|
151
190
|
# Setup Logging
|
152
191
|
pkgLogger = logging.getLogger(__package__)
|
153
192
|
pkgLogger.setLevel(logLevel)
|
154
193
|
if len(pkgLogger.handlers) == 0:
|
155
194
|
# Make sure we only create one logger (mostly an issue with tests)
|
156
195
|
cHandle = logging.StreamHandler()
|
157
|
-
cHandle.setFormatter(logging.Formatter(fmt=
|
196
|
+
cHandle.setFormatter(logging.Formatter(fmt=logFmt, style="{"))
|
158
197
|
pkgLogger.addHandler(cHandle)
|
159
198
|
|
160
199
|
logger.info("Starting novelWriter %s (%s) %s", __version__, __hexversion__, __date__)
|
Binary file
|
Binary file
|
Binary file
|
@@ -5,9 +5,9 @@
|
|
5
5
|
"Notes": "Notizen",
|
6
6
|
"Tag": "Schlagwort",
|
7
7
|
"Point of View": "Perspektive",
|
8
|
-
"Focus": "
|
8
|
+
"Focus": "Fokus",
|
9
9
|
"Characters": "Charaktere",
|
10
|
-
"Plot": "
|
10
|
+
"Plot": "Handlung",
|
11
11
|
"Timeline": "Zeitleiste",
|
12
12
|
"Locations": "Schauplätze",
|
13
13
|
"Objects": "Objekte",
|
@@ -1,7 +1,18 @@
|
|
1
1
|
{
|
2
2
|
"Synopsis": "Сводка",
|
3
|
+
"Short Description": "Краткое описание",
|
3
4
|
"Comment": "Комментарий",
|
4
5
|
"Notes": "Заметки",
|
6
|
+
"Tag": "Тэг",
|
7
|
+
"Point of View": "Точка зрения",
|
8
|
+
"Focus": "Фокус",
|
9
|
+
"Characters": "Персонажей",
|
10
|
+
"Plot": "Сюжет",
|
11
|
+
"Timeline": "Хронология",
|
12
|
+
"Locations": "Локации",
|
13
|
+
"Objects": "Объекты",
|
14
|
+
"Entities": "Сущности",
|
15
|
+
"Custom": "Другое",
|
5
16
|
"0": "Ноль",
|
6
17
|
"1": "Один",
|
7
18
|
"2": "Два",
|
@@ -64,6 +64,10 @@ font = nw_font.svg
|
|
64
64
|
forward = typ_chevron-right.svg
|
65
65
|
import = mixed_import.svg
|
66
66
|
list = typ_th-list.svg
|
67
|
+
margin_bottom = mixed_margin-bottom.svg
|
68
|
+
margin_left = mixed_margin-left.svg
|
69
|
+
margin_right = mixed_margin-right.svg
|
70
|
+
margin_top = mixed_margin-top.svg
|
67
71
|
maximise = typ_arrow-maximise.svg
|
68
72
|
menu = typ_th-dot-menu.svg
|
69
73
|
minimise = typ_arrow-minimise.svg
|
@@ -94,6 +98,8 @@ search_regex = nw_search-regex.svg
|
|
94
98
|
search_replace = mixed_search-replace.svg
|
95
99
|
search_word = nw_search-word.svg
|
96
100
|
settings = typ_cog.svg
|
101
|
+
size_height = mixed_size-height.svg
|
102
|
+
size_width = mixed_size-width.svg
|
97
103
|
star = typ_star.svg
|
98
104
|
status_idle = typ_media-pause-grey.svg
|
99
105
|
status_lang = typ_globe-grey.svg
|
@@ -102,6 +108,7 @@ status_stats = typ_chart-bar-grey.svg
|
|
102
108
|
status_time = typ_stopwatch-grey.svg
|
103
109
|
sticky-off = typ_pin-outline.svg
|
104
110
|
sticky-on = typ_pin.svg
|
111
|
+
toolbar = nw_toolbar.svg
|
105
112
|
unchecked = mixed_input-unchecked.svg
|
106
113
|
unfold-hide = typ_unfold-hidden.svg
|
107
114
|
unfold-show = typ_unfold-visible.svg
|
@@ -0,0 +1,6 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<svg width="24" height="24" version="1.2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
3
|
+
<rect x="2" y="2" width="20" height="20" rx="1" ry="1" fill="#e6e6e6" fill-opacity=".14902" stroke-linecap="round" stroke-width="2"/>
|
4
|
+
<rect x="2" y="18" width="20" height="4" rx="1" ry="1" fill="#848484" stroke-linecap="round" stroke-width="2"/>
|
5
|
+
<path d="m18.414 8.5959c0.78104 0.79361 0.78104 2.0837 0 2.8773l-6.4141 6.5268-6.4141-6.5268c-0.391-0.3968-0.58601-0.91769-0.58601-1.4386 0-0.52092 0.195-1.0418 0.58601-1.4386 0.78104-0.79464 2.047-0.79464 2.8281 0l3.5861 3.6475 3.5861-3.6475c0.78104-0.79464 2.047-0.79464 2.8281 0z" fill="#69c" stroke-width="1.0087"/>
|
6
|
+
</svg>
|
@@ -0,0 +1,6 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<svg width="24" height="24" version="1.2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
3
|
+
<rect x="2" y="2" width="20" height="20" rx="1" ry="1" fill="#e6e6e6" fill-opacity=".14902" stroke-linecap="round" stroke-width="2"/>
|
4
|
+
<rect x="2" y="2" width="4" height="20" rx="1" ry="1" fill="#848484" stroke-linecap="round" stroke-width="2"/>
|
5
|
+
<path d="m15.404 18.5c-0.79361 0.78104-2.0837 0.78104-2.8773 0l-6.5268-6.4141 6.5268-6.4141c0.3968-0.391 0.91769-0.58601 1.4386-0.58601 0.52092 0 1.0418 0.195 1.4386 0.58601 0.79464 0.78104 0.79464 2.047 0 2.8281l-3.6475 3.5861 3.6475 3.5861c0.79464 0.78104 0.79464 2.047 0 2.8281z" fill="#69c" stroke-width="1.0087"/>
|
6
|
+
</svg>
|
@@ -0,0 +1,6 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<svg width="24" height="24" version="1.2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
3
|
+
<rect x="2" y="2" width="20" height="20" rx="1" ry="1" fill="#e6e6e6" fill-opacity=".14902" stroke-linecap="round" stroke-width="2"/>
|
4
|
+
<rect x="18" y="2" width="4" height="20" rx="1" ry="1" fill="#848484" stroke-linecap="round" stroke-width="2"/>
|
5
|
+
<path d="m8.5959 18.5c0.79361 0.78104 2.0837 0.78104 2.8773 0l6.5268-6.4141-6.5268-6.4141c-0.3968-0.391-0.91769-0.58601-1.4386-0.58601-0.52092 0-1.0418 0.195-1.4386 0.58601-0.79464 0.78104-0.79464 2.047 0 2.8281l3.6475 3.5861-3.6475 3.5861c-0.79464 0.78104-0.79464 2.047 0 2.8281z" fill="#69c" stroke-width="1.0087"/>
|
6
|
+
</svg>
|
@@ -0,0 +1,6 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<svg width="24" height="24" version="1.2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
3
|
+
<rect x="2" y="2" width="20" height="20" rx="1" ry="1" fill="#e6e6e6" fill-opacity=".14902" stroke-linecap="round" stroke-width="2"/>
|
4
|
+
<rect x="2" y="2" width="20" height="4" rx="1" ry="1" fill="#848484" stroke-linecap="round" stroke-width="2"/>
|
5
|
+
<path d="m18.414 15.404c0.78104-0.79361 0.78104-2.0837 0-2.8773l-6.4141-6.5268-6.4141 6.5268c-0.391 0.3968-0.58601 0.91769-0.58601 1.4386 0 0.52092 0.195 1.0418 0.58601 1.4386 0.78104 0.79464 2.047 0.79464 2.8281 0l3.5861-3.6475 3.5861 3.6475c0.78104 0.79464 2.047 0.79464 2.8281 0z" fill="#69c" stroke-width="1.0087"/>
|
6
|
+
</svg>
|
@@ -0,0 +1,6 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<svg width="24" height="24" version="1.2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
3
|
+
<rect x="2" y="2" width="20" height="20" rx="1" ry="1" fill="#e6e6e6" fill-opacity=".14902" stroke-linecap="round" stroke-width="2"/>
|
4
|
+
<path d="m18.414 10.404c0.78104-0.79361 0.78104-2.0837 0-2.8773l-6.4141-6.5268-6.4141 6.5268c-0.391 0.3968-0.58601 0.91769-0.58601 1.4386 0 0.52092 0.195 1.0418 0.58601 1.4386 0.78104 0.79464 2.047 0.79464 2.8281 0l3.5861-3.6475 3.5861 3.6475c0.78104 0.79464 2.047 0.79464 2.8281 0z" fill="#69c" stroke-width="1.0087"/>
|
5
|
+
<path d="m18.414 13.596c0.78104 0.79361 0.78104 2.0837 0 2.8773l-6.4141 6.5268-6.4141-6.5268c-0.391-0.3968-0.58601-0.91769-0.58601-1.4386 0-0.52092 0.195-1.0418 0.58601-1.4386 0.78104-0.79464 2.047-0.79464 2.8281 0l3.5861 3.6475 3.5861-3.6475c0.78104-0.79464 2.047-0.79464 2.8281 0z" fill="#69c" stroke-width="1.0087"/>
|
6
|
+
</svg>
|
@@ -0,0 +1,6 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<svg width="24" height="24" version="1.2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
3
|
+
<rect x="2" y="2" width="20" height="20" rx="1" ry="1" fill="#e6e6e6" fill-opacity=".15" stroke-linecap="round" stroke-width="2"/>
|
4
|
+
<path d="m13.596 18.414c0.79361 0.78104 2.0837 0.78104 2.8773 0l6.5268-6.4141-6.5268-6.4141c-0.3968-0.391-0.91769-0.58601-1.4386-0.58601-0.52092 0-1.0418 0.195-1.4386 0.58601-0.79464 0.78104-0.79464 2.047 0 2.8281l3.6475 3.5861-3.6475 3.5861c-0.79464 0.78104-0.79464 2.047 0 2.8281z" fill="#69c" stroke-width="1.0087"/>
|
5
|
+
<path d="m10.404 18.414c-0.79361 0.78104-2.0837 0.78104-2.8773 0l-6.5268-6.4141 6.5268-6.4141c0.3968-0.391 0.91769-0.58601 1.4386-0.58601 0.52092 0 1.0418 0.195 1.4386 0.58601 0.79464 0.78104 0.79464 2.047 0 2.8281l-3.6475 3.5861 3.6475 3.5861c0.79464 0.78104 0.79464 2.047 0 2.8281z" fill="#69c" stroke-width="1.0087"/>
|
6
|
+
</svg>
|
@@ -0,0 +1,5 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<svg width="24" height="24" version="1.2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
3
|
+
<rect x="8" y="2" width="8" height="8" rx="1" ry="1" fill="none" stroke="#69c" stroke-linecap="round" stroke-width="2"/>
|
4
|
+
<rect x="8" y="14" width="8" height="8" rx="1" ry="1" fill="none" stroke="#69c" stroke-linecap="round" stroke-width="2"/>
|
5
|
+
</svg>
|
@@ -64,6 +64,10 @@ font = nw_font.svg
|
|
64
64
|
forward = typ_chevron-right.svg
|
65
65
|
import = mixed_import.svg
|
66
66
|
list = typ_th-list.svg
|
67
|
+
margin_bottom = mixed_margin-bottom.svg
|
68
|
+
margin_left = mixed_margin-left.svg
|
69
|
+
margin_right = mixed_margin-right.svg
|
70
|
+
margin_top = mixed_margin-top.svg
|
67
71
|
maximise = typ_arrow-maximise.svg
|
68
72
|
menu = typ_th-dot-menu.svg
|
69
73
|
minimise = typ_arrow-minimise.svg
|
@@ -94,6 +98,8 @@ search_regex = nw_search-regex.svg
|
|
94
98
|
search_replace = mixed_search-replace.svg
|
95
99
|
search_word = nw_search-word.svg
|
96
100
|
settings = typ_cog.svg
|
101
|
+
size_height = mixed_size-height.svg
|
102
|
+
size_width = mixed_size-width.svg
|
97
103
|
star = typ_star.svg
|
98
104
|
status_idle = typ_media-pause-grey.svg
|
99
105
|
status_lang = typ_globe-grey.svg
|
@@ -102,6 +108,7 @@ status_stats = typ_chart-bar-grey.svg
|
|
102
108
|
status_time = typ_stopwatch-grey.svg
|
103
109
|
sticky-off = typ_pin-outline.svg
|
104
110
|
sticky-on = typ_pin.svg
|
111
|
+
toolbar = nw_toolbar.svg
|
105
112
|
unchecked = mixed_input-unchecked.svg
|
106
113
|
unfold-hide = typ_unfold-hidden.svg
|
107
114
|
unfold-show = typ_unfold-visible.svg
|
@@ -0,0 +1,6 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<svg width="24" height="24" version="1.2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
3
|
+
<rect x="2" y="2" width="20" height="20" rx="1" ry="1" fill="#333" fill-opacity=".15" stroke-linecap="round" stroke-width="2"/>
|
4
|
+
<rect x="2" y="18" width="20" height="4" rx="1" ry="1" fill="#333" stroke-linecap="round" stroke-width="2"/>
|
5
|
+
<path d="m18.414 8.5959c0.78104 0.79361 0.78104 2.0837 0 2.8773l-6.4141 6.5268-6.4141-6.5268c-0.391-0.3968-0.58601-0.91769-0.58601-1.4386 0-0.52092 0.195-1.0418 0.58601-1.4386 0.78104-0.79464 2.047-0.79464 2.8281 0l3.5861 3.6475 3.5861-3.6475c0.78104-0.79464 2.047-0.79464 2.8281 0z" fill="#4271ae" stroke-width="1.0087"/>
|
6
|
+
</svg>
|
@@ -0,0 +1,6 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<svg width="24" height="24" version="1.2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
3
|
+
<rect x="2" y="2" width="20" height="20" rx="1" ry="1" fill="#333" fill-opacity=".15" stroke-linecap="round" stroke-width="2"/>
|
4
|
+
<rect x="2" y="2" width="4" height="20" rx="1" ry="1" fill="#333" stroke-linecap="round" stroke-width="2"/>
|
5
|
+
<path d="m15.404 18.5c-0.79361 0.78104-2.0837 0.78104-2.8773 0l-6.5268-6.4141 6.5268-6.4141c0.3968-0.391 0.91769-0.58601 1.4386-0.58601 0.52092 0 1.0418 0.195 1.4386 0.58601 0.79464 0.78104 0.79464 2.047 0 2.8281l-3.6475 3.5861 3.6475 3.5861c0.79464 0.78104 0.79464 2.047 0 2.8281z" fill="#4271ae" stroke-width="1.0087"/>
|
6
|
+
</svg>
|
@@ -0,0 +1,6 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<svg width="24" height="24" version="1.2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
3
|
+
<rect x="2" y="2" width="20" height="20" rx="1" ry="1" fill="#333" fill-opacity=".15" stroke-linecap="round" stroke-width="2"/>
|
4
|
+
<rect x="18" y="2" width="4" height="20" rx="1" ry="1" fill="#333" stroke-linecap="round" stroke-width="2"/>
|
5
|
+
<path d="m8.5959 18.5c0.79361 0.78104 2.0837 0.78104 2.8773 0l6.5268-6.4141-6.5268-6.4141c-0.3968-0.391-0.91769-0.58601-1.4386-0.58601-0.52092 0-1.0418 0.195-1.4386 0.58601-0.79464 0.78104-0.79464 2.047 0 2.8281l3.6475 3.5861-3.6475 3.5861c-0.79464 0.78104-0.79464 2.047 0 2.8281z" fill="#4271ae" stroke-width="1.0087"/>
|
6
|
+
</svg>
|
@@ -0,0 +1,6 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<svg width="24" height="24" version="1.2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
3
|
+
<rect x="2" y="2" width="20" height="20" rx="1" ry="1" fill="#333" fill-opacity=".15" stroke-linecap="round" stroke-width="2"/>
|
4
|
+
<rect x="2" y="2" width="20" height="4" rx="1" ry="1" fill="#333" stroke-linecap="round" stroke-width="2"/>
|
5
|
+
<path d="m18.414 15.404c0.78104-0.79361 0.78104-2.0837 0-2.8773l-6.4141-6.5268-6.4141 6.5268c-0.391 0.3968-0.58601 0.91769-0.58601 1.4386 0 0.52092 0.195 1.0418 0.58601 1.4386 0.78104 0.79464 2.047 0.79464 2.8281 0l3.5861-3.6475 3.5861 3.6475c0.78104 0.79464 2.047 0.79464 2.8281 0z" fill="#4271ae" stroke-width="1.0087"/>
|
6
|
+
</svg>
|
@@ -0,0 +1,6 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<svg width="24" height="24" version="1.2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
3
|
+
<rect x="2" y="2" width="20" height="20" rx="1" ry="1" fill="#333" fill-opacity=".15" stroke-linecap="round" stroke-width="2"/>
|
4
|
+
<path d="m18.414 10.404c0.78104-0.79361 0.78104-2.0837 0-2.8773l-6.4141-6.5268-6.4141 6.5268c-0.391 0.3968-0.58601 0.91769-0.58601 1.4386 0 0.52092 0.195 1.0418 0.58601 1.4386 0.78104 0.79464 2.047 0.79464 2.8281 0l3.5861-3.6475 3.5861 3.6475c0.78104 0.79464 2.047 0.79464 2.8281 0z" fill="#4271ae" stroke-width="1.0087"/>
|
5
|
+
<path d="m18.414 13.596c0.78104 0.79361 0.78104 2.0837 0 2.8773l-6.4141 6.5268-6.4141-6.5268c-0.391-0.3968-0.58601-0.91769-0.58601-1.4386 0-0.52092 0.195-1.0418 0.58601-1.4386 0.78104-0.79464 2.047-0.79464 2.8281 0l3.5861 3.6475 3.5861-3.6475c0.78104-0.79464 2.047-0.79464 2.8281 0z" fill="#4271ae" stroke-width="1.0087"/>
|
6
|
+
</svg>
|
@@ -0,0 +1,6 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<svg width="24" height="24" version="1.2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
3
|
+
<rect x="2" y="2" width="20" height="20" rx="1" ry="1" fill="#333" fill-opacity=".15" stroke-linecap="round" stroke-width="2"/>
|
4
|
+
<path d="m13.596 18.414c0.79361 0.78104 2.0837 0.78104 2.8773 0l6.5268-6.4141-6.5268-6.4141c-0.3968-0.391-0.91769-0.58601-1.4386-0.58601-0.52092 0-1.0418 0.195-1.4386 0.58601-0.79464 0.78104-0.79464 2.047 0 2.8281l3.6475 3.5861-3.6475 3.5861c-0.79464 0.78104-0.79464 2.047 0 2.8281z" fill="#4271ae" stroke-width="1.0087"/>
|
5
|
+
<path d="m10.404 18.414c-0.79361 0.78104-2.0837 0.78104-2.8773 0l-6.5268-6.4141 6.5268-6.4141c0.3968-0.391 0.91769-0.58601 1.4386-0.58601 0.52092 0 1.0418 0.195 1.4386 0.58601 0.79464 0.78104 0.79464 2.047 0 2.8281l-3.6475 3.5861 3.6475 3.5861c0.79464 0.78104 0.79464 2.047 0 2.8281z" fill="#4271ae" stroke-width="1.0087"/>
|
6
|
+
</svg>
|
@@ -0,0 +1,5 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<svg width="24" height="24" version="1.2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
3
|
+
<rect x="8" y="2" width="8" height="8" rx="1" ry="1" fill="none" stroke="#4271ae" stroke-linecap="round" stroke-width="2"/>
|
4
|
+
<rect x="8" y="14" width="8" height="8" rx="1" ry="1" fill="none" stroke="#4271ae" stroke-linecap="round" stroke-width="2"/>
|
5
|
+
</svg>
|
Binary file
|
Binary file
|
@@ -35,6 +35,7 @@ translators for the languages currently available:</p>
|
|
35
35
|
<li><b>Norwegian:</b> Veronica Berglyd Olsen (vkbo)</li>
|
36
36
|
<li><b>Polish:</b> Anna Maria Polak (Nauthiz)</li>
|
37
37
|
<li><b>Portuguese:</b> Bruno Meneguello (bkmeneguello)</li>
|
38
|
+
<li><b>Russian:</b> Konstantin Tan (k1kimosha)</li>
|
38
39
|
<li><b>Simplified Chinese:</b> Qianzhi Long (longqzh)</li>
|
39
40
|
</ul>
|
40
41
|
|
@@ -37,8 +37,8 @@ from typing import TYPE_CHECKING, Any, Literal, TypeVar
|
|
37
37
|
from urllib.parse import urljoin
|
38
38
|
from urllib.request import pathname2url
|
39
39
|
|
40
|
-
from PyQt5.QtCore import QCoreApplication, QUrl
|
41
|
-
from PyQt5.QtGui import QColor, QDesktopServices, QFont, QFontInfo
|
40
|
+
from PyQt5.QtCore import QCoreApplication, QMimeData, QUrl
|
41
|
+
from PyQt5.QtGui import QColor, QDesktopServices, QFont, QFontDatabase, QFontInfo
|
42
42
|
|
43
43
|
from novelwriter.constants import nwConst, nwLabels, nwUnicode, trConst
|
44
44
|
from novelwriter.enum import nwItemClass, nwItemLayout, nwItemType
|
@@ -434,6 +434,30 @@ def describeFont(font: QFont) -> str:
|
|
434
434
|
return "Error"
|
435
435
|
|
436
436
|
|
437
|
+
def fontMatcher(font: QFont) -> QFont:
|
438
|
+
"""Make sure the font is the correct family, if possible. This
|
439
|
+
ensures that Qt doesn't re-use another font under the hood. The
|
440
|
+
default Qt5 font matching algorithm doesn't handle well changing
|
441
|
+
application fonts at runtime.
|
442
|
+
"""
|
443
|
+
info = QFontInfo(font)
|
444
|
+
if (famRequest := font.family()) != (famActual := info.family()):
|
445
|
+
logger.warning("Font mismatch: Requested '%s', but got '%s'", famRequest, famActual)
|
446
|
+
db = QFontDatabase()
|
447
|
+
if famRequest in db.families():
|
448
|
+
styleRequest, sizeRequest = font.styleName(), font.pointSize()
|
449
|
+
logger.info("Lookup: %s, %s, %d pt", famRequest, styleRequest, sizeRequest)
|
450
|
+
temp = db.font(famRequest, styleRequest, sizeRequest)
|
451
|
+
temp.setPointSize(sizeRequest) # Make sure it isn't changed
|
452
|
+
famFound, styleFound, sizeFound = temp.family(), temp.styleName(), temp.pointSize()
|
453
|
+
if famFound == famRequest:
|
454
|
+
logger.info("Found: %s, %s, %d pt", famFound, styleFound, sizeFound)
|
455
|
+
return temp
|
456
|
+
logger.warning("Could not find a font match in the font database")
|
457
|
+
logger.warning("If you just changed font, you may need to restart the application")
|
458
|
+
return font
|
459
|
+
|
460
|
+
|
437
461
|
def qtLambda(func: Callable, *args: Any, **kwargs: Any) -> Callable:
|
438
462
|
"""A replacement for Python lambdas that works for Qt slots."""
|
439
463
|
def wrapper(*a_: Any) -> None:
|
@@ -441,6 +465,17 @@ def qtLambda(func: Callable, *args: Any, **kwargs: Any) -> Callable:
|
|
441
465
|
return wrapper
|
442
466
|
|
443
467
|
|
468
|
+
def encodeMimeHandles(mimeData: QMimeData, handles: list[str]) -> None:
|
469
|
+
"""Encode handles into a mime data object."""
|
470
|
+
mimeData.setData(nwConst.MIME_HANDLE, b"|".join(h.encode() for h in handles))
|
471
|
+
return
|
472
|
+
|
473
|
+
|
474
|
+
def decodeMimeHandles(mimeData: QMimeData) -> list[str]:
|
475
|
+
"""Decode and split a mime data object with handles."""
|
476
|
+
return mimeData.data(nwConst.MIME_HANDLE).data().decode().split("|")
|
477
|
+
|
478
|
+
|
444
479
|
##
|
445
480
|
# Encoder Functions
|
446
481
|
##
|