From 0564bbd9c3a9991b064f4167e42333ce56badb67 Mon Sep 17 00:00:00 2001 From: Tyler Goodlet Date: Sun, 30 May 2021 08:44:02 -0400 Subject: [PATCH] Use focus switch signal to update status bar --- piker/ui/_exec.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/piker/ui/_exec.py b/piker/ui/_exec.py index 85488df8..8e15b3a8 100644 --- a/piker/ui/_exec.py +++ b/piker/ui/_exec.py @@ -124,6 +124,26 @@ class MainWindow(QtGui.QMainWindow): # raising KBI seems to get intercepted by by Qt so just use the system. os.kill(os.getpid(), signal.SIGINT) + @property + def status_bar(self) -> 'QStatusBar': + return self.statusBar() + + def on_focus_change( + self, + old: QtGui.QWidget, + new: QtGui.QWidget, + ) -> None: + + log.debug(f'widget focus changed from {old} -> {new}') + + if new is None: + # cursor left window? + self.statusBar().showMessage('mode: none') + + else: + name = getattr(new, 'mode_name', '') + self.statusBar().showMessage(name) + def run_qtractor( func: Callable, @@ -192,6 +212,10 @@ def run_qtractor( # make window and exec window = window_type() + + # hook into app focus change events + app.focusChanged.connect(window.on_focus_change) + instance = main_widget() instance.window = window