diff --git a/README.md b/README.md
index 83fd785e..b942c325 100644
--- a/README.md
+++ b/README.md
@@ -80,6 +80,9 @@ cprofilev -f profiler.txt
[pyroscope](https://pyroscope.io/) can be used as well for profiling
## Related Projects
+- honourable mention
+ - [bpytop](https://github.com/aristocratos/bpytop) - Linux/OSX/FreeBSD resource monitor
+ This was the base inspiration for my core library
- Python
- [urwid](https://github.com/urwid/urwid) - Console user interface library for Python
@@ -87,6 +90,8 @@ cprofilev -f profiler.txt
- [Textual](https://github.com/Textualize/textual) - TUI (Text User Interface) framework for Python inspired by modern web development
- [Rich](https://github.com/Textualize/rich) - Python library for rich text and beautiful formatting in the terminal
- [PyCuT](https://github.com/ceccopierangiolieugenio/pyCuT) - terminal graphic library loosely based on QT api (my previous failed attempt)
+
- Non Python
+ - [Turbo Vision](http://tvision.sourceforge.net)
- [ncurses](https://en.wikipedia.org/wiki/Ncurses)
- [tui.el](https://github.com/ebpa/tui.el) - An experimental text-based UI framework for Emacs modeled after React
\ No newline at end of file
diff --git a/TermTk/TTkCore/string.py b/TermTk/TTkCore/string.py
index 263ee35d..7010092c 100644
--- a/TermTk/TTkCore/string.py
+++ b/TermTk/TTkCore/string.py
@@ -185,7 +185,19 @@ class TTkString():
ret._colors = self._colors[fr:to]
return ret
+ def split(self, separator ):
+ ret = []
+ pos = 0
+ if len(separator)==1:
+ for i,c in enumerate(self._text):
+ if c == separator:
+ ret.append(self.substring(pos,i))
+ pos = i+1
+ else:
+ raise NotImplementedError("Not yet implemented separators bigger than one char")
+ ret.append(self.substring(pos,len(self)))
+ return ret
def getData(self):
return (self._text,self._colors)
diff --git a/demo/demo.py b/demo/demo.py
index 99752a52..e6ebec86 100755
--- a/demo/demo.py
+++ b/demo/demo.py
@@ -88,6 +88,12 @@ def demoShowcase(root=None, border=True):
tabLayouts.addTab(demoLayoutNested()," Nested Layout Test ")
tabLayouts.addTab(demoLayoutSpan(), " Layout Span Test ")
tabLayouts.addTab(demoSplitter(), " Splitter Test ")
+ tabLayoutsSources = [
+ 'showcase/layout_basic.py',
+ 'showcase/layout_nested.py',
+ 'showcase/layout_span.py',
+ 'showcase/splitter.py' ]
+ tabLayouts.addMenu("Sources", ttk.TTkK.RIGHT).menuButtonClicked.connect(lambda x : ttk.TTkLog.debug(f"Placeholder for the Sources - {tabLayoutsSources[tabLayouts.currentIndex()]}"))
listMenu.addItem(f"MenuBar")
tabMenuBar = ttk.TTkTabWidget(parent=mainFrame, border=False, visible=False)
diff --git a/tests/test.draw.005.py b/tests/test.draw.005.py
new file mode 100755
index 00000000..5d74b614
--- /dev/null
+++ b/tests/test.draw.005.py
@@ -0,0 +1,65 @@
+#!/usr/bin/env python3
+
+# MIT License
+#
+# Copyright (c) 2022 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
+import logging
+import time
+
+sys.path.append(os.path.join(sys.path[0],'..'))
+from TermTk import TTkLog
+from TermTk.TTkCore import TTkColor
+from TermTk.TTkCore import TTkHelper
+from TermTk.TTkCore import TTkString
+from TermTk.TTkCore import TTkTerm
+
+
+TTkLog.use_default_file_logging()
+
+TTkTerm.init(mouse=False)
+TTkLog.info("Starting")
+
+color1 = TTkColor.fg("#88ffff")
+color2 = TTkColor.bg("#005555")
+color3 = TTkColor.UNDERLINE + TTkColor.fg("#00ff00" ) + TTkColor.bg("#555500")
+color4 = TTkColor.RST
+color5 = TTkColor.bg("#555500")+TTkColor.STRIKETROUGH
+
+base = TTkString() + color1 + "Tes;tXYZ" + color2 + "012345;ABCDEF;XYZ" + color3 + "0123;456" + color4 + ";pyTermTk"
+
+TTkTerm.push(
+ TTkTerm.Cursor.moveTo(2,4) +
+ base.toAansi() )
+time.sleep(0.5)
+
+for s in base.split(';'):
+ TTkTerm.push(
+ TTkTerm.Cursor.moveDown(1) + TTkTerm.Cursor.moveLeft(5) +
+ s.toAansi() )
+ time.sleep(0.5)
+
+time.sleep(5)
+
+TTkLog.info("Ending")
+
+TTkTerm.exit()
\ No newline at end of file