Browse Source

chore(Typing): improved typings in the base widget class

pull/426/head
Parodi, Eugenio 🌶 9 months ago
parent
commit
9da8d3c1cf
  1. 6
      libs/pyTermTk/TermTk/TTkCore/helper.py
  2. 26
      libs/pyTermTk/TermTk/TTkWidgets/widget.py

6
libs/pyTermTk/TermTk/TTkCore/helper.py

@ -536,7 +536,11 @@ class TTkHelper:
drag.pixmap().raiseWidget() drag.pixmap().raiseWidget()
@staticmethod @staticmethod
def dndGetDrag() -> Optional["TTkDrag"]: def dndGetDnd() -> Optional[_DnD]:
return TTkHelper._dnd
@staticmethod
def dndGetDrag() -> Optional[TTkDrag]:
return TTkHelper._dnd.d if TTkHelper._dnd else None return TTkHelper._dnd.d if TTkHelper._dnd else None
@staticmethod @staticmethod

26
libs/pyTermTk/TermTk/TTkWidgets/widget.py

@ -466,22 +466,23 @@ class TTkWidget(TMouseEvents,TKeyEvents, TDragEvents):
return False return False
# Handle Drag and Drop Events # Handle Drag and Drop Events
if TTkHelper.isDnD(): if _dnd:=TTkHelper.dndGetDnd():
ret = False ret = False
dndw = _dnd.w
dndg = _dnd.d
if evt.evt == TTkK.Drag: if evt.evt == TTkK.Drag:
dndw = TTkHelper.dndWidget()
if dndw == self: if dndw == self:
self.dragMoveEvent(TTkHelper.dndGetDrag().getDragMoveEvent(evt)) self.dragMoveEvent(dndg.getDragMoveEvent(evt))
return True return True
else: else:
if ( self.dragEnterEvent(TTkHelper.dndGetDrag().getDragEnterEvent(evt)) or if ( self.dragEnterEvent(dndg.getDragEnterEvent(evt)) or
self.dragMoveEvent(TTkHelper.dndGetDrag().getDragMoveEvent(evt))): self.dragMoveEvent(dndg.getDragMoveEvent(evt))):
if dndw: if dndw:
ret = dndw.dragLeaveEvent(TTkHelper.dndGetDrag().getDragLeaveEvent(evt)) ret = dndw.dragLeaveEvent(dndg.getDragLeaveEvent(evt))
TTkHelper.dndEnter(self) TTkHelper.dndEnter(self)
return True return True
if evt.evt == TTkK.Release: if evt.evt == TTkK.Release:
if self.dropEvent(self._dropEventProxy(TTkHelper.dndGetDrag().getDropEvent(evt))): if self.dropEvent(self._dropEventProxy(dndg.getDropEvent(evt))):
return True return True
return ret return ret
@ -852,18 +853,9 @@ class TTkWidget(TMouseEvents,TKeyEvents, TDragEvents):
self.currentStyleChanged.emit(style) self.currentStyleChanged.emit(style)
self.update() self.update()
def setStyle(self, style=None) -> None: def setStyle(self, style:Dict[str,Dict]={}) -> None:
if not style: if not style:
style = self.classStyle.copy() style = self.classStyle.copy()
if 'default' not in style:
# find the closest subclass/parent holding the style
styleType = TTkWidget
for cc in type(self).__mro__:
if cc in style:
styleType = cc
break
# Filtering out the current object style
style = style[styleType]
defaultStyle = style['default'] defaultStyle = style['default']
# Use the default style to apply the missing fields of the other actions # Use the default style to apply the missing fields of the other actions
mergeStyle = {t:defaultStyle | style[t] for t in style} mergeStyle = {t:defaultStyle | style[t] for t in style}

Loading…
Cancel
Save