Browse Source

Included a quitEvent that can be used to implement custom cleaning procedure

pull/161/head
Eugenio Parodi 3 years ago
parent
commit
27b62fcda6
  1. 12
      TermTk/TTkCore/helper.py
  2. 4
      TermTk/TTkCore/timer_pyodide.py
  3. 9
      TermTk/TTkCore/timer_unix.py
  4. 23
      TermTk/TTkCore/ttk.py

12
TermTk/TTkCore/helper.py

@ -26,8 +26,13 @@ from TermTk.TTkCore.TTkTerm.colors import TTkTermColor
from TermTk.TTkCore.TTkTerm.term import TTkTerm
from TermTk.TTkCore.cfg import TTkCfg, TTkGlbl
from TermTk.TTkCore.constant import TTkK
from TermTk.TTkCore.signal import pyTTkSignal, pyTTkSlot
class TTkHelper:
'''TTkHelper
This is a collection of helper utilities to be used all around TermTk
'''
# TODO: Add Setter/Getter
_focusWidget = None
_rootCanvas = None
@ -97,10 +102,15 @@ class TTkHelper:
TTkHelper._rootWidget = widget
TTkHelper._rootCanvas.enableDoubleBuffer()
quitEvent = pyTTkSignal()
@staticmethod
@pyTTkSlot()
def quit():
'''Quit TermTk'''
TTkHelper.quitEvent.emit()
if TTkHelper._rootWidget:
TTkHelper._rootWidget.quit()
TTkHelper._rootWidget._quit()
@staticmethod
def getTerminalSize():

4
TermTk/TTkCore/timer_pyodide.py

@ -53,10 +53,6 @@ class TTkTimer():
rw._paintEvent.set()
TTkTimer._timers[tid].timeout.emit()
@staticmethod
def quitAll():
pass
@staticmethod
def pyodideQuit():
for timer in TTkTimer._timers:

9
TermTk/TTkCore/timer_unix.py

@ -23,9 +23,9 @@
import threading
from TermTk.TTkCore.signal import pyTTkSlot, pyTTkSignal
from TermTk.TTkCore.helper import TTkHelper
class TTkTimer(threading.Thread):
_timers = []
__slots__ = (
'timeout', '_delay',
'_timer', '_quit', '_start')
@ -36,12 +36,7 @@ class TTkTimer(threading.Thread):
self._start = threading.Event()
self._timer = threading.Event()
super().__init__()
TTkTimer._timers.append(self)
@staticmethod
def quitAll():
for timer in TTkTimer._timers:
timer.quit()
TTkHelper.quitEvent.connect(self.quit)
def quit(self):
self._quit.set()

23
TermTk/TTkCore/ttk.py

@ -289,11 +289,28 @@ class TTk(TTkWidget):
self._drawMutex.release()
TTkLog.info(f"Resize: w:{TTkGlbl.term_w}, h:{TTkGlbl.term_h}")
@pyTTkSlot()
def quit(self):
'''quit TermTk
.. warning::
Method Deprecated,
use :class:`~TermTk.TTkCore.helper.TTkHelper` -> :class:`~TermTk.TTkCore.helper.TTkHelper.quit` instead
i.e.
.. code:: python
buttonQuit = TTkButton(text="QUIT",border=True)
buttonQuit.clicked.connect(TTkHelper.quit)
'''
TTkHelper.quit()
@pyTTkSlot()
def _quit(self):
'''Tells the application to exit with a return code.'''
self._input.inputEvent.clear()
TTkTimer.quitAll()
self._paintEvent.set()
self._input.close()
@ -328,7 +345,7 @@ class TTk(TTkWidget):
# Deregister the handler
# so CTRL-C can be redirected to the default handler if the app does not exit
signal.signal(signal.SIGINT, signal.SIG_DFL)
self.quit()
TTkHelper.quit()
def isVisibleAndParent(self):
return self.isVisible()

Loading…
Cancel
Save