summaryrefslogtreecommitdiff
path: root/pygtk_postinstall.py
diff options
context:
space:
mode:
Diffstat (limited to 'pygtk_postinstall.py')
-rw-r--r--pygtk_postinstall.py138
1 files changed, 108 insertions, 30 deletions
diff --git a/pygtk_postinstall.py b/pygtk_postinstall.py
index b6e9d7ab..627bc12b 100644
--- a/pygtk_postinstall.py
+++ b/pygtk_postinstall.py
@@ -1,30 +1,108 @@
-
-"""pygtk is now installed on your machine.
-
-Local configuration files were successfully updated."""
-
-import os, re, sys
-
-prefix_pattern=re.compile("^prefix=.*")
-exec_pattern=re.compile("^exec\s.*")
-
-def replace_prefix(s):
- if prefix_pattern.match(s):
- s='prefix='+sys.prefix.replace("\\","\\\\")+'\n'
- if exec_pattern.match(s):
- s=('exec '+sys.prefix+'\\python.exe '+
- '$codegendir/codegen.py \"$@\"\n').replace("\\","\\\\")
- return s
-
-
-if len(sys.argv) == 2 and sys.argv[1] == "-install":
-
- filenames=['lib/pkgconfig/pygtk-2.0.pc','bin/pygtk-codegen-2.0']
- for filename in filenames:
- pkgconfig_file = os.path.normpath(
- os.path.join(sys.prefix,filename))
-
- lines=open(pkgconfig_file).readlines()
- open(pkgconfig_file, 'w').writelines(map(replace_prefix,lines))
-
- print __doc__
+
+"""pygtk is now installed on your machine.
+
+Local configuration files were successfully updated."""
+
+import os, os.path, re, sys
+import distutils.sysconfig
+import distutils.file_util
+import distutils.errors
+
+PYGOBJECT_XSL_DIR = os.path.join('share', 'pygobject','xsl')
+PYGOBJECT_HTML_DIR = os.path.join('share', 'gtk-doc', 'html', 'pygobject')
+HTML_DIR = os.path.join('share', 'gtk-doc', 'html', 'pygtk')
+
+prefix_pattern=re.compile("^prefix=.*")
+exec_pattern=re.compile("^exec\s.*")
+codegendir_pattern=re.compile("^codegendir=.*")
+
+def replace_prefix(s):
+ if prefix_pattern.match(s):
+ s='prefix='+sys.prefix.replace("\\","/")+'\n'
+ if exec_pattern.match(s):
+ s=('exec '+sys.prefix+'\\python.exe '+
+ '$codegendir/codegen.py \"$@\"\n').replace("\\","/")
+ if codegendir_pattern.match(s):
+ s=('codegendir='
+ +distutils.sysconfig.get_python_lib().replace("\\","/")+
+ '/gtk-2.0/codegen' + '\n')
+ return s
+
+def copy_pygobject_css():
+ # Copy style.css from pygobject docs to pygtk docs
+ try:
+ distutils.file_util.copy_file(
+ os.path.normpath(os.path.join(sys.prefix, PYGOBJECT_HTML_DIR,
+ 'style.css')),
+ os.path.normpath(os.path.join(sys.prefix,HTML_DIR)))
+ except distutils.errors.DistutilsFileError:
+ # probably pygobject has not been installed yet
+ pass
+
+
+
+def html_fixxref():
+ sys.path.insert(0, os.path.normpath(os.path.join(sys.prefix,
+ PYGOBJECT_XSL_DIR)))
+ try:
+ import fixxref
+ fixxref.scan_index_dir(fixxref.DOCDIR)
+ fixxref.fix_xrefs(os.path.normpath(os.path.join(sys.prefix,
+ HTML_DIR)))
+ except ImportError, e:
+ pass
+
+# TODO : Check that shortcuts are created system-wide when the user
+# has admin rights (hint: see pywin32 postinstall)
+def create_shortcuts():
+ progs_folder= get_special_folder_path("CSIDL_COMMON_PROGRAMS")
+ site_packages_dir = os.path.join(sys.prefix , 'lib','site-packages')
+
+ pygtk_shortcuts = os.path.join(progs_folder, 'PyGTK')
+ if not os.path.isdir(pygtk_shortcuts):
+ os.mkdir(pygtk_shortcuts)
+
+ pygtk_doc_link=os.path.join(pygtk_shortcuts,
+ 'PyGTK Documentation.lnk')
+ if os.path.isfile(pygtk_doc_link):
+ os.remove(pygtk_doc_link)
+
+ create_shortcut(os.path.join(sys.prefix,'share','gtk-doc','html',
+ 'pygtk','index.html'),
+ 'PyGTK Documentation', pygtk_doc_link)
+
+ homepage_link = os.path.join(pygtk_shortcuts,
+ "PyGTK Home.lnk")
+ if os.path.isfile(homepage_link):
+ os.remove(homepage_link)
+ create_shortcut("http://www.pygtk.org",'PyGTK Homepage', homepage_link)
+
+def remove_shortcuts():
+ pygtk_shortcuts = os.path.join(
+ get_special_folder_path('CSIDL_COMMON_PROGRAMS'), 'PyGTK')
+ os.remove(os.path.join(pygtk_shortcuts,'PyGTK Documentation.lnk'))
+ os.remove(os.path.join(pygtk_shortcuts,'PyGTK Home.lnk'))
+ try:
+ os.rmdir(pygtk_shortcuts)
+ except OSError, e:
+ # Directory is not empty, so leave it like that !
+ pass
+
+if len(sys.argv) == 2:
+ if sys.argv[1] == "-install":
+ filenames=['lib/pkgconfig/pygtk-2.0.pc','bin/pygtk-codegen-2.0']
+ for filename in filenames:
+ pkgconfig_file = os.path.normpath(
+ os.path.join(sys.prefix,filename))
+
+ lines=open(pkgconfig_file).readlines()
+ open(pkgconfig_file, 'w').writelines(map(replace_prefix,lines))
+ copy_pygobject_css()
+ html_fixxref()
+ # TODO: Add an installer option for shortcut creation
+ # create_shortcuts()
+ print __doc__
+ elif sys.argv[1] == "-remove":
+ # remove_shortcuts()
+ os.remove(os.path.normpath(
+ os.path.join(sys.prefix,HTML_DIR,'style.css')))