novelWriter 2.6.2__py3-none-any.whl → 2.7__py3-none-any.whl
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/__init__.py +98 -75
- novelwriter/assets/i18n/nw_cs_CZ.qm +0 -0
- novelwriter/assets/i18n/nw_de_DE.qm +0 -0
- novelwriter/assets/i18n/nw_en_US.qm +0 -0
- novelwriter/assets/i18n/nw_es_419.qm +0 -0
- novelwriter/assets/i18n/nw_fr_FR.qm +0 -0
- novelwriter/assets/i18n/nw_it_IT.qm +0 -0
- novelwriter/assets/i18n/nw_ja_JP.qm +0 -0
- novelwriter/assets/i18n/nw_nb_NO.qm +0 -0
- novelwriter/assets/i18n/nw_nl_NL.qm +0 -0
- novelwriter/assets/i18n/nw_pl_PL.qm +0 -0
- novelwriter/assets/i18n/nw_pt_BR.qm +0 -0
- novelwriter/assets/i18n/nw_ru_RU.qm +0 -0
- novelwriter/assets/i18n/nw_zh_CN.qm +0 -0
- novelwriter/assets/i18n/project_de_DE.json +3 -1
- novelwriter/assets/i18n/project_en_GB.json +2 -0
- novelwriter/assets/i18n/project_en_US.json +2 -0
- novelwriter/assets/i18n/project_it_IT.json +2 -0
- novelwriter/assets/i18n/project_ja_JP.json +2 -0
- novelwriter/assets/i18n/project_nb_NO.json +2 -0
- novelwriter/assets/i18n/project_nn_NO.json +5 -0
- novelwriter/assets/i18n/project_pl_PL.json +2 -0
- novelwriter/assets/i18n/project_pt_BR.json +2 -0
- novelwriter/assets/i18n/project_ru_RU.json +2 -0
- novelwriter/assets/i18n/project_zh_CN.json +2 -0
- novelwriter/assets/icons/font_awesome.icons +109 -0
- novelwriter/assets/icons/material_filled_bold.icons +109 -0
- novelwriter/assets/icons/material_filled_normal.icons +109 -0
- novelwriter/assets/icons/material_filled_thin.icons +109 -0
- novelwriter/assets/icons/material_rounded_bold.icons +109 -0
- novelwriter/assets/icons/material_rounded_normal.icons +109 -0
- novelwriter/assets/icons/material_rounded_thin.icons +109 -0
- novelwriter/assets/icons/remix_filled.icons +109 -0
- novelwriter/assets/icons/remix_outline.icons +109 -0
- novelwriter/assets/images/splash.png +0 -0
- novelwriter/assets/manual.pdf +0 -0
- novelwriter/assets/{manual_fr_FR.pdf → manual_fr.pdf} +0 -0
- novelwriter/assets/sample.zip +0 -0
- novelwriter/assets/syntax/cyberpunk_night.conf +1 -1
- novelwriter/assets/syntax/snazzy.conf +3 -3
- novelwriter/assets/text/credits_en.htm +12 -6
- novelwriter/assets/themes/cyberpunk_night.conf +23 -7
- novelwriter/assets/themes/default_dark.conf +20 -4
- novelwriter/assets/themes/default_light.conf +21 -5
- novelwriter/assets/themes/dracula.conf +20 -4
- novelwriter/assets/themes/snazzy.conf +48 -0
- novelwriter/assets/themes/solarized_dark.conf +24 -8
- novelwriter/assets/themes/solarized_light.conf +22 -6
- novelwriter/common.py +43 -27
- novelwriter/config.py +201 -139
- novelwriter/constants.py +92 -56
- novelwriter/core/buildsettings.py +26 -17
- novelwriter/core/coretools.py +52 -41
- novelwriter/core/docbuild.py +20 -13
- novelwriter/core/document.py +2 -2
- novelwriter/core/index.py +166 -432
- novelwriter/core/indexdata.py +406 -0
- novelwriter/core/item.py +50 -32
- novelwriter/core/itemmodel.py +43 -38
- novelwriter/core/novelmodel.py +225 -0
- novelwriter/core/options.py +1 -1
- novelwriter/core/project.py +24 -25
- novelwriter/core/projectdata.py +47 -29
- novelwriter/core/projectxml.py +18 -8
- novelwriter/core/sessions.py +32 -15
- novelwriter/core/spellcheck.py +4 -3
- novelwriter/core/status.py +12 -15
- novelwriter/core/storage.py +1 -1
- novelwriter/core/tree.py +55 -13
- novelwriter/dialogs/about.py +19 -22
- novelwriter/dialogs/docmerge.py +23 -24
- novelwriter/dialogs/docsplit.py +26 -26
- novelwriter/dialogs/editlabel.py +19 -20
- novelwriter/dialogs/preferences.py +143 -69
- novelwriter/dialogs/projectsettings.py +51 -54
- novelwriter/dialogs/quotes.py +14 -19
- novelwriter/dialogs/wordlist.py +25 -30
- novelwriter/enum.py +8 -0
- novelwriter/error.py +16 -16
- novelwriter/extensions/configlayout.py +24 -20
- novelwriter/extensions/eventfilters.py +9 -5
- novelwriter/extensions/modified.py +34 -15
- novelwriter/extensions/novelselector.py +18 -5
- novelwriter/extensions/pagedsidebar.py +39 -49
- novelwriter/extensions/progressbars.py +10 -8
- novelwriter/extensions/statusled.py +6 -13
- novelwriter/extensions/switch.py +31 -41
- novelwriter/extensions/switchbox.py +8 -3
- novelwriter/extensions/versioninfo.py +4 -4
- novelwriter/formats/shared.py +1 -1
- novelwriter/formats/todocx.py +14 -10
- novelwriter/formats/tohtml.py +7 -5
- novelwriter/formats/tokenizer.py +37 -33
- novelwriter/formats/tomarkdown.py +6 -2
- novelwriter/formats/toodt.py +27 -22
- novelwriter/formats/toqdoc.py +19 -14
- novelwriter/formats/toraw.py +6 -2
- novelwriter/gui/doceditor.py +314 -305
- novelwriter/gui/dochighlight.py +46 -45
- novelwriter/gui/docviewer.py +102 -104
- novelwriter/gui/docviewerpanel.py +47 -51
- novelwriter/gui/editordocument.py +8 -5
- novelwriter/gui/itemdetails.py +15 -18
- novelwriter/gui/mainmenu.py +147 -146
- novelwriter/gui/noveltree.py +246 -406
- novelwriter/gui/outline.py +145 -76
- novelwriter/gui/projtree.py +139 -132
- novelwriter/gui/search.py +34 -31
- novelwriter/gui/sidebar.py +13 -18
- novelwriter/gui/statusbar.py +27 -21
- novelwriter/gui/theme.py +554 -436
- novelwriter/guimain.py +56 -38
- novelwriter/shared.py +32 -23
- novelwriter/splash.py +74 -0
- novelwriter/text/comments.py +70 -0
- novelwriter/text/patterns.py +4 -4
- novelwriter/tools/dictionaries.py +20 -29
- novelwriter/tools/lipsum.py +18 -18
- novelwriter/tools/manusbuild.py +39 -42
- novelwriter/tools/manuscript.py +114 -127
- novelwriter/tools/manussettings.py +129 -102
- novelwriter/tools/noveldetails.py +60 -72
- novelwriter/tools/welcome.py +57 -75
- novelwriter/tools/writingstats.py +112 -102
- novelwriter/types.py +5 -7
- {novelWriter-2.6.2.dist-info → novelwriter-2.7.dist-info}/METADATA +6 -6
- novelwriter-2.7.dist-info/RECORD +162 -0
- {novelWriter-2.6.2.dist-info → novelwriter-2.7.dist-info}/WHEEL +1 -1
- novelWriter-2.6.2.dist-info/RECORD +0 -363
- novelwriter/assets/icons/typicons_dark/README.md +0 -29
- novelwriter/assets/icons/typicons_dark/icons.conf +0 -134
- novelwriter/assets/icons/typicons_dark/mixed_copy.svg +0 -4
- novelwriter/assets/icons/typicons_dark/mixed_document-chapter.svg +0 -12
- novelwriter/assets/icons/typicons_dark/mixed_document-new.svg +0 -6
- novelwriter/assets/icons/typicons_dark/mixed_document-note.svg +0 -12
- novelwriter/assets/icons/typicons_dark/mixed_document-scene.svg +0 -12
- novelwriter/assets/icons/typicons_dark/mixed_document-section.svg +0 -12
- novelwriter/assets/icons/typicons_dark/mixed_document-title.svg +0 -12
- novelwriter/assets/icons/typicons_dark/mixed_edit.svg +0 -4
- novelwriter/assets/icons/typicons_dark/mixed_import.svg +0 -5
- novelwriter/assets/icons/typicons_dark/mixed_input-checked.svg +0 -5
- novelwriter/assets/icons/typicons_dark/mixed_input-none.svg +0 -5
- novelwriter/assets/icons/typicons_dark/mixed_input-unchecked.svg +0 -5
- novelwriter/assets/icons/typicons_dark/mixed_margin-bottom.svg +0 -6
- novelwriter/assets/icons/typicons_dark/mixed_margin-left.svg +0 -6
- novelwriter/assets/icons/typicons_dark/mixed_margin-right.svg +0 -6
- novelwriter/assets/icons/typicons_dark/mixed_margin-top.svg +0 -6
- novelwriter/assets/icons/typicons_dark/mixed_search-replace.svg +0 -6
- novelwriter/assets/icons/typicons_dark/mixed_size-height.svg +0 -6
- novelwriter/assets/icons/typicons_dark/mixed_size-width.svg +0 -6
- novelwriter/assets/icons/typicons_dark/nw_deco-h0.svg +0 -4
- novelwriter/assets/icons/typicons_dark/nw_deco-h1.svg +0 -4
- novelwriter/assets/icons/typicons_dark/nw_deco-h2-narrow.svg +0 -4
- novelwriter/assets/icons/typicons_dark/nw_deco-h2.svg +0 -4
- novelwriter/assets/icons/typicons_dark/nw_deco-h3-narrow.svg +0 -4
- novelwriter/assets/icons/typicons_dark/nw_deco-h3.svg +0 -4
- novelwriter/assets/icons/typicons_dark/nw_deco-h4-narrow.svg +0 -4
- novelwriter/assets/icons/typicons_dark/nw_deco-h4.svg +0 -4
- novelwriter/assets/icons/typicons_dark/nw_deco-note.svg +0 -4
- novelwriter/assets/icons/typicons_dark/nw_deco-noveltree-more.svg +0 -4
- novelwriter/assets/icons/typicons_dark/nw_font.svg +0 -4
- novelwriter/assets/icons/typicons_dark/nw_panel.svg +0 -4
- novelwriter/assets/icons/typicons_dark/nw_quote.svg +0 -4
- novelwriter/assets/icons/typicons_dark/nw_search-case.svg +0 -4
- novelwriter/assets/icons/typicons_dark/nw_search-preserve.svg +0 -4
- novelwriter/assets/icons/typicons_dark/nw_search-regex.svg +0 -4
- novelwriter/assets/icons/typicons_dark/nw_search-word.svg +0 -4
- novelwriter/assets/icons/typicons_dark/nw_tb-bold-md.svg +0 -4
- novelwriter/assets/icons/typicons_dark/nw_tb-bold.svg +0 -6
- novelwriter/assets/icons/typicons_dark/nw_tb-italic-md.svg +0 -4
- novelwriter/assets/icons/typicons_dark/nw_tb-italic.svg +0 -6
- novelwriter/assets/icons/typicons_dark/nw_tb-mark.svg +0 -7
- novelwriter/assets/icons/typicons_dark/nw_tb-strike-md.svg +0 -4
- novelwriter/assets/icons/typicons_dark/nw_tb-strike.svg +0 -6
- novelwriter/assets/icons/typicons_dark/nw_tb-subscript.svg +0 -7
- novelwriter/assets/icons/typicons_dark/nw_tb-superscript.svg +0 -7
- novelwriter/assets/icons/typicons_dark/nw_tb-underline.svg +0 -7
- novelwriter/assets/icons/typicons_dark/nw_toolbar.svg +0 -5
- novelwriter/assets/icons/typicons_dark/typ_arrow-down-thick-grey.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_arrow-forward.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_arrow-maximise.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_arrow-minimise.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_arrow-repeat-grey.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_book-grey.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_book.svg +0 -6
- novelwriter/assets/icons/typicons_dark/typ_bookmark.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_calendar.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_cancel-grey.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_cancel.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_chart-bar-grey.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_chevron-down.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_chevron-left.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_chevron-right.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_chevron-up.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_cog.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_delete-full.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_delete.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_directions-full.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_document-add.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_document-text.svg +0 -8
- novelwriter/assets/icons/typicons_dark/typ_document.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_export-grey.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_export.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_eye.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_flag.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_folder-open.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_folder.svg +0 -5
- novelwriter/assets/icons/typicons_dark/typ_globe-grey.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_key.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_lightbulb-full.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_location.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_media-pause-grey.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_media-record-outline.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_media-record.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_minus.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_pencil.svg +0 -5
- novelwriter/assets/icons/typicons_dark/typ_pin-outline.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_pin.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_plus.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_puzzle-outline.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_puzzle.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_refresh-flipped.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_refresh.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_search-grey.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_search.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_star.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_stopwatch-grey.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_th-dot-menu.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_th-dot-more.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_th-list-grey.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_th-list.svg +0 -9
- novelwriter/assets/icons/typicons_dark/typ_times.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_trash.svg +0 -5
- novelwriter/assets/icons/typicons_dark/typ_unfold-hidden.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_unfold-visible.svg +0 -4
- novelwriter/assets/icons/typicons_dark/typ_user.svg +0 -5
- novelwriter/assets/icons/typicons_dark/typ_warning-full.svg +0 -4
- novelwriter/assets/icons/typicons_light/README.md +0 -29
- novelwriter/assets/icons/typicons_light/icons.conf +0 -134
- novelwriter/assets/icons/typicons_light/mixed_copy.svg +0 -4
- novelwriter/assets/icons/typicons_light/mixed_document-chapter.svg +0 -12
- novelwriter/assets/icons/typicons_light/mixed_document-new.svg +0 -6
- novelwriter/assets/icons/typicons_light/mixed_document-note.svg +0 -12
- novelwriter/assets/icons/typicons_light/mixed_document-scene.svg +0 -12
- novelwriter/assets/icons/typicons_light/mixed_document-section.svg +0 -12
- novelwriter/assets/icons/typicons_light/mixed_document-title.svg +0 -12
- novelwriter/assets/icons/typicons_light/mixed_edit.svg +0 -4
- novelwriter/assets/icons/typicons_light/mixed_import.svg +0 -5
- novelwriter/assets/icons/typicons_light/mixed_input-checked.svg +0 -5
- novelwriter/assets/icons/typicons_light/mixed_input-none.svg +0 -5
- novelwriter/assets/icons/typicons_light/mixed_input-unchecked.svg +0 -5
- novelwriter/assets/icons/typicons_light/mixed_margin-bottom.svg +0 -6
- novelwriter/assets/icons/typicons_light/mixed_margin-left.svg +0 -6
- novelwriter/assets/icons/typicons_light/mixed_margin-right.svg +0 -6
- novelwriter/assets/icons/typicons_light/mixed_margin-top.svg +0 -6
- novelwriter/assets/icons/typicons_light/mixed_search-replace.svg +0 -6
- novelwriter/assets/icons/typicons_light/mixed_size-height.svg +0 -6
- novelwriter/assets/icons/typicons_light/mixed_size-width.svg +0 -6
- novelwriter/assets/icons/typicons_light/nw_deco-h0.svg +0 -4
- novelwriter/assets/icons/typicons_light/nw_deco-h1.svg +0 -4
- novelwriter/assets/icons/typicons_light/nw_deco-h2-narrow.svg +0 -4
- novelwriter/assets/icons/typicons_light/nw_deco-h2.svg +0 -4
- novelwriter/assets/icons/typicons_light/nw_deco-h3-narrow.svg +0 -4
- novelwriter/assets/icons/typicons_light/nw_deco-h3.svg +0 -4
- novelwriter/assets/icons/typicons_light/nw_deco-h4-narrow.svg +0 -4
- novelwriter/assets/icons/typicons_light/nw_deco-h4.svg +0 -4
- novelwriter/assets/icons/typicons_light/nw_deco-note.svg +0 -4
- novelwriter/assets/icons/typicons_light/nw_deco-noveltree-more.svg +0 -4
- novelwriter/assets/icons/typicons_light/nw_font.svg +0 -4
- novelwriter/assets/icons/typicons_light/nw_panel.svg +0 -4
- novelwriter/assets/icons/typicons_light/nw_quote.svg +0 -4
- novelwriter/assets/icons/typicons_light/nw_search-case.svg +0 -4
- novelwriter/assets/icons/typicons_light/nw_search-preserve.svg +0 -4
- novelwriter/assets/icons/typicons_light/nw_search-regex.svg +0 -4
- novelwriter/assets/icons/typicons_light/nw_search-word.svg +0 -4
- novelwriter/assets/icons/typicons_light/nw_tb-bold-md.svg +0 -4
- novelwriter/assets/icons/typicons_light/nw_tb-bold.svg +0 -6
- novelwriter/assets/icons/typicons_light/nw_tb-italic-md.svg +0 -4
- novelwriter/assets/icons/typicons_light/nw_tb-italic.svg +0 -6
- novelwriter/assets/icons/typicons_light/nw_tb-mark.svg +0 -7
- novelwriter/assets/icons/typicons_light/nw_tb-strike-md.svg +0 -4
- novelwriter/assets/icons/typicons_light/nw_tb-strike.svg +0 -6
- novelwriter/assets/icons/typicons_light/nw_tb-subscript.svg +0 -7
- novelwriter/assets/icons/typicons_light/nw_tb-superscript.svg +0 -7
- novelwriter/assets/icons/typicons_light/nw_tb-underline.svg +0 -7
- novelwriter/assets/icons/typicons_light/nw_toolbar.svg +0 -5
- novelwriter/assets/icons/typicons_light/typ_arrow-down-thick-grey.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_arrow-forward.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_arrow-maximise.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_arrow-minimise.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_arrow-repeat-grey.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_book-grey.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_book.svg +0 -6
- novelwriter/assets/icons/typicons_light/typ_bookmark.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_calendar.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_cancel-grey.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_cancel.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_chart-bar-grey.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_chevron-down.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_chevron-left.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_chevron-right.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_chevron-up.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_cog.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_delete-full.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_delete.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_directions-full.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_document-add.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_document-text.svg +0 -5
- novelwriter/assets/icons/typicons_light/typ_document.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_export-grey.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_export.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_eye.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_flag.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_folder-open.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_folder.svg +0 -5
- novelwriter/assets/icons/typicons_light/typ_globe-grey.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_key.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_lightbulb-full.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_location.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_media-pause-grey.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_media-record-outline.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_media-record.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_minus.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_pencil.svg +0 -5
- novelwriter/assets/icons/typicons_light/typ_pin-outline.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_pin.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_plus.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_puzzle-outline.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_puzzle.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_refresh-flipped.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_refresh.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_search-grey.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_search.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_star.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_stopwatch-grey.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_th-dot-menu.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_th-dot-more.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_th-list-grey.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_th-list.svg +0 -9
- novelwriter/assets/icons/typicons_light/typ_times.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_trash.svg +0 -5
- novelwriter/assets/icons/typicons_light/typ_unfold-hidden.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_unfold-visible.svg +0 -4
- novelwriter/assets/icons/typicons_light/typ_user.svg +0 -5
- novelwriter/assets/icons/typicons_light/typ_warning-full.svg +0 -4
- {novelWriter-2.6.2.dist-info → novelwriter-2.7.dist-info}/entry_points.txt +0 -0
- {novelWriter-2.6.2.dist-info → novelwriter-2.7.dist-info/licenses}/LICENSE.md +0 -0
- {novelWriter-2.6.2.dist-info → novelwriter-2.7.dist-info}/top_level.txt +0 -0
novelwriter/dialogs/docmerge.py
CHANGED
@@ -26,14 +26,14 @@ from __future__ import annotations
|
|
26
26
|
|
27
27
|
import logging
|
28
28
|
|
29
|
-
from
|
30
|
-
from
|
29
|
+
from PyQt6.QtCore import Qt, pyqtSlot
|
30
|
+
from PyQt6.QtWidgets import (
|
31
31
|
QAbstractItemView, QDialogButtonBox, QGridLayout, QLabel, QListWidget,
|
32
32
|
QListWidgetItem, QVBoxLayout, QWidget
|
33
33
|
)
|
34
34
|
|
35
|
-
from novelwriter import
|
36
|
-
from novelwriter.extensions.configlayout import
|
35
|
+
from novelwriter import SHARED
|
36
|
+
from novelwriter.extensions.configlayout import NColorLabel
|
37
37
|
from novelwriter.extensions.modified import NDialog
|
38
38
|
from novelwriter.extensions.switch import NSwitch
|
39
39
|
from novelwriter.types import QtAccepted, QtDialogCancel, QtDialogOk, QtDialogReset, QtUserRole
|
@@ -56,33 +56,31 @@ class GuiDocMerge(NDialog):
|
|
56
56
|
|
57
57
|
self.headLabel = QLabel(self.tr("Documents to Merge"), self)
|
58
58
|
self.headLabel.setFont(SHARED.theme.guiFontB)
|
59
|
-
self.helpLabel =
|
59
|
+
self.helpLabel = NColorLabel(
|
60
60
|
self.tr("Drag and drop items to change the order, or uncheck to exclude."),
|
61
61
|
self, color=SHARED.theme.helpText, wrap=True
|
62
62
|
)
|
63
63
|
|
64
64
|
iPx = SHARED.theme.baseIconHeight
|
65
65
|
iSz = SHARED.theme.baseIconSize
|
66
|
-
hSp = CONFIG.pxInt(12)
|
67
|
-
vSp = CONFIG.pxInt(8)
|
68
|
-
bSp = CONFIG.pxInt(12)
|
69
66
|
|
70
67
|
self.listBox = QListWidget(self)
|
71
68
|
self.listBox.setIconSize(iSz)
|
72
|
-
self.listBox.setMinimumWidth(
|
73
|
-
self.listBox.setMinimumHeight(
|
69
|
+
self.listBox.setMinimumWidth(400)
|
70
|
+
self.listBox.setMinimumHeight(180)
|
74
71
|
self.listBox.setSelectionBehavior(QAbstractItemView.SelectionBehavior.SelectRows)
|
75
72
|
self.listBox.setSelectionMode(QAbstractItemView.SelectionMode.SingleSelection)
|
76
73
|
self.listBox.setDragDropMode(QAbstractItemView.DragDropMode.InternalMove)
|
77
74
|
|
78
75
|
# Merge Options
|
79
|
-
self.trashLabel = QLabel(self.tr("Move merged items to Trash"), self)
|
80
76
|
self.trashSwitch = NSwitch(self, height=iPx)
|
77
|
+
self.trashLabel = QLabel(self.tr("Move merged items to Trash"), self)
|
78
|
+
self.trashLabel.setBuddy(self.trashSwitch)
|
81
79
|
|
82
80
|
self.optBox = QGridLayout()
|
83
81
|
self.optBox.addWidget(self.trashLabel, 0, 0)
|
84
82
|
self.optBox.addWidget(self.trashSwitch, 0, 1)
|
85
|
-
self.optBox.setHorizontalSpacing(
|
83
|
+
self.optBox.setHorizontalSpacing(12)
|
86
84
|
self.optBox.setColumnStretch(2, 1)
|
87
85
|
|
88
86
|
# Buttons
|
@@ -91,18 +89,19 @@ class GuiDocMerge(NDialog):
|
|
91
89
|
self.buttonBox.rejected.connect(self.reject)
|
92
90
|
|
93
91
|
self.resetButton = self.buttonBox.addButton(QtDialogReset)
|
94
|
-
self.resetButton
|
92
|
+
if self.resetButton:
|
93
|
+
self.resetButton.clicked.connect(self._resetList)
|
95
94
|
|
96
95
|
# Assemble
|
97
96
|
self.outerBox = QVBoxLayout()
|
98
97
|
self.outerBox.setSpacing(0)
|
99
98
|
self.outerBox.addWidget(self.headLabel)
|
100
99
|
self.outerBox.addWidget(self.helpLabel)
|
101
|
-
self.outerBox.addSpacing(
|
100
|
+
self.outerBox.addSpacing(8)
|
102
101
|
self.outerBox.addWidget(self.listBox)
|
103
|
-
self.outerBox.addSpacing(
|
102
|
+
self.outerBox.addSpacing(8)
|
104
103
|
self.outerBox.addLayout(self.optBox)
|
105
|
-
self.outerBox.addSpacing(
|
104
|
+
self.outerBox.addSpacing(12)
|
106
105
|
self.outerBox.addWidget(self.buttonBox)
|
107
106
|
self.setLayout(self.outerBox)
|
108
107
|
|
@@ -133,11 +132,11 @@ class GuiDocMerge(NDialog):
|
|
133
132
|
@classmethod
|
134
133
|
def getData(cls, parent: QWidget, handle: str, items: list[str]) -> tuple[dict, bool]:
|
135
134
|
"""Pop the dialog and return the result."""
|
136
|
-
|
137
|
-
|
138
|
-
data =
|
139
|
-
accepted =
|
140
|
-
|
135
|
+
dialog = cls(parent, handle, items)
|
136
|
+
dialog.exec()
|
137
|
+
data = dialog.data()
|
138
|
+
accepted = dialog.result() == QtAccepted
|
139
|
+
dialog.softDelete()
|
141
140
|
return data, accepted
|
142
141
|
|
143
142
|
##
|
@@ -148,9 +147,9 @@ class GuiDocMerge(NDialog):
|
|
148
147
|
def _resetList(self) -> None:
|
149
148
|
"""Reset the content of the list box to its original state."""
|
150
149
|
logger.debug("Resetting list box content")
|
151
|
-
sHandle
|
152
|
-
|
153
|
-
|
150
|
+
if sHandle := self._data.get("sHandle"):
|
151
|
+
itemList = self._data.get("origItems", [])
|
152
|
+
self._loadContent(sHandle, itemList)
|
154
153
|
return
|
155
154
|
|
156
155
|
##
|
novelwriter/dialogs/docsplit.py
CHANGED
@@ -26,14 +26,14 @@ from __future__ import annotations
|
|
26
26
|
|
27
27
|
import logging
|
28
28
|
|
29
|
-
from
|
30
|
-
from
|
29
|
+
from PyQt6.QtCore import pyqtSlot
|
30
|
+
from PyQt6.QtWidgets import (
|
31
31
|
QAbstractItemView, QComboBox, QDialogButtonBox, QGridLayout, QLabel,
|
32
32
|
QListWidget, QListWidgetItem, QVBoxLayout, QWidget
|
33
33
|
)
|
34
34
|
|
35
|
-
from novelwriter import
|
36
|
-
from novelwriter.extensions.configlayout import
|
35
|
+
from novelwriter import SHARED
|
36
|
+
from novelwriter.extensions.configlayout import NColorLabel
|
37
37
|
from novelwriter.extensions.modified import NDialog
|
38
38
|
from novelwriter.extensions.switch import NSwitch
|
39
39
|
from novelwriter.types import QtAccepted, QtDialogCancel, QtDialogOk, QtUserRole
|
@@ -60,16 +60,13 @@ class GuiDocSplit(NDialog):
|
|
60
60
|
|
61
61
|
self.headLabel = QLabel(self.tr("Document Headings"), self)
|
62
62
|
self.headLabel.setFont(SHARED.theme.guiFontB)
|
63
|
-
self.helpLabel =
|
63
|
+
self.helpLabel = NColorLabel(
|
64
64
|
self.tr("Select the maximum level to split into files."),
|
65
65
|
self, color=SHARED.theme.helpText, wrap=True
|
66
66
|
)
|
67
67
|
|
68
68
|
# Values
|
69
69
|
iPx = SHARED.theme.baseIconHeight
|
70
|
-
hSp = CONFIG.pxInt(12)
|
71
|
-
vSp = CONFIG.pxInt(8)
|
72
|
-
bSp = CONFIG.pxInt(12)
|
73
70
|
|
74
71
|
options = SHARED.project.options
|
75
72
|
spLevel = options.getInt("GuiDocSplit", "spLevel", 3)
|
@@ -79,11 +76,11 @@ class GuiDocSplit(NDialog):
|
|
79
76
|
# Heading Selection
|
80
77
|
self.listBox = QListWidget(self)
|
81
78
|
self.listBox.setDragDropMode(QAbstractItemView.DragDropMode.NoDragDrop)
|
82
|
-
self.listBox.setMinimumWidth(
|
83
|
-
self.listBox.setMinimumHeight(
|
79
|
+
self.listBox.setMinimumWidth(400)
|
80
|
+
self.listBox.setMinimumHeight(180)
|
84
81
|
|
85
82
|
self.splitLevel = QComboBox(self)
|
86
|
-
self.splitLevel.addItem(self.tr("Split on Heading Level 1 (Partition)"),
|
83
|
+
self.splitLevel.addItem(self.tr("Split on Heading Level 1 (Partition)"), 1)
|
87
84
|
self.splitLevel.addItem(self.tr("Split up to Heading Level 2 (Chapter)"), 2)
|
88
85
|
self.splitLevel.addItem(self.tr("Split up to Heading Level 3 (Scene)"), 3)
|
89
86
|
self.splitLevel.addItem(self.tr("Split up to Heading Level 4 (Section)"), 4)
|
@@ -93,16 +90,19 @@ class GuiDocSplit(NDialog):
|
|
93
90
|
self.splitLevel.currentIndexChanged.connect(self._reloadList)
|
94
91
|
|
95
92
|
# Split Options
|
96
|
-
self.folderLabel = QLabel(self.tr("Split into a new folder"), self)
|
97
93
|
self.folderSwitch = NSwitch(self, height=iPx)
|
98
94
|
self.folderSwitch.setChecked(intoFolder)
|
95
|
+
self.folderLabel = QLabel(self.tr("Split into a new folder"), self)
|
96
|
+
self.folderLabel.setBuddy(self.folderSwitch)
|
99
97
|
|
100
|
-
self.hierarchyLabel = QLabel(self.tr("Create document hierarchy"), self)
|
101
98
|
self.hierarchySwitch = NSwitch(self, height=iPx)
|
102
99
|
self.hierarchySwitch.setChecked(docHierarchy)
|
100
|
+
self.hierarchyLabel = QLabel(self.tr("Create document hierarchy"), self)
|
101
|
+
self.hierarchyLabel.setBuddy(self.hierarchySwitch)
|
103
102
|
|
104
|
-
self.trashLabel = QLabel(self.tr("Move split document to Trash"), self)
|
105
103
|
self.trashSwitch = NSwitch(self, height=iPx)
|
104
|
+
self.trashLabel = QLabel(self.tr("Move split document to Trash"), self)
|
105
|
+
self.trashLabel.setBuddy(self.trashSwitch)
|
106
106
|
|
107
107
|
self.optBox = QGridLayout()
|
108
108
|
self.optBox.addWidget(self.folderLabel, 0, 0)
|
@@ -111,8 +111,8 @@ class GuiDocSplit(NDialog):
|
|
111
111
|
self.optBox.addWidget(self.hierarchySwitch, 1, 1)
|
112
112
|
self.optBox.addWidget(self.trashLabel, 2, 0)
|
113
113
|
self.optBox.addWidget(self.trashSwitch, 2, 1)
|
114
|
-
self.optBox.setVerticalSpacing(
|
115
|
-
self.optBox.setHorizontalSpacing(
|
114
|
+
self.optBox.setVerticalSpacing(8)
|
115
|
+
self.optBox.setHorizontalSpacing(12)
|
116
116
|
self.optBox.setColumnStretch(3, 1)
|
117
117
|
|
118
118
|
# Buttons
|
@@ -125,12 +125,12 @@ class GuiDocSplit(NDialog):
|
|
125
125
|
self.outerBox.setSpacing(0)
|
126
126
|
self.outerBox.addWidget(self.headLabel)
|
127
127
|
self.outerBox.addWidget(self.helpLabel)
|
128
|
-
self.outerBox.addSpacing(
|
128
|
+
self.outerBox.addSpacing(8)
|
129
129
|
self.outerBox.addWidget(self.listBox)
|
130
130
|
self.outerBox.addWidget(self.splitLevel)
|
131
|
-
self.outerBox.addSpacing(
|
131
|
+
self.outerBox.addSpacing(8)
|
132
132
|
self.outerBox.addLayout(self.optBox)
|
133
|
-
self.outerBox.addSpacing(
|
133
|
+
self.outerBox.addSpacing(12)
|
134
134
|
self.outerBox.addWidget(self.buttonBox)
|
135
135
|
self.setLayout(self.outerBox)
|
136
136
|
|
@@ -181,11 +181,11 @@ class GuiDocSplit(NDialog):
|
|
181
181
|
@classmethod
|
182
182
|
def getData(cls, parent: QWidget, handle: str) -> tuple[dict, list[str], bool]:
|
183
183
|
"""Pop the dialog and return the result."""
|
184
|
-
|
185
|
-
|
186
|
-
data, text =
|
187
|
-
accepted =
|
188
|
-
|
184
|
+
dialog = cls(parent, handle)
|
185
|
+
dialog.exec()
|
186
|
+
data, text = dialog.data()
|
187
|
+
accepted = dialog.result() == QtAccepted
|
188
|
+
dialog.softDelete()
|
189
189
|
return data, text, accepted
|
190
190
|
|
191
191
|
##
|
@@ -195,8 +195,8 @@ class GuiDocSplit(NDialog):
|
|
195
195
|
@pyqtSlot()
|
196
196
|
def _reloadList(self) -> None:
|
197
197
|
"""Reload the content of the list box."""
|
198
|
-
sHandle
|
199
|
-
|
198
|
+
if sHandle := self._data.get("sHandle"):
|
199
|
+
self._loadContent(sHandle)
|
200
200
|
return
|
201
201
|
|
202
202
|
##
|
novelwriter/dialogs/editlabel.py
CHANGED
@@ -25,9 +25,8 @@ from __future__ import annotations
|
|
25
25
|
|
26
26
|
import logging
|
27
27
|
|
28
|
-
from
|
28
|
+
from PyQt6.QtWidgets import QDialogButtonBox, QHBoxLayout, QLabel, QLineEdit, QVBoxLayout, QWidget
|
29
29
|
|
30
|
-
from novelwriter import CONFIG
|
31
30
|
from novelwriter.extensions.modified import NDialog
|
32
31
|
from novelwriter.types import QtAccepted, QtDialogCancel, QtDialogOk
|
33
32
|
|
@@ -43,15 +42,15 @@ class GuiEditLabel(NDialog):
|
|
43
42
|
self.setObjectName("GuiEditLabel")
|
44
43
|
self.setWindowTitle(self.tr("Item Label"))
|
45
44
|
|
46
|
-
mVd = CONFIG.pxInt(220)
|
47
|
-
mSp = CONFIG.pxInt(12)
|
48
|
-
|
49
45
|
# Item Label
|
50
|
-
self.
|
51
|
-
self.
|
52
|
-
self.
|
53
|
-
self.
|
54
|
-
self.
|
46
|
+
self.edtValue = QLineEdit(self)
|
47
|
+
self.edtValue.setMinimumWidth(220)
|
48
|
+
self.edtValue.setMaxLength(200)
|
49
|
+
self.edtValue.setText(text)
|
50
|
+
self.edtValue.selectAll()
|
51
|
+
|
52
|
+
self.lblValue = QLabel(self.tr("Label"), self)
|
53
|
+
self.lblValue.setBuddy(self.lblValue)
|
55
54
|
|
56
55
|
# Buttons
|
57
56
|
self.buttonBox = QDialogButtonBox(QtDialogOk | QtDialogCancel, self)
|
@@ -60,12 +59,12 @@ class GuiEditLabel(NDialog):
|
|
60
59
|
|
61
60
|
# Assemble
|
62
61
|
self.innerBox = QHBoxLayout()
|
63
|
-
self.innerBox.addWidget(
|
64
|
-
self.innerBox.addWidget(self.
|
65
|
-
self.innerBox.setSpacing(
|
62
|
+
self.innerBox.addWidget(self.lblValue, 0)
|
63
|
+
self.innerBox.addWidget(self.edtValue, 1)
|
64
|
+
self.innerBox.setSpacing(12)
|
66
65
|
|
67
66
|
self.outerBox = QVBoxLayout()
|
68
|
-
self.outerBox.setSpacing(
|
67
|
+
self.outerBox.setSpacing(12)
|
69
68
|
self.outerBox.addLayout(self.innerBox, 1)
|
70
69
|
self.outerBox.addWidget(self.buttonBox, 0)
|
71
70
|
|
@@ -81,14 +80,14 @@ class GuiEditLabel(NDialog):
|
|
81
80
|
|
82
81
|
@property
|
83
82
|
def itemLabel(self) -> str:
|
84
|
-
return self.
|
83
|
+
return self.edtValue.text()
|
85
84
|
|
86
85
|
@classmethod
|
87
86
|
def getLabel(cls, parent: QWidget, text: str) -> tuple[str, bool]:
|
88
87
|
"""Pop the dialog and return the result."""
|
89
|
-
|
90
|
-
|
91
|
-
label =
|
92
|
-
accepted =
|
93
|
-
|
88
|
+
dialog = cls(parent, text=text)
|
89
|
+
dialog.exec()
|
90
|
+
label = dialog.itemLabel
|
91
|
+
accepted = dialog.result() == QtAccepted
|
92
|
+
dialog.softDelete()
|
94
93
|
return label, accepted
|