Skip to content

Commit 0e2f92f

Browse files
committed
Updated model parameters window
fixed #6417
1 parent 6369196 commit 0e2f92f

File tree

6 files changed

+110
-23
lines changed

6 files changed

+110
-23
lines changed

python/plugins/sextante/gui/ParametersPanel.py

+1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
from sextante.outputs.OutputRaster import OutputRaster
3030
from sextante.outputs.OutputTable import OutputTable
3131
from sextante.outputs.OutputVector import OutputVector
32+
from sextante.outputs.OutputNumber import OutputNumber
3233
from sextante.parameters.ParameterString import ParameterString
3334

3435
class ParametersPanel(QtGui.QWidget):

python/plugins/sextante/modeler/ModelerParametersDialog.py

+96-17
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
from sextante.parameters.ParameterRange import ParameterRange
2121
from sextante.gui.RangePanel import RangePanel
2222
from sextante.outputs.OutputNumber import OutputNumber
23+
from sextante.outputs.OutputHTML import OutputHTML
2324
from sextante.parameters.ParameterFile import ParameterFile
2425
from sextante.outputs.OutputFile import OutputFile
2526
from sextante.core.WrongHelpFileException import WrongHelpFileException
@@ -41,30 +42,108 @@ def __init__(self, alg, model, algIndex = None):
4142

4243

4344
def setupUi(self):
45+
self.labels = {}
46+
self.widgets = {}
47+
self.checkBoxes = {}
48+
self.showAdvanced = False
4449
self.valueItems = {}
4550
self.dependentItems = {}
4651
self.resize(650, 450)
4752
self.buttonBox = QtGui.QDialogButtonBox()
4853
self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
4954
self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)
50-
self.tableWidget = QtGui.QTableWidget()
51-
self.tableWidget.setSelectionMode(QtGui.QAbstractItemView.NoSelection)
52-
self.tableWidget.setColumnCount(2)
53-
self.tableWidget.setColumnWidth(0,300)
54-
self.tableWidget.setColumnWidth(1,300)
55-
self.tableWidget.setHorizontalHeaderItem(0, QtGui.QTableWidgetItem("Parameter"))
56-
self.tableWidget.setHorizontalHeaderItem(1, QtGui.QTableWidgetItem("Value"))
57-
self.tableWidget.verticalHeader().setVisible(False)
58-
self.tableWidget.horizontalHeader().setResizeMode(QtGui.QHeaderView.Stretch)
59-
self.setTableContent()
55+
#=======================================================================
56+
# self.tableWidget = QtGui.QTableWidget()
57+
# self.tableWidget.setSelectionMode(QtGui.QAbstractItemView.NoSelection)
58+
# self.tableWidget.setColumnCount(2)
59+
# self.tableWidget.setColumnWidth(0,300)
60+
# self.tableWidget.setColumnWidth(1,300)
61+
# self.tableWidget.setHorizontalHeaderItem(0, QtGui.QTableWidgetItem("Parameter"))
62+
# self.tableWidget.setHorizontalHeaderItem(1, QtGui.QTableWidgetItem("Value"))
63+
# self.tableWidget.verticalHeader().setVisible(False)
64+
# self.tableWidget.horizontalHeader().setResizeMode(QtGui.QHeaderView.Stretch)
65+
# self.setTableContent()
66+
#=======================================================================
67+
68+
69+
tooltips = self.alg.getParameterDescriptions()
70+
self.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding)
71+
self.verticalLayout = QtGui.QVBoxLayout()
72+
self.verticalLayout.setSpacing(5)
73+
self.verticalLayout.setMargin(20)
74+
for param in self.alg.parameters:
75+
if param.isAdvanced:
76+
self.advancedButton = QtGui.QPushButton()
77+
self.advancedButton.setText("Show advanced parameters")
78+
self.advancedButton.setMaximumWidth(150)
79+
QtCore.QObject.connect(self.advancedButton, QtCore.SIGNAL("clicked()"), self.showAdvancedParametersClicked)
80+
self.verticalLayout.addWidget(self.advancedButton)
81+
break
82+
for param in self.alg.parameters:
83+
if param.hidden:
84+
continue
85+
desc = param.description
86+
if isinstance(param, ParameterExtent):
87+
desc += "(xmin, xmax, ymin, ymax)"
88+
label = QtGui.QLabel(desc)
89+
self.labels[param.name] = label
90+
widget = self.getWidgetFromParameter(param)
91+
self.valueItems[param.name] = widget
92+
if isinstance(param, ParameterVector):
93+
layout = QtGui.QHBoxLayout()
94+
layout.setSpacing(2)
95+
layout.setMargin(0)
96+
layout.addWidget(widget)
97+
button = QtGui.QToolButton()
98+
icon = QtGui.QIcon(os.path.dirname(__file__) + "/../images/iterate.png")
99+
button.setIcon(icon)
100+
button.setToolTip("Iterate over this layer")
101+
button.setCheckable(True)
102+
button.setMaximumWidth(30)
103+
button.setMaximumHeight(30)
104+
layout.addWidget(button)
105+
self.iterateButtons[param.name] = button
106+
QtCore.QObject.connect(button, QtCore.SIGNAL("toggled(bool)"), self.buttonToggled)
107+
widget = QtGui.QWidget()
108+
widget.setLayout(layout)
109+
if param.name in tooltips.keys():
110+
tooltip = tooltips[param.name]
111+
else:
112+
tooltip = param.description
113+
label.setToolTip(tooltip)
114+
widget.setToolTip(tooltip)
115+
if param.isAdvanced:
116+
label.setVisible(self.showAdvanced)
117+
widget.setVisible(self.showAdvanced)
118+
self.widgets[param.name] = widget
119+
self.verticalLayout.addWidget(label)
120+
self.verticalLayout.addWidget(widget)
121+
122+
for output in self.alg.outputs:
123+
if output.hidden:
124+
continue
125+
if isinstance(output, (OutputRaster, OutputVector, OutputTable, OutputHTML)):
126+
label = QtGui.QLabel(output.description + "<" + output.__module__.split(".")[-1] + ">")
127+
item = QLineEdit()
128+
if hasattr(item, 'setPlaceholderText'):
129+
item.setPlaceholderText(ModelerParametersDialog.ENTER_NAME)
130+
self.verticalLayout.addWidget(label)
131+
self.verticalLayout.addWidget(item)
132+
self.valueItems[output.name] = item
133+
134+
self.verticalLayout.addStretch(1000)
135+
self.setLayout(self.verticalLayout)
136+
60137
self.setPreviousValues()
61138
self.setWindowTitle(self.alg.name)
62-
self.verticalLayout = QtGui.QVBoxLayout()
63-
self.verticalLayout.setSpacing(2)
64-
self.verticalLayout.setMargin(0)
139+
self.verticalLayout2 = QtGui.QVBoxLayout()
140+
self.verticalLayout2.setSpacing(2)
141+
self.verticalLayout2.setMargin(0)
65142
self.tabWidget = QtGui.QTabWidget()
66143
self.tabWidget.setMinimumWidth(300)
67-
self.tabWidget.addTab(self.tableWidget, "Parameters")
144+
self.paramPanel = QtGui.QWidget()
145+
self.paramPanel.setLayout(self.verticalLayout)
146+
self.tabWidget.addTab(self.paramPanel, "Parameters")
68147
self.webView = QtWebKit.QWebView()
69148
html = None
70149
try:
@@ -84,9 +163,9 @@ def setupUi(self):
84163
except:
85164
self.webView.setHtml("<h2>Could not open help file :-( </h2>")
86165
self.tabWidget.addTab(self.webView, "Help")
87-
self.verticalLayout.addWidget(self.tabWidget)
88-
self.verticalLayout.addWidget(self.buttonBox)
89-
self.setLayout(self.verticalLayout)
166+
self.verticalLayout2.addWidget(self.tabWidget)
167+
self.verticalLayout2.addWidget(self.buttonBox)
168+
self.setLayout(self.verticalLayout2)
90169
QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("accepted()"), self.okPressed)
91170
QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("rejected()"), self.cancelPressed)
92171
QtCore.QMetaObject.connectSlotsByName(self)

python/plugins/sextante/otb/OTBAlgorithm.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,8 @@ def processAlgorithm(self, progress):
162162
loglines.append("OTB execution command")
163163
for line in commands:
164164
loglines.append(line)
165+
progress.setCommand(line)
165166

166167
SextanteLog.addToLog(SextanteLog.LOG_INFO, loglines)
167-
progress.setCommand(loglines)
168+
168169
OTBUtils.executeOtb(commands, progress)

python/plugins/sextante/saga/SagaAlgorithm.py

+8-2
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,12 @@ def defineCharacteristicsFromFile(self):
6767
lines = open(self.descriptionFile)
6868
line = lines.readline().strip("\n").strip()
6969
self.name = line
70+
if "|" in self.name:
71+
tokens = self.name.split("|")
72+
self.name = tokens[0]
73+
self.cmdname = tokens[1]
74+
else:
75+
self.cmdname = self.name
7076
line = lines.readline().strip("\n").strip()
7177
self.undecoratedGroup = line
7278
self.group = SagaGroupNameDecorator.getDecoratedName(self.undecoratedGroup)
@@ -201,9 +207,9 @@ def processAlgorithm(self, progress):
201207

202208
#2: set parameters and outputs
203209
if SextanteUtils.isWindows():
204-
command = self.undecoratedGroup + " \"" + self.name + "\""
210+
command = self.undecoratedGroup + " \"" + self.cmdname + "\""
205211
else:
206-
command = "lib" + self.undecoratedGroup + " \"" + self.name + "\""
212+
command = "lib" + self.undecoratedGroup + " \"" + self.cmdname + "\""
207213

208214
for param in self.parameters:
209215
if param.value is None:

python/plugins/sextante/saga/description/ChannelNetwork.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ ParameterRaster|INIT_GRID|Initiation Grid|False
66
ParameterSelection|INIT_METHOD|Initiation Type|[0] Less than;[1] Equals;[2] Greater than
77
ParameterNumber|INIT_VALUE|Initiation Threshold|None|None|0.0
88
ParameterRaster|DIV_GRID|Divergence|True
9-
ParameterNumber|DIV_CELLS|Tracing: Max. Divergence|None|None|10.0
9+
ParameterNumber|DIV_CELLS|Tracing: Max. Divergence|None|None|10
1010
ParameterRaster|TRACE_WEIGHT|Tracing: Weight|True
11-
ParameterNumber|MINLEN|Min. Segment Length|0.0|None|10.0
11+
ParameterNumber|MINLEN|Min. Segment Length|0.0|None|10
1212
OutputRaster|CHNLNTWRK|Channel Network
1313
OutputRaster|CHNLROUTE|Channel Direction
1414
OutputVector|SHAPES|Channel Network

python/plugins/sextante/saga/description/UpslopeArea.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Upslope Area
1+
Upslope Area|4
22
ta_hydrology
33
ParameterRaster|TARGET|Target Area|True
44
ParameterNumber|TARGET_PT_X|Target X coordinate|None|None|0.0

0 commit comments

Comments
 (0)