From f71e57ff6beae9d1a01769df5b0713eb719b1117 Mon Sep 17 00:00:00 2001 From: Eugenio Parodi Date: Mon, 9 Aug 2021 10:01:54 +0100 Subject: [PATCH] Basic TTkString Implementation --- TermTk/TTkCore/__init__.py | 1 + TermTk/TTkCore/string.py | 41 ++++++++++++++++++++++++++++++++++-- TermTk/TTkWidgets/texedit.py | 13 +++--------- 3 files changed, 43 insertions(+), 12 deletions(-) diff --git a/TermTk/TTkCore/__init__.py b/TermTk/TTkCore/__init__.py index d7379ace..cd6194ac 100644 --- a/TermTk/TTkCore/__init__.py +++ b/TermTk/TTkCore/__init__.py @@ -3,4 +3,5 @@ from .cfg import * from .signal import pyTTkSlot, pyTTkSignal from .ttk import * from .color import * +from .string import * from .timer import * \ No newline at end of file diff --git a/TermTk/TTkCore/string.py b/TermTk/TTkCore/string.py index a8034d05..3cab433d 100644 --- a/TermTk/TTkCore/string.py +++ b/TermTk/TTkCore/string.py @@ -25,8 +25,45 @@ from TermTk.TTkCore.constant import TTkK from TermTk.TTkCore.log import TTkLog from TermTk.TTkCore.signal import pyTTkSlot, pyTTkSignal +from TermTk.TTkCore.color import TTkColor -class TTkString(threading.Thread): +class TTkString(): + __slots__ = ('_text','_colors') def __init__(self): - pass + self._text = "" + self._colors = [TTkColor.RST] + def __str__(self): + return self._text + + def __add__(self, other): + ret = TTkString() + if isinstance(other, TTkString): + ret._text += other._text + ret._colors += other._colors + elif isinstance(other, TTkColor): + ret._colors[-1] = other + elif isinstance(other, str): + ret._text += other + ret._colors += [TTkColor.RST]*len(other) + return ret + + def __radd__(self, other): + ret = TTkString() + if isinstance(other, TTkString): + ret._text = other._text + ret._text + ret._colors = other._colors + ret._colors + elif isinstance(other, str): + ret._text = other + ret._text + ret._colors = [TTkColor.RST]*len(other) + ret._colors + return ret + + def ansiString(self): + out = "" + color = none + for ch, col in zip(self._text, self._color): + if col != color + color = col + out += str(color) + out += ch + return out diff --git a/TermTk/TTkWidgets/texedit.py b/TermTk/TTkWidgets/texedit.py index 0551debf..59a84333 100644 --- a/TermTk/TTkWidgets/texedit.py +++ b/TermTk/TTkWidgets/texedit.py @@ -65,18 +65,11 @@ class _TTkTextEditView(TTkAbstractScrollView): self._canvas.drawText(pos=(0,y), text=t[1], color=t[0]) class TTkTextEdit(TTkAbstractScrollArea): - __slots__ = ('_textEditView') + __slots__ = ('_textEditView', 'setText', 'setColoredLines') def __init__(self, *args, **kwargs): super().__init__(self, *args, **kwargs) self._name = kwargs.get('name' , 'TTkTextEdit' ) self._textEditView = _TTkTextEditView() self.setViewport(self._textEditView) - - - @pyTTkSlot(str) - def setText(self, text): - self._textEditView.setText(text) - - @pyTTkSlot(str) - def setColoredLines(self, lines): - self._textEditView.setColoredLines(lines) + self.setText = self._textEditView.setText + self.setColoredLines = self._textEditView.setColoredLines