539 changes: 247 additions & 292 deletions python/plugins/sextante/algs/mmqgisx/MMQGISXAlgorithms.py

Large diffs are not rendered by default.

1,802 changes: 0 additions & 1,802 deletions python/plugins/sextante/algs/mmqgisx/mmqgisx_library.py

This file was deleted.

9 changes: 3 additions & 6 deletions python/plugins/sextante/core/LayerExporter.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,11 +49,9 @@ def exportVectorLayer(layer):
systemEncoding = settings.value( "/UI/encoding", "System" ).toString()
output = SextanteUtils.getTempFilename("shp")
provider = layer.dataProvider()
allAttrs = provider.attributeIndexes()
provider.select( allAttrs )
useSelection = SextanteConfig.getSetting(SextanteConfig.USE_SELECTED)
if useSelection and layer.selectedFeatureCount() != 0:
writer = QgsVectorFileWriter( output, systemEncoding,provider.fields(), provider.geometryType(), provider.crs() )
writer = QgsVectorFileWriter(output, systemEncoding, layer.pendingFields(), provider.geometryType(), provider.crs())
selection = layer.selectedFeatures()
for feat in selection:
writer.addFeature(feat)
Expand All @@ -66,9 +64,8 @@ def exportVectorLayer(layer):
except UnicodeEncodeError:
isASCII=False
if (not unicode(layer.source()).endswith("shp") or not isASCII):
writer = QgsVectorFileWriter( output, systemEncoding,provider.fields(), provider.geometryType(), provider.crs() )
feat = QgsFeature()
while provider.nextFeature(feat):
writer = QgsVectorFileWriter( output, systemEncoding, layer.pendingFields(), provider.geometryType(), provider.crs() )
for feat in layer.getFeatures():
writer.addFeature(feat)
del writer
return output
Expand Down
4 changes: 4 additions & 0 deletions python/plugins/sextante/core/QGisLayers.py
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,10 @@ def getObjectFromUri(uri, forceLoad = True):
for layer in layers:
if layer.source() == uri:
return layer
tables = QGisLayers.getTables()
for table in tables:
if table.source() == uri:
return table
if forceLoad:
settings = QSettings()
prjSetting = settings.value("/Projections/defaultBehaviour")
Expand Down
17 changes: 14 additions & 3 deletions python/plugins/sextante/outputs/OutputTable.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,20 +16,23 @@
* *
***************************************************************************
"""
from sextante.core.SextanteTableWriter import SextanteTableWriter

__author__ = 'Victor Olaya'
__date__ = 'August 2012'
__copyright__ = '(C) 2012, Victor Olaya'
# This will get replaced with a git SHA1 when you do a git archive
__revision__ = '$Format:%H$'

from sextante.core.SextanteTableWriter import SextanteTableWriter
from sextante.core.SextanteUtils import SextanteUtils
from sextante.outputs.Output import Output

from PyQt4.QtCore import *

class OutputTable(Output):

compatible = None

def getFileFilter(self,alg):
exts = ['csv']
for i in range(len(exts)):
Expand All @@ -40,8 +43,16 @@ def getDefaultFileExtension(self, alg):
return alg.provider.getSupportedOutputTableExtensions()[0]

def getCompatibleFileName(self, alg):
#TODO!!!
return self.value
'''Returns a filename that is compatible with the algorithm that is going to generate this output.
If the algorithm supports the file format of the current output value, it returns that value. If not,
it returns a temporary file with a supported file format, to be used to generate the output result.'''
ext = self.value[self.value.rfind(".") + 1:]
if ext in alg.provider.getSupportedOutputTableExtensions:
return self.value
else:
if self.compatible is None:
self.compatible = SextanteUtils.getTempFilename(self.getDefaultFileExtension(alg))
return self.compatible;

def getTableWriter(self, fields):
'''Returns a suitable writer to which records can be added as a
Expand Down
24 changes: 7 additions & 17 deletions python/plugins/sextante/parameters/ParameterTable.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,29 +43,19 @@ def setValue(self, obj):
else:
return False
if isinstance(obj, QgsVectorLayer):
source = unicode(obj.source())
if source.lower().endswith("dbf") or source.lower().endswith("csv"):
self.value = source
return True
elif source.endswith("shp"):
self.value = source[:-4] + "dbf"
return True
else:
return False
source = unicode(obj.source())
self.value = source
return True
else:
layers = QGisLayers.getVectorLayers()
for layer in layers:
if layer.name() == self.value:
source = unicode(layer.source())
if source.endswith("dbf") or source.endswith("csv"):
self.value = source
return True
self.value = source
return True
val = unicode(obj)
if val.endswith("dbf") or val.endswith("csv"):
self.value = val
return os.path.exists(self.value)
else:
return False
self.value = val
return os.path.exists(self.value)

def serialize(self):
return self.__module__.split(".")[-1] + "|" + self.name + "|" + self.description +\
Expand Down