20
20
from sextante .parameters .ParameterRange import ParameterRange
21
21
from sextante .gui .RangePanel import RangePanel
22
22
from sextante .outputs .OutputNumber import OutputNumber
23
+ from sextante .outputs .OutputHTML import OutputHTML
23
24
from sextante .parameters .ParameterFile import ParameterFile
24
25
from sextante .outputs .OutputFile import OutputFile
25
26
from sextante .core .WrongHelpFileException import WrongHelpFileException
@@ -41,30 +42,108 @@ def __init__(self, alg, model, algIndex = None):
41
42
42
43
43
44
def setupUi (self ):
45
+ self .labels = {}
46
+ self .widgets = {}
47
+ self .checkBoxes = {}
48
+ self .showAdvanced = False
44
49
self .valueItems = {}
45
50
self .dependentItems = {}
46
51
self .resize (650 , 450 )
47
52
self .buttonBox = QtGui .QDialogButtonBox ()
48
53
self .buttonBox .setOrientation (QtCore .Qt .Horizontal )
49
54
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
+
60
137
self .setPreviousValues ()
61
138
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 )
65
142
self .tabWidget = QtGui .QTabWidget ()
66
143
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" )
68
147
self .webView = QtWebKit .QWebView ()
69
148
html = None
70
149
try :
@@ -84,9 +163,9 @@ def setupUi(self):
84
163
except :
85
164
self .webView .setHtml ("<h2>Could not open help file :-( </h2>" )
86
165
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 )
90
169
QtCore .QObject .connect (self .buttonBox , QtCore .SIGNAL ("accepted()" ), self .okPressed )
91
170
QtCore .QObject .connect (self .buttonBox , QtCore .SIGNAL ("rejected()" ), self .cancelPressed )
92
171
QtCore .QMetaObject .connectSlotsByName (self )
0 commit comments