Ignore:
Timestamp:
11/13/12 20:05:23 (17 months ago)
Author:
Matija Polajnar <matija.polajnar@…>
Branch:
default
Message:

Rewrite the add-on support modules and GUI to support the new properly packed add-ons, published on PyPI.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Orange/OrangeCanvas/orngCanvas.pyw

    r10903 r11018  
    848848        if t - lastRefresh > 7*24*3600: 
    849849            if QMessageBox.question(self, "Refresh", 
    850                                     "List of add-ons in repositories has %s. Do you want to %s the lists now?" % 
     850                                    "List of add-ons in repository has %s. Do you want to %s the list now?" % 
    851851                                    (("not yet been loaded" if lastRefresh==0 else "not been refreshed for more than a week"), 
    852852                                     ("download" if lastRefresh==0 else "reload")), 
     
    854854                                     QMessageBox.No | QMessageBox.Escape) == QMessageBox.Yes: 
    855855                 
    856                 anyFailed = False 
    857                 anyDone = False 
    858                 for r in Orange.utils.addons.available_repositories: 
    859                     #TODO: # Should show some progress (and enable cancellation) 
    860                     try: 
    861                         if r.refreshdata(force=True): 
    862                             anyDone = True 
    863                         else: 
    864                             anyFailed = True 
    865                     except Exception, e: 
    866                         anyFailed = True 
    867                         print "Unable to refresh repository %s! Error: %s" % (r.name, e) 
    868                  
    869                 if anyDone: 
    870                     self.settings["lastAddonsRefresh"] = t 
    871                 if anyFailed: 
    872                     QMessageBox.warning(self,'Download Failed', "Download of add-on list has failed for at least one repostitory.") 
    873          
     856                #TODO: # Should show some progress (and enable cancellation) 
     857                try: 
     858                    Orange.utils.addons.refresh_available_addons() 
     859                    self.settings["lastAddonsRefresh"] = time.time() 
     860                except Exception, e: 
     861                    import traceback 
     862                    traceback.print_exc() 
     863                    QMessageBox.warning(self,'Download Failed', "Download of add-on list has failed.") 
     864 
    874865        dlg = orngDlgs.AddOnManagerDialog(self, self) 
    875866        if dlg.exec_() == QDialog.Accepted: 
    876             for (id, addOn) in dlg.addOnsToRemove.items(): 
     867            add, remove, upgrade = dlg.to_install(), dlg.to_remove(), dlg.to_upgrade 
     868            for name in upgrade: 
    877869                try: 
    878                     addOn.uninstall(refresh=False) 
    879                     if id in dlg.addOnsToAdd.items(): 
    880                         Orange.utils.addons.install_addon_from_repo(dlg.addOnsToAdd[id], global_install=False, refresh=False) 
    881                         del dlg.addOnsToAdd[id] 
     870                    Orange.utils.addons.upgrade(name) 
    882871                except Exception, e: 
    883                     print "Problem %s add-on %s: %s" % ("upgrading" if id in dlg.addOnsToAdd else "removing", addOn.name, e) 
    884             for (id, addOn) in dlg.addOnsToAdd.items(): 
    885                 if id.startswith("registered:"): 
    886                     try: 
    887                         Orange.utils.addons.register_addon(addOn.name, addOn.directory, refresh=False, systemwide=False) 
    888                     except Exception, e: 
    889                         print "Problem registering add-on %s: %s" % (addOn.name, e) 
    890                 else: 
    891                     try: 
    892                         Orange.utils.addons.install_addon_from_repo(dlg.addOnsToAdd[id], global_install=False, refresh=False) 
    893                     except Exception, e: 
    894                         print "Problem installing add-on %s: %s" % (addOn.name, e) 
    895             if len(dlg.addOnsToAdd)+len(dlg.addOnsToRemove)>0: 
    896                 Orange.utils.addons.refresh_addons(reload_path=True) 
    897                  
     872                    print "Problem upgrading add-on %s: %s" % (name, e) 
     873            for name in remove: 
     874                try: 
     875                    Orange.utils.addons.uninstall(name) 
     876                except Exception, e: 
     877                    print "Problem uninstalling add-on %s: %s" % (name, e) 
     878            for name in add: 
     879                try: 
     880                    Orange.utils.addons.install(name) 
     881                except Exception, e: 
     882                    print "Problem installing add-on %s: %s" % (name, e) 
     883 
    898884    def menuItemShowStatusBar(self): 
    899885        state = self.showStatusBarAction.isChecked() 
Note: See TracChangeset for help on using the changeset viewer.