Browse Source

Added split function to TTkString

pull/23/head
Eugenio Parodi 4 years ago
parent
commit
4a6cfa7f89
  1. 5
      README.md
  2. 12
      TermTk/TTkCore/string.py
  3. 6
      demo/demo.py
  4. 65
      tests/test.draw.005.py

5
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 <br>
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

12
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)

6
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)

65
tests/test.draw.005.py

@ -0,0 +1,65 @@
#!/usr/bin/env python3
# MIT License
#
# Copyright (c) 2022 Eugenio Parodi <ceccopierangiolieugenio AT googlemail DOT com>
#
# 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()
Loading…
Cancel
Save