import pyqtgraph as pg
from pyqtgraph.Qt import QtCore, QtGui
from pyqtgraph.dockarea import *
from .layer_view_widget import LayerViewWidget
from .layer_ctrl_widget import LayerCtrlWidget
from .settings_widget import SettingsWidget
[docs]class LayerViewerObject(object):
def __init__(self, parent=None):
#sQtCore.QObject.__init__(self, parent)
self.m_settings_widget = SettingsWidget()
self.m_layer_view_widget = LayerViewWidget(settings_widget=self.settings_widget)
self.m_layer_ctrl_widget = LayerCtrlWidget()
self.m_layers = dict()
self.m_exlusive_layer = None
@property
def layer_view_widget(self):
return self.m_layer_view_widget
@property
def layer_ctrl_widget(self):
return self.m_layer_ctrl_widget
@property
def settings_widget(self):
return self.m_settings_widget
@property
def view_box(self):
return self.m_layer_view_widget.view_box
[docs] def addLayer(self, layer, opacity=1.0, visible=True):
image_item = layer.get_image_item()
self.m_layer_ctrl_widget.add_layer(layer)
self.view_box.addItem(image_item)
self.m_layers[layer.name] = layer
self.setLayerVisibility(layer.name, bool(visible))
self.setLayerOpacity(layer.name, float(opacity))
layer.viewer = self
[docs] def removeAllLayers(self):
to_rm = list(self.m_layers.keys())
for l in to_rm:
self.removeLayer(l)
[docs] def removeLayer(self, layer_name):
layer = self.m_layers[layer_name]
self.view_box.removeItem(layer.get_image_item())
self.m_layer_ctrl_widget.remove_layer(layer)
del self.m_layers[layer_name]
[docs] def hasLayer(self, layer_name):
return layer_name in self.m_layers
[docs] def layerVisibility(self, layer_name):
layer = self.m_layers[layer_name]
image_item = layer.get_image_item()
return image_item.isVisible()
[docs] def layerOpacity(self, layer_name):
layer = self.m_layers[layer_name]
image_item = layer.get_image_item()
return image_item.opacity()
[docs] def setLayerVisibility(self, layer_name, visible):
self.m_layers[layer_name].setVisible(visible)
[docs] def setLayerOpacity(self, layer_name, opacity):
self.m_layers[layer_name].setOpacity(opacity)
[docs] def updateData(self, layer_name, **kwargs):
self.m_layers[layer_name].updateData(**kwargs)
[docs] def setData(self, layer_name, **kwargs):
self.m_layers[layer_name].setData(**kwargs)
[docs] def showAndHideOthers(self, layer_name):
for ln in self.m_layers.keys():
layer = self.m_layers[ln]
if ln == layer_name:
layer.setVisible(2)
self.m_exlusive_layer = layer
else:
layer.setVisible(False)