Skip to content

Commit 6158e9b

Browse files
arnaud-morvanvolaya
authored andcommittedOct 5, 2016
Add CrsWidgetWrapper
1 parent bb0938a commit 6158e9b

File tree

5 files changed

+30
-8
lines changed

5 files changed

+30
-8
lines changed
 

‎python/plugins/processing/core/parameters.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,12 +162,16 @@ def getAsScriptCode(self):
162162

163163
class ParameterCrs(Parameter):
164164

165-
def __init__(self, name='', description='', default=None, optional=False):
165+
default_metadata = {
166+
'widget_wrapper': 'processing.gui.wrappers.CrsWidgetWrapper'
167+
}
168+
169+
def __init__(self, name='', description='', default=None, optional=False, metadata={}):
166170
'''The value is a string that uniquely identifies the
167171
coordinate reference system. Typically it is the auth id of the CRS
168172
(if the authority is EPSG) or proj4 string of the CRS (in case
169173
of other authorities or user defined projections).'''
170-
Parameter.__init__(self, name, description, default, optional)
174+
Parameter.__init__(self, name, description, default, optional, metadata)
171175

172176
def setValue(self, value):
173177
if value is None or value.strip() == '':

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@
5555
from processing.core.parameters import ParameterString
5656
from processing.core.parameters import ParameterNumber
5757
from processing.core.parameters import ParameterFile
58-
from processing.core.parameters import ParameterCrs
5958
from processing.core.parameters import ParameterPoint
6059
from processing.core.parameters import ParameterGeometryPredicate
6160

@@ -172,7 +171,7 @@ def setParamValue(self, param, wrapper, alg=None):
172171
else:
173172
options = dataobjects.getVectorLayers([param.datatype], sorting=False)
174173
return param.setValue([options[i] for i in widget.selectedoptions])
175-
elif isinstance(param, (ParameterNumber, ParameterFile, ParameterCrs,
174+
elif isinstance(param, (ParameterNumber, ParameterFile,
176175
ParameterExtent, ParameterPoint)):
177176
return param.setValue(widget.getValue())
178177
elif isinstance(param, ParameterString):

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,14 +39,16 @@
3939

4040
class CrsSelectionPanel(BASE, WIDGET):
4141

42-
def __init__(self, default):
42+
def __init__(self, default='EPSG:4326'):
4343
super(CrsSelectionPanel, self).__init__(None)
4444
self.setupUi(self)
4545

4646
self.leText.setEnabled(False)
4747

4848
self.btnSelect.clicked.connect(self.browseCRS)
49-
self.crs = QgsCoordinateReferenceSystem(default).authid()
49+
50+
# TODO: Default should be removed
51+
self.crs = default
5052
self.updateText()
5153

5254
def setAuthId(self, authid):

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -411,8 +411,6 @@ def getWidgetFromParameter(self, param):
411411
item = ExtentSelectionPanel(self.parent, self.alg, param.default)
412412
elif isinstance(param, ParameterPoint):
413413
item = PointSelectionPanel(self.parent, param.default)
414-
elif isinstance(param, ParameterCrs):
415-
item = CrsSelectionPanel(param.default)
416414
elif isinstance(param, ParameterString):
417415
if param.multiline:
418416
verticalLayout = QVBoxLayout()

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

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,14 @@
2828

2929
from inspect import isclass
3030

31+
from qgis.core import QgsCoordinateReferenceSystem
3132
from qgis.PyQt.QtWidgets import (
3233
QCheckBox,
3334
QComboBox,
3435
)
3536

37+
from processing.gui.CrsSelectionPanel import CrsSelectionPanel
38+
3639
DIALOG_STANDARD = 'standard'
3740
DIALOG_BATCH = 'batch'
3841
DIALOG_MODELER = 'modeler'
@@ -115,3 +118,19 @@ def value(self):
115118

116119
if self.dialog in (DIALOG_BATCH, DIALOG_MODELER):
117120
return self.widget.itemData(self.widget.currentIndex())
121+
122+
123+
class CrsWidgetWrapper(WidgetWrapper):
124+
125+
def createWidget(self, extra_values=[]):
126+
return CrsSelectionPanel()
127+
128+
def setValue(self, value):
129+
if isinstance(value, basestring): # authId
130+
self.widget.crs = value
131+
else:
132+
self.widget.crs = QgsCoordinateReferenceSystem(value).authid()
133+
self.widget.updateText()
134+
135+
def value(self):
136+
return self.widget.getValue()

0 commit comments

Comments
 (0)
Please sign in to comment.