From eb8820185dc1c0e83113544a33d64b03efec89f8 Mon Sep 17 00:00:00 2001 From: Eugenio Parodi Date: Fri, 22 Jul 2022 22:51:59 +0100 Subject: [PATCH] textedit showcase, improved the format changed callback --- TermTk/TTkCore/color.py | 2 +- TermTk/TTkWidgets/checkbox.py | 2 -- demo/showcase/textedit.py | 37 +++++++++++++++++++++++------------ 3 files changed, 26 insertions(+), 15 deletions(-) diff --git a/TermTk/TTkCore/color.py b/TermTk/TTkCore/color.py index 7f26e786..49bf9bb8 100644 --- a/TermTk/TTkCore/color.py +++ b/TermTk/TTkCore/color.py @@ -77,7 +77,7 @@ class _TTkColor: def background(self): if self._bg: - return _TTkColor(fg=self._bg) + return _TTkColor(bg=self._bg) else: return None diff --git a/TermTk/TTkWidgets/checkbox.py b/TermTk/TTkWidgets/checkbox.py index 7b8ce785..1dc5c1c4 100644 --- a/TermTk/TTkWidgets/checkbox.py +++ b/TermTk/TTkWidgets/checkbox.py @@ -99,8 +99,6 @@ class TTkCheckbox(TTkWidget): :param state: state of the checkbox :type state: :class:`~TermTk.TTkCore.constant.TTkConstant.CheckState` ''' - - self._checked = state == TTkK.Checked self.update() diff --git a/demo/showcase/textedit.py b/demo/showcase/textedit.py index 84554c55..5e4799f3 100755 --- a/demo/showcase/textedit.py +++ b/demo/showcase/textedit.py @@ -50,18 +50,6 @@ def demoTextEdit(root=None): te.setReadOnly(False) - @ttk.pyTTkSlot(ttk.TTkTextCharFormat) - def _currentCharFormatChangedCB(format): - fg = format.foreground() - bg = format.background() - bold = format.bold() - italic = format.italic() - underline = format.underline() - strikethrough = format.strikethrough() - ttk.TTkLog.debug(f"{fg=} {bg=} {bold=} {italic=} {underline=} {strikethrough= }") - - te.currentCharFormatChanged.connect(_currentCharFormatChangedCB) - te.setText(ttk.TTkString("Text Edit DEMO\n",ttk.TTkColor.UNDERLINE+ttk.TTkColor.BOLD+ttk.TTkColor.ITALIC)) # Load ANSI input @@ -118,6 +106,31 @@ def demoTextEdit(root=None): fontLayout.addWidget(btn_strikethrough := ttk.TTkButton(border=True, maxSize=(5,3), checkable=True, text=ttk.TTkString(' a ', ttk.TTkColor.STRIKETROUGH)),1,7) fontLayout.addWidget(ttk.TTkSpacer(),0,10,2,1) + @ttk.pyTTkSlot(ttk.TTkTextCharFormat) + def _currentCharFormatChangedCB(format): + if fg := format.foreground(): + cb_fg.setCheckState(ttk.TTkK.Checked) + btn_fgColor.setEnabled() + btn_fgColor.setColor(fg.invertFgBg()) + else: + cb_fg.setCheckState(ttk.TTkK.Unchecked) + btn_fgColor.setDisabled() + + if bg := format.background(): + cb_bg.setCheckState(ttk.TTkK.Checked) + btn_bgColor.setEnabled() + btn_bgColor.setColor(bg) + else: + cb_bg.setCheckState(ttk.TTkK.Unchecked) + btn_bgColor.setDisabled() + + btn_bold.setChecked(format.bold()) + btn_italic.setChecked(format.italic()) + btn_underline.setChecked(format.underline()) + btn_strikethrough.setChecked(format.strikethrough()) + # ttk.TTkLog.debug(f"{fg=} {bg=} {bold=} {italic=} {underline=} {strikethrough= }") + + te.currentCharFormatChanged.connect(_currentCharFormatChangedCB) def _setStyle(): color = ttk.TTkColor()