Add a dialog parent class that handles escape key presses
This commit is contained in:
@@ -29,19 +29,20 @@ import logging
|
|||||||
from PyQt5.QtCore import Qt, pyqtSlot
|
from PyQt5.QtCore import Qt, pyqtSlot
|
||||||
from PyQt5.QtGui import QCloseEvent
|
from PyQt5.QtGui import QCloseEvent
|
||||||
from PyQt5.QtWidgets import (
|
from PyQt5.QtWidgets import (
|
||||||
QAbstractItemView, QDialog, QDialogButtonBox, QGridLayout, QLabel,
|
QAbstractItemView, QDialogButtonBox, QGridLayout, QLabel, QListWidget,
|
||||||
QListWidget, QListWidgetItem, QVBoxLayout, QWidget
|
QListWidgetItem, QVBoxLayout, QWidget
|
||||||
)
|
)
|
||||||
|
|
||||||
from novelwriter import CONFIG, SHARED
|
from novelwriter import CONFIG, SHARED
|
||||||
from novelwriter.extensions.configlayout import NColourLabel
|
from novelwriter.extensions.configlayout import NColourLabel
|
||||||
|
from novelwriter.extensions.modified import NDialog
|
||||||
from novelwriter.extensions.switch import NSwitch
|
from novelwriter.extensions.switch import NSwitch
|
||||||
from novelwriter.types import QtDialogCancel, QtDialogOk, QtDialogReset, QtUserRole
|
from novelwriter.types import QtDialogCancel, QtDialogOk, QtDialogReset, QtUserRole
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class GuiDocMerge(QDialog):
|
class GuiDocMerge(NDialog):
|
||||||
|
|
||||||
D_HANDLE = QtUserRole
|
D_HANDLE = QtUserRole
|
||||||
|
|
||||||
|
|||||||
@@ -29,19 +29,20 @@ import logging
|
|||||||
from PyQt5.QtCore import pyqtSlot
|
from PyQt5.QtCore import pyqtSlot
|
||||||
from PyQt5.QtGui import QCloseEvent
|
from PyQt5.QtGui import QCloseEvent
|
||||||
from PyQt5.QtWidgets import (
|
from PyQt5.QtWidgets import (
|
||||||
QAbstractItemView, QComboBox, QDialog, QDialogButtonBox, QGridLayout,
|
QAbstractItemView, QComboBox, QDialogButtonBox, QGridLayout, QLabel,
|
||||||
QLabel, QListWidget, QListWidgetItem, QVBoxLayout, QWidget
|
QListWidget, QListWidgetItem, QVBoxLayout, QWidget
|
||||||
)
|
)
|
||||||
|
|
||||||
from novelwriter import CONFIG, SHARED
|
from novelwriter import CONFIG, SHARED
|
||||||
from novelwriter.extensions.configlayout import NColourLabel
|
from novelwriter.extensions.configlayout import NColourLabel
|
||||||
|
from novelwriter.extensions.modified import NDialog
|
||||||
from novelwriter.extensions.switch import NSwitch
|
from novelwriter.extensions.switch import NSwitch
|
||||||
from novelwriter.types import QtDialogCancel, QtDialogOk, QtUserRole
|
from novelwriter.types import QtDialogCancel, QtDialogOk, QtUserRole
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class GuiDocSplit(QDialog):
|
class GuiDocSplit(NDialog):
|
||||||
|
|
||||||
LINE_ROLE = QtUserRole
|
LINE_ROLE = QtUserRole
|
||||||
LEVEL_ROLE = QtUserRole + 1
|
LEVEL_ROLE = QtUserRole + 1
|
||||||
|
|||||||
@@ -31,12 +31,13 @@ from PyQt5.QtWidgets import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
from novelwriter import CONFIG
|
from novelwriter import CONFIG
|
||||||
|
from novelwriter.extensions.modified import NDialog
|
||||||
from novelwriter.types import QtDialogCancel, QtDialogOk
|
from novelwriter.types import QtDialogCancel, QtDialogOk
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class GuiEditLabel(QDialog):
|
class GuiEditLabel(NDialog):
|
||||||
|
|
||||||
def __init__(self, parent: QWidget, text: str = "") -> None:
|
def __init__(self, parent: QWidget, text: str = "") -> None:
|
||||||
super().__init__(parent=parent)
|
super().__init__(parent=parent)
|
||||||
|
|||||||
@@ -27,10 +27,10 @@ from __future__ import annotations
|
|||||||
import logging
|
import logging
|
||||||
|
|
||||||
from PyQt5.QtCore import Qt, pyqtSignal, pyqtSlot
|
from PyQt5.QtCore import Qt, pyqtSignal, pyqtSlot
|
||||||
from PyQt5.QtGui import QCloseEvent, QKeyEvent, QKeySequence
|
from PyQt5.QtGui import QCloseEvent
|
||||||
from PyQt5.QtWidgets import (
|
from PyQt5.QtWidgets import (
|
||||||
QAbstractButton, QApplication, QCompleter, QDialog, QDialogButtonBox,
|
QAbstractButton, QApplication, QCompleter, QDialogButtonBox, QFileDialog,
|
||||||
QFileDialog, QHBoxLayout, QLineEdit, QPushButton, QVBoxLayout, QWidget
|
QHBoxLayout, QLineEdit, QPushButton, QVBoxLayout, QWidget
|
||||||
)
|
)
|
||||||
|
|
||||||
from novelwriter import CONFIG, SHARED
|
from novelwriter import CONFIG, SHARED
|
||||||
@@ -38,7 +38,9 @@ from novelwriter.common import describeFont
|
|||||||
from novelwriter.constants import nwConst, nwUnicode
|
from novelwriter.constants import nwConst, nwUnicode
|
||||||
from novelwriter.dialogs.quotes import GuiQuoteSelect
|
from novelwriter.dialogs.quotes import GuiQuoteSelect
|
||||||
from novelwriter.extensions.configlayout import NColourLabel, NScrollableForm
|
from novelwriter.extensions.configlayout import NColourLabel, NScrollableForm
|
||||||
from novelwriter.extensions.modified import NComboBox, NDoubleSpinBox, NIconToolButton, NSpinBox
|
from novelwriter.extensions.modified import (
|
||||||
|
NComboBox, NDialog, NDoubleSpinBox, NIconToolButton, NSpinBox
|
||||||
|
)
|
||||||
from novelwriter.extensions.pagedsidebar import NPagedSideBar
|
from novelwriter.extensions.pagedsidebar import NPagedSideBar
|
||||||
from novelwriter.extensions.switch import NSwitch
|
from novelwriter.extensions.switch import NSwitch
|
||||||
from novelwriter.types import (
|
from novelwriter.types import (
|
||||||
@@ -49,7 +51,7 @@ from novelwriter.types import (
|
|||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class GuiPreferences(QDialog):
|
class GuiPreferences(NDialog):
|
||||||
|
|
||||||
newPreferencesReady = pyqtSignal(bool, bool, bool, bool)
|
newPreferencesReady = pyqtSignal(bool, bool, bool, bool)
|
||||||
|
|
||||||
@@ -772,13 +774,6 @@ class GuiPreferences(QDialog):
|
|||||||
self.deleteLater()
|
self.deleteLater()
|
||||||
return
|
return
|
||||||
|
|
||||||
def keyPressEvent(self, event: QKeyEvent) -> None:
|
|
||||||
"""Overload keyPressEvent to block enter key to save."""
|
|
||||||
if event.matches(QKeySequence.StandardKey.Cancel):
|
|
||||||
self.close()
|
|
||||||
event.ignore()
|
|
||||||
return
|
|
||||||
|
|
||||||
##
|
##
|
||||||
# Private Slots
|
# Private Slots
|
||||||
##
|
##
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ import logging
|
|||||||
from PyQt5.QtCore import Qt, pyqtSignal, pyqtSlot
|
from PyQt5.QtCore import Qt, pyqtSignal, pyqtSlot
|
||||||
from PyQt5.QtGui import QCloseEvent, QColor
|
from PyQt5.QtGui import QCloseEvent, QColor
|
||||||
from PyQt5.QtWidgets import (
|
from PyQt5.QtWidgets import (
|
||||||
QAbstractItemView, QApplication, QColorDialog, QDialog, QDialogButtonBox,
|
QAbstractItemView, QApplication, QColorDialog, QDialogButtonBox,
|
||||||
QHBoxLayout, QLineEdit, QMenu, QStackedWidget, QToolButton, QTreeWidget,
|
QHBoxLayout, QLineEdit, QMenu, QStackedWidget, QToolButton, QTreeWidget,
|
||||||
QTreeWidgetItem, QVBoxLayout, QWidget
|
QTreeWidgetItem, QVBoxLayout, QWidget
|
||||||
)
|
)
|
||||||
@@ -40,7 +40,7 @@ from novelwriter.constants import nwLabels, trConst
|
|||||||
from novelwriter.core.status import NWStatus, StatusEntry
|
from novelwriter.core.status import NWStatus, StatusEntry
|
||||||
from novelwriter.enum import nwStatusShape
|
from novelwriter.enum import nwStatusShape
|
||||||
from novelwriter.extensions.configlayout import NColourLabel, NFixedPage, NScrollableForm
|
from novelwriter.extensions.configlayout import NColourLabel, NFixedPage, NScrollableForm
|
||||||
from novelwriter.extensions.modified import NComboBox, NIconToolButton
|
from novelwriter.extensions.modified import NComboBox, NDialog, NIconToolButton
|
||||||
from novelwriter.extensions.pagedsidebar import NPagedSideBar
|
from novelwriter.extensions.pagedsidebar import NPagedSideBar
|
||||||
from novelwriter.extensions.switch import NSwitch
|
from novelwriter.extensions.switch import NSwitch
|
||||||
from novelwriter.types import (
|
from novelwriter.types import (
|
||||||
@@ -51,7 +51,7 @@ from novelwriter.types import (
|
|||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class GuiProjectSettings(QDialog):
|
class GuiProjectSettings(NDialog):
|
||||||
|
|
||||||
PAGE_SETTINGS = 0
|
PAGE_SETTINGS = 0
|
||||||
PAGE_STATUS = 1
|
PAGE_STATUS = 1
|
||||||
|
|||||||
@@ -34,12 +34,13 @@ from PyQt5.QtWidgets import (
|
|||||||
|
|
||||||
from novelwriter import CONFIG
|
from novelwriter import CONFIG
|
||||||
from novelwriter.constants import nwQuotes, trConst
|
from novelwriter.constants import nwQuotes, trConst
|
||||||
|
from novelwriter.extensions.modified import NDialog
|
||||||
from novelwriter.types import QtAlignCenter, QtAlignTop, QtDialogCancel, QtDialogOk, QtUserRole
|
from novelwriter.types import QtAlignCenter, QtAlignTop, QtDialogCancel, QtDialogOk, QtUserRole
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class GuiQuoteSelect(QDialog):
|
class GuiQuoteSelect(NDialog):
|
||||||
|
|
||||||
_selected = ""
|
_selected = ""
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ from pathlib import Path
|
|||||||
from PyQt5.QtCore import Qt, pyqtSignal, pyqtSlot
|
from PyQt5.QtCore import Qt, pyqtSignal, pyqtSlot
|
||||||
from PyQt5.QtGui import QCloseEvent
|
from PyQt5.QtGui import QCloseEvent
|
||||||
from PyQt5.QtWidgets import (
|
from PyQt5.QtWidgets import (
|
||||||
QAbstractItemView, QApplication, QDialog, QDialogButtonBox, QFileDialog,
|
QAbstractItemView, QApplication, QDialogButtonBox, QFileDialog,
|
||||||
QHBoxLayout, QLineEdit, QListWidget, QVBoxLayout, QWidget
|
QHBoxLayout, QLineEdit, QListWidget, QVBoxLayout, QWidget
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -38,13 +38,13 @@ from novelwriter import CONFIG, SHARED
|
|||||||
from novelwriter.common import formatFileFilter
|
from novelwriter.common import formatFileFilter
|
||||||
from novelwriter.core.spellcheck import UserDictionary
|
from novelwriter.core.spellcheck import UserDictionary
|
||||||
from novelwriter.extensions.configlayout import NColourLabel
|
from novelwriter.extensions.configlayout import NColourLabel
|
||||||
from novelwriter.extensions.modified import NIconToolButton
|
from novelwriter.extensions.modified import NDialog, NIconToolButton
|
||||||
from novelwriter.types import QtDialogClose, QtDialogSave
|
from novelwriter.types import QtDialogClose, QtDialogSave
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class GuiWordList(QDialog):
|
class GuiWordList(NDialog):
|
||||||
|
|
||||||
newWordListReady = pyqtSignal()
|
newWordListReady = pyqtSignal()
|
||||||
|
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ from enum import Enum
|
|||||||
from typing import TYPE_CHECKING
|
from typing import TYPE_CHECKING
|
||||||
|
|
||||||
from PyQt5.QtCore import QSize, Qt
|
from PyQt5.QtCore import QSize, Qt
|
||||||
from PyQt5.QtGui import QWheelEvent
|
from PyQt5.QtGui import QKeyEvent, QKeySequence, QWheelEvent
|
||||||
from PyQt5.QtWidgets import (
|
from PyQt5.QtWidgets import (
|
||||||
QApplication, QComboBox, QDialog, QDoubleSpinBox, QSpinBox, QToolButton,
|
QApplication, QComboBox, QDialog, QDoubleSpinBox, QSpinBox, QToolButton,
|
||||||
QWidget
|
QWidget
|
||||||
@@ -43,7 +43,17 @@ if TYPE_CHECKING: # pragma: no cover
|
|||||||
from novelwriter.guimain import GuiMain
|
from novelwriter.guimain import GuiMain
|
||||||
|
|
||||||
|
|
||||||
class NToolDialog(QDialog):
|
class NDialog(QDialog):
|
||||||
|
|
||||||
|
def keyPressEvent(self, event: QKeyEvent) -> None:
|
||||||
|
"""Overload keyPressEvent and forward escape to close."""
|
||||||
|
if event.matches(QKeySequence.StandardKey.Cancel):
|
||||||
|
self.close()
|
||||||
|
event.ignore()
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
class NToolDialog(NDialog):
|
||||||
|
|
||||||
def __init__(self, parent: GuiMain) -> None:
|
def __init__(self, parent: GuiMain) -> None:
|
||||||
super().__init__(parent=parent)
|
super().__init__(parent=parent)
|
||||||
@@ -62,7 +72,7 @@ class NToolDialog(QDialog):
|
|||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
class NNonBlockingDialog(QDialog):
|
class NNonBlockingDialog(NDialog):
|
||||||
|
|
||||||
def __init__(self, parent: QWidget | None = None) -> None:
|
def __init__(self, parent: QWidget | None = None) -> None:
|
||||||
super().__init__(parent=parent)
|
super().__init__(parent=parent)
|
||||||
|
|||||||
@@ -28,19 +28,20 @@ import random
|
|||||||
|
|
||||||
from PyQt5.QtCore import Qt, pyqtSlot
|
from PyQt5.QtCore import Qt, pyqtSlot
|
||||||
from PyQt5.QtWidgets import (
|
from PyQt5.QtWidgets import (
|
||||||
QDialog, QDialogButtonBox, QGridLayout, QHBoxLayout, QLabel, QSpinBox,
|
QDialogButtonBox, QGridLayout, QHBoxLayout, QLabel, QSpinBox, QVBoxLayout,
|
||||||
QVBoxLayout, QWidget
|
QWidget
|
||||||
)
|
)
|
||||||
|
|
||||||
from novelwriter import CONFIG, SHARED
|
from novelwriter import CONFIG, SHARED
|
||||||
from novelwriter.common import readTextFile
|
from novelwriter.common import readTextFile
|
||||||
|
from novelwriter.extensions.modified import NDialog
|
||||||
from novelwriter.extensions.switch import NSwitch
|
from novelwriter.extensions.switch import NSwitch
|
||||||
from novelwriter.types import QtAlignLeft, QtAlignRight, QtDialogClose, QtRoleAction
|
from novelwriter.types import QtAlignLeft, QtAlignRight, QtDialogClose, QtRoleAction
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class GuiLipsum(QDialog):
|
class GuiLipsum(NDialog):
|
||||||
|
|
||||||
def __init__(self, parent: QWidget) -> None:
|
def __init__(self, parent: QWidget) -> None:
|
||||||
super().__init__(parent=parent)
|
super().__init__(parent=parent)
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ from pathlib import Path
|
|||||||
from PyQt5.QtCore import QTimer, pyqtSlot
|
from PyQt5.QtCore import QTimer, pyqtSlot
|
||||||
from PyQt5.QtGui import QCloseEvent
|
from PyQt5.QtGui import QCloseEvent
|
||||||
from PyQt5.QtWidgets import (
|
from PyQt5.QtWidgets import (
|
||||||
QAbstractButton, QAbstractItemView, QDialog, QDialogButtonBox, QFileDialog,
|
QAbstractButton, QAbstractItemView, QDialogButtonBox, QFileDialog,
|
||||||
QGridLayout, QHBoxLayout, QLabel, QLineEdit, QListWidget, QListWidgetItem,
|
QGridLayout, QHBoxLayout, QLabel, QLineEdit, QListWidget, QListWidgetItem,
|
||||||
QPushButton, QSplitter, QVBoxLayout, QWidget
|
QPushButton, QSplitter, QVBoxLayout, QWidget
|
||||||
)
|
)
|
||||||
@@ -42,14 +42,14 @@ from novelwriter.core.buildsettings import BuildSettings
|
|||||||
from novelwriter.core.docbuild import NWBuildDocument
|
from novelwriter.core.docbuild import NWBuildDocument
|
||||||
from novelwriter.core.item import NWItem
|
from novelwriter.core.item import NWItem
|
||||||
from novelwriter.enum import nwBuildFmt
|
from novelwriter.enum import nwBuildFmt
|
||||||
from novelwriter.extensions.modified import NIconToolButton
|
from novelwriter.extensions.modified import NDialog, NIconToolButton
|
||||||
from novelwriter.extensions.simpleprogress import NProgressSimple
|
from novelwriter.extensions.simpleprogress import NProgressSimple
|
||||||
from novelwriter.types import QtAlignCenter, QtDialogClose, QtRoleAction, QtRoleReject, QtUserRole
|
from novelwriter.types import QtAlignCenter, QtDialogClose, QtRoleAction, QtRoleReject, QtUserRole
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class GuiManuscriptBuild(QDialog):
|
class GuiManuscriptBuild(NDialog):
|
||||||
"""GUI Tools: Manuscript Build Dialog
|
"""GUI Tools: Manuscript Build Dialog
|
||||||
|
|
||||||
This is the tool for running the build itself. It can be accessed
|
This is the tool for running the build itself. It can be accessed
|
||||||
|
|||||||
@@ -34,8 +34,8 @@ from PyQt5.QtCore import (
|
|||||||
)
|
)
|
||||||
from PyQt5.QtGui import QCloseEvent, QColor, QFont, QPainter, QPaintEvent, QPen
|
from PyQt5.QtGui import QCloseEvent, QColor, QFont, QPainter, QPaintEvent, QPen
|
||||||
from PyQt5.QtWidgets import (
|
from PyQt5.QtWidgets import (
|
||||||
QAction, QApplication, QDialog, QFileDialog, QFormLayout, QHBoxLayout,
|
QAction, QApplication, QFileDialog, QFormLayout, QHBoxLayout, QLabel,
|
||||||
QLabel, QLineEdit, QListView, QMenu, QPushButton, QScrollArea, QShortcut,
|
QLineEdit, QListView, QMenu, QPushButton, QScrollArea, QShortcut,
|
||||||
QStackedWidget, QStyledItemDelegate, QStyleOptionViewItem, QVBoxLayout,
|
QStackedWidget, QStyledItemDelegate, QStyleOptionViewItem, QVBoxLayout,
|
||||||
QWidget
|
QWidget
|
||||||
)
|
)
|
||||||
@@ -46,7 +46,7 @@ from novelwriter.constants import nwFiles
|
|||||||
from novelwriter.core.coretools import ProjectBuilder
|
from novelwriter.core.coretools import ProjectBuilder
|
||||||
from novelwriter.enum import nwItemClass
|
from novelwriter.enum import nwItemClass
|
||||||
from novelwriter.extensions.configlayout import NWrappedWidgetBox
|
from novelwriter.extensions.configlayout import NWrappedWidgetBox
|
||||||
from novelwriter.extensions.modified import NIconToolButton, NSpinBox
|
from novelwriter.extensions.modified import NDialog, NIconToolButton, NSpinBox
|
||||||
from novelwriter.extensions.switch import NSwitch
|
from novelwriter.extensions.switch import NSwitch
|
||||||
from novelwriter.extensions.versioninfo import VersionInfoWidget
|
from novelwriter.extensions.versioninfo import VersionInfoWidget
|
||||||
from novelwriter.types import QtAlignLeft, QtAlignRightTop, QtSelected
|
from novelwriter.types import QtAlignLeft, QtAlignRightTop, QtSelected
|
||||||
@@ -56,7 +56,7 @@ logger = logging.getLogger(__name__)
|
|||||||
PANEL_ALPHA = 178
|
PANEL_ALPHA = 178
|
||||||
|
|
||||||
|
|
||||||
class GuiWelcome(QDialog):
|
class GuiWelcome(NDialog):
|
||||||
|
|
||||||
openProjectRequest = pyqtSignal(Path)
|
openProjectRequest = pyqtSignal(Path)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user