From 71457b2a2e95ea9dabd9b2fdda8c74567c3a483c Mon Sep 17 00:00:00 2001 From: Eugenio Parodi Date: Mon, 26 Jun 2023 16:08:12 +0100 Subject: [PATCH] Added toggled event to the checkbox --- TermTk/TTkUiTools/properties/checkbox.py | 1 + TermTk/TTkWidgets/checkbox.py | 21 ++++++++++++++------- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/TermTk/TTkUiTools/properties/checkbox.py b/TermTk/TTkUiTools/properties/checkbox.py index 6eef7528..1e320749 100644 --- a/TermTk/TTkUiTools/properties/checkbox.py +++ b/TermTk/TTkUiTools/properties/checkbox.py @@ -58,6 +58,7 @@ TTkCheckboxProperties = { }, 'signals' : { 'clicked(bool)' : {'name' : 'clicked', 'type' : bool}, + 'toggled(bool)' : {'name' : 'toggled', 'type' : bool}, 'stateChanged(CheckState)' : {'name' : 'stateChanged', 'type' : TTkK.CheckState}, }, 'slots' : { diff --git a/TermTk/TTkWidgets/checkbox.py b/TermTk/TTkWidgets/checkbox.py index 40056b5f..2a9579f9 100644 --- a/TermTk/TTkWidgets/checkbox.py +++ b/TermTk/TTkWidgets/checkbox.py @@ -62,11 +62,6 @@ class TTkCheckbox(TTkWidget): :param checked: True if checked otherwise False :type checked: bool - :param checkStatus: The state of the checkbox - :type checkStatus: :class:`~TermTk.TTkCore.constant.TTkConstant.CheckState` - :param tristate: | This property holds whether the checkbox is a tri-state checkbox - | The default is false, i.e., the checkbox has only two states. - :type tristate: bool .. py:method:: stateChanged(state) :signal: @@ -76,17 +71,28 @@ class TTkCheckbox(TTkWidget): :param state: state of the checkbox :type state: :class:`~TermTk.TTkCore.constant.TTkConstant.CheckState` + .. py:method:: toggled(checked) + :signal: + + This signal is emitted whenever the checkbox's state changes, i.e., whenever the user checks or unchecks it. + + :param checked: True if checked otherwise False + :type checked: bool + ''' __slots__ = ( '_checkStatus', '_text', '_tristate', # Signals - 'clicked', 'stateChanged' + 'clicked', 'stateChanged', 'toggled' ) def __init__(self, *args, **kwargs): - TTkWidget.__init__(self, *args, **kwargs) # Define Signals self.stateChanged = pyTTkSignal(TTkK.CheckState) self.clicked = pyTTkSignal(bool) + self.toggled = pyTTkSignal(bool) + + TTkWidget.__init__(self, *args, **kwargs) + if 'checkStatus' in kwargs: self._checkStatus = kwargs.get('checkStatus', TTkK.Unchecked ) else: @@ -198,6 +204,7 @@ class TTkCheckbox(TTkWidget): if not self._tristate and self._checkStatus == TTkK.PartiallyChecked: self._checkStatus = TTkK.Checked self.clicked.emit(self._checkStatus!=TTkK.Unchecked) + self.toggled.emit(self._checkStatus!=TTkK.Unchecked) self.stateChanged.emit(self._checkStatus) self.update() return True