Fix Parameter.hasDefault (#1275)
When a default value is not set, hasDefault returns False. If default=None is passed, hasDefault still returns False.
This commit is contained in:
parent
302d66dd67
commit
b41c4a71e5
@ -1,3 +1,4 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
from ..Qt import QtGui, QtCore
|
from ..Qt import QtGui, QtCore
|
||||||
import os, weakref, re
|
import os, weakref, re
|
||||||
from ..pgcollections import OrderedDict
|
from ..pgcollections import OrderedDict
|
||||||
@ -188,13 +189,11 @@ class Parameter(QtCore.QObject):
|
|||||||
|
|
||||||
self.addChildren(self.opts.pop('children', []))
|
self.addChildren(self.opts.pop('children', []))
|
||||||
|
|
||||||
self.opts['value'] = None
|
|
||||||
if value is not None:
|
if value is not None:
|
||||||
self.setValue(value)
|
self.setValue(value)
|
||||||
|
|
||||||
if 'default' not in self.opts:
|
if 'default' not in self.opts:
|
||||||
self.opts['default'] = None
|
self.opts['default'] = None
|
||||||
self.setDefault(self.opts['value'])
|
|
||||||
|
|
||||||
## Connect all state changed signals to the general sigStateChanged
|
## Connect all state changed signals to the general sigStateChanged
|
||||||
self.sigValueChanged.connect(lambda param, data: self.emitStateChanged('value', data))
|
self.sigValueChanged.connect(lambda param, data: self.emitStateChanged('value', data))
|
||||||
@ -420,7 +419,7 @@ class Parameter(QtCore.QObject):
|
|||||||
|
|
||||||
def hasDefault(self):
|
def hasDefault(self):
|
||||||
"""Returns True if this parameter has a default value."""
|
"""Returns True if this parameter has a default value."""
|
||||||
return 'default' in self.opts
|
return self.opts['default'] is not None
|
||||||
|
|
||||||
def valueIsDefault(self):
|
def valueIsDefault(self):
|
||||||
"""Returns True if this parameter's value is equal to the default value."""
|
"""Returns True if this parameter's value is equal to the default value."""
|
||||||
|
36
pyqtgraph/parametertree/tests/test_Parameter.py
Normal file
36
pyqtgraph/parametertree/tests/test_Parameter.py
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import pytest
|
||||||
|
from pyqtgraph.parametertree import Parameter
|
||||||
|
|
||||||
|
|
||||||
|
def test_parameter_hasdefault():
|
||||||
|
opts = {'name': 'param', 'type': int, 'value': 1}
|
||||||
|
|
||||||
|
# default unspecified
|
||||||
|
p = Parameter(**opts)
|
||||||
|
assert not p.hasDefault()
|
||||||
|
|
||||||
|
p.setDefault(1)
|
||||||
|
assert p.hasDefault()
|
||||||
|
assert p.defaultValue() == 1
|
||||||
|
|
||||||
|
# default specified
|
||||||
|
p = Parameter(default=0, **opts)
|
||||||
|
assert p.hasDefault()
|
||||||
|
assert p.defaultValue() == 0
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize('passdefault', [True, False])
|
||||||
|
def test_parameter_hasdefault_none(passdefault):
|
||||||
|
# test that Parameter essentially ignores defualt=None, same as not passing
|
||||||
|
# a default at all
|
||||||
|
opts = {'name': 'param', 'type': int, 'value': 0}
|
||||||
|
if passdefault:
|
||||||
|
opts['default'] = None
|
||||||
|
|
||||||
|
p = Parameter(**opts)
|
||||||
|
assert not p.hasDefault()
|
||||||
|
assert p.defaultValue() is None
|
||||||
|
|
||||||
|
p.setDefault(None)
|
||||||
|
assert not p.hasDefault()
|
Loading…
Reference in New Issue
Block a user