Browse Source

#139 Reworked paintEvent to require the canvas

pull/141/head
Eugenio Parodi 3 years ago
parent
commit
59048b0751
  1. 7
      TermTk/TTkCore/helper.py
  2. 6
      TermTk/TTkCore/ttk.py
  3. 11
      TermTk/TTkGui/drag.py
  4. 3
      TermTk/TTkGui/tooltip.py
  5. 10
      TermTk/TTkTestWidgets/keypressview.py
  6. 4
      TermTk/TTkTestWidgets/logviewer.py
  7. 20
      TermTk/TTkTestWidgets/testabstractscroll.py
  8. 25
      TermTk/TTkTestWidgets/testwidget.py
  9. 14
      TermTk/TTkTestWidgets/testwidgetsizes.py
  10. 4
      TermTk/TTkTestWidgets/tominspector.py
  11. 10
      TermTk/TTkWidgets/Fancy/tableview.py
  12. 12
      TermTk/TTkWidgets/Fancy/treewidget.py
  13. 14
      TermTk/TTkWidgets/TTkModelView/treewidget.py
  14. 34
      TermTk/TTkWidgets/TTkPickers/colorpicker.py
  15. 4
      TermTk/TTkWidgets/TTkPickers/textpicker.py
  16. 12
      TermTk/TTkWidgets/about.py
  17. 3
      TermTk/TTkWidgets/button.py
  18. 8
      TermTk/TTkWidgets/checkbox.py
  19. 10
      TermTk/TTkWidgets/combobox.py
  20. 8
      TermTk/TTkWidgets/frame.py
  21. 10
      TermTk/TTkWidgets/graph.py
  22. 8
      TermTk/TTkWidgets/image.py
  23. 6
      TermTk/TTkWidgets/label.py
  24. 4
      TermTk/TTkWidgets/lineedit.py
  25. 8
      TermTk/TTkWidgets/menubar.py
  26. 3
      TermTk/TTkWidgets/progressbar.py
  27. 10
      TermTk/TTkWidgets/radiobutton.py
  28. 4
      TermTk/TTkWidgets/scrollbar.py
  29. 6
      TermTk/TTkWidgets/spinbox.py
  30. 8
      TermTk/TTkWidgets/splitter.py
  31. 52
      TermTk/TTkWidgets/tabwidget.py
  32. 16
      TermTk/TTkWidgets/texedit.py
  33. 8
      TermTk/TTkWidgets/widget.py
  34. 6
      TermTk/TTkWidgets/window.py
  35. 88
      tests/timeit/14.function.01.params.py
  36. 12
      ttkDesigner/app/about.py
  37. 4
      ttkDesigner/app/notepad.py
  38. 16
      ttkDesigner/app/superobj/supercontrol.py
  39. 8
      ttkDesigner/app/superobj/superlayout.py
  40. 24
      ttkDesigner/app/superobj/superlayoutgrid.py
  41. 23
      ttkDesigner/app/superobj/superwidget.py
  42. 6
      ttkDesigner/app/widgetbox.py
  43. 6
      ttkDesigner/app/windoweditor.py

7
TermTk/TTkCore/helper.py

@ -289,9 +289,10 @@ class TTkHelper:
if not widget.isVisibleAndParent(): continue
# Resize the canvas just before the paintEvent
# to avoid too many allocations
widget.getCanvas().updateSize()
widget.getCanvas().clean()
widget.paintEvent()
canvas = widget.getCanvas()
canvas.updateSize()
canvas.clean()
widget.paintEvent(canvas)
# Compose all the canvas to the parents
# From the deepest children to the bottom

6
TermTk/TTkCore/ttk.py

@ -72,9 +72,9 @@ class TTk(TTkWidget):
self.move(mevt.x, mevt.y)
self.update()
self.raiseWidget()
def paintEvent(self):
self._canvas.drawChar((0,0), self._cursor, self._color)
#self._canvas.drawChar((0,0),'✜')
def paintEvent(self, canvas):
canvas.drawChar((0,0), self._cursor, self._color)
#canvas.drawChar((0,0),'✜')
__slots__ = (
'_input', '_termMouse', '_termDirectMouse',

11
TermTk/TTkGui/drag.py

@ -37,9 +37,9 @@ class _TTkDragDisplayWidget(TTkWidget):
self._pixmap = pixmap
self.setGeometry(x-hsx,y-hsy,w,h)
def paintEvent(self):
def paintEvent(self, canvas):
_,_,w,h = self.geometry()
self._canvas.paintCanvas(self._pixmap, (0,0,w,h), (0,0,w,h), (0,0,w,h))
canvas.paintCanvas(self._pixmap, (0,0,w,h), (0,0,w,h), (0,0,w,h))
class TTkDrag():
__slots__ = ('_data', '_pixmap', '_showPixmap', '_hotSpot')
@ -66,9 +66,10 @@ class TTkDrag():
def setPixmap(self, pixmap):
if issubclass(type(pixmap),TTkWidget):
pixmap.getCanvas().updateSize()
pixmap.paintEvent()
pixmap = pixmap.getCanvas()
canvas = pixmap.getCanvas()
canvas.updateSize()
pixmap.paintEvent(canvas)
pixmap = canvas
if type(pixmap) is TTkCanvas:
pixmap.updateSize()
self._pixmap.setPixmap(pixmap, self._hotSpot)

3
TermTk/TTkGui/tooltip.py

@ -42,10 +42,9 @@ class _TTkToolTipDisplayWidget(TTkWidget):
def mouseEvent(self, evt): return False
def paintEvent(self):
def paintEvent(self, canvas):
w,h = self.size()
borderColor = TTkColor.fg("#888888")
canvas = self.getCanvas()
canvas.drawBox(pos=(0,0),size=(w,h), color=borderColor)
canvas.drawChar(pos=(0, 0), char='', color=borderColor)
canvas.drawChar(pos=(w-1,0), char='', color=borderColor)

10
TermTk/TTkTestWidgets/keypressview.py

@ -104,17 +104,17 @@ class TTkKeyPressView(TTkWidget):
ret[2] += m[2]
return ret
def paintEvent(self):
def paintEvent(self, canvas):
for alpha,text,_ in self._keys:
r = int(0xbb*alpha)
g = int(0xff*alpha)
b = int(0xff*alpha)
color = TTkColor.fg(f"#{r<<16|g<<8|b:06x}")
#self._canvas.drawText(pos=((self.width()-len(text))//2,0),text=text,color=color)
#canvas.drawText(pos=((self.width()-len(text))//2,0),text=text,color=color)
m = self.txt2map(text)
self._canvas.drawText(pos=((self.width()-len(text)*3)//2,0),text=m[0],color=color)
self._canvas.drawText(pos=((self.width()-len(text)*3)//2,1),text=m[1],color=color)
self._canvas.drawText(pos=((self.width()-len(text)*3)//2,2),text=m[2],color=color)
canvas.drawText(pos=((self.width()-len(text)*3)//2,0),text=m[0],color=color)
canvas.drawText(pos=((self.width()-len(text)*3)//2,1),text=m[1],color=color)
canvas.drawText(pos=((self.width()-len(text)*3)//2,2),text=m[2],color=color)
fontMap = TTkKeyPressViewFont.bitmap
# fontMap = TTkKeyPressViewFont.calvin_s

4
TermTk/TTkTestWidgets/logviewer.py

@ -71,11 +71,11 @@ class _TTkLogViewer(TTkAbstractScrollView):
self.viewChanged.emit()
self.update()
def paintEvent(self):
def paintEvent(self, canvas):
ox,oy = self.getViewOffsets()
_,h = self.size()
for y, message in enumerate(self._messages[oy:oy+h]):
self._canvas.drawTTkString(pos=(-ox,y),text=message)
canvas.drawTTkString(pos=(-ox,y),text=message)
class TTkLogViewer(TTkAbstractScrollArea):
__slots__ = ('_logView')

20
TermTk/TTkTestWidgets/testabstractscroll.py

@ -42,17 +42,17 @@ class TTkTestAbstractScrollWidget(TTkAbstractScrollView):
self._areaPos = self.getViewOffsets()
self.update()
def paintEvent(self):
self._canvas.drawBox(pos=(0,0),size=(self._width,self._height))
def paintEvent(self, canvas):
canvas.drawBox(pos=(0,0),size=(self._width,self._height))
t,_,l,_ = self.getPadding()
self._canvas.drawText(pos=(l+1,t+1+0), text=f"Test Widget [{self._name}]")
self._canvas.drawText(pos=(l+1,t+1+1), text=f"x,y ({self._x},{self._y})")
self._canvas.drawText(pos=(l+1,t+1+2), text=f"w,h ({self._width},{self._height})")
self._canvas.drawText(pos=(l+1,t+1+3), text=f"max w,h ({self._maxw},{self._maxh})")
self._canvas.drawText(pos=(l+1,t+1+4), text=f"min w,h ({self._minw},{self._minh})")
self._canvas.drawText(pos=(l+1,t+1+5), text=f"areaSize {self._areaSize}")
self._canvas.drawText(pos=(l+1,t+1+6), text=f"areaPos1 {self._areaPos}")
self._canvas.drawText(pos=(l+1,t+1+7), text=f"areaPos2 ({self._areaPos[0]+self._width},{self._areaPos[1]+self._height})")
canvas.drawText(pos=(l+1,t+1+0), text=f"Test Widget [{self._name}]")
canvas.drawText(pos=(l+1,t+1+1), text=f"x,y ({self._x},{self._y})")
canvas.drawText(pos=(l+1,t+1+2), text=f"w,h ({self._width},{self._height})")
canvas.drawText(pos=(l+1,t+1+3), text=f"max w,h ({self._maxw},{self._maxh})")
canvas.drawText(pos=(l+1,t+1+4), text=f"min w,h ({self._minw},{self._minh})")
canvas.drawText(pos=(l+1,t+1+5), text=f"areaSize {self._areaSize}")
canvas.drawText(pos=(l+1,t+1+6), text=f"areaPos1 {self._areaPos}")
canvas.drawText(pos=(l+1,t+1+7), text=f"areaPos2 ({self._areaPos[0]+self._width},{self._areaPos[1]+self._height})")
def mousePressEvent(self, evt): return True
def mouseReleaseEvent(self, evt): return True

25
TermTk/TTkTestWidgets/testwidget.py

@ -39,17 +39,17 @@ class _TestContent(TTkWidget):
t06 = TTkString(color=TTkColor.fg("#0088ff") ,text="Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.")
t07 = TTkString(color=TTkColor.fg("#0000ff") ,text="Excepteur sint occaecat cupidatat non proident,")
t08 = TTkString(color=TTkColor.fg("#ff00ff") ,text="sunt in culpa qui officia deserunt mollit anim id est laborum.")
def paintEvent(self):
def paintEvent(self, canvas):
# TTkLog.debug(f"Test Paint - {self._name}")
y=0; self._canvas.drawText(pos=(-5,y), text=self.t01)
y+=1; self._canvas.drawText(pos=( 0,y), text=self.t02)
y+=1; self._canvas.drawText(pos=( 0,y), text=self.t03)
y+=1; self._canvas.drawText(pos=( 0,y), text=self.t04)
y+=1; self._canvas.drawText(pos=( 0,y), text=self.t05)
y+=1; self._canvas.drawText(pos=( 0,y), text=self.t06)
y+=1; self._canvas.drawText(pos=( 0,y), text=self.t07)
y+=1; self._canvas.drawText(pos=( 0,y), text=self.t08)
y+=1; self._canvas.drawGrid(
y=0; canvas.drawText(pos=(-5,y), text=self.t01)
y+=1; canvas.drawText(pos=( 0,y), text=self.t02)
y+=1; canvas.drawText(pos=( 0,y), text=self.t03)
y+=1; canvas.drawText(pos=( 0,y), text=self.t04)
y+=1; canvas.drawText(pos=( 0,y), text=self.t05)
y+=1; canvas.drawText(pos=( 0,y), text=self.t06)
y+=1; canvas.drawText(pos=( 0,y), text=self.t07)
y+=1; canvas.drawText(pos=( 0,y), text=self.t08)
y+=1; canvas.drawGrid(
pos=(0,y),size=(self._width,self._height-y),
hlines=(2,5,7), vlines=(4,7,15,30),
color=TTkColor.fg("#aaffaa"))
@ -75,17 +75,16 @@ class TTkTestWidget(TTkFrame):
_TestContent(parent=self, pos=(0,8), width=50, height=50, name=f"content-{self._name}")
TTkTestWidget.ID+=1
def paintEvent(self):
def paintEvent(self, canvas):
x = 1 if self.border() else 0
y = 1 if self.border() else 0
w = 50
canvas = self.getCanvas()
canvas.drawText(pos=(x,y+3), width=w, color=self._l[0], text=f"Test Widget [{self._name}]")
canvas.drawText(pos=(x,y+4), width=w, color=self._l[1], text=f"x,y ({self._x},{self._y})")
canvas.drawText(pos=(x,y+5), width=w, color=self._l[2], text=f"w,h ({self._width},{self._height})")
canvas.drawText(pos=(x,y+6), width=w, color=self._l[3], text=f"max w,h ({self._maxw},{self._maxh})")
canvas.drawText(pos=(x,y+7), width=w, color=self._l[4], text=f"min w,h ({self._minw},{self._minh})")
TTkFrame.paintEvent(self)
TTkFrame.paintEvent(self, canvas)
def mousePressEvent(self, evt):
TTkLog.debug(f"{self._name} Test Mouse {evt}")

14
TermTk/TTkTestWidgets/testwidgetsizes.py

@ -32,14 +32,14 @@ class TTkTestWidgetSizes(TTkFrame):
self._name = kwargs.get('name' , f"TestWidgetSizes-{TTkTestWidgetSizes.ID}" )
TTkTestWidgetSizes.ID+=1
def paintEvent(self):
TTkFrame.paintEvent(self)
def paintEvent(self, canvas):
TTkFrame.paintEvent(self, canvas)
t,_,l,_ = self.getPadding()
self._canvas.drawText(pos=(l,t+0), text=f"Test Widget [{self._name}]")
self._canvas.drawText(pos=(l,t+1), text=f"x,y ({self._x},{self._y})")
self._canvas.drawText(pos=(l,t+2), text=f"w,h ({self._width},{self._height})")
self._canvas.drawText(pos=(l,t+3), text=f"max w,h ({self._maxw},{self._maxh})")
self._canvas.drawText(pos=(l,t+4), text=f"min w,h ({self._minw},{self._minh})")
canvas.drawText(pos=(l,t+0), text=f"Test Widget [{self._name}]")
canvas.drawText(pos=(l,t+1), text=f"x,y ({self._x},{self._y})")
canvas.drawText(pos=(l,t+2), text=f"w,h ({self._width},{self._height})")
canvas.drawText(pos=(l,t+3), text=f"max w,h ({self._maxw},{self._maxh})")
canvas.drawText(pos=(l,t+4), text=f"min w,h ({self._minw},{self._minh})")
def mousePressEvent(self, evt): return True
def mouseReleaseEvent(self, evt): return True

4
TermTk/TTkTestWidgets/tominspector.py

@ -122,7 +122,7 @@ class _DetailLazyFormView(TTkAbstractScrollView):
def viewDisplayedSize(self) -> (int, int):
return self.size()
def paintEvent(self):
def paintEvent(self, canvas):
x,y = self.getViewOffsets()
w,h = self.size()
tt = TTkCfg.theme.tree
@ -132,7 +132,7 @@ class _DetailLazyFormView(TTkAbstractScrollView):
for i,l in enumerate(header):
hx = 0 if i==0 else columnsPos[i-1]+1
hx1 = columnsPos[i]
self._canvas.drawText(pos=(hx-x,0), text=l, width=hx1-hx, color=TTkCfg.theme.treeHeaderColor)
canvas.drawText(pos=(hx-x,0), text=l, width=hx1-hx, color=TTkCfg.theme.treeHeaderColor)
class _TTkDomTreeWidgetItem(TTkTreeWidgetItem):
__slots__ = ('_domWidget')

10
TermTk/TTkWidgets/Fancy/tableview.py

@ -57,7 +57,7 @@ class _TTkFancyTableViewHeader(TTkWidget):
self._header += [TTkString()]*(len(self._columns)-len(self._header))
self._alignments = [TTkK.NONE]*len(self._columns)
def paintEvent(self):
def paintEvent(self, canvas):
w,h = self.size()
total = 0
variableCols = 0
@ -76,7 +76,7 @@ class _TTkFancyTableViewHeader(TTkWidget):
sizes.append((w-total)//variableCols)
variableCols -= 1
colors = [self._headerColor]*len(self._header)
self._canvas.drawTableLine(pos=(0,0), items=self._header, sizes=sizes, colors=colors, alignments=self._alignments)
canvas.drawTableLine(pos=(0,0), items=self._header, sizes=sizes, colors=colors, alignments=self._alignments)
class _TTkFancyTableView(TTkAbstractScrollView):
@ -306,7 +306,7 @@ class _TTkFancyTableView(TTkAbstractScrollView):
self.activated.emit(self._selected)
return True
def paintEvent(self):
def paintEvent(self, canvas):
w,h = self.size()
ox, oy = self.getViewOffsets()
total = 0
@ -349,10 +349,10 @@ class _TTkFancyTableView(TTkAbstractScrollView):
item[vid] = item[vid].substring(fr=strPos)
if it == self._selected:
colors = [self._selectColor]*len(self._columnColors)
self._canvas.drawTableLine(pos=(0,y), items=item, sizes=sizes, colors=colors, alignments=self._alignments)
canvas.drawTableLine(pos=(0,y), items=item, sizes=sizes, colors=colors, alignments=self._alignments)
else:
colors = [c.modParam(val=-val) for c in self._columnColors]
self._canvas.drawTableLine(pos=(0,y), items=item, sizes=sizes, colors=colors, alignments=self._alignments)
canvas.drawTableLine(pos=(0,y), items=item, sizes=sizes, colors=colors, alignments=self._alignments)
class TTkFancyTableView(TTkAbstractScrollView):
__slots__ = (

12
TermTk/TTkWidgets/Fancy/treewidget.py

@ -37,11 +37,11 @@ class _TTkDisplayedTreeItemControl(TTkCheckbox):
self._name = kwargs.get('name' , '_TTkDisplayedTreeItemControl' )
self.setMinimumSize(1, 1)
def paintEvent(self):
def paintEvent(self, canvas):
if self.isChecked():
self._canvas.drawText(pos=(0,0), text="")
canvas.drawText(pos=(0,0), text="")
else:
self._canvas.drawText(pos=(0,0), text="")
canvas.drawText(pos=(0,0), text="")
class _TTkDisplayedTreeItem(TTkWidget):
@ -69,10 +69,10 @@ class _TTkDisplayedTreeItem(TTkWidget):
def _controlClicked(self, status):
self._clicked.emit(status, self, self._treeWidgetItem)
def paintEvent(self):
def paintEvent(self, canvas):
if self._isLeaf:
self._canvas.drawText(pos=(self._depth, 0), text="")
self._canvas.drawText(pos=(self._depth+2, 0), text=self._text)
canvas.drawText(pos=(self._depth, 0), text="")
canvas.drawText(pos=(self._depth+2, 0), text=self._text)
class TTkFancyTreeWidget(TTkFancyTableView):

14
TermTk/TTkWidgets/TTkModelView/treewidget.py

@ -334,7 +334,7 @@ class TTkTreeWidget(TTkAbstractScrollView):
self.update()
self.viewChanged.emit()
def paintEvent(self):
def paintEvent(self, canvas):
x,y = self.getViewOffsets()
w,h = self.size()
tt = TTkCfg.theme.tree
@ -343,15 +343,15 @@ class TTkTreeWidget(TTkAbstractScrollView):
for i,l in enumerate(self._header):
hx = 0 if i==0 else self._columnsPos[i-1]+1
hx1 = self._columnsPos[i]
self._canvas.drawText(pos=(hx-x,0), text=l, width=hx1-hx, color=self._headerColor)
canvas.drawText(pos=(hx-x,0), text=l, width=hx1-hx, color=self._headerColor)
if i == self._sortColumn:
s = tt[6] if self._sortOrder == TTkK.AscendingOrder else tt[7]
self._canvas.drawText(pos=(hx1-x-1,0), text=s, color=self._headerColor)
canvas.drawText(pos=(hx1-x-1,0), text=s, color=self._headerColor)
# Draw header separators
for sx in self._columnsPos:
self._canvas.drawChar(pos=(sx-x,0), char=tt[5], color=self._headerColor)
canvas.drawChar(pos=(sx-x,0), char=tt[5], color=self._headerColor)
for sy in range(1,h):
self._canvas.drawChar(pos=(sx-x,sy), char=tt[4], color=self._lineColor)
canvas.drawChar(pos=(sx-x,sy), char=tt[4], color=self._lineColor)
# Draw cache
for i, c in enumerate(self._cache):
@ -363,6 +363,6 @@ class TTkTreeWidget(TTkAbstractScrollView):
text = c.data[il]
if item.isSelected():
self._canvas.drawText(pos=(lx-x,i-y+1), text=text.completeColor(self._selectedColor), width=lx1-lx, alignment=item.textAlignment(il), color=self._selectedColor)
canvas.drawText(pos=(lx-x,i-y+1), text=text.completeColor(self._selectedColor), width=lx1-lx, alignment=item.textAlignment(il), color=self._selectedColor)
else:
self._canvas.drawText(pos=(lx-x,i-y+1), text=text, width=lx1-lx, alignment=item.textAlignment(il))
canvas.drawText(pos=(lx-x,i-y+1), text=text, width=lx1-lx, alignment=item.textAlignment(il))

34
TermTk/TTkWidgets/TTkPickers/colorpicker.py

@ -68,7 +68,7 @@ class _TTkHueCanvas(TTkWidget):
def mouseDragEvent(self, evt):
return self.mousePressEvent(evt)
def paintEvent(self):
def paintEvent(self, canvas):
w,_ = self.size()
self._hueList = [0x00]*(w+1)
def _linInt(a,b,x):
@ -82,9 +82,9 @@ class _TTkHueCanvas(TTkWidget):
rgb =a|(b&_linInt(b,0,6*x/w))
color = TTkColor.bg( f"#{rgb:06x}" )
if (num*w//6)+x == self._selected:
self._canvas.drawChar(pos=((num*w//6)+x,0), char="", color=color+TTkColor.fg("#000000"))
canvas.drawChar(pos=((num*w//6)+x,0), char="", color=color+TTkColor.fg("#000000"))
else:
self._canvas.drawChar(pos=((num*w//6)+x,0), char=" ", color=color)
canvas.drawChar(pos=((num*w//6)+x,0), char=" ", color=color)
self._hueList[(num*w//6)+x]=rgb
_printSlice(0, 0xff0000, 0x00ff00, True)
@ -136,15 +136,15 @@ class _TTkColorCanvas(TTkWidget):
b = _linInt(b,0,y/h)&0x0000ff
return r|g|b
def paintEvent(self):
def paintEvent(self, canvas):
w,h = self.size()
for x in range(w):
for y in range(h):
color = TTkColor.bg( f"#{self._colorAt(x,y,w,h):06x}" )
if (x,y)==self._selected:
self._canvas.drawText(pos=(x,y), text="", color=color+TTkColor.fg("#000000"))
canvas.drawText(pos=(x,y), text="", color=color+TTkColor.fg("#000000"))
else:
self._canvas.drawText(pos=(x,y), text=" ", color=color)
canvas.drawText(pos=(x,y), text=" ", color=color)
class _TTkShowColor(TTkWidget):
__slots__ = ('_color')
@ -166,10 +166,10 @@ class _TTkShowColor(TTkWidget):
self.setColor(TTkColor.bg( f"#{color:06x}" ))
self.update()
def paintEvent(self):
def paintEvent(self, canvas):
w,h = self.size()
for y in range(h):
self._canvas.drawText(pos=(0,y),text=" "*w, color=self._color)
canvas.drawText(pos=(0,y),text=" "*w, color=self._color)
class _TTkColorButton(TTkButton):
lastClicked = None
@ -417,23 +417,23 @@ class TTkColorDialogPicker(TTkWindow):
self._color = color
self.update()
def paintEvent(self):
TTkWindow.paintEvent(self)
def paintEvent(self, canvas):
TTkWindow.paintEvent(self, canvas)
if self.hasFocus():
color = TTkCfg.theme.windowBorderColorFocus
else:
color = TTkCfg.theme.windowBorderColor
self._canvas.drawGrid(
canvas.drawGrid(
pos=(0,2),size=(26,self._height-2),
hlines=(10,15), vlines=(),
color=color, grid=6)
gg = TTkCfg.theme.grid[6]
self._canvas.drawChar(pos=(0,2), char=gg[0x08], color=color)
self._canvas.drawChar(pos=(25,2), char=gg[0x02], color=color)
self._canvas.drawChar(pos=(25,self._height-1), char=gg[0x0E], color=color)
self._canvas.drawBoxTitle(pos=(0,2) , size=(26,0), text=TTkString(" Basic colors "), align=TTkK.CENTER_ALIGN, color=color, colorText=TTkCfg.theme.frameTitleColor)
self._canvas.drawBoxTitle(pos=(0,12), size=(26,0), text=TTkString(" Custom colors "), align=TTkK.CENTER_ALIGN, color=color, colorText=TTkCfg.theme.frameTitleColor)
self._canvas.drawBoxTitle(pos=(0,17), size=(26,0), text=TTkString(" Conrols "), align=TTkK.CENTER_ALIGN, color=color, colorText=TTkCfg.theme.frameTitleColor)
canvas.drawChar(pos=(0,2), char=gg[0x08], color=color)
canvas.drawChar(pos=(25,2), char=gg[0x02], color=color)
canvas.drawChar(pos=(25,self._height-1), char=gg[0x0E], color=color)
canvas.drawBoxTitle(pos=(0,2) , size=(26,0), text=TTkString(" Basic colors "), align=TTkK.CENTER_ALIGN, color=color, colorText=TTkCfg.theme.frameTitleColor)
canvas.drawBoxTitle(pos=(0,12), size=(26,0), text=TTkString(" Custom colors "), align=TTkK.CENTER_ALIGN, color=color, colorText=TTkCfg.theme.frameTitleColor)
canvas.drawBoxTitle(pos=(0,17), size=(26,0), text=TTkString(" Conrols "), align=TTkK.CENTER_ALIGN, color=color, colorText=TTkCfg.theme.frameTitleColor)
class TTkColorButtonPicker(_TTkColorButton):
__slots__ = ('_type', 'colorSelected')

4
TermTk/TTkWidgets/TTkPickers/textpicker.py

@ -47,9 +47,9 @@ from TermTk.TTkWidgets.TTkModelView.filetreewidgetitem import TTkFileTreeWidgetI
from TermTk.TTkWidgets.TTkPickers.colorpicker import TTkColorButtonPicker
class _superSimpleHorizontalLine(TTkWidget):
def paintEvent(self):
def paintEvent(self, canvas):
w,h = self.size()
self._canvas.drawText(pos=(0,h-1), text=''+(''*(w-2))+'',color=TTkColor.fg("#888888"))
canvas.drawText(pos=(0,h-1), text=''+(''*(w-2))+'',color=TTkColor.fg("#888888"))
# List taken from:
# https://emojipicker.com

12
TermTk/TTkWidgets/about.py

@ -67,13 +67,13 @@ class TTkAbout(TTkWindow):
self.setTitle('About...')
self.resize(55,15)
def paintEvent(self):
def paintEvent(self, canvas):
c = [0xFF,0xFF,0xAA]
for y, line in enumerate(TTkAbout.pyTermTk):
self._canvas.drawText(pos=(9,3+y),text=line, color=TTkColor.fg(f'#{c[0]:02X}{c[1]:02X}{c[2]:02X}'))
canvas.drawText(pos=(9,3+y),text=line, color=TTkColor.fg(f'#{c[0]:02X}{c[1]:02X}{c[2]:02X}'))
c[2]-=0x11
self._canvas.drawText(pos=(20,9),text=f" Version: {TTkCfg.version}", color=TTkColor.fg('#AAAAFF'))
self._canvas.drawText(pos=(12,11),text="Powered By, Eugenio Parodi")
self._canvas.drawText(pos=(2,13),text="https://github.com/ceccopierangiolieugenio/pyTermTk", color=TTkColor.fg('#44FFFF'))
canvas.drawText(pos=(20,9),text=f" Version: {TTkCfg.version}", color=TTkColor.fg('#AAAAFF'))
canvas.drawText(pos=(12,11),text="Powered By, Eugenio Parodi")
canvas.drawText(pos=(2,13),text="https://github.com/ceccopierangiolieugenio/pyTermTk", color=TTkColor.fg('#44FFFF'))
TTkWindow.paintEvent(self)
TTkWindow.paintEvent(self, canvas)

3
TermTk/TTkWidgets/button.py

@ -253,7 +253,7 @@ class TTkButton(TTkWidget):
self.update()
return super().mouseMoveEvent(evt)
def paintEvent(self):
def paintEvent(self, canvas):
if not self.isEnabled():
borderColor = self._borderColorDisabled
textColor = self._textColorDisabled
@ -287,7 +287,6 @@ class TTkButton(TTkWidget):
borderColor = self._borderColor
w,h = self.size()
canvas = self.getCanvas()
# Draw the border and bgcolor
if not self._border or (self._border and ( h==1 or ( h>1 and len(self._text)>h-2 and len(self._text[0])!=0 ))):

8
TermTk/TTkWidgets/checkbox.py

@ -168,7 +168,7 @@ class TTkCheckbox(TTkWidget):
self._checkStatus = state
self.update()
def paintEvent(self):
def paintEvent(self, canvas):
if not self.isEnabled():
textColor = TTkCfg.theme.checkboxTextColor
borderColor = TTkCfg.theme.textColorDisabled
@ -181,13 +181,13 @@ class TTkCheckbox(TTkWidget):
borderColor = TTkCfg.theme.checkboxBorderColor
textColor = TTkCfg.theme.checkboxTextColor
xColor = TTkCfg.theme.checkboxContentColor
self._canvas.drawText(pos=(0,0), color=borderColor ,text="[ ]")
self._canvas.drawText(pos=(3,0), color=textColor ,text=self._text)
canvas.drawText(pos=(0,0), color=borderColor ,text="[ ]")
canvas.drawText(pos=(3,0), color=textColor ,text=self._text)
text = {
TTkK.Checked : "X",
TTkK.Unchecked : " ",
TTkK.PartiallyChecked: "/"}.get(self._checkStatus, " ")
self._canvas.drawText(pos=(1,0), color=xColor ,text=text)
canvas.drawText(pos=(1,0), color=xColor ,text=text)
def _pressEvent(self):
self._checkStatus = {

10
TermTk/TTkWidgets/combobox.py

@ -152,7 +152,7 @@ class TTkComboBox(TTkWidget):
w,h = self.size()
self._lineEdit.setGeometry(1,0,w-4,h)
def paintEvent(self):
def paintEvent(self, canvas):
if not self.isEnabled():
borderColor = TTkCfg.theme.comboboxBorderColorDisabled
color = TTkCfg.theme.comboboxContentColorDisabled
@ -168,12 +168,12 @@ class TTkComboBox(TTkWidget):
text = self._list[self._id]
w = self.width()
self._canvas.drawTTkString(pos=(1,0), text=TTkString(text), width=w-3, alignment=self._textAlign, color=color)
self._canvas.drawText(pos=(0,0), text="[", color=borderColor)
canvas.drawTTkString(pos=(1,0), text=TTkString(text), width=w-3, alignment=self._textAlign, color=color)
canvas.drawText(pos=(0,0), text="[", color=borderColor)
if self._editable:
self._canvas.drawText(pos=(w-3,0), text="[^]", color=borderColor)
canvas.drawText(pos=(w-3,0), text="[^]", color=borderColor)
else:
self._canvas.drawText(pos=(w-2,0), text="^]", color=borderColor)
canvas.drawText(pos=(w-2,0), text="^]", color=borderColor)
def currentText(self):
'''currentText'''

8
TermTk/TTkWidgets/frame.py

@ -107,11 +107,11 @@ class TTkFrame(TTkWidget):
self._borderColor = color
self.update()
def paintEvent(self):
def paintEvent(self, canvas):
if self._border:
self._canvas.drawBox(pos=(0,0),size=(self._width,self._height), color=self._borderColor)
canvas.drawBox(pos=(0,0),size=(self._width,self._height), color=self._borderColor)
if len(self._title) != 0:
self._canvas.drawBoxTitle(
canvas.drawBoxTitle(
pos=(0,0),
size=(self._width,self._height),
text=self._title,
@ -119,4 +119,4 @@ class TTkFrame(TTkWidget):
color=self._borderColor,
colorText=self._titleColor)
elif self._menubarTop:
self._canvas.drawMenuBarBg(pos=(0,0),size=self.width(),color=self._borderColor)
canvas.drawMenuBarBg(pos=(0,0),size=self.width(),color=self._borderColor)

10
TermTk/TTkWidgets/graph.py

@ -56,7 +56,7 @@ class TTkGraph(TTkWidget):
self._data.append(values)
self.update()
def paintEvent(self):
def paintEvent(self, canvas):
if not self._data: return
w,h = self.size()
x=0
@ -79,11 +79,11 @@ class TTkGraph(TTkWidget):
v1 = data[i]
if i%2==0:
if self._direction == TTkK.RIGHT:
self._canvas.drawHChart(pos=(x+i//2,y),values=(v2,v1), zoom=zoom, color=self._color.modParam(val=-y))
canvas.drawHChart(pos=(x+i//2,y),values=(v2,v1), zoom=zoom, color=self._color.modParam(val=-y))
else:
self._canvas.drawHChart(pos=(w-(x+i//2),y),values=(v1,v2), zoom=zoom, color=self._color.modParam(val=-y))
canvas.drawHChart(pos=(w-(x+i//2),y),values=(v1,v2), zoom=zoom, color=self._color.modParam(val=-y))
if i%2==1:
if self._direction == TTkK.RIGHT:
self._canvas.drawHChart(pos=(x+i//2+1,y),values=(v1,v1), zoom=zoom, color=self._color.modParam(val=-y))
canvas.drawHChart(pos=(x+i//2+1,y),values=(v1,v1), zoom=zoom, color=self._color.modParam(val=-y))
else:
self._canvas.drawHChart(pos=(w-(x+i//2+1),y),values=(v1,v1), zoom=zoom, color=self._color.modParam(val=-y))
canvas.drawHChart(pos=(w-(x+i//2+1),y),values=(v1,v1), zoom=zoom, color=self._color.modParam(val=-y))

8
TermTk/TTkWidgets/image.py

@ -129,25 +129,25 @@ class TTkImage(TTkWidget):
h,s,l = TTkColor.rgb2hsl(pixel)
row[i] = TTkColor.hsl2rgb(((h+deg)%360,s,l))
def paintEvent(self):
def paintEvent(self, canvas):
img = self._data
if self._rasterType == TTkImage.FULLBLOCK:
for y in range(0, len(img)):
for x in range(0, len(img[y])):
c1 = img[y][x]
color = TTkColor.fg(f'#{c1[0]:02X}{c1[1]:02X}{c1[2]:02X}')
self._canvas.drawChar(pos=(x,y), char='', color=color)
canvas.drawChar(pos=(x,y), char='', color=color)
elif self._rasterType == TTkImage.HALFBLOCK:
for y in range(0, len(img)&(~1), 2):
for x in range(0, len(img[y])):
c1, c2 = img[y][x] ,img[y+1][x]
color = ( TTkColor.fg(f'#{c1[0]:02X}{c1[1]:02X}{c1[2]:02X}') +
TTkColor.bg(f'#{c2[0]:02X}{c2[1]:02X}{c2[2]:02X}') )
self._canvas.drawChar(pos=(x,y//2), char='', color=color)
canvas.drawChar(pos=(x,y//2), char='', color=color)
elif self._rasterType == TTkImage.QUADBLOCK:
for y in range(0, len(img)&(~1), 2):
for x in range(0, min(len(img[y])&(~1),len(img[y+1])&(~1)), 2):
self._canvas.drawText(
canvas.drawText(
pos=(x//2,y//2),
text=self._reduceQuad(
img[y][x] , img[y][x+1] ,

6
TermTk/TTkWidgets/label.py

@ -78,12 +78,12 @@ class TTkLabel(TTkWidget):
self._text = TTkString(text).split('\n')
self._textUpdated()
def paintEvent(self):
def paintEvent(self, canvas):
forceColor = self.color()!=TTkColor.RST
w = self.width()
for y,text in enumerate(self._text):
self._canvas.drawText(pos=(0,y), text=' '*w, color=self.color(), forceColor=forceColor)
self._canvas.drawText(pos=(0,y), text=text, width=w, alignment=self._alignment, color=self.color(), forceColor=forceColor)
canvas.drawText(pos=(0,y), text=' '*w, color=self.color(), forceColor=forceColor)
canvas.drawText(pos=(0,y), text=text, width=w, alignment=self._alignment, color=self.color(), forceColor=forceColor)
def _textUpdated(self):
w, h = self.size()

4
TermTk/TTkWidgets/lineedit.py

@ -102,7 +102,7 @@ class TTkLineEdit(TTkWidget):
TTkHelper.showCursor(TTkK.Cursor_Blinking_Bar)
self.update()
def paintEvent(self):
def paintEvent(self, canvas):
if not self.isEnabled():
color = TTkCfg.theme.textColorDisabled
selectColor = TTkCfg.theme.textColorDisabled
@ -121,7 +121,7 @@ class TTkLineEdit(TTkWidget):
if self._selectionFrom < self._selectionTo:
text = text.setColor(color=selectColor, posFrom=self._selectionFrom, posTo=self._selectionTo)
text = text.substring(self._offset)
self._canvas.drawText(pos=(0,0), text=text, color=color, width=w)
canvas.drawText(pos=(0,0), text=text, color=color, width=w)
def mousePressEvent(self, evt):
txtPos = self._text.tabCharPos(evt.x+self._offset)

8
TermTk/TTkWidgets/menubar.py

@ -59,8 +59,8 @@ class _TTkMenuSpacer(TTkAbstractListItem):
TTkAbstractListItem.__init__(self, *args, **kwargs)
self.resize(1,1)
def paintEvent(self):
self._canvas.drawText(pos=(0,0), text="-"*self.width())
def paintEvent(self, canvas):
canvas.drawText(pos=(0,0), text="-"*self.width())
class TTkMenuButton(TTkAbstractListItem):
'''TTkMenuButton'''
@ -149,7 +149,7 @@ class TTkMenuButton(TTkAbstractListItem):
listw.viewport().setFocus()
self.update()
def paintEvent(self):
def paintEvent(self, canvas):
if self._pressed:
borderColor = self._borderColor
textColor = TTkCfg.theme.menuButtonColorClicked
@ -158,7 +158,7 @@ class TTkMenuButton(TTkAbstractListItem):
borderColor = self._borderColor
textColor = self._color
scColor = TTkCfg.theme.menuButtonShortcutColor
self._canvas.drawMenuBarButton(
canvas.drawMenuBarButton(
pos=(0,0),text=self.text(),
width=self.width(),
shortcuts=self._shortcut,

3
TermTk/TTkWidgets/progressbar.py

@ -152,13 +152,12 @@ class TTkProgressBar(TTkWidget):
'''setTextWidth'''
self._textWidth = max(0, new_width)
def paintEvent(self):
def paintEvent(self, canvas):
width, height = self.size()
laf = self.lookAndFeel()
text = laf.text(self._value, self._value_min, self._value_max)
color_bar = laf.color(self._value, self._value_min, self._value_max)
blocks = TTkCfg.theme.progressbarBlocks
canvas = self._canvas
show_text = laf.showText()
if show_text:

10
TermTk/TTkWidgets/radiobutton.py

@ -143,7 +143,7 @@ class TTkRadioButton(TTkWidget):
self._checkEvent()
self.update()
def paintEvent(self):
def paintEvent(self, canvas):
if self.hasFocus():
borderColor = TTkCfg.theme.radioButtonBorderColorFocus
textColor = TTkCfg.theme.radioButtonTextColorFocus
@ -152,12 +152,12 @@ class TTkRadioButton(TTkWidget):
borderColor = TTkCfg.theme.radioButtonBorderColor
textColor = TTkCfg.theme.radioButtonTextColor
xColor = TTkCfg.theme.radioButtonContentColor
self._canvas.drawText(pos=(0,0), color=borderColor ,text="( )")
self._canvas.drawText(pos=(3,0), color=textColor ,text=self._text)
canvas.drawText(pos=(0,0), color=borderColor ,text="( )")
canvas.drawText(pos=(3,0), color=textColor ,text=self._text)
if self._checked:
self._canvas.drawText(pos=(1,0), color=xColor ,text="X")
canvas.drawText(pos=(1,0), color=xColor ,text="X")
else:
self._canvas.drawText(pos=(1,0), color=xColor ,text=" ")
canvas.drawText(pos=(1,0), color=xColor ,text=" ")
def _checkEvent(self):
# Uncheck the radio already checked;

4
TermTk/TTkWidgets/scrollbar.py

@ -90,7 +90,7 @@ class TTkScrollBar(TTkWidget):
|---| pageStep, asciiStep (step size in ascii)
'''
def paintEvent(self):
def paintEvent(self, canvas):
if self._orientation == TTkK.VERTICAL:
size=self._height
else:
@ -113,7 +113,7 @@ class TTkScrollBar(TTkWidget):
# convert i screen coordinates
aa = asciiDrawingSize * a // (self._maximum - self._minimum)
bb = aa + asciiStep
self._canvas.drawScroll(pos=(0,0),size=size,slider=(aa+1,bb+1),orientation=self._orientation, color=color)
canvas.drawScroll(pos=(0,0),size=size,slider=(aa+1,bb+1),orientation=self._orientation, color=color)
# Update the screen position coordinates
self._screenPgDown = ( 1 , aa+1 )
self._screenScroller = ( aa+1 , bb+1)

6
TermTk/TTkWidgets/spinbox.py

@ -142,14 +142,14 @@ class TTkSpinBox(TTkWidget):
self._lineEdit.setEnabled(enabled)
return super().setEnabled(enabled)
def paintEvent(self):
def paintEvent(self, canvas):
if not self.isEnabled():
textColor = TTkCfg.theme.textColorDisabled
else:
textColor = TTkColor.RST
w = self.width()
self._canvas.drawChar(pos=(w-2,0),char="", color=textColor)
self._canvas.drawChar(pos=(w-1,0),char="", color=textColor)
canvas.drawChar(pos=(w-2,0),char="", color=textColor)
canvas.drawChar(pos=(w-1,0),char="", color=textColor)
def focusInEvent(self):
self._lineEdit._color = TTkCfg.theme.lineEditTextColorFocus

8
TermTk/TTkWidgets/splitter.py

@ -281,16 +281,16 @@ class TTkSplitter(TTkFrame):
self._processRefSizes(w-b,h-b)
self._updateGeometries(resized=True)
def paintEvent(self):
def paintEvent(self, canvas):
off = 1 if self.border() else 0
TTkFrame.paintEvent(self)
TTkFrame.paintEvent(self, canvas)
w,h = self.size()
if self._orientation == TTkK.HORIZONTAL:
for i in self._separators[:-1]:
self._canvas.drawVLine(pos=(i+off,0), size=h)
canvas.drawVLine(pos=(i+off,0), size=h)
else:
for i in self._separators[:-1]:
self._canvas.drawHLine(pos=(0,i+off), size=w)
canvas.drawHLine(pos=(0,i+off), size=w)
def mousePressEvent(self, evt):
self._separatorSelected = None

52
TermTk/TTkWidgets/tabwidget.py

@ -122,19 +122,19 @@ class TTkTabButton(TTkButton):
return True
return super().mouseDragEvent(evt)
def paintEvent(self):
self._canvas.drawTabButton(
def paintEvent(self, canvas):
canvas.drawTabButton(
pos=(0,0), size=self.size(),
small=(not self._border),
sideEnd=self._sideEnd, status=self._tabStatus,
color=self._borderColor )
self._canvas.drawText(pos=(1,1 if self._border else 0), text=self.text(), color=self.color())
canvas.drawText(pos=(1,1 if self._border else 0), text=self.text(), color=self.color())
class _TTkTabMenuButton(TTkMenuButton):
def __init__(self, *args, **kwargs):
TTkMenuButton.__init__(self, *args, **kwargs)
def paintEvent(self):
def paintEvent(self, canvas):
if self._pressed:
borderColor = self._borderColor
textColor = TTkCfg.theme.menuButtonColorClicked
@ -144,7 +144,7 @@ class _TTkTabMenuButton(TTkMenuButton):
textColor = self._color
# scColor = TTkCfg.theme.menuButtonShortcutColor
text = TTkString('[',borderColor) + TTkString(self.text(),textColor) + TTkString(']',borderColor)
self._canvas.drawText(pos=(0,0),text=text)
canvas.drawText(pos=(0,0),text=text)
class _TTkTabScrollerButton(TTkButton):
__slots__ = ('_side', '_sideEnd')
@ -186,30 +186,30 @@ class _TTkTabScrollerButton(TTkButton):
self.clicked.emit()
return True
def paintEvent(self):
def paintEvent(self, canvas):
tt = TTkCfg.theme.tab
if self._border:
lse = tt[11] if self._sideEnd & TTkK.LEFT else tt[13]
rse = tt[15] if self._sideEnd & TTkK.RIGHT else tt[13]
if self._side == TTkK.LEFT:
self._canvas.drawText(pos=(0,0), color=self._borderColor, text=tt[7] +tt[1])
self._canvas.drawText(pos=(0,1), color=self._borderColor, text=tt[9] +tt[31])
self._canvas.drawText(pos=(0,2), color=self._borderColor, text=lse +tt[12])
self._canvas.drawChar(pos=(1,1), char=tt[31], color=TTkCfg.theme.tabOffsetColor)
canvas.drawText(pos=(0,0), color=self._borderColor, text=tt[7] +tt[1])
canvas.drawText(pos=(0,1), color=self._borderColor, text=tt[9] +tt[31])
canvas.drawText(pos=(0,2), color=self._borderColor, text=lse +tt[12])
canvas.drawChar(pos=(1,1), char=tt[31], color=TTkCfg.theme.tabOffsetColor)
else:
self._canvas.drawText(pos=(0,0), color=self._borderColor, text=tt[1] +tt[8])
self._canvas.drawText(pos=(0,1), color=self._borderColor, text=tt[32]+tt[9])
self._canvas.drawText(pos=(0,2), color=self._borderColor, text=tt[12]+rse)
self._canvas.drawChar(pos=(0,1), char=tt[32], color=TTkCfg.theme.tabOffsetColor)
canvas.drawText(pos=(0,0), color=self._borderColor, text=tt[1] +tt[8])
canvas.drawText(pos=(0,1), color=self._borderColor, text=tt[32]+tt[9])
canvas.drawText(pos=(0,2), color=self._borderColor, text=tt[12]+rse)
canvas.drawChar(pos=(0,1), char=tt[32], color=TTkCfg.theme.tabOffsetColor)
else:
if self._side == TTkK.LEFT:
self._canvas.drawText(pos=(0,0), color=self._borderColor, text=tt[9] +tt[31])
self._canvas.drawText(pos=(0,1), color=self._borderColor, text=tt[23]+tt[1])
self._canvas.drawChar(pos=(1,0), char=tt[31], color=TTkCfg.theme.tabOffsetColor)
canvas.drawText(pos=(0,0), color=self._borderColor, text=tt[9] +tt[31])
canvas.drawText(pos=(0,1), color=self._borderColor, text=tt[23]+tt[1])
canvas.drawChar(pos=(1,0), char=tt[31], color=TTkCfg.theme.tabOffsetColor)
else:
self._canvas.drawText(pos=(0,0), color=self._borderColor, text=tt[32]+tt[9])
self._canvas.drawText(pos=(0,1), color=self._borderColor, text=tt[1] +tt[24])
self._canvas.drawChar(pos=(0,0), char=tt[32], color=TTkCfg.theme.tabOffsetColor)
canvas.drawText(pos=(0,0), color=self._borderColor, text=tt[32]+tt[9])
canvas.drawText(pos=(0,1), color=self._borderColor, text=tt[1] +tt[24])
canvas.drawChar(pos=(0,0), char=tt[32], color=TTkCfg.theme.tabOffsetColor)
'''
_curentIndex = 2
_tabButtons = [0],[1], [2], [3], [4],
@ -447,17 +447,17 @@ class TTkTabBar(TTkWidget):
self.setBorderColor(borderColor)
def paintEvent(self):
def paintEvent(self, canvas):
w = self.width()
tt = TTkCfg.theme.tab
if self._small:
lse = tt[23] if self._sideEnd & TTkK.LEFT else tt[19]
rse = tt[24] if self._sideEnd & TTkK.RIGHT else tt[19]
self._canvas.drawText(pos=(0,1),text=lse + tt[19]*(w-2) + rse, color=self._borderColor)
canvas.drawText(pos=(0,1),text=lse + tt[19]*(w-2) + rse, color=self._borderColor)
else:
lse = tt[11] if self._sideEnd & TTkK.LEFT else tt[12]
rse = tt[15] if self._sideEnd & TTkK.RIGHT else tt[12]
self._canvas.drawText(pos=(0,2),text=lse + tt[12]*(w-2) + rse, color=self._borderColor)
canvas.drawText(pos=(0,2),text=lse + tt[12]*(w-2) + rse, color=self._borderColor)
'''
@ -646,9 +646,9 @@ class TTkTabWidget(TTkFrame):
def resizeEvent(self, w, h):
self._tabBarTopLayout.setGeometry(0,0,w,self._padt)
def paintEvent(self):
def paintEvent(self, canvas):
tt = TTkCfg.theme.tab
if self.border():
self._canvas.drawBox(pos=(0,2),size=(self.width(),self.height()-2), color=self._borderColor, grid=9)
canvas.drawBox(pos=(0,2),size=(self.width(),self.height()-2), color=self._borderColor, grid=9)
else:
self._canvas.drawText(pos=(0,1),text=tt[36] + tt[19]*(self.width()-2) + tt[35], color=self._borderColor)
canvas.drawText(pos=(0,1),text=tt[36] + tt[19]*(self.width()-2) + tt[35], color=self._borderColor)

16
TermTk/TTkWidgets/texedit.py

@ -66,7 +66,7 @@ class _TTkTextEditViewLineNumber(TTkAbstractScrollView):
def viewDisplayedSize(self) -> (int, int):
return self.size()
def paintEvent(self):
def paintEvent(self, canvas):
if not self._textWrap: return
_, oy = self.getViewOffsets()
w, h = self.size()
@ -78,13 +78,13 @@ class _TTkTextEditViewLineNumber(TTkAbstractScrollView):
else:
txt = f"{dt}"
color = TTkCfg.theme.textEditLineNumberColor
self._canvas.drawText(pos=(0,i), text=txt, width=w, color=color)
self._canvas.drawChar(pos=(w-1,i), char='', color=TTkCfg.theme.textEditLineNumberSeparatorColor)
canvas.drawText(pos=(0,i), text=txt, width=w, color=color)
canvas.drawChar(pos=(w-1,i), char='', color=TTkCfg.theme.textEditLineNumberSeparatorColor)
else:
color = TTkCfg.theme.textEditLineNumberColor
for y in range(h):
self._canvas.drawText(pos=(0,y), text=f"{y+oy}", width=w, color=color)
self._canvas.drawChar(pos=(w-1,y), char='', color=TTkCfg.theme.textEditLineNumberSeparatorColor)
canvas.drawText(pos=(0,y), text=f"{y+oy}", width=w, color=color)
canvas.drawChar(pos=(w-1,y), char='', color=TTkCfg.theme.textEditLineNumberSeparatorColor)
class TTkTextEditView(TTkAbstractScrollView):
'''TTkTextEditView'''
@ -560,7 +560,7 @@ class TTkTextEditView(TTkAbstractScrollView):
def focusOutEvent(self):
TTkHelper.hideCursor()
def paintEvent(self):
def paintEvent(self, canvas):
ox, oy = self.getViewOffsets()
if self.hasFocus():
selectColor = TTkCfg.theme.lineEditTextColorSelected
@ -574,10 +574,10 @@ class TTkTextEditView(TTkAbstractScrollView):
for y, l in enumerate(subLines):
t = outLines[l[0]-subLines[0][0]]
self._canvas.drawTTkString(pos=(-ox,y), text=t.substring(l[1][0],l[1][1]).tab2spaces(self._textWrap._tabSpaces))
canvas.drawTTkString(pos=(-ox,y), text=t.substring(l[1][0],l[1][1]).tab2spaces(self._textWrap._tabSpaces))
if self._lineWrapMode == TTkK.FixedWidth:
self._canvas.drawVLine(pos=(self._textWrap._wrapWidth,0), size=h, color=TTkCfg.theme.treeLineColor)
canvas.drawVLine(pos=(self._textWrap._wrapWidth,0), size=h, color=TTkCfg.theme.treeLineColor)
self._pushCursor()
class TTkTextEdit(TTkAbstractScrollArea):

8
TermTk/TTkWidgets/widget.py

@ -218,17 +218,17 @@ class TTkWidget(TMouseEvents,TKeyEvents, TDragEvents):
TTkLog.error("<TTkWidget>.removeWidget(...) is deprecated, use <TTkWidget>.layout().removeWidget(...)")
if self.layout(): self.layout().removeWidget(widget)
def paintEvent(self):
def paintEvent(self, canvas:TTkCanvas):
'''
Paint Event callback,
this need to be overridden in the widget.
'''
pass
def getPixmap(self):
self.paintEvent()
def getPixmap(self) -> TTkCanvas:
self.paintEvent(self._canvas)
self.paintChildCanvas()
return self.getCanvas().copy()
return self._canvas.copy()
@staticmethod
def _paintChildCanvas(canvas, item, geometry, offset):

6
TermTk/TTkWidgets/window.py

@ -141,13 +141,13 @@ class TTkWindow(TTkResizableFrame):
self._winTopLayout.setGeometry(1,1,w-2,1)
super().resizeEvent(w,h)
def paintEvent(self):
def paintEvent(self, canvas):
if self.hasFocus():
color = TTkCfg.theme.windowBorderColorFocus
else:
color = TTkCfg.theme.windowBorderColor
self._canvas.drawText(pos=(2,1),text=self._title)
self._canvas.drawGrid(
canvas.drawText(pos=(2,1),text=self._title)
canvas.drawGrid(
color=color,
pos=(0,0), size=self.size(),
hlines=[2], grid=2)

88
tests/timeit/14.function.01.params.py

@ -0,0 +1,88 @@
#!/usr/bin/env python3
# MIT License
#
# Copyright (c) 2023 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 timeit
import random
sys.path.append(os.path.join(sys.path[0],'../..'))
import TermTk as ttk
class Pippo():
__slots__ = ('_pa')
def __init__(self, pa=1234):
self._pa=pa
def getPa(self):
return self._pa
def fa(self):
return self._pa*self._pa
def faa(self):
return self.getPa()*self.getPa()
def fb(self, a):
return a*a
def fc(self, a, b):
pass
pippo = Pippo(4321)
def fa():
pass
def fb(a):
pass
def fc(a, b):
pass
def test1():
return pippo.fa()
def test2():
return pippo.faa()
def test3():
return pippo.fb(pippo.getPa())
def test4():
return pippo.fb(pippo._pa)
def test5(): return 5
def test6(): return 6
def test7(): return 7
def test8(): return 8
def test9(): return 9
loop = 100000
a={}
iii = 1
while (testName := f'test{iii}') and (testName in globals()):
result = timeit.timeit(f'{testName}(*a)', globals=globals(), number=loop)
# print(f"test{iii}) fps {loop / result :.3f} - s {result / loop:.10f} - {result / loop} {globals()[testName](*a)}")
print(f"test{iii:02}) | {result / loop:.10f} sec. | {loop / result : 15.3f} Fps ╞╡-> {globals()[testName](*a)}")
iii+=1

12
ttkDesigner/app/about.py

@ -47,12 +47,12 @@ class About(TTkAbout):
self.setTitle('[PierCecco Cecco] Eugenio Parodi proudly presents...')
self.resize(56,15)
def paintEvent(self):
def paintEvent(self, canvas):
c = [0xFF,0xFF,0xFF]
for y, line in enumerate(About.designerTxt):
self._canvas.drawText(pos=(13,3+y),text=line)
self._canvas.drawText(pos=(20, 9),text=f" Version: {TTkDesignerCfg.version}", color=TTkColor.fg('#AAAAFF'))
self._canvas.drawText(pos=(14,11),text=f"Powered By, pyTermTk")
self._canvas.drawText(pos=( 2,13),text=f"https://github.com/ceccopierangiolieugenio/pyTermTk", color=TTkColor.fg('#44FFFF'))
canvas.drawText(pos=(13,3+y),text=line)
canvas.drawText(pos=(20, 9),text=f" Version: {TTkDesignerCfg.version}", color=TTkColor.fg('#AAAAFF'))
canvas.drawText(pos=(14,11),text=f"Powered By, pyTermTk")
canvas.drawText(pos=( 2,13),text=f"https://github.com/ceccopierangiolieugenio/pyTermTk", color=TTkColor.fg('#44FFFF'))
TTkWindow.paintEvent(self)
TTkWindow.paintEvent(self, canvas)

4
ttkDesigner/app/notepad.py

@ -23,9 +23,9 @@
import TermTk as ttk
class superSimpleHorizontalLine(ttk.TTkWidget):
def paintEvent(self):
def paintEvent(self, canvas):
w,h = self.size()
self._canvas.drawText(pos=(0,h-1), text=''+(''*(w-2))+'',color=ttk.TTkColor.fg("#888888"))
canvas.drawText(pos=(0,h-1), text=''+(''*(w-2))+'',color=ttk.TTkColor.fg("#888888"))
class NotePad(ttk.TTkGridLayout):
def __init__(self, *args, **kwargs):

16
ttkDesigner/app/superobj/supercontrol.py

@ -97,17 +97,17 @@ class SuperControlWidget(ttk.TTkResizableFrame):
self._alignWidToPos(bkPos)
return True
def paintEvent(self):
def paintEvent(self, canvas):
w,h = self.size()
self._wid.paintEvent()
self._wid.paintEvent(canvas)
self._wid.paintChildCanvas()
self._canvas.paintCanvas(
canvas.paintCanvas(
self._wid.getCanvas(),
( 1, 1, w, h), # geometry
( 0, 0, w, h), # slice
( 0, 0, w, h)) # bound
self._canvas.drawBox(pos=(0,0),size=self.size())
self._canvas.drawChar(pos=( 0, 0), char='')
self._canvas.drawChar(pos=(w-1, 0), char='')
self._canvas.drawChar(pos=( 0, h-1), char='')
self._canvas.drawChar(pos=(w-1, h-1), char='')
canvas.drawBox(pos=(0,0),size=self.size())
canvas.drawChar(pos=( 0, 0), char='')
canvas.drawChar(pos=(w-1, 0), char='')
canvas.drawChar(pos=( 0, h-1), char='')
canvas.drawChar(pos=(w-1, h-1), char='')

8
ttkDesigner/app/superobj/superlayout.py

@ -110,7 +110,7 @@ class SuperLayout(ttk.TTkWidget):
data = self
canvas = self.getCanvas()
canvas.clean()
self.paintEvent()
self.paintEvent(canvas)
ttk.TTkWidget._paintChildCanvas(canvas, self.layout(), self.layout().geometry(), self.layout().offset())
drag.setHotSpot(evt.x, evt.y)
drag.setPixmap(canvas)
@ -213,11 +213,11 @@ class SuperLayout(ttk.TTkWidget):
self._lay.setGeometry(x,y,w,h)
return super().resizeEvent(w, h)
def paintEvent(self):
def paintEvent(self, canvas):
if self._selectable:
if so.SuperWidget._showLayout:
w,h = self.size()
self._canvas.drawBox(pos=(0,0),size=(w,h), color=ttk.TTkColor.fg('#88DD88', modifier=ttk.TTkColorGradient(increment=+1)))
canvas.drawBox(pos=(0,0),size=(w,h), color=ttk.TTkColor.fg('#88DD88', modifier=ttk.TTkColorGradient(increment=+1)))
else:
w,h = self.size()
self._canvas.drawBox(pos=(0,0),size=(w,h), color=ttk.TTkColor.fg('#223322', modifier=ttk.TTkColorGradient(increment=+1)))
canvas.drawBox(pos=(0,0),size=(w,h), color=ttk.TTkColor.fg('#223322', modifier=ttk.TTkColorGradient(increment=+1)))

24
ttkDesigner/app/superobj/superlayoutgrid.py

@ -76,18 +76,17 @@ class _SuperExpandButton(ttk.TTkButton):
ttk.TTkHelper._rootWidget._input.inputEvent.disconnect(self._processInput)
return super().hide()
def paintEvent(self):
canvas = self.getCanvas()
def paintEvent(self, canvas):
# '▶','◀','▼','▲'
w,h = self.size()
if w==1:
self.getCanvas().drawText(text='', pos=(0,0), color=ttk.TTkColor.fg("FFFF00"))
self.getCanvas().drawText(text='', pos=(0,h-1), color=ttk.TTkColor.fg("FFFF00"))
canvas.drawText(text='', pos=(0,0), color=ttk.TTkColor.fg("FFFF00"))
canvas.drawText(text='', pos=(0,h-1), color=ttk.TTkColor.fg("FFFF00"))
for yy in range(1,h-1):
self.getCanvas().drawText(text='', pos=(0, yy), color=ttk.TTkColor.fg("FFFF00"))
canvas.drawText(text='', pos=(0, yy), color=ttk.TTkColor.fg("FFFF00"))
elif h==1:
txt = ''+''*(w-2)+''
self.getCanvas().drawText(text=txt, pos=(0,0), width=w, color=ttk.TTkColor.fg("FFFF00"))
canvas.drawText(text=txt, pos=(0,0), width=w, color=ttk.TTkColor.fg("FFFF00"))
ch = {
ttk.TTkK.TOP : '',
@ -385,19 +384,20 @@ class SuperLayoutGrid(SuperLayout):
def paintChildCanvas(self):
super().paintChildCanvas()
canvas = self.getCanvas()
def _lineDraw(x,y,w,h,color):
if h==1 and w==1:
self.getCanvas().drawText(text='', pos=(x,y), color=color)
canvas.drawText(text='', pos=(x,y), color=color)
elif w==1:
self.getCanvas().drawText(text='', pos=(x,y), color=color)
self.getCanvas().drawText(text='', pos=(x,y+h-1), color=color)
canvas.drawText(text='', pos=(x,y), color=color)
canvas.drawText(text='', pos=(x,y+h-1), color=color)
for yy in range(y+1,y+h-1):
self.getCanvas().drawText(text='', pos=(x, yy), color=color)
canvas.drawText(text='', pos=(x, yy), color=color)
elif h==1:
txt = ''+''*(w-2)+''
self.getCanvas().drawText(text=txt, pos=(x,y), width=w, color=color)
canvas.drawText(text=txt, pos=(x,y), width=w, color=color)
else:
self.getCanvas().drawBox(pos=(x,y), size=(w,h), color=color)
canvas.drawBox(pos=(x,y), size=(w,h), color=color)
if self._dragOver is not None:
_lineDraw(*self._dragOver, ttk.TTkColor.fg("FFFF00"))

23
ttkDesigner/app/superobj/superwidget.py

@ -116,9 +116,12 @@ class SuperWidget(ttk.TTkWidget):
@staticmethod
def swFromWidget(wid, *args, **kwargs):
swClass = {
ttk.TTkTextEdit: so.SuperWidgetTextEdit,
ttk.TTkRadioButton: so.SuperWidgetRadioButton,
}.get(type(wid),so.SuperWidget)
ttk.TTkTextEdit: so.SuperWidgetTextEdit,
ttk.TTkRadioButton: so.SuperWidgetRadioButton,
ttk.TTkFrame: so.SuperWidgetFrame,
ttk.TTkResizableFrame: so.SuperWidgetFrame,
ttk.TTkWindow: so.SuperWidgetFrame,
}.get(type(wid), so.SuperWidget)
return swClass._swFromWidget(wid=wid, *args, **kwargs)
@staticmethod
@ -252,20 +255,20 @@ class SuperWidget(ttk.TTkWidget):
self.superResized.emit(w,h)
return super().resizeEvent(w, h)
def paintEvent(self):
def paintEvent(self, canvas):
w,h = self.size()
if SuperWidget._showLayout:
t,b,l,r = self._wid.getPadding()
for y in range(h):
self._canvas.drawText(pos=(0,y),text='',width=w,color=self._layoutColor)
canvas.drawText(pos=(0,y),text='',width=w,color=self._layoutColor)
for y in range(t,h-b):
self._canvas.drawText(pos=(l,y),text='',width=w-r-l,color=self._layoutPadColor)
# self._canvas.fill(color=self._layoutColor)
# self._canvas.fill(pos=(l,t), size=(w-r-l,h-b-t), color=self._layoutPadColor)
canvas.drawText(pos=(l,y),text='',width=w-r-l,color=self._layoutPadColor)
# canvas.fill(color=self._layoutColor)
# canvas.fill(pos=(l,t), size=(w-r-l,h-b-t), color=self._layoutPadColor)
else:
self._wid.getCanvas().updateSize()
self._wid.paintEvent()
self._canvas.paintCanvas(
self._wid.paintEvent(canvas)
canvas.paintCanvas(
self._wid.getCanvas(),
( 0, 0, w, h), # geometry
( 0, 0, w, h), # slice

6
ttkDesigner/app/widgetbox.py

@ -111,13 +111,13 @@ class DragDesignItem(ttk.TTkWidget):
drag.exec()
return True
def paintEvent(self):
def paintEvent(self, canvas):
if self.isEnabled():
color=ttk.TTkColor.RST
else:
color=ttk.TTkColor.fg('#AAAAAA')
self._canvas.drawText(text=self._itemName, pos=(1,1), color=color)
self._canvas.drawBox(pos=(0,0),size=self.size(), color=color)
canvas.drawText(text=self._itemName, pos=(1,1), color=color)
canvas.drawBox(pos=(0,0),size=self.size(), color=color)
class WidgetBox(ttk.TTkVBoxLayout):
def __init__(self, designer, *args, **kwargs):

6
ttkDesigner/app/windoweditor.py

@ -101,10 +101,10 @@ class WindowEditorView(ttk.TTkAbstractScrollView):
def viewDisplayedSize(self):
return self.size()
def paintEvent(self):
def paintEvent(self, canvas):
w,h = self.size()
# self._canvas.fill(pos=(0,0),size=(w,h), char="╳", color=ttk.TTkColor.fg("#444400")+ttk.TTkColor.bg("#000044"))
self._canvas.fill(pos=(0,0),size=(w,h), char="#", color=ttk.TTkColor.fg("#220044")+ttk.TTkColor.bg("#000022"))
# canvas.fill(pos=(0,0),size=(w,h), char="╳", color=ttk.TTkColor.fg("#444400")+ttk.TTkColor.bg("#000044"))
canvas.fill(pos=(0,0),size=(w,h), char="#", color=ttk.TTkColor.fg("#220044")+ttk.TTkColor.bg("#000022"))
class WindowEditor(ttk.TTkAbstractScrollArea):
__slots__ = ('getTTk', 'dumpDict', 'importSuperWidget',

Loading…
Cancel
Save