Example #1
0
class GAppLayerDocker(GDocker):
    def __init__(self, parent=None, layerSet=None, linkedCanvas=None):
        GDocker.__init__(self, parent)

        maxDockerElem = 4
        if len(layerSet) < maxDockerElem:
            maxDockerElem = len(layerSet)

        widgetsWidth = parent.width() / maxDockerElem

        # Set dock parameters
        self.setAllowedAreas(Qt.LeftDockWidgetArea | Qt.RightDockWidgetArea)
        self.setFeatures(QDockWidget.DockWidgetMovable)
        self.setMinimumWidth(widgetsWidth)

        # Set main container parameter
        self._container = QWidget(self)
        self._container.setMinimumWidth(widgetsWidth)
        self.setWidget(self._container)

        # Vertical layout for the container (vertical dock)
        self._layout = QVBoxLayout(self._container)

        # Store the canvas of layers
        self._layerPortfolio = []

        # For each layer in layer set :
        for i in range(0, len(layerSet)):
            # Create a new widget
            layerWidget = GAppLayerW(layerSet[i], layerSet.rawLayers[i],
                                     linkedCanvas, self)

            # Set its properties
            layerWidget.setMinimumWidth(widgetsWidth)

            # Connect its with main canvas
            self.connect(linkedCanvas, SIGNAL("mapCanvasRefreshed()"),
                         layerWidget.refreshExtent)

            # Add it to portfolio and display it
            self._layerPortfolio.append(layerWidget)
            self._layout.addWidget(layerWidget)

    def moveWidgetUp(self, widget):
        newIndex = self._layout.indexOf(widget) - 1
        if newIndex >= 0:
            self._layout.removeWidget(widget)
            self._layout.insertWidget(newIndex, widget)

    def moveWidgetDown(self, widget):
        newIndex = self._layout.indexOf(widget) + 1
        if newIndex < len(self._layout):
            self._layout.removeWidget(widget)
            self._layout.insertWidget(newIndex, widget)

    def _getLayout(self):
        return self._layout

    layout = property(_getLayout)