Skip to content

Commit f0e23e3

Browse files
author
cfarmer
committedMar 8, 2010
Names in dropdown lists are now correctly cleared when changing between layers. Fixes #2505
git-svn-id: http://svn.osgeo.org/qgis/trunk@13027 c8812cc2-4d05-0410-92ff-de0c093fc19c
1 parent 1def2d3 commit f0e23e3

File tree

1 file changed

+16
-34
lines changed

1 file changed

+16
-34
lines changed
 

‎python/plugins/fTools/tools/doPointDistance.py

Lines changed: 16 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
from qgis.core import *
4040
from ui_frmPointDistance import Ui_Dialog
4141
import csv, codecs, cStringIO
42+
import ftools_utils
4243
from math import *
4344

4445
class UnicodeWriter:
@@ -88,25 +89,26 @@ def __init__(self, iface):
8889
self.setWindowTitle(self.tr("Distance matrix"))
8990
self.progressBar.setValue(0)
9091
mapCanvas = self.iface.mapCanvas()
91-
for i in range(mapCanvas.layerCount()):
92-
layer = mapCanvas.layer(i)
93-
if layer.type() == layer.VectorLayer:
94-
if layer.geometryType() == QGis.Point:
95-
self.inPoint1.addItem(layer.name())
96-
self.inPoint2.addItem(layer.name())
92+
layers = ftools_utils.getLayerNames( [ QGis.Point ] )
93+
self.inPoint1.addItems(layers)
94+
self.inPoint2.addItems(layers)
9795

9896
def update1(self, inputLayer):
99-
changedLayer = self.getVectorLayerByName(unicode(inputLayer))
100-
changedField = self.getFieldList(changedLayer)
97+
self.inField1.clear()
98+
changedLayer = ftools_utils.getVectorLayerByName(unicode(inputLayer))
99+
changedField = ftools_utils.getFieldList(changedLayer)
101100
for i in changedField:
102-
if changedField[i].type() == QVariant.Int or changedField[i].type() == QVariant.String:
101+
if changedField[i].type() == QVariant.Int or \
102+
changedField[i].type() == QVariant.String:
103103
self.inField1.addItem(unicode(changedField[i].name()))
104104

105105
def update2(self, inputLayer):
106-
changedLayer = self.getVectorLayerByName(unicode(inputLayer))
107-
changedField = self.getFieldList(changedLayer)
106+
self.inField2.clear()
107+
changedLayer = ftools_utils.getVectorLayerByName(unicode(inputLayer))
108+
changedField = ftools_utils.getFieldList(changedLayer)
108109
for i in changedField:
109-
if changedField[i].type() == QVariant.Int or changedField[i].type() == QVariant.String:
110+
if changedField[i].type() == QVariant.Int or \
111+
changedField[i].type() == QVariant.String:
110112
self.inField2.addItem(unicode(changedField[i].name()))
111113

112114
def accept(self):
@@ -154,8 +156,8 @@ def saveFile(self):
154156
self.outFile.insert(filePath)
155157

156158
def compute(self, line1, line2, field1, field2, outPath, matType, nearest, progressBar):
157-
layer1 = self.getVectorLayerByName(line1)
158-
layer2 = self.getVectorLayerByName(line2)
159+
layer1 = ftools_utils.getVectorLayerByName(line1)
160+
layer2 = ftools_utils.getVectorLayerByName(line2)
159161
provider1 = layer1.dataProvider()
160162
provider2 = layer2.dataProvider()
161163
allAttrs = provider1.attributeIndexes()
@@ -248,23 +250,3 @@ def linearMatrix(self, writer, provider1, provider2, index1, index2, nearest, di
248250
start = start + add
249251
progressBar.setValue(start)
250252
del writer
251-
252-
def getVectorLayerByName(self, myName):
253-
mc = self.iface.mapCanvas()
254-
nLayers = mc.layerCount()
255-
for l in range(nLayers):
256-
layer = mc.layer(l)
257-
if layer.name() == unicode(myName):
258-
vlayer = QgsVectorLayer(unicode(layer.source()), unicode(myName), unicode(layer.dataProvider().name()))
259-
if vlayer.isValid():
260-
return vlayer
261-
else:
262-
QMessageBox.information(self, self.tr("Locate Line Intersections"), self.tr("Vector layer is not valid"))
263-
264-
def getFieldList(self, vlayer):
265-
fProvider = vlayer.dataProvider()
266-
feat = QgsFeature()
267-
allAttrs = fProvider.attributeIndexes()
268-
fProvider.select(allAttrs)
269-
myFields = fProvider.fields()
270-
return myFields

0 commit comments

Comments
 (0)
Please sign in to comment.