Skip to content

Commit

Permalink
added "advanced parameters" button in parameters panel
Browse files Browse the repository at this point in the history
git-svn-id: http://sextante.googlecode.com/svn/trunk/soft/bindings/qgis-plugin@158 881b9c09-3ef8-f3c2-ec3d-21d735c97f4d
  • Loading branch information
volayaf committed Apr 26, 2012
1 parent ce5b309 commit 4e62f7c
Show file tree
Hide file tree
Showing 18 changed files with 50 additions and 31 deletions.
2 changes: 1 addition & 1 deletion src/sextante/ftools/Union.py
Expand Up @@ -43,7 +43,7 @@ def processAlgorithm(self, progress):
else:
if not crsA != crsB:
SextanteLog.addToLog(SextanteLog.LOG_WARNING, "Union. Non-matching CRSs. Results might be unexpected")
fields = ftools_utils.combineVectorFields( self.vlayerA, self.vlayerB )
fields = ftools_utils.combineVectorFields(vlayerA, vlayerB )
longNames = ftools_utils.checkFieldNameLength( fields )
if not longNames.isEmpty():
raise GeoAlgorithmExecutionException("Following field names are longer than 10 characters:\n" + longNames.join('\n') )
Expand Down
4 changes: 4 additions & 0 deletions src/sextante/grass/GrassAlgorithm.py
Expand Up @@ -79,6 +79,10 @@ def defineCharacteristicsFromFile(self):
line = line.strip("\n").strip()
if line.startswith("Parameter"):
self.addParameter(ParameterFactory.getFromString(line))
elif line.startswith("*Parameter"):
param = ParameterFactory.getFromString(line[1:])
param.isAdvanced = True
self.addParameter(param)
else:
self.addOutput(OutputFactory.getFromString(line))
line = lines.readline().strip("\n").strip()
Expand Down
28 changes: 27 additions & 1 deletion src/sextante/gui/ParametersPanel.py
Expand Up @@ -34,9 +34,11 @@ def __init__(self, alg, paramDialog):
self.alg = alg;
self.paramDialog = paramDialog
self.valueItems = {}
self.labels = {}
self.widgets = {}
self.dependentItems = {}
self.iterateButtons = {}

self.showAdvanced = False
self.initGUI()

def initGUI(self):
Expand All @@ -63,11 +65,20 @@ def initGUI(self):
self.verticalLayout = QtGui.QVBoxLayout()
self.verticalLayout.setSpacing(5)
self.verticalLayout.setMargin(20)
for param in self.alg.parameters:
if param.isAdvanced:
self.advancedButton = QtGui.QPushButton()
self.advancedButton.setText("Show advanced parameters")
self.advancedButton.setMaximumWidth(150)
QtCore.QObject.connect(self.advancedButton, QtCore.SIGNAL("clicked()"), self.showAdvancedParametersClicked)
self.verticalLayout.addWidget(self.advancedButton)
break
for param in self.alg.parameters:
desc = param.description
if isinstance(param, ParameterExtent):
desc += "(xmin, xmax, ymin, ymax)"
label = QtGui.QLabel(desc)
self.labels[param.name] = label
widget = self.getWidgetFromParameter(param)
self.valueItems[param.name] = widget
if isinstance(param, ParameterVector):
Expand All @@ -93,6 +104,10 @@ def initGUI(self):
tooltip = param.description
label.setToolTip(tooltip)
widget.setToolTip(tooltip)
if param.isAdvanced:
label.setVisible(self.showAdvanced)
widget.setVisible(self.showAdvanced)
self.widgets[param.name] = widget
self.verticalLayout.addWidget(label)
self.verticalLayout.addWidget(widget)

Expand All @@ -108,6 +123,17 @@ def initGUI(self):
self.verticalLayout.addStretch(1000)
self.setLayout(self.verticalLayout)

def showAdvancedParametersClicked(self):
self.showAdvanced = not self.showAdvanced
if self.showAdvanced:
self.advancedButton.setText("Hide advanced parameters")
else:
self.advancedButton.setText("Show advanced parameters")
for param in self.alg.parameters:
if param.isAdvanced:
self.labels[param.name].setVisible(self.showAdvanced)
self.widgets[param.name].setVisible(self.showAdvanced)

def buttonToggled(self, value):
if value:
sender = self.sender()
Expand Down
3 changes: 3 additions & 0 deletions src/sextante/parameters/Parameter.py
Expand Up @@ -6,6 +6,9 @@ def __init__(self, name="", description=""):
self.description = description
self.value = None

#this is not used yet
self.isAdvanced = False


def setValue(self, obj):
'''sets the value of the parameter.
Expand Down
3 changes: 1 addition & 2 deletions src/sextante/parameters/ParameterBoolean.py
Expand Up @@ -3,8 +3,7 @@
class ParameterBoolean(Parameter):

def __init__(self, name="", description="", default=True):
self.name = name
self.description = description
Parameter.__init__(self, name, description)
self.default = default
self.value = None

Expand Down
3 changes: 1 addition & 2 deletions src/sextante/parameters/ParameterCrs.py
Expand Up @@ -4,8 +4,7 @@ class ParameterCrs(Parameter):

def __init__(self, name="", description="", default = "4326"):
'''The values is the EPSG code of the CRS'''
self.name = name
self.description = description
Parameter.__init__(self, name, description)
self.value = None
self.default = default

Expand Down
4 changes: 2 additions & 2 deletions src/sextante/parameters/ParameterExtent.py
@@ -1,9 +1,9 @@
from sextante.parameters.Parameter import Parameter

class ParameterExtent(Parameter):

def __init__(self, name="", description="", default="0,1,0,1"):
self.name = name
self.description = description
Parameter.__init__(self, name, description)
self.default = default
self.value = None #The value is a string in the form "xmin, xmax, ymin, y max"

Expand Down
3 changes: 1 addition & 2 deletions src/sextante/parameters/ParameterFile.py
Expand Up @@ -3,8 +3,7 @@
class ParameterFile(Parameter):

def __init__(self, name="", description="", isFolder = False):
self.name = name
self.description = description
Parameter.__init__(self, name, description)
self.value = None
self.isFolder = isFolder

Expand Down
4 changes: 1 addition & 3 deletions src/sextante/parameters/ParameterFixedTable.py
@@ -1,14 +1,12 @@
from sextante.parameters.Parameter import Parameter
from PyQt4 import QtGui

class ParameterFixedTable(Parameter):

def __init__(self, name="", description="", cols=["value"], numRows=3, fixedNumOfRows = False):
Parameter.__init__(self, name, description)
self.cols = cols
self.numRows = numRows
self.fixedNumOfRows = fixedNumOfRows
self.name = name
self.description = description
self.value = None

def setValue(self, obj):
Expand Down
3 changes: 1 addition & 2 deletions src/sextante/parameters/ParameterMultipleInput.py
Expand Up @@ -18,8 +18,7 @@ class ParameterMultipleInput(ParameterDataObject):
TYPE_RASTER = 3

def __init__(self, name="", description="", datatype=-1, optional = False):
self.name = name
self.description = description
ParameterDataObject.__init__(self, name, description)
self.datatype = datatype
self.optional = optional
self.value = None
Expand Down
3 changes: 1 addition & 2 deletions src/sextante/parameters/ParameterNumber.py
Expand Up @@ -4,8 +4,7 @@
class ParameterNumber(Parameter):

def __init__(self, name="", description="", minValue = None, maxValue = None, default = 0):
self.name = name
self.description = description
Parameter.__init__(self, name, description)
'''if the passed value is an int or looks like one, then we assume that float values
are not allowed'''
try:
Expand Down
3 changes: 1 addition & 2 deletions src/sextante/parameters/ParameterRange.py
Expand Up @@ -3,8 +3,7 @@
class ParameterRange(Parameter):

def __init__(self, name="", description="", default="0,1"):
self.name = name
self.description = description
Parameter.__init__(self, name, description)
self.default = default
self.value = None

Expand Down
3 changes: 1 addition & 2 deletions src/sextante/parameters/ParameterRaster.py
Expand Up @@ -6,8 +6,7 @@
class ParameterRaster(ParameterDataObject):

def __init__(self, name="", description="", optional=False):
self.name = name
self.description = description
ParameterDataObject.__init__(self, name, description)
self.optional = optional
self.value = None
self.exported = None
Expand Down
3 changes: 1 addition & 2 deletions src/sextante/parameters/ParameterSelection.py
Expand Up @@ -3,8 +3,7 @@
class ParameterSelection(Parameter):

def __init__(self, name="", description="", options=[], default = 0):
self.name = name
self.description = description
Parameter.__init__(self, name, description)
self.options = options
self.value = None
self.default = default
Expand Down
3 changes: 1 addition & 2 deletions src/sextante/parameters/ParameterString.py
Expand Up @@ -3,8 +3,7 @@
class ParameterString(Parameter):

def __init__(self, name="", description="", default=""):
self.name = name
self.description = description
Parameter.__init__(self, name, description)
self.default = default
self.value = None

Expand Down
3 changes: 1 addition & 2 deletions src/sextante/parameters/ParameterTable.py
Expand Up @@ -5,8 +5,7 @@
class ParameterTable(ParameterDataObject):

def __init__(self, name="", description="", optional=False):
self.name = name
self.description = description
ParameterDataObject.__init__(self, name, description)
self.optional = optional
self.value = None

Expand Down
3 changes: 1 addition & 2 deletions src/sextante/parameters/ParameterTableField.py
Expand Up @@ -3,8 +3,7 @@
class ParameterTableField(Parameter):

def __init__(self, name="", description="", parent=None):
self.name = name
self.description = description
Parameter.__init__(self, name, description)
self.parent = parent
self.value = None

Expand Down
3 changes: 1 addition & 2 deletions src/sextante/parameters/ParameterVector.py
Expand Up @@ -11,8 +11,7 @@ class ParameterVector(ParameterDataObject):
VECTOR_TYPE_ANY = -1

def __init__(self, name="", description="", shapetype=-1, optional=False):
self.name = name
self.description = description
ParameterDataObject.__init__(self, name, description)
self.optional = optional
self.shapetype = shapetype
self.value = None
Expand Down

0 comments on commit 4e62f7c

Please sign in to comment.