Ignore:
Timestamp:
11/14/12 11:34:03 (17 months ago)
Author:
Matija Polajnar <matija.polajnar@…>
Branch:
default
Message:

Show progress during reloading of add-ons list.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Orange/OrangeCanvas/orngDlgs.py

    r11019 r11020  
    799799        # Right panel 
    800800         
    801         rightPanel = OWGUI.widgetBox(repos, orientation = "vertical", sizePolicy=QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Expanding)) 
     801        self.rightPanel = rightPanel = OWGUI.widgetBox(repos, orientation = "vertical", sizePolicy=QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Expanding)) 
    802802        rightPanel.layout().setSizeConstraint(QLayout.SetMinimumSize) 
    803803        self.reloadRepoButton = OWGUI.button(rightPanel, self, "Refresh list", callback = self.reloadRepo) 
     
    810810         
    811811        # Buttons 
    812         hbox = OWGUI.widgetBox(mainBox, orientation = "horizontal", sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)) 
    813         hbox.layout().addStretch(1) 
     812        self.hbox = hbox = OWGUI.widgetBox(mainBox, orientation = "horizontal", sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)) 
     813        self.progress = QProgressBar(hbox, sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)) 
     814        hbox.layout().addWidget(self.progress) 
     815        self.progress.setVisible(False) 
     816        OWGUI.widgetBox(hbox, sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Minimum))  # A humble stretch. 
    814817        self.okButton = OWGUI.button(hbox, self, "OK", callback = self.accept) 
    815818        self.cancelButton = OWGUI.button(hbox, self, "Cancel", callback = self.reject) 
     
    832835                return 
    833836        QDialog.accept(self) 
     837 
     838    def busy(self, b=True): 
     839        self.progress.setVisible(b) 
     840        self.eSearch.setEnabled(not b) 
     841        self.lst.setEnabled(not b) 
     842        self.hbox.setEnabled(not b) 
     843        self.rightPanel.setEnabled(not b) 
     844        self.infoPane.setEnabled(not b) 
    834845         
    835846    def reloadRepo(self): 
    836847        # Reload add-on list. 
    837         # TODO: This can take some time - show some progress to user! 
    838848        import Orange.utils.addons 
    839849        try: 
    840             Orange.utils.addons.refresh_available_addons() 
     850            self.busy(True) 
     851            self.repaint() 
     852            def pcb(max, val): 
     853                self.progress.setMaximum(max) 
     854                self.progress.setValue(val) 
     855                self.progress.repaint() 
     856            Orange.utils.addons.refresh_available_addons(progress_callback = pcb) 
    841857        except Exception, e:  # Maybe gather all exceptions (for all repositories) and show them in the end? 
    842             QMessageBox.critical(self, "Error", "Could not reload repository '%s': %s." % (repo.name, e)) 
     858            QMessageBox.critical(self, "Error", "Could not reload repository: %s." % e) 
     859        finally: 
     860            self.busy(False) 
    843861        # Finally, refresh the tree on GUI. 
    844862        self.refreshView() 
Note: See TracChangeset for help on using the changeset viewer.