forked from Support/sp-hydra-veil-gui
68 lines
2.3 KiB
Python
Executable file
68 lines
2.3 KiB
Python
Executable file
from PyQt6.QtWidgets import QLabel, QApplication
|
|
from PyQt6.QtGui import QPainter, QColor
|
|
from PyQt6.QtCore import Qt, QTimer, pyqtSignal
|
|
|
|
|
|
class ClickableLabel(QLabel):
|
|
clicked = pyqtSignal()
|
|
|
|
def __init__(self, text, parent=None, **kwargs):
|
|
super().__init__(text, parent, **kwargs)
|
|
self.setCursor(Qt.CursorShape.PointingHandCursor)
|
|
self.hover_width = self.width()
|
|
self.is_hovered = False
|
|
|
|
def mousePressEvent(self, event):
|
|
self.clicked.emit()
|
|
super().mousePressEvent(event)
|
|
|
|
def enterEvent(self, event):
|
|
self.is_hovered = True
|
|
self.update()
|
|
super().enterEvent(event)
|
|
|
|
def leaveEvent(self, event):
|
|
self.is_hovered = False
|
|
self.update()
|
|
super().leaveEvent(event)
|
|
|
|
def set_hover_width(self, width):
|
|
self.hover_width = width
|
|
self.update()
|
|
|
|
def paintEvent(self, event):
|
|
super().paintEvent(event)
|
|
if self.is_hovered:
|
|
painter = QPainter(self)
|
|
painter.setRenderHint(QPainter.RenderHint.Antialiasing)
|
|
hover_color = QColor(255, 255, 255, 25)
|
|
|
|
center_x = self.width() // 2
|
|
start_x = center_x - (self.hover_width // 2)
|
|
painter.fillRect(start_x, 0, self.hover_width,
|
|
self.height(), hover_color)
|
|
painter.end()
|
|
|
|
|
|
class ClickableValueLabel(QLabel):
|
|
def __init__(self, text: str, parent=None):
|
|
super().__init__(text, parent)
|
|
self.setObjectName("value_label")
|
|
self.setStyleSheet(
|
|
"color: #00ffff; font-size: 13px; font-weight: bold;")
|
|
self.setCursor(Qt.CursorShape.PointingHandCursor)
|
|
self.timer = QTimer(self)
|
|
self.timer.setSingleShot(True)
|
|
self.timer.timeout.connect(self.reset_style)
|
|
self.default_style = "color: #00ffff; font-size: 13px; font-weight: bold;"
|
|
self.success_style = "color: #00ff00; font-size: 13px; font-weight: bold;"
|
|
|
|
def mousePressEvent(self, event):
|
|
if event.button() == Qt.MouseButton.LeftButton:
|
|
clipboard = QApplication.clipboard()
|
|
clipboard.setText(self.text())
|
|
self.setStyleSheet(self.success_style)
|
|
self.timer.start(100)
|
|
|
|
def reset_style(self):
|
|
self.setStyleSheet(self.default_style)
|