Hi, if the plugin can be useful for the qgis users please consider contributing it.
cheers -- Giovanni -- On Mon, 2011-06-20 at 16:40 +0900, ASAHI Kosuke wrote: > 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 > _______________________________________________ Qgis-user mailing list [email protected] http://lists.osgeo.org/mailman/listinfo/qgis-user
