]> git.0d.be Git - jack_mixer.git/commitdiff
Display an error on incorrect settings file
authorFrédéric Péters <fpeters@0d.be>
Mon, 14 Dec 2009 17:29:15 +0000 (18:29 +0100)
committerFrédéric Péters <fpeters@0d.be>
Mon, 14 Dec 2009 17:29:15 +0000 (18:29 +0100)
channel.py
jack_mixer.py

index 4fb555bc473809fcb97201f384de5a3a63d55767..8af8ae637c05b90bac3ed1985366887fae7928a6 100644 (file)
@@ -180,6 +180,8 @@ class channel(gtk.VBox, serialized_object):
         self.update_volume(False)
 
     def read_meter(self):
+        if not self.channel:
+            return
         if self.stereo:
             meter_left, meter_right = self.channel.meter
             self.meter.set_values(meter_left, meter_right)
index 6b4d0aeb4f3f6b4ad696543821bf740195b98bc2..50897a4a9fb87cac1bdccfd40c390c86787c10de 100755 (executable)
@@ -204,8 +204,13 @@ class jack_mixer(serialized_object):
                 f = file(filename, 'r')
                 self.load_from_xml(f)
             except:
-                # TODO: display error in a dialog box
-                print >> sys.stderr, 'Failed to read', filename
+                err = gtk.MessageDialog(self.window,
+                            gtk.DIALOG_MODAL,
+                            gtk.MESSAGE_ERROR,
+                            gtk.BUTTONS_OK,
+                            "Failed loading settings.")
+                err.run()
+                err.destroy()
             else:
                 self.current_filename = filename
             finally:
@@ -460,7 +465,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-130159 USA''')
                 print "jack_mixer: LASH ordered to restore data from directory %s" % directory
                 filename = directory + os.sep + "jack_mixer.xml"
                 f = file(filename, "r")
-                self.load_from_xml(f)
+                self.load_from_xml(f, silence_errors=True)
                 f.close()
                 lash.lash_send_event(self.lash_client, event)
             else:
@@ -478,12 +483,17 @@ Franklin Street, Fifth Floor, Boston, MA 02110-130159 USA''')
         s.serialize(self, b)
         b.save(file)
 
-    def load_from_xml(self, file):
+    def load_from_xml(self, file, silence_errors=False):
         #print "Loading from XML..."
         self.on_channels_clear(None)
         self.unserialized_channels = []
         b = xml_serialization()
-        b.load(file)
+        try:
+            b.load(file)
+        except:
+            if silence_errors:
+                return
+            raise
         s = serializator()
         s.unserialize(self, b)
         for channel in self.unserialized_channels:
@@ -586,7 +596,16 @@ def main():
     if options.config:
         f = file(options.config)
         mixer.current_filename = options.config
-        mixer.load_from_xml(f)
+        try:
+            mixer.load_from_xml(f)
+        except:
+            err = gtk.MessageDialog(mixer.window,
+                            gtk.DIALOG_MODAL,
+                            gtk.MESSAGE_ERROR,
+                            gtk.BUTTONS_OK,
+                            "Failed loading settings.")
+            err.run()
+            err.destroy()
         mixer.window.set_default_size(60*(1+len(mixer.channels)+len(mixer.output_channels)),300)
         f.close()