From 1b34bc30c7a107585949c1d2abfaa11b1af72d1e Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Sun, 29 Dec 2024 17:29:07 +0100 Subject: [PATCH] Add a modified label widget that emits a click signal --- novelwriter/extensions/modified.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/novelwriter/extensions/modified.py b/novelwriter/extensions/modified.py index f9062b39..0a6fa6e0 100644 --- a/novelwriter/extensions/modified.py +++ b/novelwriter/extensions/modified.py @@ -30,14 +30,15 @@ from __future__ import annotations from enum import Enum from typing import TYPE_CHECKING -from PyQt5.QtCore import QSize, Qt, pyqtSlot -from PyQt5.QtGui import QWheelEvent +from PyQt5.QtCore import QSize, Qt, pyqtSignal, pyqtSlot +from PyQt5.QtGui import QMouseEvent, QWheelEvent from PyQt5.QtWidgets import ( - QApplication, QComboBox, QDialog, QDoubleSpinBox, QSpinBox, QToolButton, - QWidget + QApplication, QComboBox, QDialog, QDoubleSpinBox, QLabel, QSpinBox, + QToolButton, QWidget ) from novelwriter import CONFIG, SHARED +from novelwriter.types import QtMouseLeft if TYPE_CHECKING: # pragma: no cover from novelwriter.guimain import GuiMain @@ -196,3 +197,14 @@ class NIconToggleButton(QToolButton): iconSize = self.iconSize() self.setIcon(SHARED.theme.getToggleIcon(iconKey, (iconSize.width(), iconSize.height()))) return + + +class NClickableLabel(QLabel): + + mouseClick = pyqtSignal() + + def mousePressEvent(self, event: QMouseEvent) -> None: + """Capture a left mouse click and emit its signal.""" + if event.button() == QtMouseLeft: + self.mouseClick.emit() + return super().mousePressEvent(event)