class LayerItemWidget(QWidget): def __init__(self, layer, parent=None): super(LayerItemWidget, self).__init__(parent) self.layer = layer self.layout = QHBoxLayout() self.check = QCheckBox() self.check.setText(layer.name()) if layer.type() == layer.VectorLayer: self.check.setIcon( QgsApplication().getThemeIcon('/mIconLineLayer.svg')) else: self.check.setIcon( QgsApplication().getThemeIcon('/mIconRaster.svg')) self.labelMetadata = QLabel() self.labelMetadata.setFixedWidth(50) self.labelData = QLabel() self.labelData.setFixedWidth(50) self.layout.addWidget(self.check) self.layout.addWidget(self.labelData) self.layout.addWidget(self.labelMetadata) self.setLayout(self.layout) def name(self): return self.layer.name() @staticmethod def setIcon(label, server): pixmap = QPixmap( files.getIconPath(server.__class__.__name__.lower()[:-6])) label.setPixmap(pixmap) def setMetadataPublished(self, server): self.setIcon(self.labelMetadata, server) def setDataPublished(self, server): self.setIcon(self.labelData, server) def checked(self): return self.check.isChecked() def setCheckState(self, state): self.check.setCheckState(state)
class LayerItemWidget(QWidget): def __init__(self, layer, parent=None): super(LayerItemWidget, self).__init__(parent) self.layer = layer self.layout = QHBoxLayout() self.check = QCheckBox() self.check.setText(layer.name()) if layer.type() == layer.VectorLayer: self.check.setIcon( QgsApplication.getThemeIcon('/mIconLineLayer.svg')) else: self.check.setIcon(QgsApplication.getThemeIcon('/mIconRaster.svg')) self.labelMetadata = QLabel() self.labelMetadata.setFixedWidth(50) self.labelData = QLabel() self.labelData.setFixedWidth(50) self.layout.addWidget(self.check) self.layout.addWidget(self.labelData) self.layout.addWidget(self.labelMetadata) self.setLayout(self.layout) def name(self): return self.layer.name() def iconPath(self, server): return os.path.join(os.path.dirname(os.path.dirname(__file__)), "icons", "%s.png" % server.__class__.__name__.lower()[:-6]) def setMetadataPublished(self, server): self.labelMetadata.setPixmap(QPixmap(self.iconPath(server))) def setDataPublished(self, server): self.labelData.setPixmap(QPixmap(self.iconPath(server))) def checked(self): return self.check.isChecked() def setCheckState(self, state): self.check.setCheckState(state)
class LayerItemWidget(QWidget): def __init__(self, layer, parent=None): super(LayerItemWidget, self).__init__(parent) self._name = layer.name() self._id = layer.id() self._checkbox = QCheckBox() self._checkbox.setText(self._name) if layer.type() == layer.VectorLayer: self._checkbox.setIcon(QgsApplication.getThemeIcon('/mIconLineLayer.svg')) else: self._checkbox.setIcon(QgsApplication.getThemeIcon('/mIconRaster.svg')) self._metalabel = QLabel() self._metalabel.setFixedWidth(20) self._datalabel = QLabel() self._datalabel.setFixedWidth(20) layout = QHBoxLayout() layout.addWidget(self._checkbox) layout.addWidget(self._datalabel) layout.addWidget(self._metalabel) self.setLayout(layout) @property def name(self): """ Returns the corresponding layer name of the current list widget item. """ return self._name @property def id(self): """ Returns the QGIS layer ID of the current list widget item. """ return self._id @staticmethod def _setIcon(label, server) -> bool: """ Sets the server icon on the layer item widget if it has been published to that server. :returns: True if the icon was set, False if it was not (or removed). """ if not isinstance(server, manager.bases.AbstractServer): if label.pixmap(): # Remove existing pixmap label.pixmap().swap(QPixmap()) return False server_widget = server.__class__.getWidgetClass() pixmap = server_widget.getPngIcon() if server_widget else QPixmap() if not pixmap.isNull(): pixmap = pixmap.scaled(label.width(), label.height(), Qt.KeepAspectRatio, Qt.SmoothTransformation) label.setPixmap(pixmap) return not pixmap.isNull() def setMetadataPublished(self, server): if self._setIcon(self._metalabel, server): self._metalabel.setToolTip(f"Metadata published to '{server.serverName}'") else: self._metalabel.setToolTip('') def setDataPublished(self, server): if self._setIcon(self._datalabel, server): self._datalabel.setToolTip(f"Geodata published to '{server.serverName}'") else: self._datalabel.setToolTip('') @property def checked(self) -> bool: """ Returns True if the list widget item checkbox is in a checked state. """ return self._checkbox.isChecked() def setCheckbox(self, state: bool): self._checkbox.setCheckState(Qt.Checked if state else Qt.Unchecked)