add hooks for graceful screen cleanup
authorsmbaker <smbaker@fc8clean.lan>
Thu, 14 Jul 2011 00:41:49 +0000 (17:41 -0700)
committersmbaker <smbaker@fc8clean.lan>
Thu, 14 Jul 2011 00:41:49 +0000 (17:41 -0700)
sface/mainwindow.py
sface/screens/sfascreen.py

index 153336f..436756a 100644 (file)
@@ -230,3 +230,17 @@ class MainWindow(QWidget):
     def nodeSelectionChanged(self, hostname):
         if self.rspecWindow.isVisible():
             self.rspecWindow.showNode(hostname)
     def nodeSelectionChanged(self, hostname):
         if self.rspecWindow.isVisible():
             self.rspecWindow.showNode(hostname)
+
+    def closeEvent(self, event):
+        # give the screens an opportunity to veto the close
+        for screen in self.screenWidgets:
+            if not screen.canClose():
+                event.ignore()
+                return
+
+        # give the screens an opportunity to close gracefully
+        for screen in self.screenWidgets:
+            screen.mainWindowClose()
+
+        QWidget.closeEvent(self, event)
+
index e3c584a..c1d8b93 100644 (file)
@@ -46,3 +46,9 @@ class SfaScreen(QWidget):
 
     def configurationChanged(self):
         pass
 
     def configurationChanged(self):
         pass
+
+    def canClose(self):
+        return True
+
+    def mainWindowClose(self):
+        pass