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
|
||||
import os, weakref, re
|
||||
from ..pgcollections import OrderedDict
|
||||
@ -188,13 +189,11 @@ class Parameter(QtCore.QObject):
|
||||
|
||||
self.addChildren(self.opts.pop('children', []))
|
||||
|
||||
self.opts['value'] = None
|
||||
if value is not None:
|
||||
self.setValue(value)
|
||||
|
||||
if 'default' not in self.opts:
|
||||
self.opts['default'] = None
|
||||
self.setDefault(self.opts['value'])
|
||||
|
||||
## Connect all state changed signals to the general sigStateChanged
|
||||
self.sigValueChanged.connect(lambda param, data: self.emitStateChanged('value', data))
|
||||
@ -420,7 +419,7 @@ class Parameter(QtCore.QObject):
|
||||
|
||||
def hasDefault(self):
|
||||
"""Returns True if this parameter has a default value."""
|
||||
return 'default' in self.opts
|
||||
return self.opts['default'] is not None
|
||||
|
||||
def valueIsDefault(self):
|
||||
"""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