import pyqtgraph as pg
import os
from pyqtgraph.Qt import QtCore, QtGui
[docs]class ToggleEye(QtGui.QLabel):
activeChanged = QtCore.pyqtSignal(bool)
def __init__(self, parent=None):
super(ToggleEye, self).__init__(parent=parent)
self._active = True
path = os.path.dirname(os.path.abspath(__file__))
self._eye_open = QtGui.QPixmap(os.path.join(path, "icons/stock-eye-20.png"))
self._eye_closed = QtGui.QPixmap(
os.path.join(path, "icons/stock-eye-20-gray.png")
)
self.setPixmap(self._eye_open)
[docs] def active(self):
return self._active
[docs] def setActive(self, b):
if b == self._active:
return
self._active = b
if b:
self.setPixmap(self._eye_open)
else:
self.setPixmap(self._eye_closed)
[docs] def toggle(self):
if self.active():
self.setActive(False)
else:
self.setActive(True)
[docs] def mousePressEvent(self, ev):
self.toggle()
self.activeChanged.emit(self._active)
[docs]class TrippleToggleEye(QtGui.QLabel):
stateChanged = QtCore.pyqtSignal(int)
def __init__(self, parent=None):
super(TrippleToggleEye, self).__init__(parent=parent)
self._state = 1
path = os.path.dirname(os.path.abspath(__file__))
self._eye_open = QtGui.QPixmap(os.path.join(path, "icons/stock-eye-20.png"))
self._eye_closed = QtGui.QPixmap(
os.path.join(path, "icons/stock-eye-20-gray.png")
)
self._eye_open_exclusive = QtGui.QPixmap(
os.path.join(path, "icons/stock-eye-green.png")
)
self._state_to_pixmap = {
0: self._eye_closed,
1: self._eye_open,
2: self._eye_open_exclusive,
}
self.setPixmap(self._eye_open)
self.last = 1
[docs] def mousePressEvent(self, event):
self.last = 1
[docs] def mouseDoubleClickEvent(self, event):
self.last = 2
[docs] def setState(self, state):
if state != self._state:
self._state = state
self.setPixmap(self._state_to_pixmap[self._state])
[docs] def setActive(self, binary_state):
self.setState(bool(binary_state))
[docs] def state(self):
return self._state
[docs] def mouseReleaseEvent(self, event):
if self.last == 1:
if self._state == 0:
self._state = 1
elif self._state == 1 or self._state == 2:
self._state = 0
else:
self._state = 2
self.setPixmap(self._state_to_pixmap[self._state])
# print("emit change ",self._state)
self.stateChanged.emit(self._state)