FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > Debian > Debian User

 
 
LinkBack Thread Tools
 
Old 05-20-2010, 11:18 AM
Radek Vykydal
 
Default Use progressbar instead of waitwindow for repo setup (#584996)

We can set callback for URLGrabber - that is download part
of repo setup so let's use pulse progress bar here. For sack
setup, we don't have usable callback, and also it is pretty
quick so let's keep using wait window for it.

I am not using normal (growing) progress bar for repo setup
because I would have to update it per downloaded repo metadata
file which would be needlessly fine-grained feedback for user.
---
yuminstall.py | 79 +++++++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 68 insertions(+), 11 deletions(-)

diff --git a/yuminstall.py b/yuminstall.py
index 3d8c318..288f962 100644
--- a/yuminstall.py
+++ b/yuminstall.py
@@ -1243,13 +1243,16 @@ debuglevel=10

def doRepoSetup(self, anaconda, thisrepo = None, fatalerrors = True):
self.__withFuncDo(anaconda, lambda r: self.ayum.doRepoSetup(thisrepo=r.id),
- thisrepo=thisrepo, fatalerrors=fatalerrors)
+ thisrepo=thisrepo, fatalerrors=fatalerrors,
+ callback=RepoSetupPulseProgress(anaconda.intf))

def doSackSetup(self, anaconda, thisrepo = None, fatalerrors = True):
self.__withFuncDo(anaconda, lambda r: self.ayum.doSackSetup(thisrepo=r.id),
- thisrepo=thisrepo, fatalerrors=fatalerrors)
+ thisrepo=thisrepo, fatalerrors=fatalerrors,
+ callback=SackSetupProgress(anaconda.intf))

- def __withFuncDo(self, anaconda, fn, thisrepo=None, fatalerrors=True):
+ def __withFuncDo(self, anaconda, fn, thisrepo=None, fatalerrors=True,
+ callback=None):
# Don't do this if we're being called as a dispatcher step (instead
# of being called when a repo is added via the UI) and we're going
# back.
@@ -1264,19 +1267,17 @@ debuglevel=10
repos = self.ayum.repos.listEnabled()

for repo in repos:
- if repo.name is None:
- txt = _("Retrieving installation information.")
- else:
- txt = _("Retrieving installation information for %s.")%(repo.name)
-
- waitwin = anaconda.intf.waitWindow(_("Installation Progress"), txt)
+ if callback:
+ callback.connect(repo)

while True:
try:
fn(repo)
- waitwin.pop()
+ if callback:
+ callback.disconnect()
except RepoError, e:
- waitwin.pop()
+ if callback:
+ callback.disconnect()
if repo.needsNetwork() and not network.hasActiveNetDev():
if anaconda.intf.enableNetwork():
repo.mirrorlistparsed = False
@@ -2065,3 +2066,59 @@ class YumDepSolveProgress:

def pop(self):
self.window.pop()
+
+# We don't have reasonable hook for sackSetup, morover
+# it seems to be done already in repoSetup, so we use
+# just waitWindow here, or better nothing?
+class SackSetupProgress:
+ def __init__(self, intf):
+ self.intf = intf
+
+ def connect(self, repo):
+ if repo.name is None:
+ txt = _("Retrieving installation information.")
+ else:
+ txt = _("Retrieving installation information for %s.")%(repo.name)
+ self.window = self.intf.waitWindow(_("Installation Progress"), txt)
+
+ def disconnect(self):
+ self.window.pop()
+
+class RepoSetupPulseProgress:
+ def __init__(self, intf):
+ self.intf = intf
+ self.repo = None
+
+ def connect(self, repo):
+ self.repo = repo
+ if repo.name is None:
+ txt = _("Retrieving installation information.")
+ else:
+ txt = _("Retrieving installation information for %s.")%(repo.name)
+ self.window = self.intf.progressWindow(_("Installation Progress"),
+ txt,
+ 1.0, pulse=True)
+ repo.setCallback(self)
+
+ def disconnect(self):
+ self.window.pop()
+ self.repo.setCallback(None)
+
+ def refresh(self, *args):
+ self.window.refresh()
+
+ def set(self):
+ self.window.pulse()
+
+ def start(self, filename, url, basename, size, text):
+ log.debug("Grabbing %s" % url)
+ self.set()
+ self.refresh()
+
+ def update(self, read):
+ self.set()
+ self.refresh()
+
+ def end(self, read):
+ self.set()
+ self.window.refresh()
--
1.6.0.6

_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@redhat.com
https://www.redhat.com/mailman/listinfo/anaconda-devel-list
 

Thread Tools




All times are GMT. The time now is 10:49 PM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright 2007 - 2008, www.linux-archive.org