def updateStatusBar(self): Globals.setWaitCursor() try: self.basket.update() finally: Globals.setNormalCursor() if not self.basket.packages: text = i18n("Currently your basket is empty.") elif self.state == install_state or self.state == upgrade_state: text = i18n("Currently there are <b>%1</b> selected package(s) of total <b>%2</b> of size ").arg(len(self.basket.packages)).arg(Globals.humanReadableSize(self.basket.packagesSize)) if self.basket.extraPackages: text += i18n("with <b>%3</b> extra dependencies of total <b>%4</b> of size ").arg(len(self.basket.extraPackages)).arg(Globals.humanReadableSize(self.basket.extraPackagesSize)) text += i18n("in your basket.") elif self.state == remove_state: text = i18n("Currently there are <b>%1</b> selected package(s) of total <b>%2</b> of size ").arg(len(self.basket.packages)).arg(Globals.humanReadableSize(self.basket.packagesSize)) if self.basket.extraPackages: text += i18n("with <b>%3</b> reverse dependencies of total <b>%4</b> of size ").arg(len(self.basket.extraPackages)).arg(Globals.humanReadableSize(self.basket.extraPackagesSize)) text += i18n("in your basket.") self.parent.updateStatusBarText(text)
def createList(self, packages, part = None, selected = [], disabled = []): head = '''<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> ''' if not part: part = self.part self.selected = selected self.disabled = disabled Globals.setWaitCursor() try: part.view().setContentsPos(0, 0) part.begin() part.write(head) part.write("<style type=\"text/css\">%s</style>" % self.css) part.write("<script language=\"JavaScript\">%s</script>" % self.javascript) part.write("</head><body>") if set(packages) - set(selected): part.write('''<font size="-2"><a href="#selectall">'''+i18n("Select all packages in this category")+'''</a></font>''') else: part.write('''<font size="-2"><a href="#selectall">'''+i18n("Reverse package selections")+'''</a></font>''') part.write(self.createListForPackages(packages)) part.end() finally: Globals.setNormalCursor()
def removeState(self, reset=True): Globals.setWaitCursor() try: if reset: self.resetState() self.parent.showInstalledAction.setChecked(True) self.processEvents() try: packages = self.command.listPackages() except PisiIface.RepoError: Globals.setNormalCursor() self.repoNotReady() return self.state = remove_state self.createComponentList(packages) self.operateAction.setText(i18n("Remove Package(s)")) self.operateAction.setIconSet(loadIconSet("no")) self.basket.setState(self.state) self.setLastSelected() self.updateStatusBar() finally: Globals.setNormalCursor()
def searchPackage(self): Globals.setWaitCursor() query = unicode(self.searchLine.text()) terms = query.split() if query: if self.state == remove_state: result = PisiIface.search_in_installed(terms) elif self.state == install_state: result = PisiIface.search_in_repos(terms) elif self.state == upgrade_state: result = PisiIface.search_in_upgradables(terms) self.createSearchResults(result) else: self.refreshState(reset=False) Globals.setNormalCursor()
def refreshComponentList(self, item): Globals.setWaitCursor() try: # fetch packages including metadata from cache packagesWithMeta = [PisiIface.get_package(package, self.state == remove_state) for package in self.componentDict[item].packages] if self.state == remove_state: self.specialList.createList(packagesWithMeta, selected = self.basket.packages, disabled = unremovable_packages) else: self.specialList.createList(packagesWithMeta, selected = self.basket.packages) self.lastSelectedComponent = self.componentDict[item].name # initialization and search state listview items are not components except KeyError: pass finally: Globals.setNormalCursor()
def installState(self, reset=True): # set mouse to waiting icon Globals.setWaitCursor() self.iface.setSource(self.iface.REPO) try: # uncheck buttons, clear search line, empty cache if reset: self.resetState() # check the "Show New Packages" button self.parent.showNewAction.setChecked(True) self.processEvents() try: packages = self.iface.getPackageList() except PisiIface.RepoError: Globals.setNormalCursor() self.repoNotReady() return self.state = install_state # prepare groups' listview on the left side self.createGroupList(packages) self.operateAction.setText(i18n("Install Package(s)")) self.operateAction.setIconSet(loadIconSet("ok")) self.basket.setState(self.state) # set last selected group and so, trigger SpecialList to create right side (packages) # (selects first group if it is the first time) self.setLastSelected() self.updateStatusBar() finally: Globals.setNormalCursor()
def upgradeState(self): Globals.setWaitCursor() self.iface.setSource(self.iface.REPO) try: # TODO: # If package-manager is opened while tray is updating-repo; progress dialog is # shown. And when it ends, pm switches to upgradeState but without checking # operation buttons. If pm is not opened while this is done, no change state happens # in pm, and when it is opened it will be seen in which state it was left. # # Later this background update may be done with a widget like kmail's small progress # and any operation button will be disabled when tray is caught while updating. For # now we show progress dialog and change pm state and button states manually. self.parent.showUpgradeAction.setChecked(True) self.parent.showNewAction.setChecked(False) self.parent.showInstalledAction.setChecked(False) ## try: upgradables = self.iface.getUpdates() except PisiIface.RepoError: Globals.setNormalCursor() self.repoNotReady() return self.createGroupList(upgradables, True) self.operateAction.setText(i18n("Upgrade Package(s)")) self.operateAction.setIconSet(loadIconSet("reload")) self.lastSelectedGroup = i18n("All") self.setLastSelected() self.basket.setState(self.state) self.updateStatusBar() finally: Globals.setNormalCursor()
def updateTotals(self): Globals.setWaitCursor() try: self.createExtraPackagesList() finally: Globals.setNormalCursor()