Clean up GUI text (#969)
* Remove all statustip entries in the menu * Prune text in Preferences * Fix class labels * Remove some redundant tooltips * Improve some labels and dialogs * Remove some more tooltips and fix a typo * Update base ts file * Fix typo
This commit is contained in:
committed by
GitHub
parent
25038e6cbb
commit
074718aedc
@@ -129,6 +129,19 @@ class nwKeyWords:
|
||||
class nwLabels():
|
||||
|
||||
CLASS_NAME = {
|
||||
nwItemClass.NO_CLASS: QT_TRANSLATE_NOOP("Constant", "None"),
|
||||
nwItemClass.NOVEL: QT_TRANSLATE_NOOP("Constant", "Novel"),
|
||||
nwItemClass.PLOT: QT_TRANSLATE_NOOP("Constant", "Plot"),
|
||||
nwItemClass.CHARACTER: QT_TRANSLATE_NOOP("Constant", "Character"),
|
||||
nwItemClass.WORLD: QT_TRANSLATE_NOOP("Constant", "Location"),
|
||||
nwItemClass.TIMELINE: QT_TRANSLATE_NOOP("Constant", "Timeline"),
|
||||
nwItemClass.OBJECT: QT_TRANSLATE_NOOP("Constant", "Object"),
|
||||
nwItemClass.ENTITY: QT_TRANSLATE_NOOP("Constant", "Entity"),
|
||||
nwItemClass.CUSTOM: QT_TRANSLATE_NOOP("Constant", "Custom"),
|
||||
nwItemClass.ARCHIVE: QT_TRANSLATE_NOOP("Constant", "Archive"),
|
||||
nwItemClass.TRASH: QT_TRANSLATE_NOOP("Constant", "Trash"),
|
||||
}
|
||||
CLASS_NAME_LBL = {
|
||||
nwItemClass.NO_CLASS: QT_TRANSLATE_NOOP("Constant", "None"),
|
||||
nwItemClass.NOVEL: QT_TRANSLATE_NOOP("Constant", "Novel"),
|
||||
nwItemClass.PLOT: QT_TRANSLATE_NOOP("Constant", "Plot"),
|
||||
@@ -136,9 +149,9 @@ class nwLabels():
|
||||
nwItemClass.WORLD: QT_TRANSLATE_NOOP("Constant", "Locations"),
|
||||
nwItemClass.TIMELINE: QT_TRANSLATE_NOOP("Constant", "Timeline"),
|
||||
nwItemClass.OBJECT: QT_TRANSLATE_NOOP("Constant", "Objects"),
|
||||
nwItemClass.ENTITY: QT_TRANSLATE_NOOP("Constant", "Entity"),
|
||||
nwItemClass.ENTITY: QT_TRANSLATE_NOOP("Constant", "Entities"),
|
||||
nwItemClass.CUSTOM: QT_TRANSLATE_NOOP("Constant", "Custom"),
|
||||
nwItemClass.ARCHIVE: QT_TRANSLATE_NOOP("Constant", "Outtakes"),
|
||||
nwItemClass.ARCHIVE: QT_TRANSLATE_NOOP("Constant", "Archive"),
|
||||
nwItemClass.TRASH: QT_TRANSLATE_NOOP("Constant", "Trash"),
|
||||
}
|
||||
CLASS_ICON = {
|
||||
|
||||
@@ -168,7 +168,7 @@ class NWProject():
|
||||
trashHandle = self.projTree.trashRoot()
|
||||
if trashHandle is None:
|
||||
newItem = NWItem(self)
|
||||
newItem.setName(self.tr("Trash"))
|
||||
newItem.setName(trConst(nwLabels.CLASS_NAME[nwItemClass.TRASH]))
|
||||
newItem.setType(nwItemType.TRASH)
|
||||
newItem.setClass(nwItemClass.TRASH)
|
||||
self.projTree.append(None, None, newItem)
|
||||
@@ -307,7 +307,7 @@ class NWProject():
|
||||
nHandle = self.newRoot(self.tr("Novel"), nwItemClass.NOVEL)
|
||||
for newRoot in projData.get("addRoots", []):
|
||||
if newRoot in nwItemClass:
|
||||
self.newRoot(trConst(nwLabels.CLASS_NAME[newRoot]), newRoot)
|
||||
self.newRoot(trConst(nwLabels.CLASS_NAME_LBL[newRoot]), newRoot)
|
||||
|
||||
# Create a title page
|
||||
tHandle = self.newFile(self.tr("Title Page"), nwItemClass.NOVEL, nHandle)
|
||||
@@ -500,16 +500,6 @@ class NWProject():
|
||||
self.clearProject()
|
||||
return False
|
||||
|
||||
if fileVersion in ("1.0", "1.1", "1.2"):
|
||||
self.theParent.makeAlert(self.tr(
|
||||
"The format of your project will now be updated. You may "
|
||||
"also have to make a few minor changes to your title page "
|
||||
"and unnumbered chapters. Please check the 'Project "
|
||||
"Format Changes > File Format 1.3' section of the "
|
||||
"documentation for more information. It is available from "
|
||||
"the Help menu."
|
||||
), nwAlert.INFO)
|
||||
|
||||
# Check novelWriter Version
|
||||
# =========================
|
||||
|
||||
@@ -794,27 +784,20 @@ class NWProject():
|
||||
logger.info("Backing up project")
|
||||
self.theParent.setStatus(self.tr("Backing up project ..."))
|
||||
|
||||
if self.mainConf.backupPath is None or self.mainConf.backupPath == "":
|
||||
if not (self.mainConf.backupPath and os.path.isdir(self.mainConf.backupPath)):
|
||||
self.theParent.makeAlert(self.tr(
|
||||
"Cannot backup project because no backup path is set. "
|
||||
"Cannot backup project because no valid backup path is set. "
|
||||
"Please set a valid backup location in Preferences."
|
||||
), nwAlert.ERROR)
|
||||
return False
|
||||
|
||||
if self.projName is None or self.projName == "":
|
||||
if not self.projName:
|
||||
self.theParent.makeAlert(self.tr(
|
||||
"Cannot backup project because no project name is set. "
|
||||
"Please set a Working Title in Project Settings."
|
||||
), nwAlert.ERROR)
|
||||
return False
|
||||
|
||||
if not os.path.isdir(self.mainConf.backupPath):
|
||||
self.theParent.makeAlert(self.tr(
|
||||
"Cannot backup project because the backup path does not exist. "
|
||||
"Please set a valid backup location in Preferences."
|
||||
), nwAlert.ERROR)
|
||||
return False
|
||||
|
||||
cleanName = makeFileNameSafe(self.projName)
|
||||
baseDir = os.path.abspath(os.path.join(self.mainConf.backupPath, cleanName))
|
||||
if not os.path.isdir(baseDir):
|
||||
|
||||
@@ -168,7 +168,7 @@ class GuiPreferencesGeneral(QWidget):
|
||||
self.mainForm.addRow(
|
||||
self.tr("Main GUI language"),
|
||||
self.guiLang,
|
||||
self.tr("Changing this requires restarting novelWriter.")
|
||||
self.tr("Requires restart.")
|
||||
)
|
||||
|
||||
# Select Theme
|
||||
@@ -184,7 +184,7 @@ class GuiPreferencesGeneral(QWidget):
|
||||
self.mainForm.addRow(
|
||||
self.tr("Main GUI theme"),
|
||||
self.guiTheme,
|
||||
self.tr("Changing this requires restarting novelWriter.")
|
||||
self.tr("Requires restart.")
|
||||
)
|
||||
|
||||
# Select Icon Theme
|
||||
@@ -200,7 +200,7 @@ class GuiPreferencesGeneral(QWidget):
|
||||
self.mainForm.addRow(
|
||||
self.tr("Main icon theme"),
|
||||
self.guiIcons,
|
||||
self.tr("Changing this requires restarting novelWriter.")
|
||||
self.tr("Requires restart.")
|
||||
)
|
||||
|
||||
# Font Family
|
||||
@@ -214,7 +214,7 @@ class GuiPreferencesGeneral(QWidget):
|
||||
self.mainForm.addRow(
|
||||
self.tr("Font family"),
|
||||
self.guiFont,
|
||||
self.tr("Changing this requires restarting novelWriter."),
|
||||
self.tr("Requires restart."),
|
||||
theButton=self.fontButton
|
||||
)
|
||||
|
||||
@@ -227,7 +227,7 @@ class GuiPreferencesGeneral(QWidget):
|
||||
self.mainForm.addRow(
|
||||
self.tr("Font size"),
|
||||
self.guiFontSize,
|
||||
self.tr("Changing this requires restarting novelWriter."),
|
||||
self.tr("Requires restart."),
|
||||
theUnit=self.tr("pt")
|
||||
)
|
||||
|
||||
@@ -240,7 +240,7 @@ class GuiPreferencesGeneral(QWidget):
|
||||
self.mainForm.addRow(
|
||||
self.tr("Emphasise partition and chapter labels"),
|
||||
self.emphLabels,
|
||||
self.tr("The novel document labels will be bold and underlined."),
|
||||
self.tr("Makes them stand out in the project tree."),
|
||||
)
|
||||
|
||||
self.showFullPath = QSwitch()
|
||||
@@ -351,7 +351,7 @@ class GuiPreferencesProjects(QWidget):
|
||||
self.mainForm.addRow(
|
||||
self.tr("Save document interval"),
|
||||
self.autoSaveDoc,
|
||||
self.tr("How often the open document is automatically saved."),
|
||||
self.tr("How often the document is automatically saved."),
|
||||
theUnit=self.tr("seconds")
|
||||
)
|
||||
|
||||
@@ -364,7 +364,7 @@ class GuiPreferencesProjects(QWidget):
|
||||
self.mainForm.addRow(
|
||||
self.tr("Save project interval"),
|
||||
self.autoSaveProj,
|
||||
self.tr("How often the open project is automatically saved."),
|
||||
self.tr("How often the project is automatically saved."),
|
||||
theUnit=self.tr("seconds")
|
||||
)
|
||||
|
||||
@@ -514,7 +514,7 @@ class GuiPreferencesDocuments(QWidget):
|
||||
self.mainForm.addRow(
|
||||
self.tr("Font family"),
|
||||
self.textFont,
|
||||
self.tr("Font for the document editor and viewer."),
|
||||
self.tr("Applies to both document editor and viewer."),
|
||||
theButton=self.fontButton
|
||||
)
|
||||
|
||||
@@ -527,7 +527,7 @@ class GuiPreferencesDocuments(QWidget):
|
||||
self.mainForm.addRow(
|
||||
self.tr("Font size"),
|
||||
self.textSize,
|
||||
self.tr("Font size for the document editor and viewer."),
|
||||
self.tr("Applies to both document editor and viewer."),
|
||||
theUnit=self.tr("pt")
|
||||
)
|
||||
|
||||
@@ -567,16 +567,16 @@ class GuiPreferencesDocuments(QWidget):
|
||||
self.mainForm.addRow(
|
||||
self.tr("Hide document footer in \"Focus Mode\""),
|
||||
self.hideFocusFooter,
|
||||
self.tr("Hide the information bar at the bottom of the document.")
|
||||
self.tr("Hide the information bar in the document editor.")
|
||||
)
|
||||
|
||||
# Justify Text
|
||||
self.doJustify = QSwitch()
|
||||
self.doJustify.setChecked(self.mainConf.doJustify)
|
||||
self.mainForm.addRow(
|
||||
self.tr("Justify the text margins in editor and viewer"),
|
||||
self.tr("Justify the text margins"),
|
||||
self.doJustify,
|
||||
self.tr("Lay out text with straight edges in the editor and viewer.")
|
||||
self.tr("Applies to both document editor and viewer."),
|
||||
)
|
||||
|
||||
# Document Margins
|
||||
@@ -586,9 +586,9 @@ class GuiPreferencesDocuments(QWidget):
|
||||
self.textMargin.setSingleStep(1)
|
||||
self.textMargin.setValue(self.mainConf.textMargin)
|
||||
self.mainForm.addRow(
|
||||
self.tr("Text margin"),
|
||||
self.tr("Minimum text margin"),
|
||||
self.textMargin,
|
||||
self.tr("The minimum margin around the text in the editor and viewer."),
|
||||
self.tr("Applies to both document editor and viewer."),
|
||||
theUnit=self.tr("px")
|
||||
)
|
||||
|
||||
@@ -689,7 +689,7 @@ class GuiPreferencesEditor(QWidget):
|
||||
self.spellLanguage.setCurrentIndex(spellIdx)
|
||||
|
||||
self.mainForm.addRow(
|
||||
self.tr("Spell check language ({0})").format("PyEnchant"),
|
||||
self.tr("Spell check language"),
|
||||
self.spellLanguage,
|
||||
self.tr("Available languages are determined by your system.")
|
||||
)
|
||||
@@ -721,7 +721,6 @@ class GuiPreferencesEditor(QWidget):
|
||||
self.mainForm.addRow(
|
||||
self.tr("Word count interval"),
|
||||
self.wordCountTimer,
|
||||
self.tr("How often the word count is updated."),
|
||||
theUnit=self.tr("seconds")
|
||||
)
|
||||
|
||||
@@ -729,9 +728,8 @@ class GuiPreferencesEditor(QWidget):
|
||||
self.incNotesWCount = QSwitch()
|
||||
self.incNotesWCount.setChecked(self.mainConf.incNotesWCount)
|
||||
self.mainForm.addRow(
|
||||
self.tr("Include project notes in total word count"),
|
||||
self.incNotesWCount,
|
||||
self.tr("Affects the word count shown on the status bar.")
|
||||
self.tr("Include project notes in status bar word count"),
|
||||
self.incNotesWCount
|
||||
)
|
||||
|
||||
# Writing Guides
|
||||
@@ -743,8 +741,7 @@ class GuiPreferencesEditor(QWidget):
|
||||
self.showTabsNSpaces.setChecked(self.mainConf.showTabsNSpaces)
|
||||
self.mainForm.addRow(
|
||||
self.tr("Show tabs and spaces"),
|
||||
self.showTabsNSpaces,
|
||||
self.tr("Add symbols to indicate tabs and spaces in the editor.")
|
||||
self.showTabsNSpaces
|
||||
)
|
||||
|
||||
# Show Line Endings
|
||||
@@ -752,8 +749,7 @@ class GuiPreferencesEditor(QWidget):
|
||||
self.showLineEndings.setChecked(self.mainConf.showLineEndings)
|
||||
self.mainForm.addRow(
|
||||
self.tr("Show line endings"),
|
||||
self.showLineEndings,
|
||||
self.tr("Add a symbol to indicate line endings in the editor.")
|
||||
self.showLineEndings
|
||||
)
|
||||
|
||||
# Scroll Behaviour
|
||||
@@ -779,7 +775,7 @@ class GuiPreferencesEditor(QWidget):
|
||||
self.mainForm.addRow(
|
||||
self.tr("Typewriter style scrolling when you type"),
|
||||
self.autoScroll,
|
||||
self.tr("Try to keep the cursor at a fixed vertical position.")
|
||||
self.tr("Keeps the cursor at a fixed vertical position.")
|
||||
)
|
||||
|
||||
# Typewriter Position
|
||||
@@ -854,7 +850,7 @@ class GuiPreferencesSyntax(QWidget):
|
||||
self.mainForm.addRow(
|
||||
self.tr("Highlighting theme"),
|
||||
self.guiSyntax,
|
||||
self.tr("Colour theme to apply to the editor and viewer.")
|
||||
self.tr("Colour theme for the editor and viewer.")
|
||||
)
|
||||
|
||||
# Quotes & Dialogue
|
||||
@@ -867,7 +863,7 @@ class GuiPreferencesSyntax(QWidget):
|
||||
self.mainForm.addRow(
|
||||
self.tr("Highlight text wrapped in quotes"),
|
||||
self.highlightQuotes,
|
||||
self.tr("Applies to single, double and straight quotes.")
|
||||
self.tr("Applies to the document editor only.")
|
||||
)
|
||||
|
||||
self.allowOpenSQuote = QSwitch()
|
||||
@@ -895,7 +891,7 @@ class GuiPreferencesSyntax(QWidget):
|
||||
self.mainForm.addRow(
|
||||
self.tr("Add highlight colour to emphasised text"),
|
||||
self.highlightEmph,
|
||||
self.tr("Applies to emphasis (italic) and strong (bold).")
|
||||
self.tr("Applies to the document editor only.")
|
||||
)
|
||||
|
||||
# Text Errors
|
||||
@@ -906,9 +902,9 @@ class GuiPreferencesSyntax(QWidget):
|
||||
self.showMultiSpaces = QSwitch()
|
||||
self.showMultiSpaces.setChecked(self.mainConf.showMultiSpaces)
|
||||
self.mainForm.addRow(
|
||||
self.tr("Mark redundant spaces"),
|
||||
self.tr("Highlight multiple spaces"),
|
||||
self.showMultiSpaces,
|
||||
self.tr("Trailing spaces or multiple spaces between words.")
|
||||
self.tr("Applies to the document editor only.")
|
||||
)
|
||||
|
||||
return
|
||||
@@ -997,7 +993,7 @@ class GuiPreferencesAutomation(QWidget):
|
||||
self.mainForm.addRow(
|
||||
self.tr("Auto-replace single quotes"),
|
||||
self.doReplaceSQuote,
|
||||
self.tr("Try to guess which is an opening or a closing single quote.")
|
||||
self.tr("Try to guess which is an opening or a closing quote.")
|
||||
)
|
||||
|
||||
# Auto-Replace Double Quotes
|
||||
@@ -1007,7 +1003,7 @@ class GuiPreferencesAutomation(QWidget):
|
||||
self.mainForm.addRow(
|
||||
self.tr("Auto-replace double quotes"),
|
||||
self.doReplaceDQuote,
|
||||
self.tr("Try to guess which is an opening or a closing double quote.")
|
||||
self.tr("Try to guess which is an opening or a closing quote.")
|
||||
)
|
||||
|
||||
# Auto-Replace Hyphens
|
||||
|
||||
@@ -73,7 +73,7 @@ class GuiProjectDetails(PagedDialog):
|
||||
self.addTab(self.tabContents, self.tr("Contents"))
|
||||
|
||||
self.buttonBox = QDialogButtonBox(QDialogButtonBox.Close)
|
||||
self.buttonBox.button(QDialogButtonBox.Close).setText(self.tr("Close"))
|
||||
self.buttonBox.button(QDialogButtonBox.Close)
|
||||
self.buttonBox.rejected.connect(self._doClose)
|
||||
self.addControls(self.buttonBox)
|
||||
|
||||
|
||||
@@ -292,11 +292,9 @@ class GuiProjectEditStatus(QWidget):
|
||||
# =============
|
||||
|
||||
self.addButton = QPushButton(self.theTheme.getIcon("add"), "")
|
||||
self.addButton.setToolTip(self.tr("Add new entry"))
|
||||
self.addButton.clicked.connect(self._newItem)
|
||||
|
||||
self.delButton = QPushButton(self.theTheme.getIcon("remove"), "")
|
||||
self.delButton.setToolTip(self.tr("Delete selected entry"))
|
||||
self.delButton.clicked.connect(self._delItem)
|
||||
|
||||
# Edit Form
|
||||
@@ -531,11 +529,9 @@ class GuiProjectEditReplace(QWidget):
|
||||
# =============
|
||||
|
||||
self.addButton = QPushButton(self.theTheme.getIcon("add"), "")
|
||||
self.addButton.setToolTip(self.tr("Add new entry"))
|
||||
self.addButton.clicked.connect(self._addEntry)
|
||||
|
||||
self.delButton = QPushButton(self.theTheme.getIcon("remove"), "")
|
||||
self.delButton.setToolTip(self.tr("Delete selected entry"))
|
||||
self.delButton.clicked.connect(self._delEntry)
|
||||
|
||||
# Edit Form
|
||||
@@ -551,7 +547,6 @@ class GuiProjectEditReplace(QWidget):
|
||||
self.editValue.setMaxLength(80)
|
||||
|
||||
self.saveButton = QPushButton(self.tr("Save"))
|
||||
self.saveButton.setToolTip(self.tr("Save entry"))
|
||||
self.saveButton.clicked.connect(self._saveEntry)
|
||||
|
||||
# Assemble
|
||||
|
||||
@@ -79,11 +79,9 @@ class GuiWordList(QDialog):
|
||||
self.newEntry = QLineEdit()
|
||||
|
||||
self.addButton = QPushButton(self.theTheme.getIcon("add"), "")
|
||||
self.addButton.setToolTip(self.tr("Add new entry"))
|
||||
self.addButton.clicked.connect(self._doAdd)
|
||||
|
||||
self.delButton = QPushButton(self.theTheme.getIcon("remove"), "")
|
||||
self.delButton.setToolTip(self.tr("Delete selected entry"))
|
||||
self.delButton.clicked.connect(self._doDelete)
|
||||
|
||||
self.editBox = QHBoxLayout()
|
||||
|
||||
@@ -2215,7 +2215,6 @@ class GuiDocEditSearch(QFrame):
|
||||
self.resultLabel.setMinimumWidth(self.theTheme.getTextWidth("?/?", self.boxFont))
|
||||
|
||||
self.toggleCase = QAction(self.tr("Case Sensitive"), self)
|
||||
self.toggleCase.setToolTip(self.tr("Match case"))
|
||||
self.toggleCase.setIcon(self.theTheme.getIcon("search_case"))
|
||||
self.toggleCase.setCheckable(True)
|
||||
self.toggleCase.setChecked(self.isCaseSense)
|
||||
@@ -2223,7 +2222,6 @@ class GuiDocEditSearch(QFrame):
|
||||
self.searchOpt.addAction(self.toggleCase)
|
||||
|
||||
self.toggleWord = QAction(self.tr("Whole Words Only"), self)
|
||||
self.toggleWord.setToolTip(self.tr("Match whole words"))
|
||||
self.toggleWord.setIcon(self.theTheme.getIcon("search_word"))
|
||||
self.toggleWord.setCheckable(True)
|
||||
self.toggleWord.setChecked(self.isWholeWord)
|
||||
@@ -2231,7 +2229,6 @@ class GuiDocEditSearch(QFrame):
|
||||
self.searchOpt.addAction(self.toggleWord)
|
||||
|
||||
self.toggleRegEx = QAction(self.tr("RegEx Mode"), self)
|
||||
self.toggleRegEx.setToolTip(self.tr("Search using regular expressions"))
|
||||
self.toggleRegEx.setIcon(self.theTheme.getIcon("search_regex"))
|
||||
self.toggleRegEx.setCheckable(True)
|
||||
self.toggleRegEx.setChecked(self.isRegEx)
|
||||
@@ -2239,7 +2236,6 @@ class GuiDocEditSearch(QFrame):
|
||||
self.searchOpt.addAction(self.toggleRegEx)
|
||||
|
||||
self.toggleLoop = QAction(self.tr("Loop Search"), self)
|
||||
self.toggleLoop.setToolTip(self.tr("Loop the search when reaching the end"))
|
||||
self.toggleLoop.setIcon(self.theTheme.getIcon("search_loop"))
|
||||
self.toggleLoop.setCheckable(True)
|
||||
self.toggleLoop.setChecked(self.doLoop)
|
||||
@@ -2247,7 +2243,6 @@ class GuiDocEditSearch(QFrame):
|
||||
self.searchOpt.addAction(self.toggleLoop)
|
||||
|
||||
self.toggleProject = QAction(self.tr("Search Next File"), self)
|
||||
self.toggleProject.setToolTip(self.tr("Continue searching in the next file"))
|
||||
self.toggleProject.setIcon(self.theTheme.getIcon("search_project"))
|
||||
self.toggleProject.setCheckable(True)
|
||||
self.toggleProject.setChecked(self.doNextFile)
|
||||
@@ -2257,7 +2252,6 @@ class GuiDocEditSearch(QFrame):
|
||||
self.searchOpt.addSeparator()
|
||||
|
||||
self.toggleMatchCap = QAction(self.tr("Preserve Case"), self)
|
||||
self.toggleMatchCap.setToolTip(self.tr("Preserve case on replace"))
|
||||
self.toggleMatchCap.setIcon(self.theTheme.getIcon("search_preserve"))
|
||||
self.toggleMatchCap.setCheckable(True)
|
||||
self.toggleMatchCap.setChecked(self.doMatchCap)
|
||||
@@ -2267,7 +2261,6 @@ class GuiDocEditSearch(QFrame):
|
||||
self.searchOpt.addSeparator()
|
||||
|
||||
self.cancelSearch = QAction(self.tr("Close Search"), self)
|
||||
self.cancelSearch.setToolTip(self.tr("Close the search box [{0}]").format("Esc"))
|
||||
self.cancelSearch.setIcon(self.theTheme.getIcon("search_cancel"))
|
||||
self.cancelSearch.triggered.connect(self._doClose)
|
||||
self.searchOpt.addAction(self.cancelSearch)
|
||||
@@ -2280,7 +2273,6 @@ class GuiDocEditSearch(QFrame):
|
||||
self.showReplace = QToolButton(self)
|
||||
self.showReplace.setArrowType(Qt.RightArrow)
|
||||
self.showReplace.setCheckable(True)
|
||||
self.showReplace.setToolTip(self.tr("Show/hide the replace text box"))
|
||||
self.showReplace.setStyleSheet("QToolButton {border: none; background: transparent;}")
|
||||
self.showReplace.toggled.connect(self._doToggleReplace)
|
||||
|
||||
|
||||
+12
-145
@@ -155,27 +155,23 @@ class GuiMainMenu(QMenuBar):
|
||||
|
||||
# Project > New Project
|
||||
self.aNewProject = QAction(self.tr("New Project"), self)
|
||||
self.aNewProject.setStatusTip(self.tr("Create new project"))
|
||||
self.aNewProject.triggered.connect(lambda: self.theParent.newProject(None))
|
||||
self.projMenu.addAction(self.aNewProject)
|
||||
|
||||
# Project > Open Project
|
||||
self.aOpenProject = QAction(self.tr("Open Project"), self)
|
||||
self.aOpenProject.setStatusTip(self.tr("Open project"))
|
||||
self.aOpenProject.setShortcut("Ctrl+Shift+O")
|
||||
self.aOpenProject.triggered.connect(lambda: self.theParent.showProjectLoadDialog())
|
||||
self.projMenu.addAction(self.aOpenProject)
|
||||
|
||||
# Project > Save Project
|
||||
self.aSaveProject = QAction(self.tr("Save Project"), self)
|
||||
self.aSaveProject.setStatusTip(self.tr("Save project"))
|
||||
self.aSaveProject.setShortcut("Ctrl+Shift+S")
|
||||
self.aSaveProject.triggered.connect(lambda: self.theParent.saveProject())
|
||||
self.projMenu.addAction(self.aSaveProject)
|
||||
|
||||
# Project > Close Project
|
||||
self.aCloseProject = QAction(self.tr("Close Project"), self)
|
||||
self.aCloseProject.setStatusTip(self.tr("Close project"))
|
||||
self.aCloseProject.setShortcut("Ctrl+Shift+W")
|
||||
self.aCloseProject.triggered.connect(lambda: self.theParent.closeProject(False))
|
||||
self.projMenu.addAction(self.aCloseProject)
|
||||
@@ -185,14 +181,12 @@ class GuiMainMenu(QMenuBar):
|
||||
|
||||
# Project > Project Settings
|
||||
self.aProjectSettings = QAction(self.tr("Project Settings"), self)
|
||||
self.aProjectSettings.setStatusTip(self.tr("Project settings"))
|
||||
self.aProjectSettings.setShortcut("Ctrl+Shift+,")
|
||||
self.aProjectSettings.triggered.connect(lambda: self.theParent.showProjectSettingsDialog())
|
||||
self.projMenu.addAction(self.aProjectSettings)
|
||||
|
||||
# Project > Project Details
|
||||
self.aProjectDetails = QAction(self.tr("Project Details"), self)
|
||||
self.aProjectDetails.setStatusTip(self.tr("Project details"))
|
||||
self.aProjectDetails.setShortcut("Shift+F6")
|
||||
self.aProjectDetails.triggered.connect(lambda: self.theParent.showProjectDetailsDialog())
|
||||
self.projMenu.addAction(self.aProjectDetails)
|
||||
@@ -211,7 +205,7 @@ class GuiMainMenu(QMenuBar):
|
||||
self.rootItems[nwItemClass.OBJECT] = QAction(self.tr("Object Root"), self.rootMenu)
|
||||
self.rootItems[nwItemClass.ENTITY] = QAction(self.tr("Entity Root"), self.rootMenu)
|
||||
self.rootItems[nwItemClass.CUSTOM] = QAction(self.tr("Custom Root"), self.rootMenu)
|
||||
self.rootItems[nwItemClass.ARCHIVE] = QAction(self.tr("Outtakes Root"), self.rootMenu)
|
||||
self.rootItems[nwItemClass.ARCHIVE] = QAction(self.tr("Archive Root"), self.rootMenu)
|
||||
for n, itemClass in enumerate(self.rootItems.keys()):
|
||||
self.rootItems[itemClass].triggered.connect(
|
||||
lambda n, itemClass=itemClass: self._newTreeItem(nwItemType.ROOT, itemClass)
|
||||
@@ -220,7 +214,6 @@ class GuiMainMenu(QMenuBar):
|
||||
|
||||
# Project > New Folder
|
||||
self.aCreateFolder = QAction(self.tr("Create Folder"), self)
|
||||
self.aCreateFolder.setStatusTip(self.tr("Create folder"))
|
||||
self.aCreateFolder.setShortcut("Ctrl+Shift+N")
|
||||
self.aCreateFolder.triggered.connect(lambda: self._newTreeItem(nwItemType.FOLDER, None))
|
||||
self.projMenu.addAction(self.aCreateFolder)
|
||||
@@ -230,42 +223,36 @@ class GuiMainMenu(QMenuBar):
|
||||
|
||||
# Project > Edit
|
||||
self.aEditItem = QAction(self.tr("Edit Item"), self)
|
||||
self.aEditItem.setStatusTip(self.tr("Change project item settings"))
|
||||
self.aEditItem.setShortcuts(["Ctrl+E", "F2"])
|
||||
self.aEditItem.triggered.connect(lambda: self.theParent.editItem(None))
|
||||
self.projMenu.addAction(self.aEditItem)
|
||||
|
||||
# Project > Delete
|
||||
self.aDeleteItem = QAction(self.tr("Delete Item"), self)
|
||||
self.aDeleteItem.setStatusTip(self.tr("Delete selected project item"))
|
||||
self.aDeleteItem.setShortcut("Ctrl+Shift+Del")
|
||||
self.aDeleteItem.triggered.connect(lambda: self.theParent.treeView.deleteItem(None))
|
||||
self.projMenu.addAction(self.aDeleteItem)
|
||||
|
||||
# Project > Move Up
|
||||
self.aMoveUp = QAction(self.tr("Move Item Up"), self)
|
||||
self.aMoveUp.setStatusTip(self.tr("Move project item up"))
|
||||
self.aMoveUp.setShortcut("Ctrl+Up")
|
||||
self.aMoveUp.triggered.connect(lambda: self._moveTreeItem(-1))
|
||||
self.projMenu.addAction(self.aMoveUp)
|
||||
|
||||
# Project > Move Down
|
||||
self.aMoveDown = QAction(self.tr("Move Item Down"), self)
|
||||
self.aMoveDown.setStatusTip(self.tr("Move project item down"))
|
||||
self.aMoveDown.setShortcut("Ctrl+Down")
|
||||
self.aMoveDown.triggered.connect(lambda: self._moveTreeItem(1))
|
||||
self.projMenu.addAction(self.aMoveDown)
|
||||
|
||||
# Project > Undo Last Action
|
||||
self.aMoveUndo = QAction(self.tr("Undo Last Move"), self)
|
||||
self.aMoveUndo.setStatusTip(self.tr("Undo last item move"))
|
||||
self.aMoveUndo.setShortcut("Ctrl+Shift+Z")
|
||||
self.aMoveUndo.triggered.connect(lambda: self.theParent.treeView.undoLastMove())
|
||||
self.projMenu.addAction(self.aMoveUndo)
|
||||
|
||||
# Project > Empty Trash
|
||||
self.aEmptyTrash = QAction(self.tr("Empty Trash"), self)
|
||||
self.aEmptyTrash.setStatusTip(self.tr("Permanently delete all files in the Trash folder"))
|
||||
self.aEmptyTrash.triggered.connect(lambda: self.theParent.treeView.emptyTrash())
|
||||
self.projMenu.addAction(self.aEmptyTrash)
|
||||
|
||||
@@ -274,7 +261,6 @@ class GuiMainMenu(QMenuBar):
|
||||
|
||||
# Project > Exit
|
||||
self.aExitNW = QAction(self.tr("Exit"), self)
|
||||
self.aExitNW.setStatusTip(self.tr("Exit novelWriter"))
|
||||
self.aExitNW.setShortcut("Ctrl+Q")
|
||||
self.aExitNW.setMenuRole(QAction.QuitRole)
|
||||
self.aExitNW.triggered.connect(lambda: self.theParent.closeMain())
|
||||
@@ -290,28 +276,24 @@ class GuiMainMenu(QMenuBar):
|
||||
|
||||
# Document > New
|
||||
self.aNewDoc = QAction(self.tr("New Document"), self)
|
||||
self.aNewDoc.setStatusTip(self.tr("Create new document"))
|
||||
self.aNewDoc.setShortcut("Ctrl+N")
|
||||
self.aNewDoc.triggered.connect(lambda: self._newTreeItem(nwItemType.FILE, None))
|
||||
self.docuMenu.addAction(self.aNewDoc)
|
||||
|
||||
# Document > Open
|
||||
self.aOpenDoc = QAction(self.tr("Open Document"), self)
|
||||
self.aOpenDoc.setStatusTip(self.tr("Open selected document"))
|
||||
self.aOpenDoc.setShortcut("Ctrl+O")
|
||||
self.aOpenDoc.triggered.connect(lambda: self.theParent.openSelectedItem())
|
||||
self.docuMenu.addAction(self.aOpenDoc)
|
||||
|
||||
# Document > Save
|
||||
self.aSaveDoc = QAction(self.tr("Save Document"), self)
|
||||
self.aSaveDoc.setStatusTip(self.tr("Save current document"))
|
||||
self.aSaveDoc.setShortcut("Ctrl+S")
|
||||
self.aSaveDoc.triggered.connect(lambda: self.theParent.saveDocument())
|
||||
self.docuMenu.addAction(self.aSaveDoc)
|
||||
|
||||
# Document > Close
|
||||
self.aCloseDoc = QAction(self.tr("Close Document"), self)
|
||||
self.aCloseDoc.setStatusTip(self.tr("Close current document"))
|
||||
self.aCloseDoc.setShortcut("Ctrl+W")
|
||||
self.aCloseDoc.triggered.connect(lambda: self.theParent.closeDocEditor())
|
||||
self.docuMenu.addAction(self.aCloseDoc)
|
||||
@@ -321,14 +303,12 @@ class GuiMainMenu(QMenuBar):
|
||||
|
||||
# Document > Preview
|
||||
self.aViewDoc = QAction(self.tr("View Document"), self)
|
||||
self.aViewDoc.setStatusTip(self.tr("View document as HTML"))
|
||||
self.aViewDoc.setShortcut("Ctrl+R")
|
||||
self.aViewDoc.triggered.connect(lambda: self.theParent.viewDocument(None))
|
||||
self.docuMenu.addAction(self.aViewDoc)
|
||||
|
||||
# Document > Close Preview
|
||||
self.aCloseView = QAction(self.tr("Close Document View"), self)
|
||||
self.aCloseView.setStatusTip(self.tr("Close document view pane"))
|
||||
self.aCloseView.setShortcut("Ctrl+Shift+R")
|
||||
self.aCloseView.triggered.connect(lambda: self.theParent.closeDocViewer())
|
||||
self.docuMenu.addAction(self.aCloseView)
|
||||
@@ -338,30 +318,22 @@ class GuiMainMenu(QMenuBar):
|
||||
|
||||
# Document > Show File Details
|
||||
self.aFileDetails = QAction(self.tr("Show File Details"), self)
|
||||
self.aFileDetails.setStatusTip(
|
||||
self.tr("Shows a message box with the document location in the project folder")
|
||||
)
|
||||
self.aFileDetails.triggered.connect(lambda: self.theParent.docEditor.revealLocation())
|
||||
self.docuMenu.addAction(self.aFileDetails)
|
||||
|
||||
# Document > Import From File
|
||||
self.aImportFile = QAction(self.tr("Import from File"), self)
|
||||
self.aImportFile.setStatusTip(self.tr("Import document from a text or markdown file"))
|
||||
self.aImportFile = QAction(self.tr("Import Text from File"), self)
|
||||
self.aImportFile.setShortcut("Ctrl+Shift+I")
|
||||
self.aImportFile.triggered.connect(lambda: self.theParent.importDocument())
|
||||
self.docuMenu.addAction(self.aImportFile)
|
||||
|
||||
# Document > Merge Documents
|
||||
self.aMergeDocs = QAction(self.tr("Merge Folder to Document"), self)
|
||||
self.aMergeDocs.setStatusTip(self.tr("Merge a folder of documents to a single document"))
|
||||
self.aMergeDocs.triggered.connect(lambda: self.theParent.mergeDocuments())
|
||||
self.docuMenu.addAction(self.aMergeDocs)
|
||||
|
||||
# Document > Split Document
|
||||
self.aSplitDoc = QAction(self.tr("Split Document to Folder"), self)
|
||||
self.aSplitDoc.setStatusTip(
|
||||
self.tr("Split a document into a folder of multiple documents")
|
||||
)
|
||||
self.aSplitDoc.triggered.connect(lambda: self.theParent.splitDocument())
|
||||
self.docuMenu.addAction(self.aSplitDoc)
|
||||
|
||||
@@ -375,14 +347,12 @@ class GuiMainMenu(QMenuBar):
|
||||
|
||||
# Edit > Undo
|
||||
self.aEditUndo = QAction(self.tr("Undo"), self)
|
||||
self.aEditUndo.setStatusTip(self.tr("Undo last change"))
|
||||
self.aEditUndo.setShortcut("Ctrl+Z")
|
||||
self.aEditUndo.triggered.connect(lambda: self._docAction(nwDocAction.UNDO))
|
||||
self.editMenu.addAction(self.aEditUndo)
|
||||
|
||||
# Edit > Redo
|
||||
self.aEditRedo = QAction(self.tr("Redo"), self)
|
||||
self.aEditRedo.setStatusTip(self.tr("Redo last change"))
|
||||
self.aEditRedo.setShortcut("Ctrl+Y")
|
||||
self.aEditRedo.triggered.connect(lambda: self._docAction(nwDocAction.REDO))
|
||||
self.editMenu.addAction(self.aEditRedo)
|
||||
@@ -392,21 +362,18 @@ class GuiMainMenu(QMenuBar):
|
||||
|
||||
# Edit > Cut
|
||||
self.aEditCut = QAction(self.tr("Cut"), self)
|
||||
self.aEditCut.setStatusTip(self.tr("Cut selected text"))
|
||||
self.aEditCut.setShortcut("Ctrl+X")
|
||||
self.aEditCut.triggered.connect(lambda: self._docAction(nwDocAction.CUT))
|
||||
self.editMenu.addAction(self.aEditCut)
|
||||
|
||||
# Edit > Copy
|
||||
self.aEditCopy = QAction(self.tr("Copy"), self)
|
||||
self.aEditCopy.setStatusTip(self.tr("Copy selected text"))
|
||||
self.aEditCopy.setShortcut("Ctrl+C")
|
||||
self.aEditCopy.triggered.connect(lambda: self._docAction(nwDocAction.COPY))
|
||||
self.editMenu.addAction(self.aEditCopy)
|
||||
|
||||
# Edit > Paste
|
||||
self.aEditPaste = QAction(self.tr("Paste"), self)
|
||||
self.aEditPaste.setStatusTip(self.tr("Paste text from clipboard"))
|
||||
self.aEditPaste.setShortcut("Ctrl+V")
|
||||
self.aEditPaste.triggered.connect(lambda: self._docAction(nwDocAction.PASTE))
|
||||
self.editMenu.addAction(self.aEditPaste)
|
||||
@@ -416,14 +383,12 @@ class GuiMainMenu(QMenuBar):
|
||||
|
||||
# Edit > Select All
|
||||
self.aSelectAll = QAction(self.tr("Select All"), self)
|
||||
self.aSelectAll.setStatusTip(self.tr("Select all text in document"))
|
||||
self.aSelectAll.setShortcut("Ctrl+A")
|
||||
self.aSelectAll.triggered.connect(lambda: self._docAction(nwDocAction.SEL_ALL))
|
||||
self.editMenu.addAction(self.aSelectAll)
|
||||
|
||||
# Edit > Select Paragraph
|
||||
self.aSelectPar = QAction(self.tr("Select Paragraph"), self)
|
||||
self.aSelectPar.setStatusTip(self.tr("Select all text in paragraph"))
|
||||
self.aSelectPar.setShortcut("Ctrl+Shift+A")
|
||||
self.aSelectPar.triggered.connect(lambda: self._docAction(nwDocAction.SEL_PARA))
|
||||
self.editMenu.addAction(self.aSelectPar)
|
||||
@@ -437,8 +402,7 @@ class GuiMainMenu(QMenuBar):
|
||||
self.viewMenu = self.addMenu(self.tr("&View"))
|
||||
|
||||
# View > TreeView
|
||||
self.aFocusTree = QAction(self.tr("Focus Project Tree"), self)
|
||||
self.aFocusTree.setStatusTip(self.tr("Move focus to project tree"))
|
||||
self.aFocusTree = QAction(self.tr("Go to Project Tree"), self)
|
||||
if self.mainConf.osWindows:
|
||||
self.aFocusTree.setShortcut("Ctrl+Alt+1")
|
||||
else:
|
||||
@@ -447,8 +411,7 @@ class GuiMainMenu(QMenuBar):
|
||||
self.viewMenu.addAction(self.aFocusTree)
|
||||
|
||||
# View > Document Pane 1
|
||||
self.aFocusEditor = QAction(self.tr("Focus Document Editor"), self)
|
||||
self.aFocusEditor.setStatusTip(self.tr("Move focus to left document pane"))
|
||||
self.aFocusEditor = QAction(self.tr("Go to Document Editor"), self)
|
||||
if self.mainConf.osWindows:
|
||||
self.aFocusEditor.setShortcut("Ctrl+Alt+2")
|
||||
else:
|
||||
@@ -457,8 +420,7 @@ class GuiMainMenu(QMenuBar):
|
||||
self.viewMenu.addAction(self.aFocusEditor)
|
||||
|
||||
# View > Document Pane 2
|
||||
self.aFocusView = QAction(self.tr("Focus Document Viewer"), self)
|
||||
self.aFocusView.setStatusTip(self.tr("Move focus to right document pane"))
|
||||
self.aFocusView = QAction(self.tr("Go to Document Viewer"), self)
|
||||
if self.mainConf.osWindows:
|
||||
self.aFocusView.setShortcut("Ctrl+Alt+3")
|
||||
else:
|
||||
@@ -467,8 +429,7 @@ class GuiMainMenu(QMenuBar):
|
||||
self.viewMenu.addAction(self.aFocusView)
|
||||
|
||||
# View > Outline
|
||||
self.aFocusOutline = QAction(self.tr("Focus Outline"), self)
|
||||
self.aFocusOutline.setStatusTip(self.tr("Move focus to outline"))
|
||||
self.aFocusOutline = QAction(self.tr("Go to Outline"), self)
|
||||
if self.mainConf.osWindows:
|
||||
self.aFocusOutline.setShortcut("Ctrl+Alt+4")
|
||||
else:
|
||||
@@ -480,15 +441,13 @@ class GuiMainMenu(QMenuBar):
|
||||
self.viewMenu.addSeparator()
|
||||
|
||||
# View > Go Backward
|
||||
self.aViewPrev = QAction(self.tr("Go Backward"), self)
|
||||
self.aViewPrev.setStatusTip(self.tr("Move backward in the view history of the right pane"))
|
||||
self.aViewPrev = QAction(self.tr("Navigate Backward"), self)
|
||||
self.aViewPrev.setShortcut("Alt+Left")
|
||||
self.aViewPrev.triggered.connect(lambda: self.theParent.docViewer.navBackward())
|
||||
self.viewMenu.addAction(self.aViewPrev)
|
||||
|
||||
# View > Go Forward
|
||||
self.aViewNext = QAction(self.tr("Go Forward"), self)
|
||||
self.aViewNext.setStatusTip(self.tr("Move forward in the view history of the right pane"))
|
||||
self.aViewNext = QAction(self.tr("Navigate Forward"), self)
|
||||
self.aViewNext.setShortcut("Alt+Right")
|
||||
self.aViewNext.triggered.connect(lambda: self.theParent.docViewer.navForward())
|
||||
self.viewMenu.addAction(self.aViewNext)
|
||||
@@ -498,9 +457,6 @@ class GuiMainMenu(QMenuBar):
|
||||
|
||||
# View > Focus Mode
|
||||
self.aFocusMode = QAction(self.tr("Focus Mode"), self)
|
||||
self.aFocusMode.setStatusTip(
|
||||
self.tr("Toggles a distraction free mode, only showing text editor")
|
||||
)
|
||||
self.aFocusMode.setShortcut("F8")
|
||||
self.aFocusMode.setCheckable(True)
|
||||
self.aFocusMode.setChecked(self.theParent.isFocusMode)
|
||||
@@ -509,7 +465,6 @@ class GuiMainMenu(QMenuBar):
|
||||
|
||||
# View > Toggle Full Screen
|
||||
self.aFullScreen = QAction(self.tr("Full Screen Mode"), self)
|
||||
self.aFullScreen.setStatusTip(self.tr("Maximises the main window"))
|
||||
self.aFullScreen.setShortcut("F11")
|
||||
self.aFullScreen.triggered.connect(lambda: self.theParent.toggleFullScreenMode())
|
||||
self.viewMenu.addAction(self.aFullScreen)
|
||||
@@ -527,30 +482,24 @@ class GuiMainMenu(QMenuBar):
|
||||
|
||||
# Insert > Short Dash
|
||||
self.aInsENDash = QAction(self.tr("Short Dash"), self)
|
||||
self.aInsENDash.setStatusTip(self.tr("Insert short dash (en dash)"))
|
||||
self.aInsENDash.setShortcut("Ctrl+K, -")
|
||||
self.aInsENDash.triggered.connect(lambda: self._docInsert(nwUnicode.U_ENDASH))
|
||||
self.mInsDashes.addAction(self.aInsENDash)
|
||||
|
||||
# Insert > Long Dash
|
||||
self.aInsEMDash = QAction(self.tr("Long Dash"), self)
|
||||
self.aInsEMDash.setStatusTip(self.tr("Insert long dash (em dash)"))
|
||||
self.aInsEMDash.setShortcut("Ctrl+K, _")
|
||||
self.aInsEMDash.triggered.connect(lambda: self._docInsert(nwUnicode.U_EMDASH))
|
||||
self.mInsDashes.addAction(self.aInsEMDash)
|
||||
|
||||
# Insert > Long Dash
|
||||
self.aInsHorBar = QAction(self.tr("Horizontal Bar"), self)
|
||||
self.aInsHorBar.setStatusTip(self.tr("Insert a horizontal bar (quotation dash)"))
|
||||
self.aInsHorBar.setShortcut("Ctrl+K, Ctrl+_")
|
||||
self.aInsHorBar.triggered.connect(lambda: self._docInsert(nwUnicode.U_HBAR))
|
||||
self.mInsDashes.addAction(self.aInsHorBar)
|
||||
|
||||
# Insert > Figure Dash
|
||||
self.aInsFigDash = QAction(self.tr("Figure Dash"), self)
|
||||
self.aInsFigDash.setStatusTip(
|
||||
self.tr("Insert figure dash (same width as a number character)")
|
||||
)
|
||||
self.aInsFigDash.setShortcut("Ctrl+K, ~")
|
||||
self.aInsFigDash.triggered.connect(lambda: self._docInsert(nwUnicode.U_FGDASH))
|
||||
self.mInsDashes.addAction(self.aInsFigDash)
|
||||
@@ -560,35 +509,30 @@ class GuiMainMenu(QMenuBar):
|
||||
|
||||
# Insert > Left Single Quote
|
||||
self.aInsQuoteLS = QAction(self.tr("Left Single Quote"), self)
|
||||
self.aInsQuoteLS.setStatusTip(self.tr("Insert left single quote"))
|
||||
self.aInsQuoteLS.setShortcut("Ctrl+K, 1")
|
||||
self.aInsQuoteLS.triggered.connect(lambda: self._docInsert(nwDocInsert.QUOTE_LS))
|
||||
self.mInsQuotes.addAction(self.aInsQuoteLS)
|
||||
|
||||
# Insert > Right Single Quote
|
||||
self.aInsQuoteRS = QAction(self.tr("Right Single Quote"), self)
|
||||
self.aInsQuoteRS.setStatusTip(self.tr("Insert right single quote"))
|
||||
self.aInsQuoteRS.setShortcut("Ctrl+K, 2")
|
||||
self.aInsQuoteRS.triggered.connect(lambda: self._docInsert(nwDocInsert.QUOTE_RS))
|
||||
self.mInsQuotes.addAction(self.aInsQuoteRS)
|
||||
|
||||
# Insert > Left Double Quote
|
||||
self.aInsQuoteLD = QAction(self.tr("Left Double Quote"), self)
|
||||
self.aInsQuoteLD.setStatusTip(self.tr("Insert left double quote"))
|
||||
self.aInsQuoteLD.setShortcut("Ctrl+K, 3")
|
||||
self.aInsQuoteLD.triggered.connect(lambda: self._docInsert(nwDocInsert.QUOTE_LD))
|
||||
self.mInsQuotes.addAction(self.aInsQuoteLD)
|
||||
|
||||
# Insert > Right Double Quote
|
||||
self.aInsQuoteRD = QAction(self.tr("Right Double Quote"), self)
|
||||
self.aInsQuoteRD.setStatusTip(self.tr("Insert right double quote"))
|
||||
self.aInsQuoteRD.setShortcut("Ctrl+K, 4")
|
||||
self.aInsQuoteRD.triggered.connect(lambda: self._docInsert(nwDocInsert.QUOTE_RD))
|
||||
self.mInsQuotes.addAction(self.aInsQuoteRD)
|
||||
|
||||
# Insert > Alternative Apostrophe
|
||||
self.aInsMSApos = QAction(self.tr("Alternative Apostrophe"), self)
|
||||
self.aInsMSApos.setStatusTip(self.tr("Insert modifier letter single apostrophe"))
|
||||
self.aInsMSApos.setShortcut("Ctrl+K, '")
|
||||
self.aInsMSApos.triggered.connect(lambda: self._docInsert(nwUnicode.U_MAPOSS))
|
||||
self.mInsQuotes.addAction(self.aInsMSApos)
|
||||
@@ -598,21 +542,18 @@ class GuiMainMenu(QMenuBar):
|
||||
|
||||
# Insert > Ellipsis
|
||||
self.aInsEllipsis = QAction(self.tr("Ellipsis"), self)
|
||||
self.aInsEllipsis.setStatusTip(self.tr("Insert ellipsis"))
|
||||
self.aInsEllipsis.setShortcut("Ctrl+K, .")
|
||||
self.aInsEllipsis.triggered.connect(lambda: self._docInsert(nwUnicode.U_HELLIP))
|
||||
self.mInsPunct.addAction(self.aInsEllipsis)
|
||||
|
||||
# Insert > Prime
|
||||
self.aInsPrime = QAction(self.tr("Prime"), self)
|
||||
self.aInsPrime.setStatusTip(self.tr("Insert a prime symbol"))
|
||||
self.aInsPrime.setShortcut("Ctrl+K, Ctrl+'")
|
||||
self.aInsPrime.triggered.connect(lambda: self._docInsert(nwUnicode.U_PRIME))
|
||||
self.mInsPunct.addAction(self.aInsPrime)
|
||||
|
||||
# Insert > Double Prime
|
||||
self.aInsDPrime = QAction(self.tr("Double Prime"), self)
|
||||
self.aInsDPrime.setStatusTip(self.tr("Insert a double prime symbol"))
|
||||
self.aInsDPrime.setShortcut("Ctrl+K, Ctrl+\"")
|
||||
self.aInsDPrime.triggered.connect(lambda: self._docInsert(nwUnicode.U_DPRIME))
|
||||
self.mInsPunct.addAction(self.aInsDPrime)
|
||||
@@ -622,21 +563,18 @@ class GuiMainMenu(QMenuBar):
|
||||
|
||||
# Insert > Non-Breaking Space
|
||||
self.aInsNBSpace = QAction(self.tr("Non-Breaking Space"), self)
|
||||
self.aInsNBSpace.setStatusTip(self.tr("Insert a non-breaking space"))
|
||||
self.aInsNBSpace.setShortcut("Ctrl+K, Space")
|
||||
self.aInsNBSpace.triggered.connect(lambda: self._docInsert(nwUnicode.U_NBSP))
|
||||
self.mInsSpace.addAction(self.aInsNBSpace)
|
||||
|
||||
# Insert > Thin Space
|
||||
self.aInsThinSpace = QAction(self.tr("Thin Space"), self)
|
||||
self.aInsThinSpace.setStatusTip(self.tr("Insert a thin space"))
|
||||
self.aInsThinSpace.setShortcut("Ctrl+K, Shift+Space")
|
||||
self.aInsThinSpace.triggered.connect(lambda: self._docInsert(nwUnicode.U_THSP))
|
||||
self.mInsSpace.addAction(self.aInsThinSpace)
|
||||
|
||||
# Insert > Thin Non-Breaking Space
|
||||
self.aInsThinNBSpace = QAction(self.tr("Thin Non-Breaking Space"), self)
|
||||
self.aInsThinNBSpace.setStatusTip(self.tr("Insert a thin non-breaking space"))
|
||||
self.aInsThinNBSpace.setShortcut("Ctrl+K, Ctrl+Space")
|
||||
self.aInsThinNBSpace.triggered.connect(lambda: self._docInsert(nwUnicode.U_THNBSP))
|
||||
self.mInsSpace.addAction(self.aInsThinNBSpace)
|
||||
@@ -646,56 +584,48 @@ class GuiMainMenu(QMenuBar):
|
||||
|
||||
# Insert > List Bullet
|
||||
self.aInsBullet = QAction(self.tr("List Bullet"), self)
|
||||
self.aInsBullet.setStatusTip(self.tr("Insert a list bullet"))
|
||||
self.aInsBullet.setShortcut("Ctrl+K, *")
|
||||
self.aInsBullet.triggered.connect(lambda: self._docInsert(nwUnicode.U_BULL))
|
||||
self.mInsSymbol.addAction(self.aInsBullet)
|
||||
|
||||
# Insert > Hyphen Bullet
|
||||
self.aInsHyBull = QAction(self.tr("Hyphen Bullet"), self)
|
||||
self.aInsHyBull.setStatusTip(self.tr("Insert a hyphen bullet (alternative bullet)"))
|
||||
self.aInsHyBull.setShortcut("Ctrl+K, Ctrl+-")
|
||||
self.aInsHyBull.triggered.connect(lambda: self._docInsert(nwUnicode.U_HYBULL))
|
||||
self.mInsSymbol.addAction(self.aInsHyBull)
|
||||
|
||||
# Insert > Flower Mark
|
||||
self.aInsFlower = QAction(self.tr("Flower Mark"), self)
|
||||
self.aInsFlower.setStatusTip(self.tr("Insert a flower mark (alternative bullet)"))
|
||||
self.aInsFlower.setShortcut("Ctrl+K, Ctrl+*")
|
||||
self.aInsFlower.triggered.connect(lambda: self._docInsert(nwUnicode.U_FLOWER))
|
||||
self.mInsSymbol.addAction(self.aInsFlower)
|
||||
|
||||
# Insert > Per Mille
|
||||
self.aInsPerMille = QAction(self.tr("Per Mille"), self)
|
||||
self.aInsPerMille.setStatusTip(self.tr("Insert a per mille symbol"))
|
||||
self.aInsPerMille.setShortcut("Ctrl+K, %")
|
||||
self.aInsPerMille.triggered.connect(lambda: self._docInsert(nwUnicode.U_PERMIL))
|
||||
self.mInsSymbol.addAction(self.aInsPerMille)
|
||||
|
||||
# Insert > Degree Symbol
|
||||
self.aInsDegree = QAction(self.tr("Degree Symbol"), self)
|
||||
self.aInsDegree.setStatusTip(self.tr("Insert a degree symbol"))
|
||||
self.aInsDegree.setShortcut("Ctrl+K, Ctrl+O")
|
||||
self.aInsDegree.triggered.connect(lambda: self._docInsert(nwUnicode.U_DEGREE))
|
||||
self.mInsSymbol.addAction(self.aInsDegree)
|
||||
|
||||
# Insert > Minus Sign
|
||||
self.aInsMinus = QAction(self.tr("Minus Sign"), self)
|
||||
self.aInsMinus.setStatusTip(self.tr("Insert a minus sign (not a hypen or dash)"))
|
||||
self.aInsMinus.setShortcut("Ctrl+K, Ctrl+M")
|
||||
self.aInsMinus.triggered.connect(lambda: self._docInsert(nwUnicode.U_MINUS))
|
||||
self.mInsSymbol.addAction(self.aInsMinus)
|
||||
|
||||
# Insert > Times Sign
|
||||
self.aInsTimes = QAction(self.tr("Times Sign"), self)
|
||||
self.aInsTimes.setStatusTip(self.tr("Insert a times sign (multiplication cross)"))
|
||||
self.aInsTimes.setShortcut("Ctrl+K, Ctrl+X")
|
||||
self.aInsTimes.triggered.connect(lambda: self._docInsert(nwUnicode.U_TIMES))
|
||||
self.mInsSymbol.addAction(self.aInsTimes)
|
||||
|
||||
# Insert > Division
|
||||
self.aInsDivide = QAction(self.tr("Division Sign"), self)
|
||||
self.aInsDivide.setStatusTip(self.tr("Insert a division sign"))
|
||||
self.aInsDivide.setShortcut("Ctrl+K, Ctrl+D")
|
||||
self.aInsDivide.triggered.connect(lambda: self._docInsert(nwUnicode.U_DIVIDE))
|
||||
self.mInsSymbol.addAction(self.aInsDivide)
|
||||
@@ -726,19 +656,16 @@ class GuiMainMenu(QMenuBar):
|
||||
|
||||
# Insert > New Page
|
||||
self.aInsNewPage = QAction(self.tr("Page Break"), self)
|
||||
self.aInsNewPage.setStatusTip(self.tr("Insert a page break command"))
|
||||
self.aInsNewPage.triggered.connect(lambda: self._docInsert(nwDocInsert.NEW_PAGE))
|
||||
self.mInsBreaks.addAction(self.aInsNewPage)
|
||||
|
||||
# Insert > Vertical Space (Single)
|
||||
self.aInsVSpaceS = QAction(self.tr("Vertical Space (Single)"), self)
|
||||
self.aInsVSpaceS.setStatusTip(self.tr("Insert a vertical space equal to one paragraph"))
|
||||
self.aInsVSpaceS.triggered.connect(lambda: self._docInsert(nwDocInsert.VSPACE_S))
|
||||
self.mInsBreaks.addAction(self.aInsVSpaceS)
|
||||
|
||||
# Insert > Vertical Space (Multi)
|
||||
self.aInsVSpaceM = QAction(self.tr("Vertical Space (Multi)"), self)
|
||||
self.aInsVSpaceM.setStatusTip(self.tr("Insert a vertical space equal to n paragraphs"))
|
||||
self.aInsVSpaceM.triggered.connect(lambda: self._docInsert(nwDocInsert.VSPACE_M))
|
||||
self.mInsBreaks.addAction(self.aInsVSpaceM)
|
||||
|
||||
@@ -752,21 +679,18 @@ class GuiMainMenu(QMenuBar):
|
||||
|
||||
# Format > Emphasis
|
||||
self.aFmtEmph = QAction(self.tr("Emphasis"), self)
|
||||
self.aFmtEmph.setStatusTip(self.tr("Add emphasis to selected text (italic)"))
|
||||
self.aFmtEmph.setShortcut("Ctrl+I")
|
||||
self.aFmtEmph.triggered.connect(lambda: self._docAction(nwDocAction.EMPH))
|
||||
self.fmtMenu.addAction(self.aFmtEmph)
|
||||
|
||||
# Format > Strong Emphasis
|
||||
self.aFmtStrong = QAction(self.tr("Strong Emphasis"), self)
|
||||
self.aFmtStrong.setStatusTip(self.tr("Add strong emphasis to selected text (bold)"))
|
||||
self.aFmtStrong.setShortcut("Ctrl+B")
|
||||
self.aFmtStrong.triggered.connect(lambda: self._docAction(nwDocAction.STRONG))
|
||||
self.fmtMenu.addAction(self.aFmtStrong)
|
||||
|
||||
# Format > Strikethrough
|
||||
self.aFmtStrike = QAction(self.tr("Strikethrough"), self)
|
||||
self.aFmtStrike.setStatusTip(self.tr("Add strikethrough to selected text"))
|
||||
self.aFmtStrike.setShortcut("Ctrl+D")
|
||||
self.aFmtStrike.triggered.connect(lambda: self._docAction(nwDocAction.STRIKE))
|
||||
self.fmtMenu.addAction(self.aFmtStrike)
|
||||
@@ -776,14 +700,12 @@ class GuiMainMenu(QMenuBar):
|
||||
|
||||
# Format > Double Quotes
|
||||
self.aFmtDQuote = QAction(self.tr("Wrap Double Quotes"), self)
|
||||
self.aFmtDQuote.setStatusTip(self.tr("Wrap selected text in double quotes"))
|
||||
self.aFmtDQuote.setShortcut("Ctrl+\"")
|
||||
self.aFmtDQuote.triggered.connect(lambda: self._docAction(nwDocAction.D_QUOTE))
|
||||
self.fmtMenu.addAction(self.aFmtDQuote)
|
||||
|
||||
# Format > Single Quotes
|
||||
self.aFmtSQuote = QAction(self.tr("Wrap Single Quotes"), self)
|
||||
self.aFmtSQuote.setStatusTip(self.tr("Wrap selected text in single quotes"))
|
||||
self.aFmtSQuote.setShortcut("Ctrl+'")
|
||||
self.aFmtSQuote.triggered.connect(lambda: self._docAction(nwDocAction.S_QUOTE))
|
||||
self.fmtMenu.addAction(self.aFmtSQuote)
|
||||
@@ -793,28 +715,24 @@ class GuiMainMenu(QMenuBar):
|
||||
|
||||
# Format > Header 1 (Partition)
|
||||
self.aFmtHead1 = QAction(self.tr("Header 1 (Partition)"), self)
|
||||
self.aFmtHead1.setStatusTip(self.tr("Set the text block format to Header 1 (Partition)"))
|
||||
self.aFmtHead1.setShortcut("Ctrl+1")
|
||||
self.aFmtHead1.triggered.connect(lambda: self._docAction(nwDocAction.BLOCK_H1))
|
||||
self.fmtMenu.addAction(self.aFmtHead1)
|
||||
|
||||
# Format > Header 2 (Chapter)
|
||||
self.aFmtHead2 = QAction(self.tr("Header 2 (Chapter)"), self)
|
||||
self.aFmtHead2.setStatusTip(self.tr("Set the text block format to Header 2 (Chapter)"))
|
||||
self.aFmtHead2.setShortcut("Ctrl+2")
|
||||
self.aFmtHead2.triggered.connect(lambda: self._docAction(nwDocAction.BLOCK_H2))
|
||||
self.fmtMenu.addAction(self.aFmtHead2)
|
||||
|
||||
# Format > Header 3 (Scene)
|
||||
self.aFmtHead3 = QAction(self.tr("Header 3 (Scene)"), self)
|
||||
self.aFmtHead3.setStatusTip(self.tr("Set the text block format to Header 3 (Scene)"))
|
||||
self.aFmtHead3.setShortcut("Ctrl+3")
|
||||
self.aFmtHead3.triggered.connect(lambda: self._docAction(nwDocAction.BLOCK_H3))
|
||||
self.fmtMenu.addAction(self.aFmtHead3)
|
||||
|
||||
# Format > Header 4 (Section)
|
||||
self.aFmtHead4 = QAction(self.tr("Header 4 (Section)"), self)
|
||||
self.aFmtHead4.setStatusTip(self.tr("Set the text block format to Header 4 (Section)"))
|
||||
self.aFmtHead4.setShortcut("Ctrl+4")
|
||||
self.aFmtHead4.triggered.connect(lambda: self._docAction(nwDocAction.BLOCK_H4))
|
||||
self.fmtMenu.addAction(self.aFmtHead4)
|
||||
@@ -824,13 +742,11 @@ class GuiMainMenu(QMenuBar):
|
||||
|
||||
# Format > Novel Title
|
||||
self.aFmtTitle = QAction(self.tr("Novel Title"), self)
|
||||
self.aFmtTitle.setStatusTip(self.tr("Set the text block format to Novel Title"))
|
||||
self.aFmtTitle.triggered.connect(lambda: self._docAction(nwDocAction.BLOCK_TTL))
|
||||
self.fmtMenu.addAction(self.aFmtTitle)
|
||||
|
||||
# Format > Unnumbered Chapter
|
||||
self.aFmtUnNum = QAction(self.tr("Unnumbered Chapter"), self)
|
||||
self.aFmtUnNum.setStatusTip(self.tr("Set the text block format to Unnumbered Chapter"))
|
||||
self.aFmtUnNum.triggered.connect(lambda: self._docAction(nwDocAction.BLOCK_UNN))
|
||||
self.fmtMenu.addAction(self.aFmtUnNum)
|
||||
|
||||
@@ -839,21 +755,18 @@ class GuiMainMenu(QMenuBar):
|
||||
|
||||
# Format > Align Left
|
||||
self.aFmtAlignLeft = QAction(self.tr("Align Left"), self)
|
||||
self.aFmtAlignLeft.setStatusTip(self.tr("Left-align the text block"))
|
||||
self.aFmtAlignLeft.setShortcut("Ctrl+5")
|
||||
self.aFmtAlignLeft.triggered.connect(lambda: self._docAction(nwDocAction.ALIGN_L))
|
||||
self.fmtMenu.addAction(self.aFmtAlignLeft)
|
||||
|
||||
# Format > Align Centre
|
||||
self.aFmtAlignCentre = QAction(self.tr("Align Centre"), self)
|
||||
self.aFmtAlignCentre.setStatusTip(self.tr("Centre the text block"))
|
||||
self.aFmtAlignCentre.setShortcut("Ctrl+6")
|
||||
self.aFmtAlignCentre.triggered.connect(lambda: self._docAction(nwDocAction.ALIGN_C))
|
||||
self.fmtMenu.addAction(self.aFmtAlignCentre)
|
||||
|
||||
# Format > Align Right
|
||||
self.aFmtAlignRight = QAction(self.tr("Align Right"), self)
|
||||
self.aFmtAlignRight.setStatusTip(self.tr("Right-align the text block"))
|
||||
self.aFmtAlignRight.setShortcut("Ctrl+7")
|
||||
self.aFmtAlignRight.triggered.connect(lambda: self._docAction(nwDocAction.ALIGN_R))
|
||||
self.fmtMenu.addAction(self.aFmtAlignRight)
|
||||
@@ -863,14 +776,12 @@ class GuiMainMenu(QMenuBar):
|
||||
|
||||
# Format > Indent Left
|
||||
self.aFmtIndentLeft = QAction(self.tr("Indent Left"), self)
|
||||
self.aFmtIndentLeft.setStatusTip(self.tr("Increase the text block's left margin"))
|
||||
self.aFmtIndentLeft.setShortcut("Ctrl+8")
|
||||
self.aFmtIndentLeft.triggered.connect(lambda: self._docAction(nwDocAction.INDENT_L))
|
||||
self.fmtMenu.addAction(self.aFmtIndentLeft)
|
||||
|
||||
# Format > Indent Right
|
||||
self.aFmtIndentRight = QAction(self.tr("Indent Right"), self)
|
||||
self.aFmtIndentRight.setStatusTip(self.tr("Increase the text block's right margin"))
|
||||
self.aFmtIndentRight.setShortcut("Ctrl+9")
|
||||
self.aFmtIndentRight.triggered.connect(lambda: self._docAction(nwDocAction.INDENT_R))
|
||||
self.fmtMenu.addAction(self.aFmtIndentRight)
|
||||
@@ -879,15 +790,13 @@ class GuiMainMenu(QMenuBar):
|
||||
self.fmtMenu.addSeparator()
|
||||
|
||||
# Format > Comment
|
||||
self.aFmtComment = QAction(self.tr("Comment"), self)
|
||||
self.aFmtComment.setStatusTip(self.tr("Change the text block format to comment"))
|
||||
self.aFmtComment = QAction(self.tr("Toggle Comment"), self)
|
||||
self.aFmtComment.setShortcut("Ctrl+/")
|
||||
self.aFmtComment.triggered.connect(lambda: self._docAction(nwDocAction.BLOCK_COM))
|
||||
self.fmtMenu.addAction(self.aFmtComment)
|
||||
|
||||
# Format > Remove Block Format
|
||||
self.aFmtNoFormat = QAction(self.tr("Remove Block Format"), self)
|
||||
self.aFmtNoFormat.setStatusTip(self.tr("Strip text block format"))
|
||||
self.aFmtNoFormat.setShortcuts(["Ctrl+0", "Ctrl+Shift+/"])
|
||||
self.aFmtNoFormat.triggered.connect(lambda: self._docAction(nwDocAction.BLOCK_TXT))
|
||||
self.fmtMenu.addAction(self.aFmtNoFormat)
|
||||
@@ -896,26 +805,17 @@ class GuiMainMenu(QMenuBar):
|
||||
self.fmtMenu.addSeparator()
|
||||
|
||||
# Format > Replace Single Quotes
|
||||
self.aFmtReplSng = QAction(self.tr("Replace Single Quotes"), self)
|
||||
self.aFmtReplSng.setStatusTip(
|
||||
self.tr("Replace all straight single quotes in the selected text")
|
||||
)
|
||||
self.aFmtReplSng = QAction(self.tr("Convert Single Quotes"), self)
|
||||
self.aFmtReplSng.triggered.connect(lambda: self._docAction(nwDocAction.REPL_SNG))
|
||||
self.fmtMenu.addAction(self.aFmtReplSng)
|
||||
|
||||
# Format > Replace Double Quotes
|
||||
self.aFmtReplDbl = QAction(self.tr("Replace Double Quotes"), self)
|
||||
self.aFmtReplDbl.setStatusTip(
|
||||
self.tr("Replace all straight double quotes in the selected text")
|
||||
)
|
||||
self.aFmtReplDbl = QAction(self.tr("Convert Double Quotes"), self)
|
||||
self.aFmtReplDbl.triggered.connect(lambda: self._docAction(nwDocAction.REPL_DBL))
|
||||
self.fmtMenu.addAction(self.aFmtReplDbl)
|
||||
|
||||
# Format > Remove In-Paragraph Breaks
|
||||
self.aFmtRmBreaks = QAction(self.tr("Remove In-Paragraph Breaks"), self)
|
||||
self.aFmtRmBreaks.setStatusTip(
|
||||
self.tr("Remove all line breaks within paragraphs in the selected text")
|
||||
)
|
||||
self.aFmtRmBreaks.triggered.connect(lambda: self._docAction(nwDocAction.RM_BREAKS))
|
||||
self.fmtMenu.addAction(self.aFmtRmBreaks)
|
||||
|
||||
@@ -929,14 +829,12 @@ class GuiMainMenu(QMenuBar):
|
||||
|
||||
# Search > Find
|
||||
self.aFind = QAction(self.tr("Find"), self)
|
||||
self.aFind.setStatusTip(self.tr("Find text in document"))
|
||||
self.aFind.setShortcut("Ctrl+F")
|
||||
self.aFind.triggered.connect(lambda: self.theParent.docEditor.beginSearch())
|
||||
self.srcMenu.addAction(self.aFind)
|
||||
|
||||
# Search > Replace
|
||||
self.aReplace = QAction(self.tr("Replace"), self)
|
||||
self.aReplace.setStatusTip(self.tr("Replace text in document"))
|
||||
if self.mainConf.osDarwin:
|
||||
self.aReplace.setShortcut("Ctrl+=")
|
||||
else:
|
||||
@@ -946,7 +844,6 @@ class GuiMainMenu(QMenuBar):
|
||||
|
||||
# Search > Find Next
|
||||
self.aFindNext = QAction(self.tr("Find Next"), self)
|
||||
self.aFindNext.setStatusTip(self.tr("Find next occurrence of text in document"))
|
||||
if self.mainConf.osDarwin:
|
||||
self.aFindNext.setShortcuts(["Ctrl+G", "F3"])
|
||||
else:
|
||||
@@ -956,7 +853,6 @@ class GuiMainMenu(QMenuBar):
|
||||
|
||||
# Search > Find Prev
|
||||
self.aFindPrev = QAction(self.tr("Find Previous"), self)
|
||||
self.aFindPrev.setStatusTip(self.tr("Find previous occurrence of text in document"))
|
||||
if self.mainConf.osDarwin:
|
||||
self.aFindPrev.setShortcuts(["Ctrl+Shift+G", "Shift+F3"])
|
||||
else:
|
||||
@@ -966,9 +862,6 @@ class GuiMainMenu(QMenuBar):
|
||||
|
||||
# Search > Replace Next
|
||||
self.aReplaceNext = QAction(self.tr("Replace Next"), self)
|
||||
self.aReplaceNext.setStatusTip(
|
||||
self.tr("Find and replace next occurrence of text in document")
|
||||
)
|
||||
self.aReplaceNext.setShortcut("Ctrl+Shift+1")
|
||||
self.aReplaceNext.triggered.connect(lambda: self.theParent.docEditor.replaceNext())
|
||||
self.srcMenu.addAction(self.aReplaceNext)
|
||||
@@ -983,7 +876,6 @@ class GuiMainMenu(QMenuBar):
|
||||
|
||||
# Tools > Check Spelling
|
||||
self.aSpellCheck = QAction(self.tr("Check Spelling"), self)
|
||||
self.aSpellCheck.setStatusTip(self.tr("Toggle check spelling"))
|
||||
self.aSpellCheck.setCheckable(True)
|
||||
self.aSpellCheck.setChecked(self.theProject.spellCheck)
|
||||
self.aSpellCheck.triggered.connect(self._toggleSpellCheck) # triggered, not toggled!
|
||||
@@ -992,14 +884,12 @@ class GuiMainMenu(QMenuBar):
|
||||
|
||||
# Tools > Re-Run Spell Check
|
||||
self.aReRunSpell = QAction(self.tr("Re-Run Spell Check"), self)
|
||||
self.aReRunSpell.setStatusTip(self.tr("Run the spell checker on current document"))
|
||||
self.aReRunSpell.setShortcut("F7")
|
||||
self.aReRunSpell.triggered.connect(lambda: self.theParent.docEditor.spellCheckDocument())
|
||||
self.toolsMenu.addAction(self.aReRunSpell)
|
||||
|
||||
# Tools > Project Word List
|
||||
self.aEditWordList = QAction(self.tr("Project Word List"), self)
|
||||
self.aEditWordList.setStatusTip(self.tr("Edit the project's word list"))
|
||||
self.aEditWordList.triggered.connect(lambda: self.theParent.showProjectWordListDialog())
|
||||
self.toolsMenu.addAction(self.aEditWordList)
|
||||
|
||||
@@ -1008,23 +898,18 @@ class GuiMainMenu(QMenuBar):
|
||||
|
||||
# Tools > Rebuild Indices
|
||||
self.aRebuildIndex = QAction(self.tr("Rebuild Index"), self)
|
||||
self.aRebuildIndex.setStatusTip(self.tr("Rebuild the tag indices and word counts"))
|
||||
self.aRebuildIndex.setShortcut("F9")
|
||||
self.aRebuildIndex.triggered.connect(lambda: self.theParent.rebuildIndex())
|
||||
self.toolsMenu.addAction(self.aRebuildIndex)
|
||||
|
||||
# Tools > Rebuild Outline
|
||||
self.aRebuildOutline = QAction(self.tr("Rebuild Outline"), self)
|
||||
self.aRebuildOutline.setStatusTip(self.tr("Rebuild the novel outline tree"))
|
||||
self.aRebuildOutline.setShortcut("F10")
|
||||
self.aRebuildOutline.triggered.connect(lambda: self.theParent.rebuildOutline())
|
||||
self.toolsMenu.addAction(self.aRebuildOutline)
|
||||
|
||||
# Tools > Toggle Auto Build Outline
|
||||
self.aAutoOutline = QAction(self.tr("Auto-Update Outline"), self)
|
||||
self.aAutoOutline.setStatusTip(
|
||||
self.tr("Update project outline when a novel file is changed")
|
||||
)
|
||||
self.aAutoOutline.setCheckable(True)
|
||||
self.aAutoOutline.toggled.connect(self._toggleAutoOutline)
|
||||
self.aAutoOutline.setShortcut("Ctrl+F10")
|
||||
@@ -1034,28 +919,24 @@ class GuiMainMenu(QMenuBar):
|
||||
self.toolsMenu.addSeparator()
|
||||
|
||||
# Tools > Backup
|
||||
self.aBackupProject = QAction(self.tr("Backup Project Folder"), self)
|
||||
self.aBackupProject.setStatusTip(self.tr("Backup Project"))
|
||||
self.aBackupProject = QAction(self.tr("Backup Project"), self)
|
||||
self.aBackupProject.triggered.connect(lambda: self.theProject.zipIt(True))
|
||||
self.toolsMenu.addAction(self.aBackupProject)
|
||||
|
||||
# Tools > Export Project
|
||||
self.aBuildProject = QAction(self.tr("Build Novel Project"), self)
|
||||
self.aBuildProject.setStatusTip(self.tr("Launch the Build novel project tool"))
|
||||
self.aBuildProject.setShortcut("F5")
|
||||
self.aBuildProject.triggered.connect(lambda: self.theParent.showBuildProjectDialog())
|
||||
self.toolsMenu.addAction(self.aBuildProject)
|
||||
|
||||
# Tools > Writing Stats
|
||||
self.aWritingStats = QAction(self.tr("Writing Statistics"), self)
|
||||
self.aWritingStats.setStatusTip(self.tr("Show the writing statistics dialogue"))
|
||||
self.aWritingStats.setShortcut("F6")
|
||||
self.aWritingStats.triggered.connect(lambda: self.theParent.showWritingStatsDialog())
|
||||
self.toolsMenu.addAction(self.aWritingStats)
|
||||
|
||||
# Tools > Settings
|
||||
self.aPreferences = QAction(self.tr("Preferences"), self)
|
||||
self.aPreferences.setStatusTip(self.tr("Preferences"))
|
||||
self.aPreferences.setShortcut("Ctrl+,")
|
||||
self.aPreferences.setMenuRole(QAction.PreferencesRole)
|
||||
self.aPreferences.triggered.connect(lambda: self.theParent.showPreferencesDialog())
|
||||
@@ -1071,14 +952,12 @@ class GuiMainMenu(QMenuBar):
|
||||
|
||||
# Help > About
|
||||
self.aAboutNW = QAction(self.tr("About novelWriter"), self)
|
||||
self.aAboutNW.setStatusTip(self.tr("About novelWriter"))
|
||||
self.aAboutNW.setMenuRole(QAction.AboutRole)
|
||||
self.aAboutNW.triggered.connect(lambda: self.theParent.showAboutNWDialog())
|
||||
self.helpMenu.addAction(self.aAboutNW)
|
||||
|
||||
# Help > About Qt5
|
||||
self.aAboutQt = QAction(self.tr("About Qt5"), self)
|
||||
self.aAboutQt.setStatusTip(self.tr("About Qt5"))
|
||||
self.aAboutQt.setMenuRole(QAction.AboutQtRole)
|
||||
self.aAboutQt.triggered.connect(lambda: self.theParent.showAboutQtDialog())
|
||||
self.helpMenu.addAction(self.aAboutQt)
|
||||
@@ -1093,7 +972,6 @@ class GuiMainMenu(QMenuBar):
|
||||
docUrl = f"{novelwriter.__docurl__}/en/latest/"
|
||||
|
||||
self.aHelpDocs = QAction(self.tr("User Manual (Online)"), self)
|
||||
self.aHelpDocs.setStatusTip(self.tr("Open documentation in browser"))
|
||||
self.aHelpDocs.setShortcut("F1")
|
||||
self.aHelpDocs.triggered.connect(lambda: self._openWebsite(docUrl))
|
||||
self.helpMenu.addAction(self.aHelpDocs)
|
||||
@@ -1101,7 +979,6 @@ class GuiMainMenu(QMenuBar):
|
||||
# Help > User Manual (PDF)
|
||||
if self.mainConf.pdfDocs is not None:
|
||||
self.aPdfDocs = QAction(self.tr("User Manual (PDF)"), self)
|
||||
self.aPdfDocs.setStatusTip(self.tr("Open PDF documentation"))
|
||||
self.aPdfDocs.setShortcut("Shift+F1")
|
||||
self.aPdfDocs.triggered.connect(self._openUserManualFile)
|
||||
self.helpMenu.addAction(self.aPdfDocs)
|
||||
@@ -1111,25 +988,16 @@ class GuiMainMenu(QMenuBar):
|
||||
|
||||
# Document > Report an Issue
|
||||
self.aIssue = QAction(self.tr("Report an Issue (GitHub)"), self)
|
||||
self.aIssue.setStatusTip(
|
||||
self.tr("Report a bug or issue on GitHub at {0}").format(novelwriter.__issuesurl__)
|
||||
)
|
||||
self.aIssue.triggered.connect(lambda: self._openWebsite(novelwriter.__issuesurl__))
|
||||
self.helpMenu.addAction(self.aIssue)
|
||||
|
||||
# Document > Ask a Question
|
||||
self.aQuestion = QAction(self.tr("Ask a Question (GitHub)"), self)
|
||||
self.aQuestion.setStatusTip(
|
||||
self.tr("Ask a question on GitHub at {0}").format(novelwriter.__helpurl__)
|
||||
)
|
||||
self.aQuestion.triggered.connect(lambda: self._openWebsite(novelwriter.__helpurl__))
|
||||
self.helpMenu.addAction(self.aQuestion)
|
||||
|
||||
# Document > Main Website
|
||||
self.aWebsite = QAction(self.tr("The novelWriter Website"), self)
|
||||
self.aWebsite.setStatusTip(
|
||||
self.tr("Open the novelWriter website at {0}").format(novelwriter.__url__)
|
||||
)
|
||||
self.aWebsite.triggered.connect(lambda: self._openWebsite(novelwriter.__url__))
|
||||
self.helpMenu.addAction(self.aWebsite)
|
||||
|
||||
@@ -1138,7 +1006,6 @@ class GuiMainMenu(QMenuBar):
|
||||
|
||||
# Document > Check for Updates
|
||||
self.aUpdates = QAction(self.tr("Check for New Release"), self)
|
||||
self.aUpdates.setStatusTip(self.tr("Check for latest release of novelWriter"))
|
||||
self.aUpdates.triggered.connect(lambda: self.theParent.showUpdatesDialog())
|
||||
self.helpMenu.addAction(self.aUpdates)
|
||||
|
||||
|
||||
@@ -206,7 +206,9 @@ class GuiProjectTree(QTreeWidget):
|
||||
)
|
||||
|
||||
if itemType == nwItemType.ROOT:
|
||||
tHandle = self.theProject.newRoot(trConst(nwLabels.CLASS_NAME[itemClass]), itemClass)
|
||||
tHandle = self.theProject.newRoot(
|
||||
trConst(nwLabels.CLASS_NAME_LBL[itemClass]), itemClass
|
||||
)
|
||||
if tHandle is None:
|
||||
logger.error("No root item added")
|
||||
return False
|
||||
|
||||
@@ -359,7 +359,7 @@ class GuiMain(QMainWindow):
|
||||
if self.hasProject:
|
||||
if not self.closeProject():
|
||||
self.makeAlert(self.tr(
|
||||
"Cannot create new project when another project is open."
|
||||
"Cannot create a new project when another project is open."
|
||||
), nwAlert.ERROR)
|
||||
return False
|
||||
|
||||
|
||||
@@ -343,22 +343,16 @@ class GuiBuildNovel(QDialog):
|
||||
self.fileGroup.setLayout(self.fileForm)
|
||||
|
||||
self.novelFiles = QSwitch(width=wS, height=hS)
|
||||
self.novelFiles.setToolTip(self.tr("Include files with layouts other than 'Note'."))
|
||||
self.novelFiles.setChecked(
|
||||
self.optState.getBool("GuiBuildNovel", "addNovel", True)
|
||||
)
|
||||
|
||||
self.noteFiles = QSwitch(width=wS, height=hS)
|
||||
self.noteFiles.setToolTip(self.tr("Include files with layout 'Note'."))
|
||||
self.noteFiles.setChecked(
|
||||
self.optState.getBool("GuiBuildNovel", "addNotes", False)
|
||||
)
|
||||
|
||||
self.ignoreFlag = QSwitch(width=wS, height=hS)
|
||||
self.ignoreFlag.setToolTip(self.tr(
|
||||
"Ignore the 'Include when building project' setting and include "
|
||||
"all files in the output."
|
||||
))
|
||||
self.ignoreFlag.setChecked(
|
||||
self.optState.getBool("GuiBuildNovel", "ignoreFlag", False)
|
||||
)
|
||||
|
||||
@@ -310,22 +310,22 @@ class ProjWizardCustomPage(QWizardPage):
|
||||
self.rootGroup.setLayout(self.rootForm)
|
||||
|
||||
self.lblPlot = QLabel(self.tr("{0} folder").format(
|
||||
trConst(nwLabels.CLASS_NAME[nwItemClass.PLOT]))
|
||||
trConst(nwLabels.CLASS_NAME_LBL[nwItemClass.PLOT]))
|
||||
)
|
||||
self.lblChar = QLabel(self.tr("{0} folder").format(
|
||||
trConst(nwLabels.CLASS_NAME[nwItemClass.CHARACTER]))
|
||||
trConst(nwLabels.CLASS_NAME_LBL[nwItemClass.CHARACTER]))
|
||||
)
|
||||
self.lblWorld = QLabel(self.tr("{0} folder").format(
|
||||
trConst(nwLabels.CLASS_NAME[nwItemClass.WORLD]))
|
||||
trConst(nwLabels.CLASS_NAME_LBL[nwItemClass.WORLD]))
|
||||
)
|
||||
self.lblTime = QLabel(self.tr("{0} folder").format(
|
||||
trConst(nwLabels.CLASS_NAME[nwItemClass.TIMELINE]))
|
||||
trConst(nwLabels.CLASS_NAME_LBL[nwItemClass.TIMELINE]))
|
||||
)
|
||||
self.lblObject = QLabel(self.tr("{0} folder").format(
|
||||
trConst(nwLabels.CLASS_NAME[nwItemClass.OBJECT]))
|
||||
trConst(nwLabels.CLASS_NAME_LBL[nwItemClass.OBJECT]))
|
||||
)
|
||||
self.lblEntity = QLabel(self.tr("{0} folder").format(
|
||||
trConst(nwLabels.CLASS_NAME[nwItemClass.ENTITY]))
|
||||
trConst(nwLabels.CLASS_NAME_LBL[nwItemClass.ENTITY]))
|
||||
)
|
||||
|
||||
self.addPlot = QSwitch()
|
||||
|
||||
Reference in New Issue
Block a user