Source code for layer_viewer.layer_view_widget

import pyqtgraph as pg
from pyqtgraph.Qt import QtCore, QtGui


_nameToPattern = {
    "SolidPattern": QtCore.Qt.SolidPattern,
    "LinearGradientPattern": QtCore.Qt.LinearGradientPattern,
    "Dense1Pattern": QtCore.Qt.Dense1Pattern,
    "Dense2Pattern": QtCore.Qt.Dense2Pattern,
    "Dense3Pattern": QtCore.Qt.Dense3Pattern,
    "Dense4Pattern": QtCore.Qt.Dense4Pattern,
    "Dense5Pattern": QtCore.Qt.Dense5Pattern,
    "Dense6Pattern": QtCore.Qt.Dense6Pattern,
    "Dense7Pattern": QtCore.Qt.Dense7Pattern,
    "NoBrush": QtCore.Qt.NoBrush,
    "HorPattern": QtCore.Qt.HorPattern,
    "VerPattern": QtCore.Qt.VerPattern,
    "CrossPattern": QtCore.Qt.CrossPattern,
    "BDiagPattern": QtCore.Qt.BDiagPattern,
    "FDiagPattern": QtCore.Qt.FDiagPattern,
    "DiagCrossPattern": QtCore.Qt.DiagCrossPattern,
}


[docs]def getQtPattern(name): return _nameToPattern[str(name)]
[docs]class MyViewBox(pg.ViewBox): def __init__(self): super(MyViewBox, self).__init__()
[docs] def keyPressEvent(self, ev): pass
# ev.ignore()
[docs]class LayerViewWidget(QtGui.QWidget): def __init__(self, settings_widget, parent=None): QtGui.QWidget.__init__(self, parent) self.graphView = pg.GraphicsView() self.graphViewLayout = QtGui.QGraphicsGridLayout() self.graphView.centralWidget.setLayout(self.graphViewLayout) # self.setPolicy(self.graphView,QtGui.QSizePolicy.Expanding) # view box self.view_box = MyViewBox() # parent=self) self.view_box.setAspectLocked(True) # add view box to graph view layout self.graphViewLayout.addItem(self.view_box, 0, 0) self.hbox = QtGui.QHBoxLayout() self.setLayout(self.hbox) self.hbox.addWidget(self.graphView) # flip the view box self.view_box.invertY(True) self.settings_widget = settings_widget def bg_change(*args, **kwargs): # print("waerawe") self.setBackground() bg_params = settings_widget.p.param("ViewBox Options", "ViewBox Background") # Too lazy for recursion: for child in bg_params.children(): child.sigValueChanged.connect(bg_change) for ch2 in child.children(): ch2.sigValueChanged.connect(bg_change) self.setBackground() s = self.view_box.menu.addAction("Settings") s.triggered.connect(self.showSettings)
[docs] def showSettings(self): print("settings") self.settings_widget.show()
[docs] def setBackground(self): self.bgType = self.settings_widget.p[ ("ViewBox Options", "ViewBox Background", "bg-type") ] self.bgColor1 = self.settings_widget.p[ ("ViewBox Options", "ViewBox Background", "bg-color 1") ] self.bgColor2 = self.settings_widget.p[ ("ViewBox Options", "ViewBox Background", "bg-color 2") ] bg = self.view_box.background self.view_box.background.show() bg.setVisible(True) if self.bgType == "LinearGradientPattern": g = QtGui.QLinearGradient( QtCore.QRectF(self.rect()).topLeft(), QtCore.QRectF(self.rect()).bottomLeft(), ) g.setColorAt(0, self.bgColor1) g.setColorAt(1, self.bgColor2) brush = QtGui.QBrush(g) else: brush = QtGui.QBrush() brush.setStyle(getQtPattern(self.bgType)) brush.setColor(self.bgColor1) bg.setBrush(brush)