diff --git a/TermTk/TTkCore/__init__.py b/TermTk/TTkCore/__init__.py index d96e6ef2..c23e4240 100644 --- a/TermTk/TTkCore/__init__.py +++ b/TermTk/TTkCore/__init__.py @@ -1,10 +1,12 @@ -from .log import * -from .cfg import * +from .log import TTkLog +from .cfg import TTkCfg,TTkGlbl +from .util import TTkUtil +from .helper import TTkHelper from .signal import pyTTkSlot, pyTTkSignal -from .ttk import * -from .canvas import * -from .color import * -from .string import * -from .timer import * -from .filebuffer import * +from .ttk import TTk +from .canvas import TTkCanvas +from .color import TTkColor, TTkColorGradient, TTkLinearGradient +from .string import TTkString +from .timer import TTkTimer +from .filebuffer import TTkFileBuffer from .TTkTerm import * \ No newline at end of file diff --git a/TermTk/TTkCore/util.py b/TermTk/TTkCore/util.py new file mode 100644 index 00000000..eb74f021 --- /dev/null +++ b/TermTk/TTkCore/util.py @@ -0,0 +1,32 @@ +# MIT License +# +# Copyright (c) 2023 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 zlib, pickle, base64 + +class TTkUtil(): + @staticmethod + def obj_inflate_2_base64(obj): + return base64.b64encode(zlib.compress(bytearray(pickle.dumps(obj)))).decode("ascii") + + @staticmethod + def base64_deflate_2_obj(b64): + return pickle.loads(zlib.decompress(base64.b64decode(b64.encode("ascii")))) diff --git a/TermTk/TTkWidgets/TTkPickers/messagebox.py b/TermTk/TTkWidgets/TTkPickers/messagebox.py index 854b4103..7c547a72 100644 --- a/TermTk/TTkWidgets/TTkPickers/messagebox.py +++ b/TermTk/TTkWidgets/TTkPickers/messagebox.py @@ -20,11 +20,10 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -import zlib, pickle, base64 - from TermTk.TTkCore.cfg import TTkCfg from TermTk.TTkCore.signal import pyTTkSignal,pyTTkSlot from TermTk.TTkCore.color import TTkColor +from TermTk.TTkCore.util import TTkUtil from TermTk.TTkCore.string import TTkString from TermTk.TTkLayouts.layout import TTkLayout from TermTk.TTkLayouts.gridlayout import TTkGridLayout @@ -150,7 +149,7 @@ class TTkMessageBox(TTkWindow): self._widImage = TTkImage(rasteriser=TTkImage.HALFBLOCK) self.layout().addWidget(self._widImage,0,0,4,1) if compressedData: - data = pickle.loads(zlib.decompress(base64.b64decode(compressedData.encode("ascii")))) + data = TTkUtil.base64_deflate_2_obj(compressedData) self._widImage.setData(data) self._widImage.setMinimumSize(16,8) diff --git a/tools/check.import.sh b/tools/check.import.sh index 96fe51db..0665d031 100755 --- a/tools/check.import.sh +++ b/tools/check.import.sh @@ -8,6 +8,7 @@ __check(){ grep -v \ -e "from dataclasses" \ -e "signal.py:from inspect import getfullargspec" \ + -e "signal.py:from types import LambdaType" \ -e "colors.py:from .colors_ansi_map" \ -e "timer.py:import threading, time" \ -e "log.py:import inspect" \ @@ -34,7 +35,8 @@ __check(){ -e "string.py:import unicodedata" \ -e "progressbar.py:import math" \ -e "uiloader.py:import json" \ - -e "uiproperties.py:from .properties import *" + -e "uiproperties.py:from .properties import *" \ + -e "util.py:import zlib, pickle, base64" } ; if __check ; then diff --git a/tools/dumb.image.tool.py b/tools/dumb.image.tool.py index 18d3c6f5..1fc39864 100755 --- a/tools/dumb.image.tool.py +++ b/tools/dumb.image.tool.py @@ -85,13 +85,13 @@ def _export(): te.append("=============[Raw Data START]============") te.append(str(ttkImage._data).replace('],','],\n')) te.append("=============[Raw Data STOP]=============") - b64str = base64.b64encode(zlib.compress(bytearray(pickle.dumps(data)))).decode("ascii") - te.append('import zlib, pickle, base64') + # b64str = base64.b64encode(zlib.compress(bytearray(pickle.dumps(data)))).decode("ascii") + b64str = ttk.TTkUtil.obj_inflate_2_base64(data) + te.append('from TermTk import TTkUtil') te.append(f'# Data generated using {os.path.basename(__file__)}') - te.append('data = pickle.loads(zlib.decompress(base64.b64decode((') - b64list = ' "' + '" +\n "'.join([b64str[i:i+128] for i in range(0,len(b64str),128)]) + '"' + te.append('data = TTkUtil.base64_deflate_2_obj(') + b64list = ' "' + '" +\n "'.join([b64str[i:i+128] for i in range(0,len(b64str),128)]) + '")' te.append(b64list) - te.append(' ).encode("ascii"))))') b_export.clicked.connect(_export)