From c9594feff0700d7c6bfc08dcba408c2d30dadfad Mon Sep 17 00:00:00 2001 From: Sebastian Heinlein Date: Sun, 12 Mar 2006 13:26:54 +0100 Subject: * only show the help button if a help viewer is installed (currently only yelp is supported - have not found anyone who could help me on khelpcenter yet) * do not run the help viewer as root * do not depend on the gnome python module anymore --- UpdateManager/Common/HelpViewer.py | 33 +++++++++++++++++++++++++++++++++ UpdateManager/UpdateManager.py | 9 ++++++++- 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 UpdateManager/Common/HelpViewer.py (limited to 'UpdateManager') diff --git a/UpdateManager/Common/HelpViewer.py b/UpdateManager/Common/HelpViewer.py new file mode 100644 index 00000000..c8b099cc --- /dev/null +++ b/UpdateManager/Common/HelpViewer.py @@ -0,0 +1,33 @@ +# helpviewer.py + +import os +import subprocess + +# Hardcoded list of available help viewers +# FIXME: khelpcenter support would be nice +#KNOWN_VIEWERS = ["/usr/bin/yelp", "/usr/bin/khelpcenter"] +KNOWN_VIEWERS = ["/usr/bin/yelp"] + +class HelpViewer: + def __init__(self, docu): + self.command = [] + self.docu = docu + for viewer in KNOWN_VIEWERS: + if os.path.exists(viewer): + self.command = [viewer, "ghelp:%s" % docu] + break + + def check(self): + """check if a viewer is available""" + if self.command == []: + return False + else: + return True + + def run(self): + """open the documentation in the viewer""" + # avoid running the help viewer as root + if os.getuid() == 0 and os.environ.has_key('SUDO_USER'): + self.command = ['sudo', '-u', os.environ['SUDO_USER']] +\ + self.command + subprocess.Popen(self.command) diff --git a/UpdateManager/UpdateManager.py b/UpdateManager/UpdateManager.py index 590391b9..742a711e 100644 --- a/UpdateManager/UpdateManager.py +++ b/UpdateManager/UpdateManager.py @@ -47,6 +47,7 @@ import pwd import time import thread import xml.sax.saxutils +from Common.HelpViewer import HelpViewer from gettext import gettext as _ @@ -283,6 +284,12 @@ class UpdateManager(SimpleGladeApp): opener = urllib2.build_opener(proxy_support) urllib2.install_opener(opener) + # setup the help viewer and disable the help button if there + # is no viewer available + self.help_viewer = HelpViewer("update-manager") + if self.help_viewer.check() == False: + self.button_help.set_sensitive(False) + self.gconfclient = gconf.client_get_default() # restore state self.restore_state() @@ -461,7 +468,7 @@ class UpdateManager(SimpleGladeApp): self.fillstore() def on_button_help_clicked(self, widget): - subprocess.Popen(["/usr/bin/yelp", "ghelp:update-manager"]) + self.help_viewer.run() def on_button_install_clicked(self, widget): #print "on_button_install_clicked" -- cgit v1.2.3 From 9e9773e9d152904633e9ab2270648b3253a73a37 Mon Sep 17 00:00:00 2001 From: Sebastian Heinlein Date: Sun, 12 Mar 2006 18:17:29 +0100 Subject: * Select the first upgrade in the list - fix for #23485 --- UpdateManager/UpdateManager.py | 1 + 1 file changed, 1 insertion(+) (limited to 'UpdateManager') diff --git a/UpdateManager/UpdateManager.py b/UpdateManager/UpdateManager.py index 742a711e..20001937 100644 --- a/UpdateManager/UpdateManager.py +++ b/UpdateManager/UpdateManager.py @@ -416,6 +416,7 @@ class UpdateManager(SimpleGladeApp): text_header = ""+gettext.ngettext("You can install one update", "You can install %s updates" % len(self.store), len(self.store))+"" text_download = _("Download size: %s" % apt_pkg.SizeToStr(self.dl_size)) + self.treeview_update.set_cursor(0) self.expander_details.set_sensitive(True) self.treeview_update.set_sensitive(True) self.button_install.grab_default() -- cgit v1.2.3 From 32a7e2a37cfaeb7d128c59edd0c32c79de2a5040 Mon Sep 17 00:00:00 2001 From: Sebastian Heinlein Date: Mon, 13 Mar 2006 17:56:15 +0100 Subject: * only run the progress bar one time during cache init * avoid flickering of the dialog and hide the window after the init of MyCache --- UpdateManager/GtkProgress.py | 36 ++++++++++++++++++++++++++---------- UpdateManager/UpdateManager.py | 11 +++++++---- 2 files changed, 33 insertions(+), 14 deletions(-) (limited to 'UpdateManager') diff --git a/UpdateManager/GtkProgress.py b/UpdateManager/GtkProgress.py index d11ca3e9..54f60384 100644 --- a/UpdateManager/GtkProgress.py +++ b/UpdateManager/GtkProgress.py @@ -26,8 +26,19 @@ import apt import apt_pkg from gettext import gettext as _ +# intervals of the start up progress +# 3x caching and menu creation +STEPS_UPDATE_CACHE = [33, 66, 100] + class GtkOpProgress(apt.OpProgress): - def __init__(self, host_window, progressbar, status, parent): + def __init__(self, host_window, progressbar, status, parent, + steps=STEPS_UPDATE_CACHE): + # used for the "one run progressbar" + self.steps = steps[:] + self.base = 0 + self.old = 0 + self.next = int(self.steps.pop(0)) + self._parent = parent self._window = host_window self._status = status @@ -35,27 +46,32 @@ class GtkOpProgress(apt.OpProgress): # Do not show the close button self._window.realize() host_window.window.set_functions(gtk.gdk.FUNC_MOVE) - #self._progressbar.set_pulse_step(0.01) - #self._progressbar.pulse() self._window.set_transient_for(parent) + def update(self, percent): #print percent #print self.Op #print self.SubOp - # Use pulse until apt doesn't restarts the progress bar - # several times self._window.show() self._parent.set_sensitive(False) + # if the old percent was higher, a new progress was started + if self.old > percent: + # set the borders to the next interval + self.base = self.next + try: + self.next = int(self.steps.pop(0)) + except: + pass + progress = self.base + percent/100 * (self.next - self.base) + self.old = percent self._status.set_markup("%s" % self.op) - self._progressbar.set_fraction(percent/100.0) - #if percent > 99: - # self._progressbar.set_fraction(1) - #else: - # self._progressbar.pulse() + self._progressbar.set_fraction(progress/100.0) while gtk.events_pending(): gtk.main_iteration() + def done(self): self._parent.set_sensitive(True) + def hide(self): self._window.hide() class GtkFetchProgress(apt.progress.FetchProgress): diff --git a/UpdateManager/UpdateManager.py b/UpdateManager/UpdateManager.py index 20001937..2bb9ed0e 100644 --- a/UpdateManager/UpdateManager.py +++ b/UpdateManager/UpdateManager.py @@ -683,10 +683,11 @@ class UpdateManager(SimpleGladeApp): sys.exit() try: - self.cache = MyCache(GtkProgress.GtkOpProgress(self.dialog_cacheprogress, - self.progressbar_cache, - self.label_cache, - self.window_main)) + progress = GtkProgress.GtkOpProgress(self.dialog_cacheprogress, + self.progressbar_cache, + self.label_cache, + self.window_main) + self.cache = MyCache(progress) except AssertionError: # we assert a clean cache msg=("%s\n\n%s"% \ @@ -703,6 +704,8 @@ class UpdateManager(SimpleGladeApp): dialog.run() dialog.destroy() sys.exit(1) + else: + progress.hide() #apt_pkg.Config.Set("Debug::pkgPolicy","1") #self.depcache = apt_pkg.GetDepCache(self.cache) self.cache._depcache.ReadPinFile() -- cgit v1.2.3 From b1f6ea81443337ef096c55282c680b80cea4c13f Mon Sep 17 00:00:00 2001 From: Sebastian Heinlein Date: Tue, 14 Mar 2006 17:28:17 +0100 Subject: * Fixed a typo and corrected an awkward grammar :) * Do not call fillstore twice after the cache update --- UpdateManager/UpdateManager.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'UpdateManager') diff --git a/UpdateManager/UpdateManager.py b/UpdateManager/UpdateManager.py index 2bb9ed0e..07634d87 100644 --- a/UpdateManager/UpdateManager.py +++ b/UpdateManager/UpdateManager.py @@ -466,7 +466,6 @@ class UpdateManager(SimpleGladeApp): def on_button_reload_clicked(self, widget): #print "on_button_reload_clicked" self.invoke_manager(UPDATE) - self.fillstore() def on_button_help_clicked(self, widget): self.help_viewer.run() @@ -657,7 +656,7 @@ class UpdateManager(SimpleGladeApp): # self.gconfclient.set_string("/apps/update-manager/seen_dist",name) #dialog.destroy() self.frame_new_release.show() - self.label_new_release.set_markup("New distribution release codename '%s' available" % upgradable_to.name) + self.label_new_release.set_markup("New distribution release '%s' is available" % upgradable_to.name) self.new_dist = upgradable_to @@ -674,8 +673,8 @@ class UpdateManager(SimpleGladeApp): d.set_markup("%s\n\n%s" % ( _("Only one software management tool is allowed to " "run at the same time"), - _("Please close the other application e.g. \"aptitude\" " - "or \"Synaptic\" at first."))) + _("Please close the other application e.g. 'aptitude' " + "or 'Synaptic' first."))) print "error from apt: '%s'" % e d.set_title("") res = d.run() -- cgit v1.2.3