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 )