Restore Set style for vector layer alg

This commit is contained in:
Nyall Dawson 2017-08-19 00:23:25 +10:00
parent be48f17e2c
commit cfbc00990b
2 changed files with 17 additions and 24 deletions

View File

@ -128,6 +128,7 @@ from .SelectByExpression import SelectByExpression
from .ServiceAreaFromLayer import ServiceAreaFromLayer
from .ServiceAreaFromPoint import ServiceAreaFromPoint
from .SetMValue import SetMValue
from .SetVectorStyle import SetVectorStyle
from .SetZValue import SetZValue
from .ShortestPathLayerToPoint import ShortestPathLayerToPoint
from .ShortestPathPointToLayer import ShortestPathPointToLayer
@ -161,7 +162,6 @@ from .ZonalStatistics import ZonalStatistics
# from .GeometryConvert import GeometryConvert
# from .FieldsCalculator import FieldsCalculator
# from .FieldPyculator import FieldsPyculator
# from .SetVectorStyle import SetVectorStyle
# from .SetRasterStyle import SetRasterStyle
# from .SelectByAttributeSum import SelectByAttributeSum
# from .Datasources2Vrt import Datasources2Vrt
@ -192,7 +192,7 @@ class QGISAlgorithmProvider(QgsProcessingProvider):
# SpatialJoin(),
# GeometryConvert(), FieldsCalculator(),
# FieldsPyculator(),
# SetVectorStyle(), SetRasterStyle(),
# SetRasterStyle(),
# FieldsMapper(), SelectByAttributeSum(), Datasources2Vrt(),
# DefineProjection(),
# RectanglesOvalsDiamondsVariable(),
@ -289,6 +289,7 @@ class QGISAlgorithmProvider(QgsProcessingProvider):
ServiceAreaFromLayer(),
ServiceAreaFromPoint(),
SetMValue(),
SetVectorStyle(),
SetZValue(),
ShortestPathLayerToPoint(),
ShortestPathPointToLayer(),

View File

@ -25,14 +25,10 @@ __copyright__ = '(C) 2012, Victor Olaya'
__revision__ = '$Format:%H$'
import os
from qgis.core import (QgsApplication,
QgsProcessingUtils)
from qgis.core import (QgsProcessingParameterFile,
QgsProcessingParameterVectorLayer,
QgsProcessingOutputVectorLayer)
from processing.algs.qgis.QgisAlgorithm import QgisAlgorithm
from processing.core.parameters import ParameterVector
from processing.core.outputs import OutputVector
from processing.core.parameters import ParameterFile
from processing.tools import dataobjects
class SetVectorStyle(QgisAlgorithm):
@ -48,11 +44,12 @@ class SetVectorStyle(QgisAlgorithm):
super().__init__()
def initAlgorithm(self, config=None):
self.addParameter(ParameterVector(self.INPUT,
self.tr('Vector layer')))
self.addParameter(ParameterFile(self.STYLE,
self.tr('Style file'), False, False, 'qml'))
self.addOutput(OutputVector(self.OUTPUT, self.tr('Styled'), True))
self.addParameter(QgsProcessingParameterVectorLayer(self.INPUT,
self.tr('Vector layer')))
self.addParameter(QgsProcessingParameterFile(self.STYLE,
self.tr('Style file'), extension='qml'))
self.addOutput(QgsProcessingOutputVectorLayer(self.INPUT,
self.tr('Styled')))
def name(self):
return 'setstyleforvectorlayer'
@ -61,13 +58,8 @@ class SetVectorStyle(QgisAlgorithm):
return self.tr('Set style for vector layer')
def processAlgorithm(self, parameters, context, feedback):
filename = self.getParameterValue(self.INPUT)
style = self.getParameterValue(self.STYLE)
layer = QgsProcessingUtils.mapLayerFromString(filename, context, False)
if layer is None:
dataobjects.load(filename, os.path.basename(filename), style=style)
else:
layer.loadNamedStyle(style)
context.addLayerToLoadOnCompletion(layer.id())
layer.triggerRepaint()
layer = self.parameterAsVectorLayer(parameters, self.INPUT, context)
style = self.parameterAsFile(parameters, self.STYLE, context)
layer.loadNamedStyle(style)
layer.triggerRepaint()
return {self.INPUT: layer}