diff --git a/Makefile b/Makefile index ac6fbdbf..d5faff06 100644 --- a/Makefile +++ b/Makefile @@ -97,5 +97,5 @@ test: .venv flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics --exclude .venv,build,tmp ; \ pytest tests/pytest/test_003_string.py ; \ pytest tests/pytest/test_002_textedit.py ; \ - pytest tests/pytest/test_001_demo.py ; + pytest -v tests/pytest/test_001_demo.py ; diff --git a/TermTk/TTkCore/canvas.py b/TermTk/TTkCore/canvas.py index 3896eaf6..a0b45667 100644 --- a/TermTk/TTkCore/canvas.py +++ b/TermTk/TTkCore/canvas.py @@ -192,10 +192,10 @@ class TTkCanvas: else: self._colors[y][x+i] = colors[i].mod(x+i,y) # Check the full wide chars on the edge of the two canvasses - if 0 <= (x+a) < self._width and self._data[y][x+a] == '': + if ((0 <= (x+a) < self._width) and self._data[y][x+a] == ''): self._data[y][x+a] = TTkCfg.theme.unicodeWideOverflowCh[0] self._colors[y][x+a] = TTkCfg.theme.unicodeWideOverflowColor - if 0 <= (x+b-1) < self._width and TTkString._isWideCharData(self._data[y][x+b-1]): + if ((0 <= (x+b-1) < self._width) and TTkString._isWideCharData(self._data[y][x+b-1])): self._data[y][x+b-1] = TTkCfg.theme.unicodeWideOverflowCh[1] self._colors[y][x+b-1] = TTkCfg.theme.unicodeWideOverflowColor @@ -598,15 +598,10 @@ class TTkCanvas: w = min(w,self._width-x) h = min(h,self._height-y) - # if x>=self._width: x=self._width-1 - # if y>=self._height: y=self._height-1 - # if w>=self._width-x: w=self._width-x - # if h>=self._height-y: h=self._height-y - - xoffset = 0 if x>=bx else bx-x - yoffset = 0 if y>=by else by-y - wslice = w if x+w < bx+bw else bx+bw-x - hslice = h if y+h < by+bh else by+bh-y + xoffset = min(max(0,bx-x),canvas._width-1) + yoffset = min(max(0,by-y),canvas._height-1) + wslice = min(w if x+w < bx+bw else bx+bw-x,canvas._width) + hslice = min(h if y+h < by+bh else by+bh-y,canvas._height) for iy in range(yoffset,hslice): a, b = x+xoffset, x+wslice @@ -614,16 +609,16 @@ class TTkCanvas: self._colors[y+iy][a:b] = canvas._colors[iy][xoffset:wslice] # Check the full wide chars on the edge of the two canvasses - if 0 <= a < self._width and self._data[y+iy][a]=='': + if ((0 <= a < self._width) and self._data[y+iy][a]==''): self._data[y+iy][a] = TTkCfg.theme.unicodeWideOverflowCh[0] self._colors[y+iy][a] = TTkCfg.theme.unicodeWideOverflowColor - if 0 < b <= self._width and TTkString._isWideCharData(self._data[y+iy][b-1]): + if ((0 < b <= self._width) and TTkString._isWideCharData(self._data[y+iy][b-1])): self._data[y+iy][b-1] = TTkCfg.theme.unicodeWideOverflowCh[1] self._colors[y+iy][b-1] = TTkCfg.theme.unicodeWideOverflowColor - if 0 < a <= self._width and TTkString._isWideCharData(self._data[y+iy][a-1]): + if ((0 < a <= self._width) and TTkString._isWideCharData(self._data[y+iy][a-1])): self._data[y+iy][a-1] = TTkCfg.theme.unicodeWideOverflowCh[1] self._colors[y+iy][a-1] = TTkCfg.theme.unicodeWideOverflowColor - if 0 <= b < self._width and self._data[y+iy][b]=='': + if ((0 <= b < self._width) and self._data[y+iy][b]==''): self._data[y+iy][b] = TTkCfg.theme.unicodeWideOverflowCh[0] self._colors[y+iy][b] = TTkCfg.theme.unicodeWideOverflowColor diff --git a/tests/pytest/test_001_demo.py b/tests/pytest/test_001_demo.py index d5428f06..37b99768 100755 --- a/tests/pytest/test_001_demo.py +++ b/tests/pytest/test_001_demo.py @@ -153,7 +153,18 @@ def test_demo(): assert demo.demoShowcase(root) != None root.quit() +def message_handler(mode, context, message): + msgType = "NONE" + if mode == demo.ttk.TTkLog.InfoMsg: msgType = "[INFO]" + elif mode == demo.ttk.TTkLog.WarningMsg: msgType = "[WARNING]" + elif mode == demo.ttk.TTkLog.CriticalMsg: msgType = "[CRITICAL]" + elif mode == demo.ttk.TTkLog.FatalMsg: msgType = "[FATAL]" + elif mode == demo.ttk.TTkLog.ErrorMsg: msgType = "[ERROR]" + print(f"{msgType} {context.file} {message}") + def test_recording1(): + # demo.ttk.TTkLog.use_default_file_logging() + demo.ttk.TTkLog.installMessageHandler(message_handler) root = TTkRecord(title="pyTermTk Demo Record", record=False) root.loadQueue(open('tmp/test.input.bin', 'rb')) winTabbed1 = demo.ttk.TTkWindow(parent=root,pos=(0,0), size=(80,24), title="pyTermTk Showcase", border=True, layout=demo.ttk.TTkGridLayout())