Skip to content
Permalink
Browse files

[backport on 2.14] enable custom help in python expressions

  • Loading branch information
Gustry authored and m-kuhn committed Sep 5, 2017
1 parent 9117137 commit d8fa85eb2f6ac96a280cba0260c628c2a0046b64
Showing with 27 additions and 1 deletion.
  1. +1 −0 .travis.yml
  2. +2 −1 python/core/__init__.py
  3. +24 −0 tests/src/python/test_qgsexpression.py
@@ -10,6 +10,7 @@ matrix:
- BUILD=qt4
- QT_VERSION=4
# - LLVM_VERSION=3.8
dist: precise
sudo: false
cache:
apt: true
@@ -83,7 +83,7 @@ def func(self, values, feature, parent):

helptemplate = string.Template("""<h3>$name function</h3><br>$doc""")
name = kwargs.get('name', function.__name__)
helptext = function.__doc__ or ''
helptext = kwargs.get('help_text') or function.__doc__ or ''
helptext = helptext.strip()
expandargs = False

@@ -138,6 +138,7 @@ def wrapper(func):
return register_function(func, args, group, **kwargs)
return wrapper


try:
# Add a __nonzero__ method onto QPyNullVariant so we can check for null values easier.
# >>> value = QPyNullVariant("int")
@@ -41,6 +41,18 @@ def special(values, feature, parent):
def sqrt(values, feature, parent):
pass

@qgsfunction(1, 'testing', register=False)
def help_with_docstring(values, feature, parent):
"""The help comes from the python docstring."""
pass

help_text = 'The help comes from a variable.'

@qgsfunction(1, 'testing', register=False, help_text=help_text)
def help_with_variable(values, feature, parent):
"""This docstring is not used for the help."""
pass

@qgsfunction(1, 'testing', register=False, usesgeometry=True)
def geomtest(values, feature, parent):
pass
@@ -66,6 +78,17 @@ def testAutoCountsCorrectArgs(self):
args = function.params()
self.assertEqual(args, 3)

def testHelp(self):
QgsExpression.registerFunction(self.help_with_variable)
html = ('<h3>help_with_variable function</h3><br>'
'The help comes from a variable.')
self.assertEqual(self.help_with_variable.helptext(), html)

QgsExpression.registerFunction(self.help_with_docstring)
html = ('<h3>help_with_docstring function</h3><br>'
'The help comes from the python docstring.')
self.assertEqual(self.help_with_docstring.helptext(), html)

def testAutoArgsAreExpanded(self):
function = self.expandargs
args = function.params()
@@ -186,5 +209,6 @@ def testComment(self):
result = exp.evaluate()
self.assertEqual(exp_res, result)


if __name__ == "__main__":
unittest.main()

0 comments on commit d8fa85e

Please sign in to comment.
You can’t perform that action at this time.