7
7
from sextante .parameters .ParameterBoolean import ParameterBoolean
8
8
from sextante .parameters .ParameterSelection import ParameterSelection
9
9
from sextante .parameters .ParameterMultipleInput import ParameterMultipleInput
10
- from sextante .gui .MultipleInputPanel import MultipleInputPanel
11
10
from sextante .parameters .ParameterFixedTable import ParameterFixedTable
12
- from sextante .gui .FixedTablePanel import FixedTablePanel
13
11
from sextante .parameters .ParameterTableField import ParameterTableField
14
12
from sextante .parameters .ParameterTable import ParameterTable
15
- from sextante .gui .OutputSelectionPanel import OutputSelectionPanel
16
13
from sextante .gui .AlgorithmExecutor import AlgorithmExecutor
17
14
from sextante .core .GeoAlgorithmExecutionException import GeoAlgorithmExecutionException
18
15
from sextante .core .SextanteLog import SextanteLog
19
16
from sextante .gui .SextantePostprocessing import SextantePostprocessing
20
- from sextante .gui .RangePanel import RangePanel
21
17
from sextante .parameters .ParameterRange import ParameterRange
22
18
from sextante .gui .HTMLViewerDialog import HTMLViewerDialog
23
- from sextante .gui .NumberInputPanel import NumberInputPanel
24
19
from sextante .parameters .ParameterNumber import ParameterNumber
25
- from sextante .gui .InputLayerSelectorPanel import InputLayerSelectorPanel
26
- from sextante .parameters .ParameterExtent import ParameterExtent
27
- from sextante .gui .ExtentSelectionPanel import ExtentSelectionPanel
28
- from sextante .gui .ParametersTable import ParametersTable
20
+
21
+ from sextante .gui .ParametersPanel import ParametersPanel
29
22
30
23
try :
31
24
_fromUtf8 = QtCore .QString .fromUtf8
@@ -59,19 +52,7 @@ def setupUi(self, dialog, alg):
59
52
self .showHelpButton .setText ("Show help" )
60
53
self .buttonBox .addButton (self .showHelpButton , QtGui .QDialogButtonBox .ActionRole )
61
54
QtCore .QObject .connect (self .showHelpButton , QtCore .SIGNAL ("clicked()" ), self .showHelp )
62
- #=======================================================================
63
- # self.tableWidget = QtGui.QTableWidget()
64
- # self.tableWidget.setSelectionMode(QtGui.QAbstractItemView.NoSelection)
65
- # self.tableWidget.setColumnCount(2)
66
- # self.tableWidget.setColumnWidth(0,300)
67
- # self.tableWidget.setColumnWidth(1,300)
68
- # self.tableWidget.setHorizontalHeaderItem(0, QtGui.QTableWidgetItem("Parameter"))
69
- # self.tableWidget.setHorizontalHeaderItem(1, QtGui.QTableWidgetItem("Value"))
70
- # self.tableWidget.verticalHeader().setVisible(False)
71
- # self.tableWidget.horizontalHeader().setResizeMode(QtGui.QHeaderView.Stretch)
72
- # self.setTableContent()
73
- #=======================================================================
74
- self .paramTable = ParametersTable (self .alg , self .dialog )
55
+ self .paramTable = ParametersPanel (self .alg , self .dialog )
75
56
self .scrollArea = QtGui .QScrollArea ()
76
57
self .scrollArea .setWidget (self .paramTable )
77
58
self .scrollArea .setWidgetResizable (True )
@@ -92,179 +73,13 @@ def setupUi(self, dialog, alg):
92
73
QtCore .QObject .connect (self .buttonBox , QtCore .SIGNAL (_fromUtf8 ("rejected()" )), self .reject )
93
74
QtCore .QMetaObject .connectSlotsByName (dialog )
94
75
95
- #===============================================================================
96
- # def somethingDependsOnThisParameter(self, parent):
97
- # for param in self.alg.parameters:
98
- # if isinstance(param, ParameterTableField):
99
- # if param.parent == parent.name:
100
- # return True
101
- # return False
102
- #
103
- # def getWidgetFromParameter(self, param):
104
- # if isinstance(param, ParameterRaster):
105
- # layers = QGisLayers.getRasterLayers()
106
- # items = []
107
- # if (param.optional):
108
- # items.append((self.NOT_SELECTED, None))
109
- # for layer in layers:
110
- # items.append((layer.name(), layer))
111
- # item = InputLayerSelectorPanel(items)
112
- # elif isinstance(param, ParameterVector):
113
- # if self.somethingDependsOnThisParameter(param):
114
- # item = QtGui.QComboBox()
115
- # layers = QGisLayers.getVectorLayers(param.shapetype)
116
- # if (param.optional):
117
- # item.addItem(self.NOT_SELECTED, None)
118
- # for layer in layers:
119
- # item.addItem(layer.name(), layer)
120
- # item.currentIndexChanged.connect(self.updateDependentFields)
121
- # item.name = param.name
122
- # else:
123
- # layers = QGisLayers.getVectorLayers(param.shapetype)
124
- # items = []
125
- # if (param.optional):
126
- # items.append((self.NOT_SELECTED, None))
127
- # for layer in layers:
128
- # items.append((layer.name(), layer))
129
- # item = InputLayerSelectorPanel(items)
130
- # elif isinstance(param, ParameterTable):
131
- # if self.somethingDependsOnThisParameter(param):
132
- # item = QtGui.QComboBox()
133
- # layers = QGisLayers.getTables()
134
- # if (param.optional):
135
- # item.addItem(self.NOT_SELECTED, None)
136
- # for layer in layers:
137
- # item.addItem(layer.name(), layer)
138
- # item.currentIndexChanged.connect(self.updateDependentFields)
139
- # item.name = param.name
140
- # else:
141
- # layers = QGisLayers.getTables()
142
- # items = []
143
- # if (param.optional):
144
- # items.append((self.NOT_SELECTED, None))
145
- # for layer in layers:
146
- # items.append((layer.name(), layer))
147
- # item = InputLayerSelectorPanel(items)
148
- # elif isinstance(param, ParameterBoolean):
149
- # item = QtGui.QComboBox()
150
- # item.addItem("Yes")
151
- # item.addItem("No")
152
- # if param.default:
153
- # item.setCurrentIndex(0)
154
- # else:
155
- # item.setCurrentIndex(1)
156
- # elif isinstance(param, ParameterTableField):
157
- # item = QtGui.QComboBox()
158
- # if param.parent in self.dependentItems:
159
- # items = self.dependentItems[param.parent]
160
- # else:
161
- # items = []
162
- # self.dependentItems[param.parent] = items
163
- # items.append(param.name)
164
- # parent = self.alg.getParameterFromName(param.parent)
165
- # if isinstance(parent, ParameterVector):
166
- # layers = QGisLayers.getVectorLayers(parent.shapetype)
167
- # else:
168
- # layers = QGisLayers.getTables()
169
- # if len(layers)>0:
170
- # fields = self.getFields(layers[0])
171
- # for i in fields:
172
- # item.addItem(fields[i].name())
173
- # elif isinstance(param, ParameterSelection):
174
- # item = QtGui.QComboBox()
175
- # item.addItems(param.options)
176
- # item.setCurrentIndex(param.default)
177
- # elif isinstance(param, ParameterFixedTable):
178
- # item = FixedTablePanel(param)
179
- # elif isinstance(param, ParameterRange):
180
- # item = RangePanel(param)
181
- # elif isinstance(param, ParameterMultipleInput):
182
- # if param.datatype == ParameterMultipleInput.TYPE_RASTER:
183
- # options = QGisLayers.getRasterLayers()
184
- # elif param.datatype == ParameterMultipleInput.TYPE_VECTOR_ANY:
185
- # options = QGisLayers.getVectorLayers()
186
- # else:
187
- # options = QGisLayers.getVectorLayers(param.datatype)
188
- # opts = []
189
- # for opt in options:
190
- # opts.append(opt.name())
191
- # item = MultipleInputPanel(opts)
192
- # elif isinstance(param, ParameterNumber):
193
- # item = NumberInputPanel(param.default, param.isInteger)
194
- # elif isinstance(param, ParameterExtent):
195
- # item = ExtentSelectionPanel(self.dialog, param.default)
196
- # else:
197
- # item = QtGui.QLineEdit()
198
- # item.setText(str(param.default))
199
- #
200
- # return item
201
- #
202
- # def updateDependentFields(self):
203
- # sender = self.dialog.sender()
204
- # if not isinstance(sender, QComboBox):
205
- # return
206
- # if not sender.name in self.dependentItems:
207
- # return
208
- # layer = sender.itemData(sender.currentIndex()).toPyObject()
209
- # children = self.dependentItems[sender.name]
210
- # for child in children:
211
- # widget = self.valueItems[child]
212
- # widget.clear()
213
- # fields = self.getFields(layer)
214
- # for i in fields:
215
- # widget.addItem(fields[i].name())
216
- #
217
- #
218
- # def getFields(self, layer):
219
- # return layer.dataProvider().fields()
220
- #===============================================================================
221
-
222
76
def showHelp (self ):
223
77
if self .alg .helpFile ():
224
78
dlg = HTMLViewerDialog (self .alg .helpFile ())
225
79
dlg .exec_ ()
226
80
else :
227
81
QMessageBox .warning (self .dialog , "No help available" , "No help is available for the current algorithm." )
228
82
229
- #===============================================================================
230
- # def setTableContent(self):
231
- # params = self.alg.parameters
232
- # outputs = self.alg.outputs
233
- # numParams = len(self.alg.parameters)
234
- # numOutputs = 0
235
- # for output in outputs:
236
- # if not output.hidden:
237
- # numOutputs += 1
238
- # self.tableWidget.setRowCount(numParams + numOutputs)
239
- #
240
- # i=0
241
- # for param in params:
242
- # item = QtGui.QTableWidgetItem(param.description)
243
- # item.setFlags(QtCore.Qt.ItemIsEnabled)
244
- # self.tableWidget.setItem(i,0, item)
245
- # item = self.getWidgetFromParameter(param)
246
- # self.valueItems[param.name] = item
247
- # self.tableWidget.setCellWidget(i,1, item)
248
- # self.tableWidget.setRowHeight(i,22)
249
- # i+=1
250
- #
251
- # for output in outputs:
252
- # if output.hidden:
253
- # continue
254
- # item = QtGui.QTableWidgetItem(output.description + "<" + output.__module__.split(".")[-1] + ">")
255
- # item.setFlags(QtCore.Qt.ItemIsEnabled)
256
- # self.tableWidget.setItem(i,0, item)
257
- # item = OutputSelectionPanel(output,self.alg)
258
- # self.valueItems[output.name] = item
259
- # self.tableWidget.setCellWidget(i,1, item)
260
- # self.tableWidget.setRowHeight(i,22)
261
- # i+=1
262
- #
263
- # self.fillParameterValuesFromHistory()
264
- #
265
- # def fillParameterValuesFromHistory(self):
266
- # pass
267
- #===============================================================================
268
83
269
84
def setParamValues (self ):
270
85
params = self .alg .parameters
@@ -317,12 +132,28 @@ def setParamValue(self, param, widget):
317
132
def accept (self ):
318
133
try :
319
134
if self .setParamValues ():
320
- QApplication .setOverrideCursor (QCursor (Qt .WaitCursor ))
321
- SextanteLog .addToLog (SextanteLog .LOG_ALGORITHM , self .alg .getAsCommand ())
322
- ret = AlgorithmExecutor .runalg (self .alg , self )
323
- QApplication .restoreOverrideCursor ()
324
- if ret :
325
- SextantePostprocessing .handleAlgorithmResults (self .alg )
135
+ buttons = self .paramTable .iterateButtons
136
+ iterateParam = None
137
+ for i in range (len (buttons .values ())):
138
+ button = buttons .values ()[i ]
139
+ if button .isChecked ():
140
+ iterateParam = buttons .keys ()[i ]
141
+ break
142
+ if iterateParam :
143
+ QApplication .setOverrideCursor (QCursor (Qt .WaitCursor ))
144
+ #SextanteLog.addToLog(SextanteLog.LOG_ALGORITHM, self.alg.getAsCommand())
145
+ ret = AlgorithmExecutor .runalgIterating (self .alg , iterateParam , self )
146
+ QApplication .restoreOverrideCursor ()
147
+ #if ret:
148
+ #SextantePostprocessing.handleAlgorithmResults(self.alg)
149
+ else :
150
+ QApplication .setOverrideCursor (QCursor (Qt .WaitCursor ))
151
+ SextanteLog .addToLog (SextanteLog .LOG_ALGORITHM , self .alg .getAsCommand ())
152
+ ret = AlgorithmExecutor .runalg (self .alg , self )
153
+ QApplication .restoreOverrideCursor ()
154
+ if ret :
155
+ SextantePostprocessing .handleAlgorithmResults (self .alg )
156
+
326
157
self .dialog .executed = True
327
158
self .dialog .close ()
328
159
0 commit comments