diff --git a/TermTk/TTkTemplates/color.py b/TermTk/TTkTemplates/color.py index 3e843628..2b058e03 100644 --- a/TermTk/TTkTemplates/color.py +++ b/TermTk/TTkTemplates/color.py @@ -24,7 +24,7 @@ from TermTk.TTkCore.color import TTkColor -class TColor(): +class DeprecatedTColor(): #__slots__ = ('_color') def __init__(self, *args, **kwargs): self._color = kwargs.get('color', TTkColor.RST ) diff --git a/TermTk/TTkWidgets/TTkPickers/colorpicker.py b/TermTk/TTkWidgets/TTkPickers/colorpicker.py index 1d9c1f30..bda2d564 100644 --- a/TermTk/TTkWidgets/TTkPickers/colorpicker.py +++ b/TermTk/TTkWidgets/TTkPickers/colorpicker.py @@ -29,6 +29,7 @@ from TermTk.TTkCore.log import TTkLog from TermTk.TTkCore.cfg import TTkCfg from TermTk.TTkCore.signal import pyTTkSlot, pyTTkSignal from TermTk.TTkCore.color import TTkColor +from TermTk.TTkCore.string import TTkString from TermTk.TTkCore.helper import TTkHelper from TermTk.TTkWidgets.widget import TTkWidget from TermTk.TTkWidgets.window import TTkWindow @@ -38,7 +39,6 @@ from TermTk.TTkWidgets.lineedit import TTkLineEdit from TermTk.TTkWidgets.spinbox import TTkSpinBox from TermTk.TTkLayouts.layout import TTkLayout from TermTk.TTkLayouts.gridlayout import TTkGridLayout -from TermTk.TTkTemplates.color import TColor class _TTkHueCanvas(TTkWidget): __slots__ = ('_hueList', '_selected', 'colorPicked') @@ -47,7 +47,6 @@ class _TTkHueCanvas(TTkWidget): self.colorPicked=pyTTkSignal(int) TTkWidget.__init__(self, *args, **kwargs) - self._name = kwargs.get('name' , '_TTkHueCanvas' ) self.setMaximumHeight(1) self.setMinimumSize(6,1) @@ -102,7 +101,6 @@ class _TTkColorCanvas(TTkWidget): self.colorPicked=pyTTkSignal(int) self._selected=(-1,-1) TTkWidget.__init__(self, *args, **kwargs) - self._name = kwargs.get('name' , 'TTkColorPicker' ) self._hue = 0xff0000 self.setFocusPolicy(TTkK.ClickFocus) @@ -148,35 +146,38 @@ class _TTkColorCanvas(TTkWidget): else: self._canvas.drawText(pos=(x,y), text=" ", color=color) -class _TTkShowColor(TTkWidget,TColor): +class _TTkShowColor(TTkWidget): + __slots__ = ('_color') def __init__(self, *args, **kwargs): TTkWidget.__init__(self, *args, **kwargs) - TColor.__init__(self, *args, **kwargs) - self._name = kwargs.get('name' , '_TTkShowColor' ) + self._color = kwargs.get('color', TTkColor.RST ) - @pyTTkSlot(int) - def setRGBColor(self, color): - self.color = TTkColor.bg( f"#{color:06x}" ) - self.update() + def color(self): + return self._color @pyTTkSlot(TTkColor) def setColor(self, color): - self.color = color + if self._color != color: + self._color = color + self.update() + + @pyTTkSlot(int) + def setRGBColor(self, color): + self.setColor(TTkColor.bg( f"#{color:06x}" )) self.update() def paintEvent(self): w,h = self.size() for y in range(h): - self._canvas.drawText(pos=(0,y),text=" "*w, color=self.color) + self._canvas.drawText(pos=(0,y),text=" "*w, color=self._color) class _TTkColorButton(TTkButton): lastClicked = None - __slots__ = ('colorClicked','_custom') + __slots__ = ('colorClicked','_custom','_color') def __init__(self, *args, **kwargs): self.colorClicked = pyTTkSignal(TTkColor) TTkButton.__init__(self, *args, **kwargs) - TColor.__init__(self, *args, **kwargs) - self._name = kwargs.get('name' , '_TTkColorButton' ) + self._color = kwargs.get('color', TTkColor.RST ) self._custom = kwargs.get('custom', False) self.clicked.connect(self._clicked) self._textColorFocus = self._textColor @@ -199,7 +200,7 @@ class _TTkColorButton(TTkButton): _TTkColorButton.lastClicked = self self.colorClicked.emit(self._textColor) -class TTkColorDialogPicker(TTkWindow,TColor): +class TTkColorDialogPicker(TTkWindow): ''' Color Picker Layout sizes: :: @@ -242,8 +243,8 @@ class TTkColorDialogPicker(TTkWindow,TColor): def __init__(self, *args, **kwargs): # Signals self.colorSelected = pyTTkSignal(TTkColor) - TTkWindow.__init__(self, *args, **kwargs) - TColor.__init__(self, *args, **kwargs) + super().__init__(*args, **kwargs) + self._color = kwargs.get('color', TTkColor.RST ) self.setWindowFlag(TTkK.WindowFlag.WindowMaximizeButtonHint | TTkK.WindowFlag.WindowCloseButtonHint) self.setLayout(TTkGridLayout()) @@ -278,15 +279,15 @@ class TTkColorDialogPicker(TTkWindow,TColor): @pyTTkSlot() def _okPressed(): - self.color = sc.color - self.colorSelected.emit(self.color) + self.setColor(sc.color()) + self.colorSelected.emit(self._color) self.close() okButton.clicked.connect(_okPressed) @pyTTkSlot() def _cancelPressed(): - self.colorSelected.emit(self.color) + self.colorSelected.emit(self._color) self.close() cancelButton.clicked.connect(_cancelPressed) @@ -325,7 +326,7 @@ class TTkColorDialogPicker(TTkWindow,TColor): leG.valueChanged.connect(_leRGBChanged) leB.valueChanged.connect(_leRGBChanged) - _controlSetColor(self.color) + _controlSetColor(self._color) # Palette Layout Widgets paletteLayout.addWidget(b:=_TTkColorButton(color=TTkColor.bg('#ff0000'), border=True, maxSize=(8,3)),0,0,1,2) @@ -394,7 +395,7 @@ class TTkColorDialogPicker(TTkWindow,TColor): if btn is not None and \ btn.isCustom(): TTkLog.debug(f"2 {btn}") - btn.setColor(sc.color) + btn.setColor(sc.color()) b.clicked.connect(_addCustomPressed) # Events @@ -407,6 +408,14 @@ class TTkColorDialogPicker(TTkWindow,TColor): leftLayout.addItem(customLayout) leftLayout.addItem(controlLayout) + def color(self): + return self._color + + def setColor(self, color): + if self._color != color: + self._color = color + self.update() + def paintEvent(self): TTkWindow.paintEvent(self) if self.hasFocus(): @@ -421,9 +430,9 @@ class TTkColorDialogPicker(TTkWindow,TColor): self._canvas.drawChar(pos=(0,2), char=gg[0x08], color=color) self._canvas.drawChar(pos=(25,2), char=gg[0x02], color=color) self._canvas.drawChar(pos=(25,self._height-1), char=gg[0x0E], color=color) - self._canvas.drawBoxTitle(pos=(0,2) , size=(26,0), text=" Basic colors ", align=TTkK.CENTER_ALIGN, color=color, colorText=TTkCfg.theme.frameTitleColor) - self._canvas.drawBoxTitle(pos=(0,12), size=(26,0), text=" Custom colors ", align=TTkK.CENTER_ALIGN, color=color, colorText=TTkCfg.theme.frameTitleColor) - self._canvas.drawBoxTitle(pos=(0,17), size=(26,0), text=" Conrols ", align=TTkK.CENTER_ALIGN, color=color, colorText=TTkCfg.theme.frameTitleColor) + self._canvas.drawBoxTitle(pos=(0,2) , size=(26,0), text=TTkString(" Basic colors "), align=TTkK.CENTER_ALIGN, color=color, colorText=TTkCfg.theme.frameTitleColor) + self._canvas.drawBoxTitle(pos=(0,12), size=(26,0), text=TTkString(" Custom colors "), align=TTkK.CENTER_ALIGN, color=color, colorText=TTkCfg.theme.frameTitleColor) + self._canvas.drawBoxTitle(pos=(0,17), size=(26,0), text=TTkString(" Conrols "), align=TTkK.CENTER_ALIGN, color=color, colorText=TTkCfg.theme.frameTitleColor) class TTkColorButtonPicker(_TTkColorButton): __slots__ = ('_type', 'colorSelected') @@ -431,19 +440,12 @@ class TTkColorButtonPicker(_TTkColorButton): # Signals self.colorSelected = pyTTkSignal(TTkColor) _TTkColorButton.__init__(self, *args, **kwargs) - self._name = kwargs.get('name' , 'TTkColorButtonPicker' ) self._custom = False self.clicked.connect(self._colorClicked) self._type = self._textColor.colorType() hexColor = self._textColor.getHex(self._type) self.setColor(TTkColor.bg(hexColor)) - #@pyTTkSlot(TTkColor) - #def colorSelected(self, color): - # self.setColor(color) - # #self.setFocus() - # #self.update() - @pyTTkSlot() def _colorClicked(self): colorPicker = TTkColorDialogPicker(pos = (3,3), size=(75,24), color=self.color(), title="Test Color Picker", border=True) diff --git a/TermTk/TTkWidgets/graph.py b/TermTk/TTkWidgets/graph.py index 339277eb..5fa7a6fb 100644 --- a/TermTk/TTkWidgets/graph.py +++ b/TermTk/TTkWidgets/graph.py @@ -27,23 +27,31 @@ # And of course: # https://github.com/aristocratos/bpytop -from TermTk.TTkCore.cfg import * +from TermTk.TTkCore.cfg import TTkCfg +from TermTk.TTkCore.color import TTkColor from TermTk.TTkCore.constant import TTkK from TermTk.TTkWidgets.widget import TTkWidget -from TermTk.TTkTemplates.color import TColor -class TTkGraph(TTkWidget, TColor): - __slots__ = ('_data', '_maxData', '_offset', '_direction', '_align') +class TTkGraph(TTkWidget): + __slots__ = ('_data', '_maxData', '_offset', '_direction', '_align', '_color') def __init__(self, *args, **kwargs): self._data = [[0]] self._offset = 0 - TTkWidget.__init__(self, *args, **kwargs) - TColor.__init__(self, *args, **kwargs) + super().__init__(*args, **kwargs) + self._color = kwargs.get('color', TTkColor.RST ) self._name = kwargs.get('name' , 'TTkGraph' ) self._maxData = kwargs.get('maxData', 0x1000) self._direction = kwargs.get('direction', TTkK.RIGHT) self._align = kwargs.get('align', TTkK.CENTER) + def color(self): + return self._color + + def setColor(self, color): + if self._color != color: + self._color = color + self.update() + def addValue(self, values): self._data.append(values) self.update() @@ -71,11 +79,11 @@ class TTkGraph(TTkWidget, TColor): v1 = data[i] if i%2==0: if self._direction == TTkK.RIGHT: - self._canvas.drawHChart(pos=(x+i//2,y),values=(v2,v1), zoom=zoom, color=self.color.modParam(val=-y)) + self._canvas.drawHChart(pos=(x+i//2,y),values=(v2,v1), zoom=zoom, color=self._color.modParam(val=-y)) else: - self._canvas.drawHChart(pos=(w-(x+i//2),y),values=(v1,v2), zoom=zoom, color=self.color.modParam(val=-y)) + self._canvas.drawHChart(pos=(w-(x+i//2),y),values=(v1,v2), zoom=zoom, color=self._color.modParam(val=-y)) if i%2==1: if self._direction == TTkK.RIGHT: - self._canvas.drawHChart(pos=(x+i//2+1,y),values=(v1,v1), zoom=zoom, color=self.color.modParam(val=-y)) + self._canvas.drawHChart(pos=(x+i//2+1,y),values=(v1,v1), zoom=zoom, color=self._color.modParam(val=-y)) else: - self._canvas.drawHChart(pos=(w-(x+i//2+1),y),values=(v1,v1), zoom=zoom, color=self.color.modParam(val=-y)) + self._canvas.drawHChart(pos=(w-(x+i//2+1),y),values=(v1,v1), zoom=zoom, color=self._color.modParam(val=-y)) diff --git a/TermTk/TTkWidgets/label.py b/TermTk/TTkWidgets/label.py index 3ddb8385..2efeb931 100644 --- a/TermTk/TTkWidgets/label.py +++ b/TermTk/TTkWidgets/label.py @@ -26,13 +26,11 @@ from TermTk.TTkCore.color import TTkColor from TermTk.TTkCore.string import TTkString from TermTk.TTkCore.signal import pyTTkSlot from TermTk.TTkWidgets.widget import TTkWidget -from TermTk.TTkTemplates.color import TColor -class TTkLabel(TTkWidget, TColor): - __slots__ = ('_text') +class TTkLabel(TTkWidget): + __slots__ = ('_text','_color') def __init__(self, *args, **kwargs): - TColor.__init__(self, *args, **kwargs) - + self._color = kwargs.get('color', TTkColor.RST ) text = kwargs.get('text', TTkString() ) if issubclass(type(text), TTkString): self._text = text @@ -40,9 +38,17 @@ class TTkLabel(TTkWidget, TColor): self._text = TTkString(text) self.setDefaultSize(kwargs, self._text.termWidth(), 1) - TTkWidget.__init__(self, *args, **kwargs) + super().__init__(*args, **kwargs) self._textUpdated() + def color(self): + return self._color + + def setColor(self, color): + if self._color != color: + self._color = color + self.update() + def text(self): return self._text @@ -56,9 +62,9 @@ class TTkLabel(TTkWidget, TColor): self._textUpdated() def paintEvent(self): - forceColor = self.color!=TTkColor.RST - self._canvas.drawText(pos=(0,0), text=' '*self.width(), color=self.color, forceColor=forceColor) - self._canvas.drawText(pos=(0,0), text=self._text, color=self.color, forceColor=forceColor) + forceColor = self.color()!=TTkColor.RST + self._canvas.drawText(pos=(0,0), text=' '*self.width(), color=self.color(), forceColor=forceColor) + self._canvas.drawText(pos=(0,0), text=self._text, color=self.color(), forceColor=forceColor) def _textUpdated(self): w, h = self.size() @@ -76,4 +82,8 @@ class TTkLabel(TTkWidget, TColor): 'init': {'name':'text', 'type':TTkString }, 'get': {'cb':text, 'type':TTkString } , 'set': {'cb':setText, 'type':TTkString } }, + 'Color' : { + 'init': {'name':'color', 'type':TTkColor }, + 'get': {'cb':color, 'type':TTkColor } , + 'set': {'cb':setColor, 'type':TTkColor } }, } \ No newline at end of file diff --git a/TermTk/TTkWidgets/listwidget.py b/TermTk/TTkWidgets/listwidget.py index 1a1edbc4..10cfe4bf 100644 --- a/TermTk/TTkWidgets/listwidget.py +++ b/TermTk/TTkWidgets/listwidget.py @@ -38,7 +38,6 @@ class TTkAbstractListItem(TTkLabel, TData): def __init__(self, *args, **kwargs): TData.__init__(self, *args, **kwargs) TTkLabel.__init__(self, *args, **kwargs) - self._name = kwargs.get('name' , 'TTkAbstractListItem' ) # Define Signals self.listItemClicked = pyTTkSignal(TTkAbstractListItem) self._selected = False @@ -49,13 +48,13 @@ class TTkAbstractListItem(TTkLabel, TData): def _updateColor(self): if self._highlighted: if self._selected: - self.color = TTkCfg.theme.listColorHighlighted + TTkColor.UNDERLINE + self.setColor(TTkCfg.theme.listColorHighlighted + TTkColor.UNDERLINE) else: - self.color = TTkCfg.theme.listColorHighlighted + self.setColor(TTkCfg.theme.listColorHighlighted) elif self._selected: - self.color = TTkCfg.theme.listColorSelected + self.setColor(TTkCfg.theme.listColorSelected) else: - self.color = TTkCfg.theme.listColor + self.setColor(TTkCfg.theme.listColor) def keyEvent(self, evt): return self.parentWidget().keyEvent(evt)