summaryrefslogtreecommitdiff
path: root/UpdateManager
diff options
context:
space:
mode:
Diffstat (limited to 'UpdateManager')
-rw-r--r--UpdateManager/Common/HelpViewer.py33
-rw-r--r--UpdateManager/UpdateManager.py9
2 files changed, 41 insertions, 1 deletions
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"