summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Heinlein <sebastian.heinlein@web.de>2006-03-12 13:26:54 +0100
committerSebastian Heinlein <sebastian.heinlein@web.de>2006-03-12 13:26:54 +0100
commitc9594feff0700d7c6bfc08dcba408c2d30dadfad (patch)
tree897b7d4ae59a35f49301c4164a6a082e3d5b13f6
parentdf9feb812dd0c176e89d733121536abbc237123c (diff)
downloadpython-apt-c9594feff0700d7c6bfc08dcba408c2d30dadfad.tar.gz
* 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
-rw-r--r--SoftwareProperties/SoftwareProperties.py9
-rw-r--r--UpdateManager/Common/HelpViewer.py33
-rw-r--r--UpdateManager/UpdateManager.py9
3 files changed, 47 insertions, 4 deletions
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"