Source code for layer_viewer.widgets.toggle_eye

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)