From 1a445e2f77e40b962059794f2ed730a9ba1ef14b Mon Sep 17 00:00:00 2001 From: Jakub Trllo Date: Wed, 7 Feb 2024 12:25:09 +0100 Subject: [PATCH] added back password_dialog and implemented 'PressHoverButton' in utils --- client/ayon_core/tools/utils/__init__.py | 3 ++ client/ayon_core/tools/utils/widgets.py | 35 +++++++++++++++++++++ client/ayon_core/widgets/password_dialog.py | 33 +++++++++++++++++++ 3 files changed, 71 insertions(+) create mode 100644 client/ayon_core/widgets/password_dialog.py diff --git a/client/ayon_core/tools/utils/__init__.py b/client/ayon_core/tools/utils/__init__.py index 5e1429752e..2a9d1fc56b 100644 --- a/client/ayon_core/tools/utils/__init__.py +++ b/client/ayon_core/tools/utils/__init__.py @@ -15,6 +15,8 @@ from .widgets import ( IconButton, PixmapButton, SeparatorWidget, + PressHoverButton, + VerticalExpandButton, SquareButton, RefreshButton, @@ -71,6 +73,7 @@ __all__ = ( "IconButton", "PixmapButton", "SeparatorWidget", + "PressHoverButton", "VerticalExpandButton", "SquareButton", diff --git a/client/ayon_core/tools/utils/widgets.py b/client/ayon_core/tools/utils/widgets.py index 29bafb3a6b..1d4f85246f 100644 --- a/client/ayon_core/tools/utils/widgets.py +++ b/client/ayon_core/tools/utils/widgets.py @@ -782,6 +782,41 @@ class SeparatorWidget(QtWidgets.QFrame): self._set_size(self._size) +class PressHoverButton(QtWidgets.QPushButton): + _mouse_pressed = False + _mouse_hovered = False + change_state = QtCore.Signal(bool) + + @property + def mouse_pressed(self): + return self._mouse_pressed + + @property + def mouse_hovered(self): + return self._mouse_hovered + + def mousePressEvent(self, event): + self._mouse_pressed = True + self._mouse_hovered = True + self.change_state.emit(self._mouse_hovered) + super(PressHoverButton, self).mousePressEvent(event) + + def mouseReleaseEvent(self, event): + self._mouse_pressed = False + self._mouse_hovered = False + self.change_state.emit(self._mouse_hovered) + super(PressHoverButton, self).mouseReleaseEvent(event) + + def mouseMoveEvent(self, event): + mouse_pos = self.mapFromGlobal(QtGui.QCursor.pos()) + under_mouse = self.rect().contains(mouse_pos) + if under_mouse != self._mouse_hovered: + self._mouse_hovered = under_mouse + self.change_state.emit(self._mouse_hovered) + + super(PressHoverButton, self).mouseMoveEvent(event) + + def get_refresh_icon(): return get_qta_icon_by_name_and_color( "fa.refresh", get_default_tools_icon_color() diff --git a/client/ayon_core/widgets/password_dialog.py b/client/ayon_core/widgets/password_dialog.py new file mode 100644 index 0000000000..a4c50128ff --- /dev/null +++ b/client/ayon_core/widgets/password_dialog.py @@ -0,0 +1,33 @@ +# TODO remove - kept for kitsu addon which imported it +from qtpy import QtWidgets, QtCore, QtGui + + +class PressHoverButton(QtWidgets.QPushButton): + """ + Deprecated: + Use `openpype.tools.utils.PressHoverButton` instead. + """ + _mouse_pressed = False + _mouse_hovered = False + change_state = QtCore.Signal(bool) + + def mousePressEvent(self, event): + self._mouse_pressed = True + self._mouse_hovered = True + self.change_state.emit(self._mouse_hovered) + super(PressHoverButton, self).mousePressEvent(event) + + def mouseReleaseEvent(self, event): + self._mouse_pressed = False + self._mouse_hovered = False + self.change_state.emit(self._mouse_hovered) + super(PressHoverButton, self).mouseReleaseEvent(event) + + def mouseMoveEvent(self, event): + mouse_pos = self.mapFromGlobal(QtGui.QCursor.pos()) + under_mouse = self.rect().contains(mouse_pos) + if under_mouse != self._mouse_hovered: + self._mouse_hovered = under_mouse + self.change_state.emit(self._mouse_hovered) + + super(PressHoverButton, self).mouseMoveEvent(event)