def canvasReleaseEvent(self, mouseEvent):
        """
        Identify the AIMS Feature(s) the user clicked

        @param mouseEvent: QtGui.QMouseEvent
        @type mouseEvent: QtGui.QMouseEvent
        """

        self._feature = None
        self._iface.setActiveLayer(self._layers.addressLayer())
        results = self.identify(mouseEvent.x(), mouseEvent.y(),
                                self.ActiveLayer, self.VectorLayer)

        if len(results) == 0:
            return
        elif len(results) == 1:
            # initialise an address object and populate from selected feature
            self._feature = self._controller.uidm.singleFeatureObj(
                results[0].mFeature.attribute('addressId'))

        else:  # Stacked points
            identifiedFeatures = []
            for i in range(0, len(results)):
                identifiedFeatures.append(
                    dict(fullAddress=results[i].mFeature.attribute(
                        'fullAddress'),
                         addressId=results[i].mFeature.attribute('addressId')))

            dlg = updateAddressDialog(self._iface.mainWindow())
            updFeatures = dlg.selectFeatures(identifiedFeatures)

            if updFeatures:
                updFeatureIds = [d['addressId'] for d in updFeatures]

                for result in results:
                    if result.mFeature.attribute('addressId') in updFeatureIds:
                        self._feature = self._controller.uidm.singleFeatureObj(
                            result.mFeature.attribute('addressId'))
                        break
        # Open form
        if self._feature:
            # Hack to retrieve the properties missing on the
            # feature feed from the resolution feed
            respId = int(time.time())
            self._controller.uidm.supplementAddress(self._feature, respId)
            self.feature = self._controller.RespHandler.handleResp(
                respId, FEEDS['AR'], 'supplement')
            # highlight feature
            self.setMarker(results[0].mFeature.geometry().asPoint())
            self._controller._queues.uEditFeatureTab.setFeature(
                'update', self._feature)
            self._controller._queues.tabWidget.setCurrentIndex(0)
            UiUtility.setEditability(self._controller._queues.uEditFeatureTab,
                                     'update')
    def NewAimsFeature( self, coords ):
        """
        Get New Address Instance. Make Address Editing Form
        visible to user

        @param coords: QgsPoint
        @type coords: QgsPoint
        """   
        # init new address object and open form
        UiUtility.clearForm(self._controller._queues.tabWidget)
        coords = UiUtility.transform(self._iface, coords)
        self.setMarker(coords)        
        addInstance = self.af.get()
        self._controller._queues.uEditFeatureTab.setFeature('add', addInstance, coords)
        self._controller._queues.tabWidget.setCurrentIndex(0)
        UiUtility.setEditability(self._controller._queues.uEditFeatureTab)
Ejemplo n.º 3
0
    def canvasReleaseEvent(self, mouseEvent):
        """
        Identify the AIMS Feature(s) the user clicked

        @param mouseEvent: QtGui.QMouseEvent
        @type mouseEvent: QtGui.QMouseEvent
        """

        self._feature = None
        self._iface.setActiveLayer(self._layers.addressLayer())
        results = self.identify(mouseEvent.x(), mouseEvent.y(), self.ActiveLayer, self.VectorLayer)
        
        if len(results) == 0: 
            return
        elif len(results) == 1:
            # initialise an address object and populate from selected feature
            self._feature = self._controller.uidm.singleFeatureObj(results[0].mFeature.attribute('addressId'))
            
        else: # Stacked points
            identifiedFeatures=[] 
            for i in range (0,len(results)):
                identifiedFeatures.append(dict(
                fullAddress=results[i].mFeature.attribute('fullAddress'),
                addressId= results[i].mFeature.attribute('addressId')))
                
            dlg = updateAddressDialog(self._iface.mainWindow())
            updFeatures = dlg.selectFeatures(identifiedFeatures)

            if updFeatures: 
                updFeatureIds = [d['addressId'] for d in updFeatures]

                for result in results:
                    if result.mFeature.attribute('addressId') in updFeatureIds:
                        self._feature = self._controller.uidm.singleFeatureObj(result.mFeature.attribute('addressId'))
                        break
        # Open form
        if self._feature:
            # Hack to retrieve the properties missing on the
            # feature feed from the resolution feed 
            respId = int(time.time()) 
            self._controller.uidm.supplementAddress(self._feature, respId)
            self.feature = self._controller.RespHandler.handleResp(respId, FEEDS['AR'], 'supplement')
            # highlight feature             
            self.setMarker(results[0].mFeature.geometry().asPoint())
            self._controller._queues.uEditFeatureTab.setFeature('update', self._feature )
            self._controller._queues.tabWidget.setCurrentIndex(0)
            UiUtility.setEditability(self._controller._queues.uEditFeatureTab, 'update')
    def NewAimsFeature(self, coords):
        """
        Get New Address Instance. Make Address Editing Form
        visible to user

        @param coords: QgsPoint
        @type coords: QgsPoint
        """
        # init new address object and open form
        UiUtility.clearForm(self._controller._queues.tabWidget)
        coords = UiUtility.transform(self._iface, coords)
        self.setMarker(coords)
        addInstance = self.af.get()
        self._controller._queues.uEditFeatureTab.setFeature(
            'add', addInstance, coords)
        self._controller._queues.tabWidget.setCurrentIndex(0)
        UiUtility.setEditability(self._controller._queues.uEditFeatureTab)