1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
"""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')))
|