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 --- SoftwareProperties/SoftwareProperties.py | 9 ++++++--- UpdateManager/Common/HelpViewer.py | 33 ++++++++++++++++++++++++++++++++ UpdateManager/UpdateManager.py | 9 ++++++++- 3 files changed, 47 insertions(+), 4 deletions(-) create mode 100644 UpdateManager/Common/HelpViewer.py diff --git a/SoftwareProperties/SoftwareProperties.py b/SoftwareProperties/SoftwareProperties.py index 690b30dd..f8fd45b9 100644 --- a/SoftwareProperties/SoftwareProperties.py +++ b/SoftwareProperties/SoftwareProperties.py @@ -34,6 +34,7 @@ import os #sys.path.append("@prefix/share/update-manager/python") from UpdateManager.Common.SimpleGladeApp import SimpleGladeApp +from UpdateManager.Common.HelpViewer import HelpViewer import aptsources import dialog_add import dialog_edit @@ -165,6 +166,10 @@ class SoftwareProperties(SimpleGladeApp): else: self.checkbutton_unattended.set_active(False) + self.help_viewer = HelpViewer("update-manager#setting-preferences") + if self.help_viewer.check() == False: + self.button_help.set_sensitive(False) + # apt-key stuff self.apt_key = apt_key() self.init_keyslist() @@ -392,9 +397,7 @@ class SoftwareProperties(SimpleGladeApp): self.quit() def on_help_button(self, widget): - gnome.help_display_desktop(self.gnome_program, - "update-manager", "update-manager", - "setting-preferences") + self.help_viewer.run() def on_button_add_cdrom_clicked(self, widget): #print "on_button_add_cdrom_clicked()" 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