Skip to content

Commit fb205b1

Browse files
authoredNov 10, 2017
Merge pull request #5589 from nyalldawson/remote_proc_exp
[processing] Remove expression buttons from parameters outside modeler
2 parents 67f8465 + 612f516 commit fb205b1

File tree

4 files changed

+12
-68
lines changed

4 files changed

+12
-68
lines changed
 

‎python/plugins/processing/gui/DestinationSelectionPanel.py

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -122,11 +122,6 @@ def selectOutput(self):
122122
actionSaveToFile.triggered.connect(self.selectFile)
123123
popupMenu.addAction(actionSaveToFile)
124124

125-
actionShowExpressionsBuilder = QAction(
126-
self.tr('Use expression...'), self.btnSelect)
127-
actionShowExpressionsBuilder.triggered.connect(self.showExpressionsBuilder)
128-
popupMenu.addAction(actionShowExpressionsBuilder)
129-
130125
if isinstance(self.parameter, QgsProcessingParameterFeatureSink) \
131126
and self.alg.provider().supportsNonFileBasedOutput():
132127
actionSaveToSpatialite = QAction(
@@ -145,15 +140,6 @@ def selectOutput(self):
145140

146141
popupMenu.exec_(QCursor.pos())
147142

148-
def showExpressionsBuilder(self):
149-
context = self.alg.createExpressionContext({}, createContext())
150-
dlg = QgsExpressionBuilderDialog(None, self.leText.text(), self, 'generic',
151-
context)
152-
dlg.setWindowTitle(self.tr('Expression based output'))
153-
if dlg.exec_() == QDialog.Accepted:
154-
expression = QgsExpression(dlg.expressionText())
155-
self.leText.setText(expression.evaluate(context))
156-
157143
def saveToTemporary(self):
158144
if isinstance(self.parameter, QgsProcessingParameterFeatureSink) and self.alg.provider().supportsNonFileBasedOutput():
159145
self.leText.setPlaceholderText(self.SAVE_TO_TEMP_LAYER)

‎python/plugins/processing/gui/NumberInputPanel.py

Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828

2929
import os
3030
import math
31+
import sip
3132

3233
from qgis.PyQt import uic
3334
from qgis.PyQt.QtCore import pyqtSignal
@@ -123,9 +124,7 @@ class NumberInputPanel(NUMBER_BASE, NUMBER_WIDGET):
123124

124125
"""
125126
Number input panel for use outside the modeller - this input panel
126-
contains a user friendly spin box for entering values. It also
127-
allows expressions to be evaluated, but these expressions are evaluated
128-
immediately after entry and are not stored anywhere.
127+
contains a user friendly spin box for entering values.
129128
"""
130129

131130
hasChanged = pyqtSignal()
@@ -172,24 +171,13 @@ def __init__(self, param):
172171
else:
173172
self.setValue(0)
174173
self.spnValue.setClearValue(0)
175-
self.btnSelect.setFixedHeight(self.spnValue.height())
176174

177-
self.btnSelect.clicked.connect(self.showExpressionsBuilder)
178-
self.spnValue.valueChanged.connect(lambda: self.hasChanged.emit())
179-
180-
def showExpressionsBuilder(self):
181-
context = createExpressionContext()
182-
dlg = QgsExpressionBuilderDialog(None, str(self.spnValue.value()), self, 'generic', context)
175+
# we don't show the expression button outside of modeler
176+
self.layout().removeWidget(self.btnSelect)
177+
sip.delete(self.btnSelect)
178+
self.btnSelect = None
183179

184-
dlg.setWindowTitle(self.tr('Expression based input'))
185-
if dlg.exec_() == QDialog.Accepted:
186-
exp = QgsExpression(dlg.expressionText())
187-
if not exp.hasParserError():
188-
try:
189-
val = float(exp.evaluate(context))
190-
self.setValue(val)
191-
except:
192-
return
180+
self.spnValue.valueChanged.connect(lambda: self.hasChanged.emit())
193181

194182
def getValue(self):
195183
return self.spnValue.value()

‎python/plugins/processing/gui/wrappers.py

Lines changed: 2 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -229,36 +229,6 @@ def getFileName(self, initial_value=''):
229229
return filename, selected_filter
230230

231231

232-
class ExpressionWidgetWrapperMixin():
233-
234-
def wrapWithExpressionButton(self, basewidget):
235-
expr_button = QToolButton()
236-
expr_button.clicked.connect(self.showExpressionsBuilder)
237-
expr_button.setText('…')
238-
239-
layout = QHBoxLayout()
240-
layout.setContentsMargins(0, 0, 0, 0)
241-
layout.addWidget(basewidget)
242-
layout.addWidget(expr_button)
243-
244-
widget = QWidget()
245-
widget.setLayout(layout)
246-
247-
return widget
248-
249-
def showExpressionsBuilder(self):
250-
context = dataobjects.createExpressionContext()
251-
value = self.value()
252-
if not isinstance(value, str):
253-
value = ''
254-
dlg = QgsExpressionBuilderDialog(None, value, self.widget, 'generic', context)
255-
dlg.setWindowTitle(self.tr('Expression based input'))
256-
if dlg.exec_() == QDialog.Accepted:
257-
exp = QgsExpression(dlg.expressionText())
258-
if not exp.hasParserError():
259-
self.setValue(dlg.expressionText())
260-
261-
262232
class BasicWidgetWrapper(WidgetWrapper):
263233

264234
def createWidget(self):
@@ -1032,15 +1002,15 @@ def validator(v):
10321002
return self.comboValue(validator, combobox=self.combo)
10331003

10341004

1035-
class StringWidgetWrapper(WidgetWrapper, ExpressionWidgetWrapperMixin):
1005+
class StringWidgetWrapper(WidgetWrapper):
10361006

10371007
def createWidget(self):
10381008
if self.dialogType == DIALOG_STANDARD:
10391009
if self.param.multiLine():
10401010
widget = QPlainTextEdit()
10411011
else:
10421012
self._lineedit = QLineEdit()
1043-
return self.wrapWithExpressionButton(self._lineedit)
1013+
widget = self._lineedit
10441014

10451015
elif self.dialogType == DIALOG_BATCH:
10461016
widget = QLineEdit()

‎python/plugins/processing/gui/wrappers_postgis.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ def createWidget(self):
4747
for group in self.items():
4848
self._combo.addItem(*group)
4949
self._combo.currentIndexChanged.connect(lambda: self.widgetValueHasChanged.emit(self))
50-
return self.wrapWithExpressionButton(self._combo)
50+
return self._combo
5151

5252
def items(self):
5353
settings = QgsSettings()
@@ -86,7 +86,7 @@ def createWidget(self, connection_param=None):
8686
self._combo.currentIndexChanged.connect(lambda: self.widgetValueHasChanged.emit(self))
8787
self._combo.lineEdit().editingFinished.connect(lambda: self.widgetValueHasChanged.emit(self))
8888

89-
return self.wrapWithExpressionButton(self._combo)
89+
return self._combo
9090

9191
def postInitialize(self, wrappers):
9292
for wrapper in wrappers:
@@ -158,7 +158,7 @@ def createWidget(self, schema_param=None):
158158
self._combo.currentIndexChanged.connect(lambda: self.widgetValueHasChanged.emit(self))
159159
self._combo.lineEdit().editingFinished.connect(lambda: self.widgetValueHasChanged.emit(self))
160160

161-
return self.wrapWithExpressionButton(self._combo)
161+
return self._combo
162162

163163
def postInitialize(self, wrappers):
164164
for wrapper in wrappers:

0 commit comments

Comments
 (0)
Please sign in to comment.