def __init__(self, level: Level, feedback_result: FeedbackResult, layer: QgsMapLayer = None) -> None: self.level = level self.message = feedback_result.message self.layer_id = layer.id() if layer else None self.layer_name = layer.name() if layer else None
def update_symbology(layer: QgsMapLayer, color: typing.Tuple[int, int, int] = None, size: float = None, file: str = None) -> None: assert layer, 'Layer is not defined' if file: assert isinstance(file, str) (msg, noError) = layer.loadNamedStyle(file) if not noError: raise Exception(msg) renderer = layer.renderer() symbol = None if isinstance(renderer, QgsSingleSymbolRenderer): symbol = renderer.symbol() elif isinstance(renderer, QgsGraduatedSymbolRenderer): symbol = renderer.sourceSymbol() else: raise Exception('Unknown renderer!') if color: assert isinstance( color, collections.abc.Sequence ), 'Color should be a iteratable of three numbers for Red, Green, Blue; Each of them between 0 and 255' assert len(color) in ( 3, 4 ), 'There should be three numbers passed for Red, Green, Blue; Each of them between 0 and 255' symbol.setColor(QColor.fromRgb(*color)) if size: # For lines if type(symbol) == QgsLineSymbol: symbol.setWidth(size) # For points if type(symbol) == QgsMarkerSymbol: symbol.setSize(size) layer.triggerRepaint() iface.layerTreeView().refreshLayerSymbology(layer.id())