def create_count(self): layer = self.layers['section'] selected_count = layer.selectedFeatureCount() if selected_count == 0: push_info("Veuillez sélectionner un tronçon") return elif selected_count > 1: push_info("Veuillez ne sélectionner qu'un tronçon") return else: selected_feature = next(layer.getSelectedFeatures()) lanes = self.get_lanes_of_section(selected_feature.attribute('id')) installation = self.get_installation_of_lane( next(lanes).attribute('id')) # Save the id of the installation related to the selected section # so we can use in the count form to automatically select the # installation in the combobox QgsExpressionContextUtils.setProjectVariable( QgsProject.instance(), 'selected_installation', installation.attribute('id')) self.layers['count'].startEditing() iface.setActiveLayer(self.layers['count']) iface.actionAddFeature().trigger()
def __init__(self, edit_dialog): """Constructor""" ProductionChanges.__init__(self, edit_dialog) iface.actionToggleEditing().trigger() # set editing to add polygon iface.actionAddFeature().trigger() # setup toolbar selecttools = iface.attributesToolBar().findChildren(QToolButton) # selection actions iface.building_toolbar.addSeparator() for sel in selecttools: if sel.text() == "Select Feature(s)": for a in sel.actions()[0:3]: iface.building_toolbar.addAction(a) # editing actions iface.building_toolbar.addSeparator() for dig in iface.digitizeToolBar().actions(): if dig.objectName() in [ "mActionAddFeature", "mActionVertexTool", "mActionMoveFeature" ]: iface.building_toolbar.addAction(dig) # advanced Actions iface.building_toolbar.addSeparator() for adv in iface.advancedDigitizeToolBar().actions(): if adv.objectName() in [ "mActionUndo", "mActionRedo", "mActionReshapeFeatures", "mActionOffsetCurve" ]: iface.building_toolbar.addAction(adv) iface.building_toolbar.show() self.disable_UI_functions()
def createArea(self): l = self.proj.mapLayersByName('Beräkningsområde') if l: l = l[0] iface.setActiveLayer(l) iface.actionToggleEditing().trigger() iface.actionAddFeature().trigger() #l.featureAdded.connect(lambda fid: self.areaAdded(fid, l)) l.featureAdded.connect(lambda fid: self.showSaveDialog(fid, l))
def selectLinePushButton_clicked(self): #self.hide() vectorDraftLyr = QgsVectorLayer('LineString?crs=epsg:4326', 'Please Draw A Line for Planning', "memory") QgsProject().instance().addMapLayer(vectorDraftLyr) # set layer active self.hide() iface.setActiveLayer(vectorDraftLyr) # start edit iface.actionToggleEditing().trigger() # enable tool iface.actionAddFeature().trigger() #self.show() iface.actionToggleEditing().triggered.connect(self.endDrawLine)
def __init__(self, dockwidget, parent=None): """Constructor.""" super(NewCaptureSourceArea, self).__init__(parent) self.setupUi(self) self.db = db self.db.connect() self.dockwidget = dockwidget self.layer_registry = LayerRegistry() self.error_dialog = None self.current_layer = None self.added_building_ids = [] self.geom = None self.add_capture_source_area_layer() self.init_table() self.setup_toolbar() self.le_area_title.setDisabled(True) self.le_external_id.setDisabled(True) self.mcb_selection_layer.setDisabled(True) self.mcb_selection_layer.setExceptedLayerList( [self.capture_source_area]) self.rb_select_from_layer.setChecked(False) self.capture_source_area.featureAdded.connect( self.creator_feature_added) self.capture_source_area.featureDeleted.connect( self.creator_feature_deleted) self.capture_source_area.geometryChanged.connect( self.creator_geometry_changed) self.rb_select_from_layer.toggled.connect( self.rb_select_from_layer_clicked) self.btn_save.clicked.connect( partial(self.save_clicked, commit_status=True)) self.btn_reset.clicked.connect(self.reset_clicked) self.btn_exit.clicked.connect(self.exit_clicked) QgsProject.instance().layerWillBeRemoved.connect(self.layers_removed) iface.actionToggleEditing().trigger() iface.actionAddFeature().trigger()
def edit_reset_clicked(self): """ When production frame btn_edit_reset clicked """ self.editing_layer.geometryChanged.disconnect( self.creator_geometry_changed) iface.actionCancelEdits().trigger() self.editing_layer.geometryChanged.connect( self.creator_geometry_changed) # restart editing iface.actionToggleEditing().trigger() iface.actionAddFeature().trigger() # reset and disable comboboxes if self.parent_frame.polyline: self.parent_frame.polyline.reset() iface.mapCanvas().refresh() self.disable_UI_functions() self.edit_dialog.geom = None self.edit_dialog.added_geoms = OrderedDict()
def reset_clicked(self): """Called When reset is clicked""" self.geom = None self.added_building_ids = [] self.le_area_title.clear() self.le_area_title.setDisabled(True) self.le_external_id.setDisabled(True) self.rb_select_from_layer.setChecked(False) self.mcb_selection_layer.setDisabled(True) self.l_wrong_projection.setText("") iface.setActiveLayer(self.capture_source_area) self.capture_source_area.geometryChanged.disconnect( self.creator_geometry_changed) iface.actionCancelEdits().trigger() self.capture_source_area.geometryChanged.connect( self.creator_geometry_changed) # restart editing iface.actionToggleEditing().trigger() iface.actionAddFeature().trigger()
def edit_reset_clicked(self): """ When bulk load frame btn_reset_save clicked """ self.editing_layer.geometryChanged.disconnect( self.creator_geometry_changed) iface.actionCancelEdits().trigger() self.editing_layer.geometryChanged.connect( self.creator_geometry_changed) # restart editing iface.actionToggleEditing().trigger() if not self.parent_frame.circle_action.isChecked(): iface.actionAddFeature().trigger() # reset and disable comboboxes self.disable_UI_functions() if self.parent_frame.polyline: self.parent_frame.polyline.reset() self.edit_dialog.geom = None self.edit_dialog.added_geoms = OrderedDict()
def selectPolygonBtn_clicked(self): vectorDraftLyr = QgsVectorLayer('Polygon?crs=epsg:4326', 'Please Draw A Polygon for Planning', "memory") QgsProject().instance().addMapLayer(vectorDraftLyr) #vectorDraftLyr.startEditing() # remove the original myvl #QgsProject.instance().layerTreeRoot().removeChildNode(myvl) # set layer active self.hide() iface.setActiveLayer(vectorDraftLyr) # start edit iface.actionToggleEditing().trigger() # enable tool iface.actionAddFeature().trigger() #self.show() iface.actionToggleEditing().triggered.connect(self.endDrawPolygon)
def rb_select_from_layer_clicked(self, checked): """PyqtSlot: When the select from layer radio button is clicked""" self.l_wrong_projection.setText("") if checked: self.mcb_selection_layer.showPopup() self.mcb_selection_layer.setEnabled(True) iface.actionSelect().trigger() self.mcb_selection_layer.layerChanged.connect( self.mcb_selection_layer_changed) else: self.mcb_selection_layer.layerChanged.disconnect( self.mcb_selection_layer_changed) if self.current_layer is not None: self.current_layer.removeSelection() self.current_layer.selectionChanged.disconnect( self.current_layer_selection_changed) self.mcb_selection_layer.setDisabled(True) iface.actionAddFeature().trigger() self.current_layer = None iface.setActiveLayer(self.current_layer)
def trigger_edit_mode(iface, layer_name, trigger='on'): """ Iterate over all layers and activate the Layer called layer_name. Then toggle the edit mode of that layer. :param iface: The Qgis-interface that will be accessed :type iface: QgisInterface :param layer_name: Name of the layer, that shall be switched to edit_mode :type layer_name: str :return: :rtype: """ if layer_name and not layer_name.isspace(): edit_layer = find_layer_by_name(layer_name) # if the layer was found, it is activated and the editing and the adding of features will be triggered if edit_layer is not None: if trigger == 'on': edit_layer.startEditing() iface.actionAddFeature().trigger() elif trigger == 'off': iface.actionAddFeature().trigger() edit_layer.commitChanges()
def addLink(self): layer = QgsProject.instance().mapLayersByName("Liens")[0] iface.setActiveLayer(layer) layer.startEditing() iface.actionAddFeature().trigger()
def circle_tool_clicked(self): if self.circle_action.isChecked(): circle_tool.setup_circle(self) else: iface.actionAddFeature().trigger()