def testClone(self): """ test that base symbol layer properties are cloned with layer """ layer = QgsSimpleFillSymbolLayer() layer.setEnabled(False) layer.setLocked(True) layer.setRenderingPass(5) symbol = QgsFillSymbol() symbol.changeSymbolLayer(0, layer) cloned_symbol = symbol.clone() cloned_layer = cloned_symbol.symbolLayer(0) self.assertFalse(cloned_layer.enabled()) self.assertTrue(cloned_layer.isLocked()) self.assertEqual(cloned_layer.renderingPass(), 5)
def testGettersSetters(self): """ test base class getters/setters """ layer = QgsSimpleFillSymbolLayer() layer.setEnabled(False) self.assertFalse(layer.enabled()) layer.setEnabled(True) self.assertTrue(layer.enabled()) layer.setLocked(False) self.assertFalse(layer.isLocked()) layer.setLocked(True) self.assertTrue(layer.isLocked()) layer.setRenderingPass(5) self.assertEqual(layer.renderingPass(), 5)
def testSaveRestore(self): """ Test saving and restoring base symbol layer properties to xml""" layer = QgsSimpleFillSymbolLayer() layer.setEnabled(False) layer.setLocked(True) layer.setRenderingPass(5) symbol = QgsFillSymbol() symbol.changeSymbolLayer(0, layer) doc = QDomDocument("testdoc") elem = QgsSymbolLayerUtils.saveSymbol('test', symbol, doc, QgsReadWriteContext()) restored_symbol = QgsSymbolLayerUtils.loadSymbol(elem, QgsReadWriteContext()) restored_layer = restored_symbol.symbolLayer(0) self.assertFalse(restored_layer.enabled()) self.assertTrue(restored_layer.isLocked()) self.assertEqual(restored_layer.renderingPass(), 5)
def testSaveRestore(self): """ Test saving and restoring base symbol layer properties to xml""" layer = QgsSimpleFillSymbolLayer() layer.setEnabled(False) layer.setLocked(True) layer.setRenderingPass(5) symbol = QgsFillSymbol() symbol.changeSymbolLayer(0, layer) doc = QDomDocument("testdoc") elem = QgsSymbolLayerUtils.saveSymbol('test', symbol, doc) restored_symbol = QgsSymbolLayerUtils.loadSymbol(elem) restored_layer = restored_symbol.symbolLayer(0) self.assertFalse(restored_layer.enabled()) self.assertTrue(restored_layer.isLocked()) self.assertEqual(restored_layer.renderingPass(), 5)
def append_SimpleFillSymbolLayer(symbol, layer: SimpleFillSymbolLayer): """ Appends a SimpleFillSymbolLayer to a symbol """ fill_color = symbol_color_to_qcolor(layer.color) out = QgsSimpleFillSymbolLayer(fill_color) out.setEnabled(layer.enabled) out.setLocked(layer.locked) if isinstance(layer, SimpleFillSymbolLayer): if layer.outline_layer: if isinstance(layer.outline_layer, (SimpleLineSymbolLayer, CartographicLineSymbolLayer)): out.setStrokeColor(symbol_color_to_qcolor(layer.outline_layer.color)) out.setStrokeWidth(layer.outline_layer.width) out.setStrokeWidthUnit(QgsUnitTypes.RenderPoints) if isinstance(layer.outline_layer, SimpleLineSymbolLayer): out.setStrokeStyle(symbol_pen_to_qpenstyle(layer.outline_layer.line_type)) if isinstance(layer.outline_layer, CartographicLineSymbolLayer): out.setPenJoinStyle(symbol_pen_to_qpenjoinstyle(layer.outline_layer.join)) # better matching of null stroke color to QGIS symbology if out.strokeColor().alpha() == 0: out.setStrokeStyle(Qt.NoPen) # todo - change to new symbol layer if outline offset, template, etc set symbol.appendSymbolLayer(out) elif layer.outline_symbol: # outline is a symbol itself out.setStrokeStyle(Qt.NoPen) symbol.appendSymbolLayer(out) # get all layers from outline append_SymbolLayer_to_QgsSymbolLayer(symbol, layer.outline_symbol) else: out.setStrokeStyle(Qt.NoPen) symbol.appendSymbolLayer(out) elif isinstance(layer, ColorSymbol): out.setStrokeStyle(Qt.NoPen) symbol.appendSymbolLayer(out)
def append_SimpleFillSymbolLayer( symbol, # pylint: disable=too-many-branches layer: SimpleFillSymbolLayer, context: Context): """ Appends a SimpleFillSymbolLayer to a symbol """ fill_color = symbol_color_to_qcolor(layer.color) out = QgsSimpleFillSymbolLayer(fill_color) out.setEnabled(layer.enabled) out.setLocked(layer.locked) if isinstance(layer, SimpleFillSymbolLayer): if layer.outline_layer: if isinstance( layer.outline_layer, (SimpleLineSymbolLayer, CartographicLineSymbolLayer)): out.setStrokeColor( symbol_color_to_qcolor(layer.outline_layer.color)) out.setStrokeWidth( context.convert_size(layer.outline_layer.width)) out.setStrokeWidthUnit(context.units) if isinstance(layer.outline_layer, SimpleLineSymbolLayer): out.setStrokeStyle( symbol_pen_to_qpenstyle(layer.outline_layer.line_type)) if isinstance(layer.outline_layer, CartographicLineSymbolLayer): out.setPenJoinStyle( symbol_pen_to_qpenjoinstyle(layer.outline_layer.join)) # better matching of null stroke color to QGIS symbology if out.strokeColor().alpha() == 0: out.setStrokeStyle(Qt.NoPen) # TODO try: if layer.outline_layer.offset: raise NotImplementedException( 'Fill outline offset not supported') except AttributeError: pass try: if layer.outline_layer.template: raise NotImplementedException( 'Fill outline template not supported') except AttributeError: pass try: if layer.outline_layer.decoration: raise NotImplementedException( 'Fill outline decoration not supported') except AttributeError: pass symbol.appendSymbolLayer(out) elif layer.outline_symbol: # outline is a symbol itself out.setStrokeStyle(Qt.NoPen) symbol.appendSymbolLayer(out) # get all layers from outline append_SymbolLayer_to_QgsSymbolLayer(symbol, layer.outline_symbol, context) else: out.setStrokeStyle(Qt.NoPen) symbol.appendSymbolLayer(out) elif isinstance(layer, ColorSymbol): out.setStrokeStyle(Qt.NoPen) symbol.appendSymbolLayer(out)