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. )
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())))