Dear All, I made features select plugin used rubberband class and extended QgsMapTool class. It work fine in QGIS 1.6, But not work in QGIS 1.7. After rubberBand.movePoint() in canvasMoveEvent(), it was crashed.
Please give me any advice. Is this a bug in QGIS 1.7? All sources are here. http://d.hatena.ne.jp/waigani/files/sweepselect_test2.zip I use rubberband class like this. ==================================== class QgsMapToolSweepSelect(QgsMapTool): def __init__(self, canvas): QgsMapTool.__init__(self, canvas) self.canvas = canvas self.rubberBand = QgsRubberBand(canvas, True) self.pressed = False def canvasPressEvent(self, event): self.center = self.toMapCoordinates(QPoint(event.pos().x(), event.pos().y())) for cnt in range(0,359): self.rubberBand.addPoint(self.center, False) self.rubberBand.addPoint(self.center, True) self.pressed = True def canvasMoveEvent(self, event): if self.pressed == True: cpos = self.toMapCoordinates(QPoint(event.pos().x(), event.pos().y())) len = math.sqrt((self.center.x()-cpos.x())**2 + (self.center.y()-cpos.y())**2) for cnt in range(0,361): x = math.cos(math.radians(cnt)) * len + self.center.x() y = math.sin(math.radians(cnt)) * len + self.center.y() self.rubberBand.movePoint(cnt, QgsPoint(x,y)) def canvasReleaseEvent(self, event): layer = self.canvas.currentLayer() if layer == None or layer.type() != QgsMapLayer.VectorLayer: self.rubberBand.reset() self.pressed = False return layer.removeSelection() circle = self.rubberBand.asGeometry() fid = [] provider = layer.dataProvider() provider.select([], circle.boundingBox(), True, True) feat = QgsFeature() while provider.nextFeature(feat): if circle.intersects(feat.geometry()): fid.append(feat.id()) for id in fid: layer.select(id) self.rubberBand.reset(True) self.pressed = False -- ASAHI Kosuke _______________________________________________ Qgis-user mailing list [email protected] http://lists.osgeo.org/mailman/listinfo/qgis-user
