From 40f22f71a6b37731777a644352f1be889651276d Mon Sep 17 00:00:00 2001 From: Eugenio Parodi Date: Thu, 31 Aug 2023 15:20:41 +0100 Subject: [PATCH] tuned the fancy widgets and moved the current progressbar in the fancy type --- TermTk/TTkWidgets/Fancy/__init__.py | 1 + TermTk/TTkWidgets/{ => Fancy}/progressbar.py | 30 ++++++++++++++------ TermTk/TTkWidgets/Fancy/table.py | 2 ++ TermTk/TTkWidgets/Fancy/tableview.py | 2 ++ TermTk/TTkWidgets/Fancy/tree.py | 2 ++ TermTk/TTkWidgets/Fancy/treeview.py | 2 ++ TermTk/TTkWidgets/Fancy/treewidget.py | 2 ++ TermTk/TTkWidgets/Fancy/treewidgetitem.py | 2 ++ TermTk/TTkWidgets/__init__.py | 3 +- tests/test.ui.022.progressbar.py | 14 ++++----- 10 files changed, 43 insertions(+), 17 deletions(-) rename TermTk/TTkWidgets/{ => Fancy}/progressbar.py (88%) diff --git a/TermTk/TTkWidgets/Fancy/__init__.py b/TermTk/TTkWidgets/Fancy/__init__.py index 85b8abe8..4241fa15 100644 --- a/TermTk/TTkWidgets/Fancy/__init__.py +++ b/TermTk/TTkWidgets/Fancy/__init__.py @@ -4,3 +4,4 @@ from .tree import * from .treeview import * from .treewidget import * from .treewidgetitem import * +from .progressbar import * diff --git a/TermTk/TTkWidgets/progressbar.py b/TermTk/TTkWidgets/Fancy/progressbar.py similarity index 88% rename from TermTk/TTkWidgets/progressbar.py rename to TermTk/TTkWidgets/Fancy/progressbar.py index 020924c8..b9664901 100644 --- a/TermTk/TTkWidgets/progressbar.py +++ b/TermTk/TTkWidgets/Fancy/progressbar.py @@ -24,13 +24,26 @@ import math from TermTk.TTkCore.cfg import TTkCfg +from TermTk.TTkCore.color import TTkColor from TermTk.TTkCore.constant import TTkK from TermTk.TTkCore.string import TTkString from TermTk.TTkCore.signal import pyTTkSignal, pyTTkSlot from TermTk.TTkWidgets.widget import TTkWidget from TermTk.TTkTemplates.lookandfeel import TTkLookAndFeel -class TTkLookAndFeelPBar(TTkLookAndFeel): +__all__ = ['TTkFancyProgressBar', 'TTkLookAndFeelFPBar'] + + + +class TTkLookAndFeel(): + __slots__ = ('modified') + def __init__(self, *args, **kwargs): + self.modified = pyTTkSignal() + +class TTkLookAndFeelFPBar(TTkLookAndFeel): + progresssBarColor = TTkColor.fg('#0000aa')+TTkColor.bg("#000044") + progressBarTextColor = TTkColor.fg('#ffffff') + __slots__ = ('_textWidth', '_showText') def __init__(self, showText=True, textWidth=4): super().__init__() @@ -56,21 +69,22 @@ class TTkLookAndFeelPBar(TTkLookAndFeel): self.modified.emit() def color(self, value, minimum, maximum): - return TTkCfg.theme.progresssBarColor + return self.progresssBarColor def text(self, value, minimum, maximum): percent = round(100*(value-minimum)/(maximum-minimum)) - return TTkString(f"{percent:3}%", color=TTkCfg.theme.progressBarTextColor) + return TTkString(f"{percent:3}%", color=self.progressBarTextColor) ''' Progressbar: |████████▌ | rest block ^ full blocks ^^^^^^^^ ''' -class TTkProgressBar(TTkWidget): - '''TTkProgressBar''' +class TTkFancyProgressBar(TTkWidget): + '''TTkFancyProgressBar''' __slots__ = ( + '_lookAndFeel', '_value', '_minimum', '_maximum', # Signals 'valueChanged') @@ -78,8 +92,8 @@ class TTkProgressBar(TTkWidget): def __init__(self, *args, **kwargs): self.valueChanged = pyTTkSignal(float) TTkWidget.__init__(self, *args, **kwargs) - if not kwargs.get('lookAndFeel'): - self.setLookAndFeel(TTkLookAndFeelPBar()) + self._lookAndFeel = kwargs.get('lookAndFeel',TTkLookAndFeelFPBar()) + self._lookAndFeel.modified.connect(self.update) self._value_min, self._value_max, self._value = 0.0, 1.0, 0.0 self.setValue(kwargs.get('value', 0.0)) self.setMinimumSize(3, 1) @@ -154,7 +168,7 @@ class TTkProgressBar(TTkWidget): def paintEvent(self, canvas): width, height = self.size() - laf = self.lookAndFeel() + laf = self._lookAndFeel text = laf.text(self._value, self._value_min, self._value_max) color_bar = laf.color(self._value, self._value_min, self._value_max) blocks = TTkCfg.theme.progressbarBlocks diff --git a/TermTk/TTkWidgets/Fancy/table.py b/TermTk/TTkWidgets/Fancy/table.py index 76b5e0db..3a68255b 100644 --- a/TermTk/TTkWidgets/Fancy/table.py +++ b/TermTk/TTkWidgets/Fancy/table.py @@ -26,6 +26,8 @@ from TermTk.TTkCore.constant import TTkK from TermTk.TTkWidgets.Fancy.tableview import TTkFancyTableView from TermTk.TTkAbstract.abstractscrollarea import TTkAbstractScrollArea +__all__ = ['TTkFancyTable'] + class TTkFancyTable(TTkAbstractScrollArea): __slots__ = ( '_tableView', 'activated', diff --git a/TermTk/TTkWidgets/Fancy/tableview.py b/TermTk/TTkWidgets/Fancy/tableview.py index 9cbd9db5..b9b11d79 100644 --- a/TermTk/TTkWidgets/Fancy/tableview.py +++ b/TermTk/TTkWidgets/Fancy/tableview.py @@ -30,6 +30,8 @@ from TermTk.TTkWidgets.widget import TTkWidget from TermTk.TTkLayouts.gridlayout import TTkGridLayout from TermTk.TTkAbstract.abstractscrollview import TTkAbstractScrollView, TTkAbstractScrollViewGridLayout +__all__ = ['TTkFancyTableView'] + class _TTkFancyTableViewHeader(TTkAbstractScrollView): __slots__ = ('_header', '_alignments', '_headerColor', '_columns') def __init__(self, *args, **kwargs): diff --git a/TermTk/TTkWidgets/Fancy/tree.py b/TermTk/TTkWidgets/Fancy/tree.py index 87ce18a8..647bddc7 100644 --- a/TermTk/TTkWidgets/Fancy/tree.py +++ b/TermTk/TTkWidgets/Fancy/tree.py @@ -26,6 +26,8 @@ from TermTk.TTkCore.constant import TTkK from TermTk.TTkWidgets.Fancy.treewidget import TTkFancyTreeWidget from TermTk.TTkAbstract.abstractscrollarea import TTkAbstractScrollArea +__all__ = ['TTkFancyTree'] + class TTkFancyTree(TTkAbstractScrollArea): __slots__ = ( '_treeView', 'activated', diff --git a/TermTk/TTkWidgets/Fancy/treeview.py b/TermTk/TTkWidgets/Fancy/treeview.py index a72d75e2..97ad12e6 100644 --- a/TermTk/TTkWidgets/Fancy/treeview.py +++ b/TermTk/TTkWidgets/Fancy/treeview.py @@ -24,6 +24,8 @@ from TermTk.TTkWidgets.Fancy.tableview import TTkFancyTableView +__all__ = ['TTkFancyTreeView'] + class TTkFancyTreeView(TTkFancyTableView): __slots__ = ( '_header', '_treeView', '_showHeader', 'activated') diff --git a/TermTk/TTkWidgets/Fancy/treewidget.py b/TermTk/TTkWidgets/Fancy/treewidget.py index f1463094..bd8c2e81 100644 --- a/TermTk/TTkWidgets/Fancy/treewidget.py +++ b/TermTk/TTkWidgets/Fancy/treewidget.py @@ -32,6 +32,8 @@ from TermTk.TTkWidgets.checkbox import TTkCheckbox from TermTk.TTkWidgets.Fancy.tableview import TTkFancyTableView from TermTk.TTkWidgets.Fancy.treewidgetitem import TTkFancyTreeWidgetItem +__all__ = ['TTkFancyTreeWidget'] + class _TTkDisplayedTreeItemControl(TTkCheckbox): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) diff --git a/TermTk/TTkWidgets/Fancy/treewidgetitem.py b/TermTk/TTkWidgets/Fancy/treewidgetitem.py index 84cbf059..32570673 100644 --- a/TermTk/TTkWidgets/Fancy/treewidgetitem.py +++ b/TermTk/TTkWidgets/Fancy/treewidgetitem.py @@ -25,6 +25,8 @@ from TermTk.TTkCore.constant import TTkK from TermTk.TTkCore.signal import pyTTkSignal +__all__ = ['TTkFancyTreeWidgetItem'] + class TTkFancyTreeWidgetItem(): __slots__ = ('_parent', '_data', '_children', '_expand', '_childIndicatorPolicy', # Signals diff --git a/TermTk/TTkWidgets/__init__.py b/TermTk/TTkWidgets/__init__.py index 4fc4b600..84d12b11 100644 --- a/TermTk/TTkWidgets/__init__.py +++ b/TermTk/TTkWidgets/__init__.py @@ -13,7 +13,6 @@ from .about import TTkAbout from .button import TTkButton from .checkbox import TTkCheckbox from .combobox import TTkComboBox -from .Fancy import * from .graph import TTkGraph from .image import TTkImage from .label import TTkLabel @@ -22,7 +21,6 @@ from .list_ import TTkList from .listwidget import TTkListWidget from .menubar import TTkMenuBarLayout from .menu import TTkMenu, TTkMenuButton -from .progressbar import TTkProgressBar, TTkLookAndFeelPBar from .radiobutton import TTkRadioButton from .scrollarea import TTkScrollArea from .scrollbar import TTkScrollBar @@ -33,3 +31,4 @@ from .kodetab import TTkKodeTab from .texedit import TTkTextEdit, TTkTextEditView from .TTkModelView import * from .TTkPickers import * +from .Fancy import * diff --git a/tests/test.ui.022.progressbar.py b/tests/test.ui.022.progressbar.py index 398f7662..d1bee8b3 100755 --- a/tests/test.ui.022.progressbar.py +++ b/tests/test.ui.022.progressbar.py @@ -44,11 +44,11 @@ def main(): parent=root,pos=(1,1), size=(55,15), border=True, layout=layout, title="Test Progressbar (resize me)") - class TextLAF(ttk.TTkLookAndFeelPBar): + class TextLAF(ttk.TTkLookAndFeelFPBar): def text(self, value, max, min): return 'low' if value < 0.5 else 'high' - class ColorLAF(ttk.TTkLookAndFeelPBar): + class ColorLAF(ttk.TTkLookAndFeelFPBar): def color(self, value,max,min): red, green = round(value*255), round((1-value)*255) fg = f"#{red:02x}{green:02x}00" @@ -57,12 +57,12 @@ def main(): claf = ColorLAF(textWidth=5) - rootW.layout().addWidget(pb1 := ttk.TTkProgressBar(), row=0, col=0) - rootW.layout().addWidget(pb2 := ttk.TTkProgressBar(lookAndFeel=ColorLAF(showText=False)), row=2, col=0) - rootW.layout().addWidget(pb3 := ttk.TTkProgressBar(lookAndFeel=TextLAF(textWidth=6)), row=3, col=0) + rootW.layout().addWidget(pb1 := ttk.TTkFancyProgressBar(), row=0, col=0) + rootW.layout().addWidget(pb2 := ttk.TTkFancyProgressBar(lookAndFeel=ColorLAF(showText=False)), row=2, col=0) + rootW.layout().addWidget(pb3 := ttk.TTkFancyProgressBar(lookAndFeel=TextLAF(textWidth=6)), row=3, col=0) - rootW.layout().addWidget(pb4 := ttk.TTkProgressBar(lookAndFeel=claf), row=4, col=0) - rootW.layout().addWidget(pb5 := ttk.TTkProgressBar(lookAndFeel=claf, value=0.5), row=5, col=0) + rootW.layout().addWidget(pb4 := ttk.TTkFancyProgressBar(lookAndFeel=claf), row=4, col=0) + rootW.layout().addWidget(pb5 := ttk.TTkFancyProgressBar(lookAndFeel=claf, value=0.5), row=5, col=0) rootW.layout().addWidget(cbt := ttk.TTkCheckbox(text=" - Rem/Add Text", checked=True), row=6, col=0)