Source code for layer_viewer.layers.layer_controller

from ..widgets import TrippleToggleEye, ToggleEye, FractionSelectionBar, GradientWidget
import pyqtgraph as pg
import os
from pyqtgraph.Qt import QtCore, QtGui
import numpy

###############################################################################
import warnings
from PyQt5.QtCore import (
    pyqtSignal,
    Qt,
    QEvent,
    QRect,
    QSize,
    QTimer,
    QPoint,
    QItemSelectionModel,
)
from PyQt5.QtGui import QPainter, QFontMetrics, QFont, QPalette, QMouseEvent, QPixmap
from PyQt5.QtWidgets import (
    QStyledItemDelegate,
    QWidget,
    QListView,
    QStyle,
    QLabel,
    QGridLayout,
    QSpinBox,
    QApplication,
)


[docs]class LayerItemWidget(QWidget): def __init__( self, name=None, parent=None, add_gradient_widgtet=False, channel_selector=False, add_as_rgb_button=False, ): super(LayerItemWidget, self).__init__(parent=parent) # self._layer = None self._font = QFont(QFont().defaultFamily(), 9) self._fm = QFontMetrics(self._font) self.bar = FractionSelectionBar(initial_fraction=1.0) self.bar.setFixedHeight(10) self.nameLabel = QLabel(parent=self) self.nameLabel.setFont(self._font) self.nameLabel.setText(str(name)) self.opacityLabel = QLabel(parent=self) self.opacityLabel.setAlignment(Qt.AlignRight) self.opacityLabel.setFont(self._font) self.opacityLabel.setText(u"\u03B1=%0.1f%%" % (100.0 * (self.bar.fraction()))) self.toggleEye = TrippleToggleEye(parent=self) self.toggleEye.setActive(True) self.toggleEye.setFixedWidth(35) self.toggleEye.setToolTip("Visibility") self.channelSelector = QSpinBox(parent=self) self.channelSelector.setFrame(False) self.channelSelector.setFont(self._font) self.channelSelector.setMaximumWidth(35) self.channelSelector.setAlignment(Qt.AlignRight) self.channelSelector.setToolTip("Channel") self.channelSelector.setVisible(channel_selector) self._layout = QtGui.QGridLayout(self) self._layout.addWidget(self.toggleEye, 0, 0) self._layout.addWidget(self.nameLabel, 0, 1) self._layout.addWidget(self.opacityLabel, 0, 2) self._layout.addWidget(self.channelSelector, 1, 0) self._layout.addWidget(self.bar, 1, 1, 1, 2) if add_gradient_widgtet: self.gradientWidget = GradientWidget(orientation="top") self.gradientWidget.loadPreset("grey") self._layout.addWidget(self.gradientWidget, 3, 1, 1, 2) # if add_as_rgb_button: # self.asRgb = QCheckBox( ) # #self.asRgb.setFrame( False ) # #self.asRgb.setFont( self._font ) # self.asRgb.setMaximumWidth( 35 ) # self.asRgb.setAlignment(Qt.AlignRight) # self.asRgb.setToolTip("Show As RGB") # #self.asRgb.setVisible(channel_selector) # self._layout.addWidget( self.gradientWidget, 3,0,1,2) self._layout.setColumnMinimumWidth(2, 35) self._layout.setSpacing(0) self.setLayout(self._layout) def f(frac): self.opacityLabel.setText( u"\u03B1=%0.1f%%" % (100.0 * (self.bar.fraction())) ) self.bar.fractionChanged.connect(f)
[docs] def setFraction(self, opacity): self.bar.setFraction(opacity) self.opacityLabel.setText(u"\u03B1=%0.1f%%" % (100.0 * (self.bar.fraction())))
[docs] def setName(self, name): self.nameLabel.setText(str(name))
[docs] def mousePressEvent(self, ev): super(LayerItemWidget, self).mousePressEvent(ev)