def doAction(self, layer, uid, feature): if layer.actions().action(uid).name() == 'openFeatureForm': self.plugin.iface.openFeatureForm(layer, feature) else : ctxt = QgsExpressionContext() ctxt.appendScope(QgsExpressionContextUtils.globalScope()) ctxt.appendScope(QgsExpressionContextUtils.projectScope(QgsProject.instance())) ctxt.appendScope(QgsExpressionContextUtils.mapSettingsScope(self.canvas.mapSettings())) # Add click_x and click_y to context p = self.toLayerCoordinates(layer, self.pos()) QgsExpressionContextUtils.setProjectVariable(QgsProject.instance(), 'click_x', p.x()) QgsExpressionContextUtils.setProjectVariable(QgsProject.instance(), 'click_y', p.y()) layer.actions().doAction(uid, feature, ctxt)
def createExpressionContext(): context = QgsExpressionContext() context.appendScope(QgsExpressionContextUtils.globalScope()) context.appendScope(QgsExpressionContextUtils.projectScope(QgsProject.instance())) if iface.mapCanvas(): context.appendScope(QgsExpressionContextUtils.mapSettingsScope(iface.mapCanvas().mapSettings())) processingScope = QgsExpressionContextScope() extent = iface.mapCanvas().fullExtent() processingScope.setVariable('fullextent_minx', extent.xMinimum()) processingScope.setVariable('fullextent_miny', extent.yMinimum()) processingScope.setVariable('fullextent_maxx', extent.xMaximum()) processingScope.setVariable('fullextent_maxy', extent.yMaximum()) context.appendScope(processingScope) return context
def _layer_tooltip(self, layer, feat): try: df = layer.displayField() if df: return str(feat.attribute(df)) else: context = QgsExpressionContext() context.appendScope(QgsExpressionContextUtils.globalScope()) context.appendScope(QgsExpressionContextUtils.projectScope(QgsProject.instance())) context.appendScope(QgsExpressionContextUtils.layerScope(layer)) context.appendScope(QgsExpressionContextUtils.mapSettingsScope( self.canvas.mapSettings() ) ) context.setFeature( feat ) x = QgsExpression(layer.displayExpression()) x.prepare(context) return x.evaluate(context).replace('\n', "<br/>") except: return ""
def pointPicked(self, event): for b in self.rubberBands: del b self.rubberBands[:] = [] fieldX = self.cmbXField.currentField() fieldY = self.cmbYField.currentField() artist = event.artist indices = event.ind for i in indices: x = self.xData[artist.name][i] y = self.yData[artist.name][i] if isinstance(x, int): expr = '"{}" = {} AND '.format(fieldX, x) elif isinstance(x, float): expr = 'abs("{}" - {}) <= 0.0000001 AND '.format(fieldX, x) elif isinstance(x, (str, unicode)): expr = """"{}" = '{}' AND """.format(fieldX, x) else: expr = """"{}" = '{}' AND """.format(fieldX, x.toString('yyyy-MM-dd')) if isinstance(y, float): expr += 'abs("{}" - {}) <= 0.0000001'.format(fieldY, y) elif isinstance(y, (str, unicode)): expr += """"{}" = '{}'""".format(fieldY, y) else: expr += '"{}" = {}'.format(fieldY, y) layer = self.cmbLayer.currentLayer() expression = QgsExpression(expr) context = QgsExpressionContext() context.appendScope(QgsExpressionContextUtils.globalScope()) context.appendScope(QgsExpressionContextUtils.projectScope()) context.appendScope(QgsExpressionContextUtils.mapSettingsScope(self.canvas.mapSettings())) context.appendScope(QgsExpressionContextUtils.layerScope(layer)) request = QgsFeatureRequest(expression, context) for f in layer.getFeatures(request): hl = QgsHighlight(self.canvas, f.geometry(), layer) hl.setColor(QColor(255, 0, 0)) hl.setWidth(2) self.rubberBands.append(hl)
def createExpressionContext(): context = QgsExpressionContext() context.appendScope(QgsExpressionContextUtils.globalScope()) context.appendScope( QgsExpressionContextUtils.projectScope(QgsProject.instance())) if iface and iface.mapCanvas(): context.appendScope( QgsExpressionContextUtils.mapSettingsScope( iface.mapCanvas().mapSettings())) processingScope = QgsExpressionContextScope() if iface and iface.mapCanvas(): extent = iface.mapCanvas().fullExtent() processingScope.setVariable('fullextent_minx', extent.xMinimum()) processingScope.setVariable('fullextent_miny', extent.yMinimum()) processingScope.setVariable('fullextent_maxx', extent.xMaximum()) processingScope.setVariable('fullextent_maxy', extent.yMaximum()) context.appendScope(processingScope) return context
def _layer_tooltip(self, layer, feat): try: df = layer.displayField() if df: return str(feat.attribute(df)) else: context = QgsExpressionContext() context.appendScope(QgsExpressionContextUtils.globalScope()) context.appendScope( QgsExpressionContextUtils.projectScope( QgsProject.instance())) context.appendScope( QgsExpressionContextUtils.layerScope(layer)) context.appendScope( QgsExpressionContextUtils.mapSettingsScope( self.canvas.mapSettings())) context.setFeature(feat) x = QgsExpression(layer.displayExpression()) x.prepare(context) return x.evaluate(context).replace("\n", "<br/>") except: return ""
# coding: utf-8 from qgis.core import QgsExpressionContextUtils, QgsExpressionContext from qgis.gui import QgsVariableEditorWidget from qgis.utils import iface canvas = iface.mapCanvas() variable_editor_widget = QgsVariableEditorWidget() expression_context = QgsExpressionContext() expression_context.appendScope(QgsExpressionContextUtils.globalScope()) expression_context.appendScope(QgsExpressionContextUtils.projectScope()) expression_context.appendScope(QgsExpressionContextUtils.mapSettingsScope( canvas.mapSettings() )) variable_editor_widget.setContext(expression_context) variable_editor_widget.reloadContext() variable_editor_widget.setEditableScopeIndex(0) print(variable_editor_widget.context()) print(variable_editor_widget.editableScope()) print(variable_editor_widget.settingGroup()) print(variable_editor_widget.variablesInActiveScope()) variable_editor_widget.show()
# coding: utf-8 from qgis.core import QgsExpressionContextUtils, QgsExpressionContext from qgis.gui import QgsVariableEditorWidget from qgis.utils import iface canvas = iface.mapCanvas() variable_editor_widget = QgsVariableEditorWidget() expression_context = QgsExpressionContext() expression_context.appendScope(QgsExpressionContextUtils.globalScope()) expression_context.appendScope(QgsExpressionContextUtils.projectScope()) expression_context.appendScope( QgsExpressionContextUtils.mapSettingsScope(canvas.mapSettings())) variable_editor_widget.setContext(expression_context) variable_editor_widget.reloadContext() variable_editor_widget.setEditableScopeIndex(0) print(variable_editor_widget.context()) print(variable_editor_widget.editableScope()) print(variable_editor_widget.settingGroup()) print(variable_editor_widget.variablesInActiveScope()) variable_editor_widget.show()