コード例 #1
0
 def primaryDEMChanged(self, layerId):
     tree = self.ui.treeWidget
     parent = tree.topLevelItem(ObjectTreeItem.topItemIndex(ObjectTreeItem.ITEM_OPTDEM))
     tree.blockSignals(True)
     for i in range(parent.childCount()):
         item = parent.child(i)
         isPrimary = item.data(0, Qt.UserRole) == layerId
         item.setDisabled(isPrimary)
     tree.blockSignals(False)
コード例 #2
0
    def currentTemplateChanged(self, index=None):
        cbox = self.ui.comboBox_Template
        templateType = cbox.itemData(cbox.currentIndex(), Qt.UserRole)
        if templateType == self.templateType:
            return

        # hide items unsupported by template
        tree = self.ui.treeWidget
        for i, id in enumerate(ObjectTreeItem.topItemIds):
            hidden = templateType == "sphere" and id != ObjectTreeItem.ITEM_CONTROLS
            tree.topLevelItem(i).setHidden(hidden)

        # set current tree item
        if templateType == "sphere":
            tree.setCurrentItem(tree.topLevelItem(ObjectTreeItem.topItemIndex(ObjectTreeItem.ITEM_CONTROLS)))
        elif self.lastTreeItemData is None or not self.setCurrentTreeItemByData(
            self.lastTreeItemData
        ):  # restore selection
            tree.setCurrentItem(
                tree.topLevelItem(ObjectTreeItem.topItemIndex(ObjectTreeItem.ITEM_DEM))
            )  # default selection for plain is DEM

        # display messages
        self.clearMessageBar()
        if templateType != "sphere":
            # show message if crs unit is degrees
            mapSettings = (
                self.iface.mapCanvas().mapSettings()
                if QGis.QGIS_VERSION_INT >= 20300
                else self.iface.mapCanvas().mapRenderer()
            )
            if mapSettings.destinationCrs().mapUnits() in [QGis.Degrees]:
                self.showMessageBar(
                    "The unit of current CRS is degrees, so terrain may not appear well.", QgsMessageBar.WARNING
                )

        self.templateType = templateType