Skip to content

Commit 00c4ba3

Browse files
author
volayaf@gmail.com
committed
Added diferentiation between int and float values
extent selector more or less working now changed version to 1.0.3 git-svn-id: http://sextante.googlecode.com/svn/trunk/soft/bindings/qgis-plugin@86 881b9c09-3ef8-f3c2-ec3d-21d735c97f4d
1 parent 8c83e7f commit 00c4ba3

File tree

7 files changed

+61
-23
lines changed

7 files changed

+61
-23
lines changed

src/sextante/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ def name():
55
def description():
66
return "SEXTANTE Geoprocessing platform for QGIS"
77
def version():
8-
return "Version 1.0.2"
8+
return "Version 1.0.3"
99
def icon():
1010
return "icon.png"
1111
def qgisMinimumVersion():

src/sextante/gdal/merge.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ def getIcon(self):
1919
return QtGui.QIcon(filepath)
2020

2121
def defineCharacteristics(self):
22-
self.name = "rgb2pct"
23-
self.group = "Conversion"
22+
self.name = "merge"
23+
self.group = "Miscellaneous"
2424
self.addParameter(ParameterMultipleInput(merge.INPUT, "Input layers", ParameterMultipleInput.TYPE_RASTER))
2525
self.addParameter(ParameterBoolean(merge.PCT, "Grab pseudocolor table from first layer", False))
2626
self.addParameter(ParameterBoolean(merge.SEPARATE, "Layer stack", False))

src/sextante/gui/ExtentSelectionPanel.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,17 @@ def buttonPushed(self):
4242
popupmenu.exec_(QtGui.QCursor.pos())
4343

4444
def useLayerExtent(self):
45-
pass
45+
extentsDict = {}
46+
extentsDict["[Canvas]"] = QGisLayers.iface.mapCanvas().extent()
47+
extents = ["[Canvas]"]
48+
layers = QGisLayers.getAllLayers()
49+
for layer in layers:
50+
extents.append(layer.name())
51+
extentsDict[str(layer.name())] = layer.extent()
52+
item, ok = QtGui.QInputDialog.getItem(self, "Select extent", "Use extent from", extents, False)
53+
if ok:
54+
item = str(item)
55+
self.setValueFromRect(extentsDict[item])
4656

4757
def selectOnCanvas(self):
4858
canvas = QGisLayers.iface.mapCanvas()
@@ -51,6 +61,9 @@ def selectOnCanvas(self):
5161

5262
def fillCoords(self):
5363
r = self.tool.rectangle()
64+
self.setValueFromRect(r)
65+
66+
def setValueFromRect(self,r):
5467
s = str(r.xMinimum()) + "," + str(r.xMaximum()) + "," + str(r.yMinimum()) + "," + str(r.yMaximum())
5568
self.text.setText(s)
5669
self.tool.reset()

src/sextante/gui/NumberInputPanel.py

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,33 @@
33

44
class NumberInputPanel(QtGui.QWidget):
55

6-
def __init__(self, number, parent = None):
7-
super(NumberInputPanel, self).__init__(parent)
6+
def __init__(self, number, isInteger):
7+
super(NumberInputPanel, self).__init__(None)
88
self.setObjectName("NIPanel")
99
self.horizontalLayout = QtGui.QHBoxLayout(self)
1010
self.horizontalLayout.setSpacing(2)
1111
self.horizontalLayout.setMargin(0)
1212
self.horizontalLayout.setObjectName("hLayout")
13-
self.text = QtGui.QLineEdit()
14-
self.text.setObjectName("linedit")
15-
self.text.setText(str(number))
16-
self.text.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding)
17-
self.horizontalLayout.addWidget(self.text)
18-
self.pushButton = QtGui.QPushButton()
19-
self.pushButton.setObjectName("pushButton")
20-
self.pushButton.setText("...")
21-
self.pushButton.clicked.connect(self.showNumberInputDialog)
22-
self.horizontalLayout.addWidget(self.pushButton)
23-
self.setLayout(self.horizontalLayout)
13+
self.isInteger = isInteger
14+
if isInteger:
15+
self.spin = QtGui.QSpinBox()
16+
self.spin.setValue(number)
17+
self.spin.setMaximum(100000)
18+
self.spin.setMinimum(-100000)
19+
self.horizontalLayout.addWidget(self.spin)
20+
self.setLayout(self.horizontalLayout)
21+
else:
22+
self.text = QtGui.QLineEdit()
23+
self.text.setObjectName("linedit")
24+
self.text.setText(str(number))
25+
self.text.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding)
26+
self.horizontalLayout.addWidget(self.text)
27+
self.pushButton = QtGui.QPushButton()
28+
self.pushButton.setObjectName("pushButton")
29+
self.pushButton.setText("...")
30+
self.pushButton.clicked.connect(self.showNumberInputDialog)
31+
self.horizontalLayout.addWidget(self.pushButton)
32+
self.setLayout(self.horizontalLayout)
2433

2534
def showNumberInputDialog(self):
2635
pass
@@ -30,4 +39,7 @@ def showNumberInputDialog(self):
3039
self.text.setText(str(dlg.value))
3140

3241
def getValue(self):
33-
return self.text.text()
42+
if self.isInteger:
43+
return self.spin.value()
44+
else:
45+
return self.text.text()

src/sextante/gui/ParametersDialog.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ def getWidgetFromParameter(self, param):
186186
opts.append(opt.name())
187187
item = MultipleInputPanel(opts)
188188
elif isinstance(param, ParameterNumber):
189-
item = NumberInputPanel(param.default)
189+
item = NumberInputPanel(param.default, param.isInteger)
190190
elif isinstance(param, ParameterExtent):
191191
item = ExtentSelectionPanel(self.dialog, param.default)
192192
else:

src/sextante/metadata.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
[general]
99
name=SEXTANTE
1010
description=SEXTANTE for QGIS
11-
version=1.0.2
11+
version=1.0.3
1212
qgisMinimumVersion=1.0
1313
class_name=SextantePlugin
1414
website=www.sextantegis.com

src/sextante/parameters/ParameterNumber.py

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,14 @@ class ParameterNumber(Parameter):
66
def __init__(self, name="", description="", minValue = None, maxValue = None, default = 0):
77
self.name = name
88
self.description = description
9-
self.default = default
9+
'''if the passed value is an int or looks like one, then we assume that float values
10+
are not allowed'''
11+
try:
12+
self.default = int(str(default))
13+
self.isInteger = True
14+
except:
15+
self.default = default
16+
self.isInteger = False
1017
self.min = minValue
1118
self.max = maxValue
1219
self.value = None
@@ -34,12 +41,18 @@ def serialize(self):
3441

3542
def deserialize(self, s):
3643
tokens = s.split("|")
37-
for i in range (2,5):
44+
for i in range (2,4):
3845
if tokens[i] == str(None):
3946
tokens[i] = None
4047
else:
4148
tokens[i] = float(tokens[i])
42-
return ParameterNumber(tokens[0], tokens[1], tokens[2], tokens[3], tokens[4])
49+
'''we force the default to int if possible, since that indicates if it is restricted
50+
to ints or not'''
51+
try:
52+
val = int(tokens[4])
53+
except:
54+
val = float(tokens[4])
55+
return ParameterNumber(tokens[0], tokens[1], tokens[2], tokens[3], val)
4356

4457
def getAsScriptCode(self):
4558
return "##" + self.name + "=number " + str(self.default)

0 commit comments

Comments
 (0)