From fd26e02e08369351315c100eba0b97ab7030ef00 Mon Sep 17 00:00:00 2001
From: smbaker <smbaker@fc8clean.lan>
Date: Tue, 14 Jun 2011 17:46:18 -0700
Subject: [PATCH] isolate faults in screens during class creation

---
 sface/mainwindow.py | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/sface/mainwindow.py b/sface/mainwindow.py
index cefec17..153336f 100644
--- a/sface/mainwindow.py
+++ b/sface/mainwindow.py
@@ -131,15 +131,23 @@ class MainWindow(QWidget):
 
         self.screens = QStackedWidget(self)
         for screen in screenClasses:
-            screenWidget = screen(self)
-            self.screenWidgets.append(screenWidget)
-            self.screens.addWidget(screenWidget)
+            # use a try/catch block to isolate the screen. Third-party plugins
+            # could be buggy.
+            try:
+                screenWidget = screen(self)
+                self.screenWidgets.append(screenWidget)
+                self.screens.addWidget(screenWidget)
+            except:
+                print "Exception while creating screen", screen.__name__
+                traceback.print_exc()
 
         self.screens.addWidget(self.pix)
         self.next_screen = None
 
         self.nav = Nav(self.screenWidgets, self)
-        self.nav.setTitle(self.screenWidgets[0].getTitleText())
+
+        if self.screenWidgets:
+            self.nav.setTitle(self.screenWidgets[0].getTitleText())
 
         self.status = Status(self)
         self.log = QLabel("<a href='showlog'>Show Log</a>", self)
-- 
2.47.0