Ignore:
Timestamp:
01/10/13 15:09:01 (16 months ago)
Author:
Ales Erjavec <ales.erjavec@…>
Branch:
default
Message:

Detailed error messages on install/update failure, handle possible SystemExit exceptions.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Orange/OrangeCanvas/orngDlgs.py

    r11073 r11075  
    848848        self.repaint() 
    849849        add, remove, upgrade = self.to_install(), self.to_remove(), self.to_upgrade 
     850 
     851        def errormessage(title, message, details=None, exc_info=None): 
     852            box = QMessageBox(QMessageBox.Critical, title, message, 
     853                              parent=self) 
     854 
     855            if details is not None: 
     856                box.setDetailedText(details) 
     857            elif exc_info: 
     858                import traceback 
     859                if isinstance(exc_info, tuple): 
     860                    details = traceback.format_exception(*(exc_info + (10,))) 
     861                else: 
     862                    details = traceback.format_exc(10) 
     863                box.setDetailedText(details) 
     864 
     865            return box.exec_() 
     866 
    850867        for name in upgrade: 
    851868            try: 
     
    854871                Orange.utils.addons.upgrade(name, self.pcb) 
    855872            except Exception, e: 
    856                 QMessageBox.critical(self, "Error", "Problem upgrading add-on %s: %s" % (name, e)) 
     873                errormessage("Error", 
     874                             "Problem upgrading add-on %s: %s" % (name, e), 
     875                             exc_info=True) 
     876            except SystemExit, e: 
     877                errormessage("Error", "Abnormal exit", exc_info=True) 
     878 
    857879        for name in remove: 
    858880            try: 
     
    861883                Orange.utils.addons.uninstall(name, self.pcb) 
    862884            except Exception, e: 
    863                 QMessageBox.critical(self, "Error", "Problem uninstalling add-on %s: %s" % (name, e)) 
     885                errormessage("Error", 
     886                             "Problem uninstalling add-on %s: %s" % (name, e), 
     887                             exc_info=True) 
     888 
    864889        for name in add: 
    865890            try: 
     
    868893                Orange.utils.addons.install(name, self.pcb) 
    869894            except Exception, e: 
    870                 QMessageBox.critical(self, "Error", "Problem installing add-on %s: %s" % (name, e)) 
     895                errormessage("Error", 
     896                             "Problem installing add-on %s: %s" % (name, e), 
     897                             exc_info=True) 
     898            except SystemExit, e: 
     899                errormessage("Error", "Abnormal exit", exc_info=True) 
    871900 
    872901        if len(upgrade) > 0: 
Note: See TracChangeset for help on using the changeset viewer.