Source code for layer_viewer.layer_ctrl_widget
import pyqtgraph as pg
from pyqtgraph.Qt import QtCore, QtGui
import os
[docs]class DrangAndDropListWidget(QtGui.QListWidget):
def __init__(self, parent=None):
QtGui.QListWidget.__init__(self, parent)
# Enable drag & drop ordering of items.
self.setDragDropMode(QtGui.QAbstractItemView.InternalMove)
[docs] def dropEvent(self, e):
pass
super(DrangAndDropListWidget, self).dropEvent(e)
n = self.count()
for i in range(self.count()):
item = self.item(i)
w = self.itemWidget(item)
layer = w.layer
# layer.setZValue(n - 1 - i)
layer.setZValue(i)
[docs]class LayerCtrlWidget(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.widget_layout = QtGui.QVBoxLayout()
self.list_widget = DrangAndDropListWidget(parent=self)
# self.list_widget.horizontalScrollBar().setDisabled(True);
self.widget_layout.addWidget(self.list_widget)
self.setLayout(self.widget_layout)
self.n_layers = 0
[docs] def remove_layer(self, layer):
_list_widget_item = layer._list_widget_item
qIndex = self.list_widget.indexFromItem(_list_widget_item)
self.list_widget.model().removeRow(qIndex.row())
[docs] def add_layer(self, layer):
w = layer.ctrl_widget()
w.toggleEye.setActive(True)
myQListWidgetItem = QtGui.QListWidgetItem()
myQListWidgetItem.setSizeHint(w.sizeHint())
layer._list_widget_item = myQListWidgetItem
self.list_widget.addItem(myQListWidgetItem)
self.list_widget.setItemWidget(myQListWidgetItem, w)
# w.toggleEye.activeChanged.connect(layer.setVisible)
# w.bar.fractionChanged.connect(layer.setOpacity)
self.n_layers += 1
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
widget = LayerCtrlWidget()
widget.show()
sys.exit(app.exec_())