Mercurial > hg > xemacs-beta
comparison nt/installer/Wise/pre_wise.py @ 398:74fd4e045ea6 r21-2-29
Import from CVS: tag r21-2-29
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:13:30 +0200 |
parents | |
children | a268de273009 |
comparison
equal
deleted
inserted
replaced
397:f4aeb21a5bad | 398:74fd4e045ea6 |
---|---|
1 import string | |
2 import re | |
3 import os | |
4 import types | |
5 | |
6 infile=open("xemacs.tmpl","r") | |
7 | |
8 import version | |
9 import dirs | |
10 import filelist | |
11 import packages | |
12 | |
13 def letter(package): | |
14 index = packages.all.index(package) | |
15 if index>29: | |
16 raise "WISE error: too many components" | |
17 return chr(ord("A")+index) | |
18 | |
19 def letters(package_list): | |
20 ret = "" | |
21 for p in package_list: | |
22 ret = ret+letter(p) | |
23 return ret | |
24 | |
25 def describe(package): | |
26 if package in packages.descriptions.keys(): | |
27 return ": "+packages.descriptions[package] | |
28 else: return "" | |
29 | |
30 def ifblock(var,val): | |
31 return("item: If/While Statement\n Variable=%s\n Value=%s\n Flags=00001010\nend\n" % (var,val)) | |
32 | |
33 def endblock(): | |
34 return("item: End Block\nend\n") | |
35 | |
36 def setvar(var,val): | |
37 return("item: Set Variable\n Variable=%s\n Value=%s\n Flags=10000000\nend\n" % (string.upper(var), val)) | |
38 | |
39 def default_letters_of_category(cat): | |
40 val = "" | |
41 for p in packages.default: | |
42 if packages.category_of_package(p) == cat: | |
43 val = val + packages.letter_of_package(p) | |
44 return val | |
45 | |
46 def set_category_defaults(): | |
47 ret = "" | |
48 for c in packages.category_names: | |
49 ret = ret + setvar(c, default_letters_of_category(c)) | |
50 return ret | |
51 | |
52 def do_category(cat): | |
53 ret = ifblock("COMPONENTS", packages.letter_of_category(cat)) | |
54 for pkg in packages.packages_of_category(cat): | |
55 ret = ret + ifblock(string.upper(cat),packages.letter_of_package(pkg)) | |
56 for f in files_of_package(pkg): | |
57 ret = ret+install_pkg_file(f) | |
58 ret = ret + endblock() | |
59 ret = ret + endblock() | |
60 return ret | |
61 | |
62 def files_of_package(package): | |
63 manifest_file = dirs.packages + "\\pkginfo\\MANIFEST." + package | |
64 manifest = open(manifest_file,"r") | |
65 lines = manifest.readlines() | |
66 lines = map(lambda s:s[:-1], lines) | |
67 lines = map(lambda s:string.replace(s,'/','\\'), lines) | |
68 return lines | |
69 | |
70 def category_dialog(cat): | |
71 npkg = len(packages.packages_of_category(cat)) | |
72 ret="" | |
73 ret=ret+" item: Dialog\n Title="+packages.category_descriptions[cat]+" Packages\n" | |
74 ret=ret+" Width=210\n" | |
75 ret=ret+" Height=%d\n" % (45+npkg*10) | |
76 ret=ret+" Font Name=Helv\n" | |
77 ret=ret+" Font Size=8\n" | |
78 ret=ret+" item: Push Button\n" | |
79 ret=ret+" Rectangle=107 %d 147 %d\n" % (5+npkg*10+2, 5+npkg*10+17) | |
80 ret=ret+" Create Flags=01010000000000010000000000000001\n" | |
81 ret=ret+" Text=OK\n" | |
82 ret=ret+" end\n" | |
83 ret=ret+" item: Push Button\n" | |
84 ret=ret+" Rectangle=153 %d 193 %d\n" % (5+npkg*10+2, 5+npkg*10+17) | |
85 ret=ret+" Variable=%s\n" % string.upper(cat) | |
86 ret=ret+" Value=%%%s_SAVE%%\n" % string.upper(cat) | |
87 ret=ret+" Create Flags=01010000000000010000000000000000\n" | |
88 ret=ret+" Flags=0000000000000001\n" | |
89 ret=ret+" Text=Cancel\n" | |
90 ret=ret+" end\n" | |
91 ret=ret+" item: Checkbox\n" | |
92 ret=ret+" Rectangle=0 5 191 %d\n" % (10*npkg) | |
93 ret=ret+" Variable=%s\n"%string.upper(cat) | |
94 ret=ret+" Create Flags=01010000000000010000000000000011\n" | |
95 ret=ret+" Flags=0000000000000010\n" | |
96 for pkg in packages.packages_of_category(cat): | |
97 ret = ret+" Text=%s: %s\n"%( pkg, packages.package_descriptions[pkg]) | |
98 ret=ret+" Text=\n" | |
99 ret=ret+" end\n" | |
100 ret=ret+" end\n" | |
101 return ret | |
102 | |
103 def src_path(src,name): | |
104 return src + "\\" + name | |
105 | |
106 def dst_path(dst,name): | |
107 return "%MAINDIR%"+"\\"+dst+"\\" + name | |
108 | |
109 def install_file(name,src,dst): | |
110 return("item: Install File\n Source=%s\n Destination=%s\n Flags=0000000010000010\nend\n" % (src_path(src,name),dst_path(dst,name))) | |
111 | |
112 def install_pkg_file(name): | |
113 return install_file(name,dirs.packages,dirs.pkg_dst) | |
114 | |
115 def do_package(package): | |
116 return ifblock("COMPONENTS",letter(package)) + \ | |
117 string.join(map(install_pkg_file,files(package)),"")+ \ | |
118 endblock() | |
119 | |
120 for line in infile.readlines(): | |
121 left=string.find(line,"<<<") | |
122 if left>=0: | |
123 right=string.find(line,">>>") | |
124 expr=line[left+3:right] | |
125 val=eval(expr) | |
126 if type(val)==types.StringType: | |
127 print line[:left] + val + line[right+3:], | |
128 elif type(val)==types.ListType: | |
129 for v in val: | |
130 print line[:left] + v + line[right+3:], | |
131 else: print line, | |
132 | |
133 |