client/securedrop_client/gui/base/checkbox.py (32 lines of code) (raw):
"""
SecureDrop customized passphrase checkbox control
A checkbox control created to toggle with hiding and showing PasswordEdit passphrases.
Consists of a QCheckBox and a QLabel positioned horizontally within a QFrame.
Present in the Sign-in and Export Dialog.
"""
from gettext import gettext as _
from PyQt5.QtCore import Qt, pyqtSignal
from PyQt5.QtGui import QCursor, QFont, QMouseEvent
from PyQt5.QtWidgets import QCheckBox, QFrame, QHBoxLayout, QLabel, QWidget
from securedrop_client.resources import load_relative_css
class SDCheckBox(QWidget):
clicked = pyqtSignal()
PASSPHRASE_LABEL_SPACING = 1
def __init__(self) -> None:
super().__init__()
self.setObjectName("ShowPassphrase_widget")
self.setStyleSheet(load_relative_css(__file__, "checkbox.css"))
font = QFont()
font.setLetterSpacing(QFont.AbsoluteSpacing, self.PASSPHRASE_LABEL_SPACING)
self._layout = QHBoxLayout()
self._layout.setContentsMargins(0, 0, 0, 0)
self._layout.setSpacing(0)
self.setLayout(self._layout)
self.frame = QFrame()
self.frame.setLayout(QHBoxLayout())
self.frame.layout().setContentsMargins(0, 0, 0, 0)
self.frame.layout().setSpacing(0)
self.checkbox = QCheckBox()
self.label = QLabel(_("Show Passphrase"))
self.label.setFont(font)
self._layout.addWidget(self.frame)
self.frame.layout().addWidget(self.checkbox)
self.frame.layout().addWidget(self.label)
self.frame.setCursor(QCursor(Qt.PointingHandCursor))
self.clicked.connect(self.checkbox.click)
def mousePressEvent(self, e: QMouseEvent) -> None:
self.clicked.emit()