diff --git a/pisi/atomicoperations.py b/pisi/atomicoperations.py index a3a7e592..b10eafde 100644 --- a/pisi/atomicoperations.py +++ b/pisi/atomicoperations.py @@ -423,10 +423,9 @@ class Remove(AtomicOperation): for fileinfo in self.files.list: self.remove_file(fileinfo) removed += 1 - ctx.ui.notify(pisi.ui.progressed, - operation = "removing", - percent = progress.update(removed), - info = _("Removing package %s") % self.package_name) + ctx.ui.display_progress(operation = "removing", + percent = progress.update(removed), + info = _("Removing package %s") % self.package_name) txn = ctx.dbenv.txn_begin() try: diff --git a/pisi/cli/__init__.py b/pisi/cli/__init__.py index effce83a..b5a1a550 100644 --- a/pisi/cli/__init__.py +++ b/pisi/cli/__init__.py @@ -123,14 +123,22 @@ class CLI(UI): return True return False - - def display_progress(self, **ka): - totalsize = '%.1f %s' % pisi.util.human_readable_size(ka['total_size']) - out = '\r%-30.30s (%s)%3d%% %9.2f %s [%s]' % \ - (ka['filename'], totalsize, ka['percent'], - ka['rate'], ka['symbol'], ka['eta']) - self.output(out) - if ka['percent'] == 100: + + def display_progress(self, operation, percent, info="", **ka): + """ display progress of any operation """ + + if operation == "removing": + return + elif operation == "fetching": + totalsize = '%.1f %s' % pisi.util.human_readable_size(ka['total_size']) + out = '\r%-30.30s (%s)%3d%% %9.2f %s [%s]' % \ + (ka['filename'], totalsize, percent, + ka['rate'], ka['symbol'], ka['eta']) + self.output(out) + else: + self.output("\r%s (%d%%)" % (keywords['info'], percent)) + + if percent == 100: self.output(colorize(_(' [complete]\n'), 'gray')) def status(self, msg = None): @@ -150,11 +158,6 @@ class CLI(UI): msg = _('Configured %s') % keywords['package'].name elif event == ui.extracting: msg = _('Extracting the files of %s') % keywords['name'] - if event == ui.progressed: - self.output("\r%s (%d%%)" % (keywords['info'], keywords['percent'])) - if keywords['percent'] == 100: - self.output(colorize(_(' [complete]\n'), 'gray')) - msg = None else: msg = None if msg: diff --git a/pisi/fetcher.py b/pisi/fetcher.py index 7a1d80f0..1e99f728 100644 --- a/pisi/fetcher.py +++ b/pisi/fetcher.py @@ -138,8 +138,9 @@ class Fetcher: if p.update(downloaded_size): self.percent = p.percent if not self.complete: - ctx.ui.display_progress(filename = self.url.filename(), + ctx.ui.display_progress(operation = "fetching", percent = self.percent, + filename = self.url.filename(), total_size = total_size, downloaded_size = downloaded_size, rate = self.rate, diff --git a/pisi/index.py b/pisi/index.py index d99b8ba8..4e5def26 100644 --- a/pisi/index.py +++ b/pisi/index.py @@ -108,10 +108,9 @@ class Index(XmlFile): def update_progress(): self.processed += 1 - ctx.ui.notify(pisi.ui.progressed, - operation = "updatingrepo", - percent = self.progress.update(self.processed), - info = _("Updating package database of %s") % repo) + ctx.ui.display_progress(operation = "updatingrepo", + percent = self.progress.update(self.processed), + info = _("Updating package database of %s") % repo) ctx.componentdb.remove_repo(repo, txn=txn) for comp in self.components: diff --git a/pisi/ui.py b/pisi/ui.py index 08d1dbf5..ba701011 100644 --- a/pisi/ui.py +++ b/pisi/ui.py @@ -18,7 +18,7 @@ import pisi import pisi.context as ctx (installed, upgraded, removed, installing, removing, configuring, configured, extracting, - downloading, packagestogo, updatingrepo, progressed) = range(12) + downloading, packagestogo, updatingrepo) = range(11) class UI(object): "Abstract class for UI operations, derive from this."