Browse Source

update

pull/90/head
Eugenio Parodi 3 years ago
parent
commit
b4799430c6
  1. 2
      README.md
  2. 4
      TermTk/TTkGui/__init__.py
  3. 0
      TermTk/TTkGui/textwrap1.py
  4. 5
      TermTk/TTkWidgets/tabwidget.py
  5. 2
      TermTk/TTkWidgets/texedit.py
  6. 35
      tests/test.generic.001.py
  7. 75
      tests/timeit/07.null.comparison.py
  8. 104
      tests/timeit/08.properties.setter.getter.py
  9. 36
      tests/utf-8/test.txt

2
README.md

@ -23,7 +23,7 @@ and inspired by a mix of [Qt5](https://www.riverbankcomputing.com/static/Docs/Py
- Specialized widgets to improve the usability (Windows, Frames, Tables, ...)
- QT Like Layout system to help arrange the widgets in the terminal
- True color support
- Fullsize/Halfsize UTF-8 characters 😎
- Ful/Half/Zero sized Unicode characters 😎
## Limitations
- The native **Windows** porting is not ready yet but it works with [Cygwin](https://www.cygwin.com) or **WSL**.

4
TermTk/TTkGui/__init__.py

@ -1,5 +1,5 @@
from .drag import *
from .textwrap import TTkTextWrap
from .drag import TTkDrag, TTkDropEvent
from .textwrap1 import TTkTextWrap
from .textcursor import TTkTextCursor
from .textdocument import TTkTextDocument
from .clipboard import TTkClipboard

0
TermTk/TTkGui/textwrap.py → TermTk/TTkGui/textwrap1.py

5
TermTk/TTkWidgets/tabwidget.py

@ -61,7 +61,6 @@ class TTkTabButton(TTkButton):
self._closable = kwargs.get('closable', False)
self.closeClicked = pyTTkSignal()
TTkButton.__init__(self, *args, **kwargs)
self._name = kwargs.get('name' , 'TTkTabButton' )
size = len(self.text) + 2
if self._closable:
size += 3
@ -128,7 +127,6 @@ class TTkTabButton(TTkButton):
class _TTkTabMenuButton(TTkMenuButton):
def __init__(self, *args, **kwargs):
TTkMenuButton.__init__(self, *args, **kwargs)
self._name = kwargs.get('name' , '_TTkTabMenuButton')
def paintEvent(self):
if self._pressed:
@ -148,7 +146,6 @@ class _TTkTabScrollerButton(TTkButton):
self._side = kwargs.get('side',TTkK.LEFT)
self._sideEnd = self._side
TTkButton.__init__(self, *args, **kwargs)
self._name = kwargs.get('name' , '_TTkTabScrollerButton' )
if self._border:
self.resize(2, 3)
self.setMinimumSize(2, 3)
@ -243,7 +240,6 @@ class TTkTabBar(TTkWidget):
self._rightScroller.clicked.connect(self._andMoveToTheRight)
TTkWidget.__init__(self, *args, **kwargs)
self._name = kwargs.get('name' , '_TTkTabs')
self.setFocusPolicy(TTkK.ClickFocus + TTkK.TabFocus)
self.focusChanged.connect(self._focusChanged)
@ -482,7 +478,6 @@ class TTkTabWidget(TTkFrame):
self._borderColor = TTkCfg.theme.tabBorderColor
TTkFrame.__init__(self, *args, **kwargs)
self._name = kwargs.get('name' , 'TTkTabWidget')
self._tabBar = TTkTabBar(small = not self.border(), closable=kwargs.get('closable', False))
self._topLeftLayout = None

2
TermTk/TTkWidgets/texedit.py

@ -32,7 +32,7 @@ from TermTk.TTkCore.string import TTkString
from TermTk.TTkCore.signal import pyTTkSignal, pyTTkSlot
from TermTk.TTkCore.helper import TTkHelper
from TermTk.TTkGui.clipboard import TTkClipboard
from TermTk.TTkGui.textwrap import TTkTextWrap
from TermTk.TTkGui.textwrap1 import TTkTextWrap
from TermTk.TTkGui.textcursor import TTkTextCursor
from TermTk.TTkGui.textdocument import TTkTextDocument
from TermTk.TTkLayouts.gridlayout import TTkGridLayout

35
tests/test.generic.001.py

@ -0,0 +1,35 @@
#!/usr/bin/env python3
# MIT License
#
# Copyright (c) 2021 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.
def func1(*args, **kwargs):
print(f"{args=} {kwargs=}")
def func2(a=0,b=0,c=0,d=0, *args, **kwargs):
print(f"{a=} {b=} {c=} {d=} {args=} {kwargs=}")
func1(1,2,3,4,aa=5,bb=6)
func2(1,2,3,4,aa=5,bb=6)
func2(1,2,aa=5,bb=6)
func2(c=1,d=2,aa=5,bb=6)
func2(1,2,3,4,5,6,7,8,9,aa=5,bb=6)

75
tests/timeit/07.null.comparison.py

@ -0,0 +1,75 @@
#!/usr/bin/env python3
# MIT License
#
# Copyright (c) 2021 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 timeit
a = 0
b = 1
c = None
def test1(x):
if x: return 0
else: return 1
def test2(x):
if not x: return 10
else: return 11
def test3(x):
if x is None: return 110
else: return 111
def test4(x):
if x is not None: return 1110
else: return 1111
loop = 1000000
result = timeit.timeit('test1(a)', globals=globals(), number=loop)
print(f"1a {result / loop:.10f} - {result / loop} {test1(a)}")
result = timeit.timeit('test2(a)', globals=globals(), number=loop)
print(f"2a {result / loop:.10f} - {result / loop} {test2(a)}")
result = timeit.timeit('test3(a)', globals=globals(), number=loop)
print(f"3a {result / loop:.10f} - {result / loop} {test3(a)}")
result = timeit.timeit('test4(a)', globals=globals(), number=loop)
print(f"4a {result / loop:.10f} - {result / loop} {test4(a)}")
result = timeit.timeit('test1(b)', globals=globals(), number=loop)
print(f"1b {result / loop:.10f} - {result / loop} {test1(b)}")
result = timeit.timeit('test2(b)', globals=globals(), number=loop)
print(f"2b {result / loop:.10f} - {result / loop} {test2(b)}")
result = timeit.timeit('test3(b)', globals=globals(), number=loop)
print(f"3b {result / loop:.10f} - {result / loop} {test3(b)}")
result = timeit.timeit('test4(b)', globals=globals(), number=loop)
print(f"4b {result / loop:.10f} - {result / loop} {test4(b)}")
result = timeit.timeit('test1(c)', globals=globals(), number=loop)
print(f"1c {result / loop:.10f} - {result / loop} {test1(c)}")
result = timeit.timeit('test2(c)', globals=globals(), number=loop)
print(f"2c {result / loop:.10f} - {result / loop} {test2(c)}")
result = timeit.timeit('test3(c)', globals=globals(), number=loop)
print(f"3c {result / loop:.10f} - {result / loop} {test3(c)}")
result = timeit.timeit('test4(c)', globals=globals(), number=loop)
print(f"4c {result / loop:.10f} - {result / loop} {test4(c)}")

104
tests/timeit/08.properties.setter.getter.py

@ -0,0 +1,104 @@
#!/usr/bin/env python3
# MIT License
#
# Copyright (c) 2021 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 timeit
class A():
__slots__ = ('_value')
def __init__(self):
self._value = 123
@property
def value(self):return self._value
@value.setter
def value(self, value): self._value = value
class B():
__slots__ = ('_value')
def __init__(self):
self._value = 123
def value(self):
return self._value
def setValue(self, value):
self._value = value
a = A()
b = B()
def test1(x):
ret = 0
for v in range(10,100):
a.value = v
ret += a.value
return ret
def test2(x):
ret = 0
for v in range(10,100):
b.setValue(v)
ret += b.value()
return ret
def test3(x):
ret = 0
for v in range(10,100):
a.value = v
return ret
def test4(x):
ret = 0
for v in range(10,100):
b.setValue(v)
return ret
def test5(x):
ret = 0
for v in range(10,100):
ret += a.value
return ret
def test6(x):
ret = 0
for v in range(10,100):
ret += b.value()
return ret
loop = 10000
result = timeit.timeit('test1(a)', globals=globals(), number=loop)
print(f"1a {result / loop:.10f} - {result / loop} {test1(a)}")
result = timeit.timeit('test2(a)', globals=globals(), number=loop)
print(f"2a {result / loop:.10f} - {result / loop} {test2(a)}")
result = timeit.timeit('test3(a)', globals=globals(), number=loop)
print(f"3a {result / loop:.10f} - {result / loop} {test3(a)}")
result = timeit.timeit('test4(a)', globals=globals(), number=loop)
print(f"4a {result / loop:.10f} - {result / loop} {test4(a)}")
result = timeit.timeit('test5(a)', globals=globals(), number=loop)
print(f"5a {result / loop:.10f} - {result / loop} {test5(a)}")
result = timeit.timeit('test6(a)', globals=globals(), number=loop)
print(f"6a {result / loop:.10f} - {result / loop} {test6(a)}")

36
tests/utf-8/test.txt

@ -0,0 +1,36 @@
🭇🬼
🭃🭌🬿
🭥🭒█🭏🬼
🭋🭍🭑🬽🭢🭕█🭌🬿
🭅███🭀 🭥🭒█🭏🬼
🭋████🭐 🭢🭕█🭌🬿
🭅██🭞🭜🭘 🭈🭆🭂███🭏🬼
🭣🭧🭚 🭈🭆🭂██████🭠🭗
🭥🭒██🭝🭚
🭢🭕🭠🭗
🬼 🭇 🭗 🭢
🬽 🭈 🭘 🭣
🬾 🭉 🭙 🭤
🬿 🭊 🭚 🭥
🭀 🭋 🭛 🭦
🭌 🭁 🭝 🭒
🭍 🭂 🭞 🭓
🭎 🭃 🭟 🭔
🭏 🭄 🭠 🭕
🭐 🭅 🭡 🭖
🭑 🭆 🭜 🭧
Loading…
Cancel
Save