From d73e3bc66bef2dc8228096631c3e76bcefdbe64e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Parodi=2C=20Eugenio=20=F0=9F=8C=B6?= Date: Tue, 4 Nov 2025 15:45:07 +0100 Subject: [PATCH] chore: update --- .../TermTk/TTkWidgets/datetime_date_form.py | 34 ++++++----- .../TermTk/TTkWidgets/datetime_time.py | 2 +- tests/t.ui/test.ui.036.datetime.01.py | 7 ++- tests/t.ui/test.ui.036.datetime.02.py | 60 +++++++++++++++++++ 4 files changed, 85 insertions(+), 18 deletions(-) create mode 100755 tests/t.ui/test.ui.036.datetime.02.py diff --git a/libs/pyTermTk/TermTk/TTkWidgets/datetime_date_form.py b/libs/pyTermTk/TermTk/TTkWidgets/datetime_date_form.py index 7df83856..43969157 100644 --- a/libs/pyTermTk/TermTk/TTkWidgets/datetime_date_form.py +++ b/libs/pyTermTk/TermTk/TTkWidgets/datetime_date_form.py @@ -187,17 +187,17 @@ _month_to_str_slim = { class _TTkBaseMonthYear(TTkWidget): classStyle = { - 'default': {'color': TTkColor.fgbg("#888888","#222222")+TTkColor.UNDERLINE, + 'default': {'color': TTkColor.fgbg("#888888","#222222"), 'color2': TTkColor.fgbg("#888888","#222222"), - 'colorSeparator': TTkColor.fgbg("#CCCC00","#222222")+TTkColor.UNDERLINE, - 'hoverColor': TTkColor.fgbg("#ffffff","#00AA66")+TTkColor.UNDERLINE, - 'highlightedColor': TTkColor.fgbg("#ffffff","#00AA88")+TTkColor.UNDERLINE, - 'selectedColor': TTkColor.fgbg("#ffffff","#008844")+TTkColor.UNDERLINE}, - 'hover': {'color': TTkColor.fgbg("#AAAAAA","#000066")+TTkColor.UNDERLINE}, - 'disabled': {'color': TTkColor.fg( "#444444")+TTkColor.UNDERLINE, - 'colorSeparator': TTkColor.fgbg("#666666","#222222")+TTkColor.UNDERLINE, - 'selectedColor': TTkColor.fgbg("#888888","#444444")+TTkColor.UNDERLINE}, - 'focus': {'color': TTkColor.fgbg("#888888","#000066")+TTkColor.UNDERLINE} + 'colorSeparator': TTkColor.fgbg("#CCCC00","#222222"), + 'hoverColor': TTkColor.fgbg("#ffffff","#00AA66"), + 'highlightedColor': TTkColor.fgbg("#ffffff","#00AA88"), + 'selectedColor': TTkColor.fgbg("#ffffff","#008844")}, + 'hover': {'color': TTkColor.fgbg("#AAAAAA","#000066")}, + 'disabled': {'color': TTkColor.fg( "#444444"), + 'colorSeparator': TTkColor.fgbg("#666666","#222222"), + 'selectedColor': TTkColor.fgbg("#888888","#444444")}, + 'focus': {'color': TTkColor.fgbg("#888888","#000066")} } __slots__ = ('_state', '_hoverState') @@ -211,8 +211,9 @@ class _TTkBaseMonthYear(TTkWidget): self._state = state self._hoverState = _FieldSelected.NONE super().__init__(**kwargs) - self._state.highlightedChanged.connect(self.update) self.setFocusPolicy(TTkK.ClickFocus | TTkK.TabFocus) + self._state.dateChanged.connect(self.update) + self._state.highlightedChanged.connect(self.update) def _show_chooser(self) -> None: raise NotImplementedError() @@ -405,8 +406,9 @@ class _TTkDateCal(TTkWidget): **kwargs) -> None: self._state = state super().__init__(**kwargs|{'size':(20,6)}) - self._state.highlightedChanged.connect(self.update) self.setFocusPolicy(TTkK.ClickFocus | TTkK.TabFocus) + self._state.dateChanged.connect(self.update) + self._state.highlightedChanged.connect(self.update) def focusOutEvent(self): self._state.clearHover() @@ -535,13 +537,16 @@ class TTkDateForm(TTkContainer): _state:_TTkDateWidgetState def __init__(self, *, - date:datetime.date, + date:Optional[datetime.date]=None, **kwargs) -> None: + if not date: + date = datetime.date.today() self._state = _TTkDateWidgetState(date=date) self._state.highlightedChanged.connect(self.update) self.dateChanged = self._state.dateChanged _layout=TTkLayout() - super().__init__(**kwargs|{'layout':_layout, 'size':(20,8)}) + size = (20,8) + super().__init__(**kwargs|{'layout':_layout, 'size':size, 'minSize':size}) self._calWidget = _TTkDateCal(parent=self, pos=(0,2), state=self._state) self._yearWidget = _TTkDateYear(parent=self, pos=(2,0), state=self._state) self._monthWidget = _TTkDateMonth(parent=self, pos=(12,0), state=self._state) @@ -549,6 +554,7 @@ class TTkDateForm(TTkContainer): def date(self) -> datetime.date: return self._state._date + @pyTTkSlot(datetime.date) def setDate(self, date:datetime.date) -> None: if date != self._state._date: self._state.setDate(date=date) diff --git a/libs/pyTermTk/TermTk/TTkWidgets/datetime_time.py b/libs/pyTermTk/TermTk/TTkWidgets/datetime_time.py index a5abff57..8b801094 100644 --- a/libs/pyTermTk/TermTk/TTkWidgets/datetime_time.py +++ b/libs/pyTermTk/TermTk/TTkWidgets/datetime_time.py @@ -59,7 +59,7 @@ class TTkTime(TTkContainer): classStyle = { 'default': {'color': TTkColor.fgbg("#888888","#222222")+TTkColor.UNDERLINE, - 'colorSeparator': TTkColor.fgbg("#CCCC00","#222222")+TTkColor.UNDERLINE, + 'colorSeparator': TTkColor.fgbg("#CCCC00","#222222"), 'hoverColor': TTkColor.fgbg("#ffffff","#00AA66")+TTkColor.UNDERLINE, 'selectedColor': TTkColor.fgbg("#ffffff","#008844")+TTkColor.UNDERLINE}, 'hover': {'color': TTkColor.fgbg("#AAAAAA","#000066")+TTkColor.UNDERLINE}, diff --git a/tests/t.ui/test.ui.036.datetime.01.py b/tests/t.ui/test.ui.036.datetime.01.py index f6e38390..8156391c 100755 --- a/tests/t.ui/test.ui.036.datetime.01.py +++ b/tests/t.ui/test.ui.036.datetime.01.py @@ -25,7 +25,7 @@ import sys, os from datetime import time,date,datetime -sys.path.append(os.path.join(sys.path[0],'../..')) +sys.path.append(os.path.join(sys.path[0],'../../libs/pyTermTk')) import TermTk as ttk ttk.TTkLog.use_default_file_logging() @@ -47,8 +47,9 @@ timeWidget1.timeChanged.connect(lambda _t:timeLabel1.setText(str(_t))) timeWidget2.timeChanged.connect(lambda _t:timeLabel2.setText(str(_t))) testDate = date(year=1980, month=12, day=25) -dateWidget = ttk.TTkDateForm(parent=win, pos=(12,0), date=testDate) +dateWidget1 = ttk.TTkDateForm(parent=win, pos=(12,0), date=testDate) + dateLabel = ttk.TTkLabel(parent=win, pos=(1,8), text=str(testDate)) -dateWidget.dateChanged.connect(lambda _d: dateLabel.setText(str(_d))) +dateWidget1.dateChanged.connect(lambda _d: dateLabel.setText(str(_d))) root.mainloop() \ No newline at end of file diff --git a/tests/t.ui/test.ui.036.datetime.02.py b/tests/t.ui/test.ui.036.datetime.02.py new file mode 100755 index 00000000..6678dd23 --- /dev/null +++ b/tests/t.ui/test.ui.036.datetime.02.py @@ -0,0 +1,60 @@ +#!/usr/bin/env python3 + +# MIT License +# +# Copyright (c) 2021 Eugenio Parodi +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +import sys, os +from datetime import time,date,datetime + +sys.path.append(os.path.join(sys.path[0],'../../libs/pyTermTk')) +import TermTk as ttk + +ttk.TTkLog.use_default_file_logging() + +root = ttk.TTk(mouseTrack=True) +winLog = ttk.TTkWindow(parent=root, pos=(20,1), size=(80,30), layout=ttk.TTkGridLayout()) +ttk.TTkLogViewer(parent=winLog) + +win = ttk.TTkWindow(parent=root, pos=(0,0), size=(57,14)) +win2 = ttk.TTkWindow(parent=root, pos=(60,0), size=(22,12), layout=ttk.TTkGridLayout()) + +testTime1=time(hour=3,minute=30) +testTime2=time(hour=13,minute=30) +timeWidget1 = ttk.TTkTime(parent=win, pos=(1,0), time=testTime1) +timeWidget2 = ttk.TTkTime(parent=win, pos=(1,2), time=testTime2) + +timeLabel1 = ttk.TTkLabel(parent=win, pos=(1,4), text=str(testTime1)) +timeLabel2 = ttk.TTkLabel(parent=win, pos=(1,6), text=str(testTime2)) +timeWidget1.timeChanged.connect(lambda _t:timeLabel1.setText(str(_t))) +timeWidget2.timeChanged.connect(lambda _t:timeLabel2.setText(str(_t))) + +testDate = date(year=1980, month=12, day=25) +dateWidget1 = ttk.TTkDateForm(parent=win, pos=(12,0), date=testDate) +dateWidget2 = ttk.TTkDateForm(parent=win, pos=(34,0)) +dateWidget3 = ttk.TTkDateForm(parent=win2, date=testDate.replace(year=2000)) +dateLabel = ttk.TTkLabel(parent=win, pos=(1,8), text=str(testDate)) +dateWidget1.dateChanged.connect(lambda _d: dateLabel.setText(str(_d))) +dateWidget1.dateChanged.connect(dateWidget2.setDate) +dateWidget2.dateChanged.connect(dateWidget1.setDate) +dateWidget3.dateChanged.connect(dateWidget2.setDate) + +root.mainloop() \ No newline at end of file