Kill the tractor tree on window close.
This makes it so you don't have to ctrl-c kill apps. Add in the experimental openGL support even though I'm pretty sure it's not being used much for curve plotting (but could be wrong).to_qpainterpath_and_beyond
							parent
							
								
									bfcf5170dc
								
							
						
					
					
						commit
						9572280553
					
				| 
						 | 
					@ -26,6 +26,7 @@ from typing import Tuple, Callable, Dict, Any
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Qt specific
 | 
					# Qt specific
 | 
				
			||||||
import PyQt5  # noqa
 | 
					import PyQt5  # noqa
 | 
				
			||||||
 | 
					import pyqtgraph as pg
 | 
				
			||||||
from pyqtgraph import QtGui
 | 
					from pyqtgraph import QtGui
 | 
				
			||||||
from PyQt5 import QtCore
 | 
					from PyQt5 import QtCore
 | 
				
			||||||
from PyQt5.QtCore import (
 | 
					from PyQt5.QtCore import (
 | 
				
			||||||
| 
						 | 
					@ -37,6 +38,12 @@ import tractor
 | 
				
			||||||
from outcome import Error
 | 
					from outcome import Error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# pyqtgraph global config
 | 
				
			||||||
 | 
					# might as well enable this for now?
 | 
				
			||||||
 | 
					pg.useOpenGL = True
 | 
				
			||||||
 | 
					pg.enableExperimental = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# singleton app per actor
 | 
					# singleton app per actor
 | 
				
			||||||
_qt_app: QtGui.QApplication = None
 | 
					_qt_app: QtGui.QApplication = None
 | 
				
			||||||
_qt_win: QtGui.QMainWindow = None
 | 
					_qt_win: QtGui.QMainWindow = None
 | 
				
			||||||
| 
						 | 
					@ -67,6 +74,12 @@ class MainWindow(QtGui.QMainWindow):
 | 
				
			||||||
        self.setMinimumSize(*self.size)
 | 
					        self.setMinimumSize(*self.size)
 | 
				
			||||||
        self.setWindowTitle(self.title)
 | 
					        self.setWindowTitle(self.title)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def closeEvent(self, event: 'QCloseEvent') -> None:
 | 
				
			||||||
 | 
					        """Cancel the root actor asap.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        """
 | 
				
			||||||
 | 
					        tractor.current_actor().cancel_soon()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def run_qtractor(
 | 
					def run_qtractor(
 | 
				
			||||||
    func: Callable,
 | 
					    func: Callable,
 | 
				
			||||||
| 
						 | 
					@ -131,6 +144,9 @@ def run_qtractor(
 | 
				
			||||||
    instance = main_widget()
 | 
					    instance = main_widget()
 | 
				
			||||||
    instance.window = window
 | 
					    instance.window = window
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # kill the app when root actor terminates
 | 
				
			||||||
 | 
					    tractor._actor._lifetime_stack.callback(app.quit)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    widgets = {
 | 
					    widgets = {
 | 
				
			||||||
        'window': window,
 | 
					        'window': window,
 | 
				
			||||||
        'main': instance,
 | 
					        'main': instance,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue