novelWriter 2.6.2__py3-none-any.whl → 2.7b1__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 +84 -74
- 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_en_GB.json +1 -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 +108 -0
- novelwriter/assets/icons/remix_outline.icons +108 -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/text/credits_en.htm +6 -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/solarized_dark.conf +24 -8
- novelwriter/assets/themes/solarized_light.conf +22 -6
- novelwriter/common.py +33 -26
- novelwriter/config.py +118 -127
- novelwriter/constants.py +75 -56
- novelwriter/core/buildsettings.py +23 -16
- novelwriter/core/coretools.py +11 -7
- novelwriter/core/docbuild.py +19 -13
- novelwriter/core/document.py +2 -2
- novelwriter/core/index.py +142 -432
- novelwriter/core/indexdata.py +403 -0
- novelwriter/core/item.py +35 -28
- novelwriter/core/itemmodel.py +27 -26
- novelwriter/core/novelmodel.py +223 -0
- novelwriter/core/options.py +1 -1
- novelwriter/core/project.py +10 -11
- novelwriter/core/projectdata.py +5 -5
- novelwriter/core/projectxml.py +1 -1
- novelwriter/core/sessions.py +3 -2
- novelwriter/core/spellcheck.py +4 -3
- novelwriter/core/status.py +12 -15
- novelwriter/core/storage.py +1 -1
- novelwriter/core/tree.py +46 -8
- novelwriter/dialogs/about.py +19 -22
- novelwriter/dialogs/docmerge.py +21 -23
- novelwriter/dialogs/docsplit.py +20 -23
- novelwriter/dialogs/editlabel.py +9 -13
- novelwriter/dialogs/preferences.py +111 -48
- novelwriter/dialogs/projectsettings.py +48 -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 +18 -18
- 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 +19 -30
- novelwriter/extensions/switchbox.py +7 -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 +36 -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 +216 -265
- 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 +239 -405
- novelwriter/gui/outline.py +137 -76
- novelwriter/gui/projtree.py +138 -132
- novelwriter/gui/search.py +33 -31
- novelwriter/gui/sidebar.py +13 -18
- novelwriter/gui/statusbar.py +13 -15
- novelwriter/gui/theme.py +533 -430
- novelwriter/guimain.py +27 -29
- novelwriter/shared.py +32 -23
- novelwriter/text/comments.py +70 -0
- novelwriter/text/patterns.py +4 -4
- novelwriter/tools/dictionaries.py +20 -29
- novelwriter/tools/lipsum.py +16 -17
- novelwriter/tools/manusbuild.py +39 -42
- novelwriter/tools/manuscript.py +113 -126
- novelwriter/tools/manussettings.py +78 -83
- novelwriter/tools/noveldetails.py +51 -64
- novelwriter/tools/welcome.py +56 -75
- novelwriter/tools/writingstats.py +44 -57
- novelwriter/types.py +5 -7
- {novelWriter-2.6.2.dist-info → novelwriter-2.7b1.dist-info}/METADATA +6 -6
- novelwriter-2.7b1.dist-info/RECORD +159 -0
- {novelWriter-2.6.2.dist-info → novelwriter-2.7b1.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.7b1.dist-info}/entry_points.txt +0 -0
- {novelWriter-2.6.2.dist-info → novelwriter-2.7b1.dist-info/licenses}/LICENSE.md +0 -0
- {novelWriter-2.6.2.dist-info → novelwriter-2.7b1.dist-info}/top_level.txt +0 -0
novelwriter/gui/search.py
CHANGED
@@ -26,23 +26,26 @@ from __future__ import annotations
|
|
26
26
|
import logging
|
27
27
|
|
28
28
|
from time import time
|
29
|
+
from typing import TYPE_CHECKING
|
29
30
|
|
30
|
-
from
|
31
|
-
from
|
32
|
-
from
|
31
|
+
from PyQt6.QtCore import Qt, pyqtSignal, pyqtSlot
|
32
|
+
from PyQt6.QtGui import QAction, QCursor, QKeyEvent, QPalette
|
33
|
+
from PyQt6.QtWidgets import (
|
33
34
|
QApplication, QFrame, QHBoxLayout, QLabel, QLineEdit, QToolBar,
|
34
35
|
QTreeWidget, QTreeWidgetItem, QVBoxLayout, QWidget
|
35
36
|
)
|
36
37
|
|
37
38
|
from novelwriter import CONFIG, SHARED
|
38
|
-
from novelwriter.common import checkInt,
|
39
|
+
from novelwriter.common import checkInt, qtAddAction
|
39
40
|
from novelwriter.core.coretools import DocSearch
|
40
|
-
from novelwriter.core.item import NWItem
|
41
41
|
from novelwriter.types import (
|
42
42
|
QtAlignMiddle, QtAlignRight, QtHeaderStretch, QtHeaderToContents,
|
43
|
-
QtUserRole
|
43
|
+
QtHexArgb, QtUserRole
|
44
44
|
)
|
45
45
|
|
46
|
+
if TYPE_CHECKING:
|
47
|
+
from novelwriter.core.item import NWItem
|
48
|
+
|
46
49
|
logger = logging.getLogger(__name__)
|
47
50
|
|
48
51
|
|
@@ -65,18 +68,20 @@ class GuiProjectSearch(QWidget):
|
|
65
68
|
|
66
69
|
iPx = SHARED.theme.baseIconHeight
|
67
70
|
iSz = SHARED.theme.baseIconSize
|
68
|
-
mPx = CONFIG.pxInt(2)
|
69
|
-
tPx = CONFIG.pxInt(4)
|
70
71
|
|
71
72
|
self._time = time()
|
72
73
|
self._search = DocSearch()
|
73
74
|
self._blocked = False
|
74
75
|
self._map: dict[str, tuple[int, float]] = {}
|
75
76
|
|
77
|
+
self.setContentsMargins(0, 0, 0, 0)
|
78
|
+
self.setBackgroundRole(QPalette.ColorRole.Base)
|
79
|
+
self.setAutoFillBackground(True)
|
80
|
+
|
76
81
|
# Header
|
77
82
|
self.viewLabel = QLabel(self.tr("Project Search"), self)
|
78
83
|
self.viewLabel.setFont(SHARED.theme.guiFontB)
|
79
|
-
self.viewLabel.setContentsMargins(
|
84
|
+
self.viewLabel.setContentsMargins(4, 4, 0, 2)
|
80
85
|
|
81
86
|
# Options
|
82
87
|
self.searchOpt = QToolBar(self)
|
@@ -84,30 +89,30 @@ class GuiProjectSearch(QWidget):
|
|
84
89
|
self.searchOpt.setIconSize(iSz)
|
85
90
|
self.searchOpt.setContentsMargins(0, 0, 0, 0)
|
86
91
|
|
87
|
-
self.toggleCase = self.searchOpt
|
92
|
+
self.toggleCase = qtAddAction(self.searchOpt, self.tr("Case Sensitive"))
|
88
93
|
self.toggleCase.setCheckable(True)
|
89
94
|
self.toggleCase.setChecked(CONFIG.searchProjCase)
|
90
95
|
self.toggleCase.toggled.connect(self._toggleCase)
|
91
96
|
|
92
|
-
self.toggleWord = self.searchOpt
|
97
|
+
self.toggleWord = qtAddAction(self.searchOpt, self.tr("Whole Words Only"))
|
93
98
|
self.toggleWord.setCheckable(True)
|
94
99
|
self.toggleWord.setChecked(CONFIG.searchProjWord)
|
95
100
|
self.toggleWord.toggled.connect(self._toggleWord)
|
96
101
|
|
97
|
-
self.toggleRegEx = self.searchOpt
|
102
|
+
self.toggleRegEx = qtAddAction(self.searchOpt, self.tr("RegEx Mode"))
|
98
103
|
self.toggleRegEx.setCheckable(True)
|
99
104
|
self.toggleRegEx.setChecked(CONFIG.searchProjRegEx)
|
100
105
|
self.toggleRegEx.toggled.connect(self._toggleRegEx)
|
101
106
|
|
102
107
|
# Search Box
|
108
|
+
self.searchAction = QAction("", self)
|
109
|
+
self.searchAction.setIcon(SHARED.theme.getIcon("search", "blue"))
|
110
|
+
self.searchAction.triggered.connect(self._processSearch)
|
111
|
+
|
103
112
|
self.searchText = QLineEdit(self)
|
104
113
|
self.searchText.setPlaceholderText(self.tr("Search for"))
|
105
114
|
self.searchText.setClearButtonEnabled(True)
|
106
|
-
|
107
|
-
self.searchAction = self.searchText.addAction(
|
108
|
-
SHARED.theme.getIcon("search"), QLineEdit.ActionPosition.TrailingPosition
|
109
|
-
)
|
110
|
-
self.searchAction.triggered.connect(self._processSearch)
|
115
|
+
self.searchText.addAction(self.searchAction, QLineEdit.ActionPosition.TrailingPosition)
|
111
116
|
|
112
117
|
# Search Result
|
113
118
|
self.searchResult = QTreeWidget(self)
|
@@ -121,10 +126,10 @@ class GuiProjectSearch(QWidget):
|
|
121
126
|
self.searchResult.itemDoubleClicked.connect(self._searchResultDoubleClicked)
|
122
127
|
self.searchResult.itemSelectionChanged.connect(self._searchResultSelected)
|
123
128
|
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
129
|
+
if header := self.searchResult.header():
|
130
|
+
header.setStretchLastSection(False)
|
131
|
+
header.setSectionResizeMode(self.C_NAME, QtHeaderStretch)
|
132
|
+
header.setSectionResizeMode(self.C_COUNT, QtHeaderToContents)
|
128
133
|
|
129
134
|
# Assemble
|
130
135
|
self.headerBox = QHBoxLayout()
|
@@ -138,7 +143,7 @@ class GuiProjectSearch(QWidget):
|
|
138
143
|
self.outerBox.addWidget(self.searchText, 0)
|
139
144
|
self.outerBox.addWidget(self.searchResult, 1)
|
140
145
|
self.outerBox.setContentsMargins(0, 0, 0, 0)
|
141
|
-
self.outerBox.setSpacing(
|
146
|
+
self.outerBox.setSpacing(2)
|
142
147
|
|
143
148
|
self.setLayout(self.outerBox)
|
144
149
|
self.updateTheme()
|
@@ -153,20 +158,17 @@ class GuiProjectSearch(QWidget):
|
|
153
158
|
|
154
159
|
def updateTheme(self) -> None:
|
155
160
|
"""Update theme elements."""
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
qPalette = self.palette()
|
160
|
-
colBase = cssCol(qPalette.base().color())
|
161
|
-
colFocus = cssCol(qPalette.highlight().color())
|
161
|
+
palette = QApplication.palette()
|
162
|
+
colBase = palette.base().color().name(QtHexArgb)
|
163
|
+
colFocus = palette.highlight().color().name(QtHexArgb)
|
162
164
|
|
163
165
|
self.setStyleSheet(
|
164
166
|
"QToolBar {padding: 0; background: none;} "
|
165
|
-
f"QLineEdit {{border:
|
166
|
-
f"QLineEdit:focus {{border:
|
167
|
+
f"QLineEdit {{border: 1px solid {colBase}; padding: 2px;}} "
|
168
|
+
f"QLineEdit:focus {{border: 1px solid {colFocus};}} "
|
167
169
|
)
|
168
170
|
|
169
|
-
self.searchAction.setIcon(SHARED.theme.getIcon("search"))
|
171
|
+
self.searchAction.setIcon(SHARED.theme.getIcon("search", "blue"))
|
170
172
|
self.toggleCase.setIcon(SHARED.theme.getIcon("search_case"))
|
171
173
|
self.toggleWord.setIcon(SHARED.theme.getIcon("search_word"))
|
172
174
|
self.toggleRegEx.setIcon(SHARED.theme.getIcon("search_regex"))
|
novelwriter/gui/sidebar.py
CHANGED
@@ -27,18 +27,17 @@ import logging
|
|
27
27
|
|
28
28
|
from typing import TYPE_CHECKING
|
29
29
|
|
30
|
-
from
|
31
|
-
from
|
32
|
-
from PyQt5.QtWidgets import QMenu, QVBoxLayout, QWidget
|
30
|
+
from PyQt6.QtCore import QEvent, QPoint, QSize, pyqtSignal
|
31
|
+
from PyQt6.QtWidgets import QMenu, QVBoxLayout, QWidget
|
33
32
|
|
34
|
-
from novelwriter import
|
33
|
+
from novelwriter import SHARED
|
35
34
|
from novelwriter.common import qtLambda
|
36
35
|
from novelwriter.enum import nwView
|
37
36
|
from novelwriter.extensions.eventfilters import StatusTipFilter
|
38
37
|
from novelwriter.extensions.modified import NIconToolButton
|
39
38
|
from novelwriter.gui.theme import STYLES_BIG_TOOLBUTTON
|
40
39
|
|
41
|
-
if TYPE_CHECKING:
|
40
|
+
if TYPE_CHECKING:
|
42
41
|
from novelwriter.guimain import GuiMain
|
43
42
|
|
44
43
|
logger = logging.getLogger(__name__)
|
@@ -114,7 +113,7 @@ class GuiSideBar(QWidget):
|
|
114
113
|
self.outerBox.addWidget(self.tbStats)
|
115
114
|
self.outerBox.addWidget(self.tbSettings)
|
116
115
|
self.outerBox.setContentsMargins(0, 0, 0, 0)
|
117
|
-
self.outerBox.setSpacing(
|
116
|
+
self.outerBox.setSpacing(6)
|
118
117
|
|
119
118
|
self.setLayout(self.outerBox)
|
120
119
|
self.updateTheme()
|
@@ -125,10 +124,6 @@ class GuiSideBar(QWidget):
|
|
125
124
|
|
126
125
|
def updateTheme(self) -> None:
|
127
126
|
"""Initialise GUI elements that depend on specific settings."""
|
128
|
-
qPalette = self.palette()
|
129
|
-
qPalette.setBrush(QPalette.ColorRole.Window, qPalette.base())
|
130
|
-
self.setPalette(qPalette)
|
131
|
-
|
132
127
|
buttonStyle = SHARED.theme.getStyleSheet(STYLES_BIG_TOOLBUTTON)
|
133
128
|
|
134
129
|
self.tbProject.setStyleSheet(buttonStyle)
|
@@ -140,13 +135,13 @@ class GuiSideBar(QWidget):
|
|
140
135
|
self.tbStats.setStyleSheet(buttonStyle)
|
141
136
|
self.tbSettings.setStyleSheet(buttonStyle)
|
142
137
|
|
143
|
-
self.tbProject.setThemeIcon("
|
144
|
-
self.tbNovel.setThemeIcon("
|
145
|
-
self.tbSearch.setThemeIcon("
|
146
|
-
self.tbOutline.setThemeIcon("
|
147
|
-
self.tbBuild.setThemeIcon("
|
148
|
-
self.tbDetails.setThemeIcon("
|
149
|
-
self.tbStats.setThemeIcon("
|
138
|
+
self.tbProject.setThemeIcon("sb_project")
|
139
|
+
self.tbNovel.setThemeIcon("sb_novel")
|
140
|
+
self.tbSearch.setThemeIcon("sb_search")
|
141
|
+
self.tbOutline.setThemeIcon("sb_outline")
|
142
|
+
self.tbBuild.setThemeIcon("sb_build")
|
143
|
+
self.tbDetails.setThemeIcon("sb_details")
|
144
|
+
self.tbStats.setThemeIcon("sb_stats")
|
150
145
|
self.tbSettings.setThemeIcon("settings")
|
151
146
|
|
152
147
|
return
|
@@ -160,4 +155,4 @@ class _PopRightMenu(QMenu):
|
|
160
155
|
if isinstance(parent := self.parent(), QWidget):
|
161
156
|
offset = QPoint(parent.width(), parent.height() - self.height())
|
162
157
|
self.move(parent.mapToGlobal(offset))
|
163
|
-
return super(
|
158
|
+
return super().event(event)
|
novelwriter/gui/statusbar.py
CHANGED
@@ -28,8 +28,8 @@ import logging
|
|
28
28
|
from datetime import datetime
|
29
29
|
from time import time
|
30
30
|
|
31
|
-
from
|
32
|
-
from
|
31
|
+
from PyQt6.QtCore import QLocale, pyqtSlot
|
32
|
+
from PyQt6.QtWidgets import QApplication, QLabel, QStatusBar, QWidget
|
33
33
|
|
34
34
|
from novelwriter import CONFIG, SHARED
|
35
35
|
from novelwriter.common import formatTime
|
@@ -56,13 +56,11 @@ class GuiMainStatus(QStatusBar):
|
|
56
56
|
# Permanent Widgets
|
57
57
|
# =================
|
58
58
|
|
59
|
-
xM = CONFIG.pxInt(8)
|
60
|
-
|
61
59
|
# The Spell Checker Language
|
62
60
|
self.langIcon = QLabel("", self)
|
63
61
|
self.langText = QLabel(self.tr("None"), self)
|
64
62
|
self.langIcon.setContentsMargins(0, 0, 0, 0)
|
65
|
-
self.langText.setContentsMargins(0, 0,
|
63
|
+
self.langText.setContentsMargins(0, 0, 8, 0)
|
66
64
|
self.addPermanentWidget(self.langIcon)
|
67
65
|
self.addPermanentWidget(self.langText)
|
68
66
|
|
@@ -70,7 +68,7 @@ class GuiMainStatus(QStatusBar):
|
|
70
68
|
self.docIcon = StatusLED(iPx, iPx, self)
|
71
69
|
self.docText = QLabel(self.tr("Editor"), self)
|
72
70
|
self.docIcon.setContentsMargins(0, 0, 0, 0)
|
73
|
-
self.docText.setContentsMargins(0, 0,
|
71
|
+
self.docText.setContentsMargins(0, 0, 8, 0)
|
74
72
|
self.addPermanentWidget(self.docIcon)
|
75
73
|
self.addPermanentWidget(self.docText)
|
76
74
|
|
@@ -78,7 +76,7 @@ class GuiMainStatus(QStatusBar):
|
|
78
76
|
self.projIcon = StatusLED(iPx, iPx, self)
|
79
77
|
self.projText = QLabel(self.tr("Project"), self)
|
80
78
|
self.projIcon.setContentsMargins(0, 0, 0, 0)
|
81
|
-
self.projText.setContentsMargins(0, 0,
|
79
|
+
self.projText.setContentsMargins(0, 0, 8, 0)
|
82
80
|
self.addPermanentWidget(self.projIcon)
|
83
81
|
self.addPermanentWidget(self.projText)
|
84
82
|
|
@@ -86,7 +84,7 @@ class GuiMainStatus(QStatusBar):
|
|
86
84
|
self.statsIcon = QLabel(self)
|
87
85
|
self.statsText = QLabel("", self)
|
88
86
|
self.statsIcon.setContentsMargins(0, 0, 0, 0)
|
89
|
-
self.statsText.setContentsMargins(0, 0,
|
87
|
+
self.statsText.setContentsMargins(0, 0, 8, 0)
|
90
88
|
self.addPermanentWidget(self.statsIcon)
|
91
89
|
self.addPermanentWidget(self.statsText)
|
92
90
|
|
@@ -128,15 +126,15 @@ class GuiMainStatus(QStatusBar):
|
|
128
126
|
def updateTheme(self) -> None:
|
129
127
|
"""Update theme elements."""
|
130
128
|
iPx = SHARED.theme.baseIconHeight
|
131
|
-
self.langIcon.setPixmap(SHARED.theme.getPixmap("
|
132
|
-
self.statsIcon.setPixmap(SHARED.theme.getPixmap("
|
133
|
-
self.timePixmap = SHARED.theme.getPixmap("
|
134
|
-
self.idlePixmap = SHARED.theme.getPixmap("
|
129
|
+
self.langIcon.setPixmap(SHARED.theme.getPixmap("language", (iPx, iPx)))
|
130
|
+
self.statsIcon.setPixmap(SHARED.theme.getPixmap("stats", (iPx, iPx)))
|
131
|
+
self.timePixmap = SHARED.theme.getPixmap("timer", (iPx, iPx))
|
132
|
+
self.idlePixmap = SHARED.theme.getPixmap("timer_off", (iPx, iPx))
|
135
133
|
self.timeIcon.setPixmap(self.timePixmap)
|
136
134
|
|
137
|
-
colNone = SHARED.theme.
|
138
|
-
colSaved = SHARED.theme.
|
139
|
-
colUnsaved = SHARED.theme.
|
135
|
+
colNone = SHARED.theme.getIconColor("default").darker(150)
|
136
|
+
colSaved = SHARED.theme.getIconColor("green").darker(150)
|
137
|
+
colUnsaved = SHARED.theme.getIconColor("red").darker(150)
|
140
138
|
self.docIcon.setColors(colNone, colSaved, colUnsaved)
|
141
139
|
self.projIcon.setColors(colNone, colSaved, colUnsaved)
|
142
140
|
|