Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
59cdbce9
Commit
59cdbce9
authored
Mar 21, 2003
by
Jack Jansen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Got rid of the "enum not found" interaction, and added code to allow
overriding the creator signature.
parent
714caa0c
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
43 additions
and
20 deletions
+43
-20
Mac/scripts/gensuitemodule.py
Mac/scripts/gensuitemodule.py
+43
-20
No files found.
Mac/scripts/gensuitemodule.py
View file @
59cdbce9
...
@@ -33,13 +33,14 @@ def usage():
...
@@ -33,13 +33,14 @@ def usage():
--resource Parse resource file in stead of launching application (-r)
--resource Parse resource file in stead of launching application (-r)
--base package Use another base package in stead of default StdSuites (-b)
--base package Use another base package in stead of default StdSuites (-b)
--edit old=new Edit suite names, use empty new to skip a suite (-e)
--edit old=new Edit suite names, use empty new to skip a suite (-e)
--creator code Set creator code for package (-c)
"""
)
"""
)
sys
.
exit
(
1
)
sys
.
exit
(
1
)
def
main
():
def
main
():
if
len
(
sys
.
argv
)
>
1
:
if
len
(
sys
.
argv
)
>
1
:
SHORTOPTS
=
"rb:o:e:"
SHORTOPTS
=
"rb:o:e:
c:
"
LONGOPTS
=
(
"resource"
,
"base="
,
"output="
,
"edit="
)
LONGOPTS
=
(
"resource"
,
"base="
,
"output="
,
"edit="
,
"creator="
)
try
:
try
:
opts
,
args
=
getopt
.
getopt
(
sys
.
argv
[
1
:],
SHORTOPTS
,
LONGOPTS
)
opts
,
args
=
getopt
.
getopt
(
sys
.
argv
[
1
:],
SHORTOPTS
,
LONGOPTS
)
except
getopt
.
GetoptError
:
except
getopt
.
GetoptError
:
...
@@ -49,6 +50,7 @@ def main():
...
@@ -49,6 +50,7 @@ def main():
basepkgname
=
'StdSuites'
basepkgname
=
'StdSuites'
output
=
None
output
=
None
edit_modnames
=
[]
edit_modnames
=
[]
creatorsignature
=
None
for
o
,
a
in
opts
:
for
o
,
a
in
opts
:
if
o
in
(
'-r'
,
'--resource'
):
if
o
in
(
'-r'
,
'--resource'
):
...
@@ -62,6 +64,12 @@ def main():
...
@@ -62,6 +64,12 @@ def main():
if
len
(
split
)
!=
2
:
if
len
(
split
)
!=
2
:
usage
()
usage
()
edit_modnames
.
append
(
split
)
edit_modnames
.
append
(
split
)
if
o
in
(
'-c'
,
'--creator'
):
if
len
(
a
)
!=
4
:
sys
.
stderr
.
write
(
"creator must be 4-char string
\
n
"
)
sys
.
exit
(
1
)
creatorsignature
=
a
if
output
and
len
(
args
)
>
1
:
if
output
and
len
(
args
)
>
1
:
sys
.
stderr
.
write
(
"%s: cannot specify --output with multiple inputs
\
n
"
%
sys
.
argv
[
0
])
sys
.
stderr
.
write
(
"%s: cannot specify --output with multiple inputs
\
n
"
%
sys
.
argv
[
0
])
...
@@ -69,7 +77,7 @@ def main():
...
@@ -69,7 +77,7 @@ def main():
for
filename
in
args
:
for
filename
in
args
:
process_func
(
filename
,
output
=
output
,
basepkgname
=
basepkgname
,
process_func
(
filename
,
output
=
output
,
basepkgname
=
basepkgname
,
edit_modnames
=
edit_modnames
)
edit_modnames
=
edit_modnames
,
creatorsignature
=
creatorsignature
)
else
:
else
:
# The dialogOptionFlags below allows selection of .app bundles.
# The dialogOptionFlags below allows selection of .app bundles.
filename
=
EasyDialogs
.
AskFileForOpen
(
filename
=
EasyDialogs
.
AskFileForOpen
(
...
@@ -84,7 +92,8 @@ def main():
...
@@ -84,7 +92,8 @@ def main():
print
"Retry, manually parsing resources"
print
"Retry, manually parsing resources"
processfile_fromresource
(
filename
)
processfile_fromresource
(
filename
)
def
processfile_fromresource
(
fullname
,
output
=
None
,
basepkgname
=
None
,
edit_modnames
=
None
):
def
processfile_fromresource
(
fullname
,
output
=
None
,
basepkgname
=
None
,
edit_modnames
=
None
,
creatorsignature
=
None
):
"""Process all resources in a single file"""
"""Process all resources in a single file"""
cur
=
CurResFile
()
cur
=
CurResFile
()
print
"Processing"
,
fullname
print
"Processing"
,
fullname
...
@@ -112,9 +121,11 @@ def processfile_fromresource(fullname, output=None, basepkgname=None, edit_modna
...
@@ -112,9 +121,11 @@ def processfile_fromresource(fullname, output=None, basepkgname=None, edit_modna
# switch back (needed for dialogs in Python)
# switch back (needed for dialogs in Python)
UseResFile
(
cur
)
UseResFile
(
cur
)
compileaetelist
(
aetelist
,
fullname
,
output
=
output
,
compileaetelist
(
aetelist
,
fullname
,
output
=
output
,
basepkgname
=
basepkgname
,
edit_modnames
=
edit_modnames
)
basepkgname
=
basepkgname
,
edit_modnames
=
edit_modnames
,
creatorsignature
=
creatorsignature
)
def
processfile
(
fullname
,
output
=
None
,
basepkgname
=
None
,
edit_modnames
=
None
):
def
processfile
(
fullname
,
output
=
None
,
basepkgname
=
None
,
edit_modnames
=
None
,
creatorsignature
=
None
):
"""Ask an application for its terminology and process that"""
"""Ask an application for its terminology and process that"""
aedescobj
,
launched
=
OSATerminology
.
GetSysTerminology
(
fullname
)
aedescobj
,
launched
=
OSATerminology
.
GetSysTerminology
(
fullname
)
if
launched
:
if
launched
:
...
@@ -128,12 +139,15 @@ def processfile(fullname, output=None, basepkgname=None, edit_modnames=None):
...
@@ -128,12 +139,15 @@ def processfile(fullname, output=None, basepkgname=None, edit_modnames=None):
return
return
aedata
=
raw
[
0
]
aedata
=
raw
[
0
]
aete
=
decode
(
aedata
.
data
)
aete
=
decode
(
aedata
.
data
)
compileaete
(
aete
,
None
,
fullname
,
output
=
output
,
basepkgname
=
basepkgname
)
compileaete
(
aete
,
None
,
fullname
,
output
=
output
,
basepkgname
=
basepkgname
,
creatorsignature
=
creatorsignature
)
def
compileaetelist
(
aetelist
,
fullname
,
output
=
None
,
basepkgname
=
None
,
edit_modnames
=
None
):
def
compileaetelist
(
aetelist
,
fullname
,
output
=
None
,
basepkgname
=
None
,
edit_modnames
=
None
,
creatorsignature
=
None
):
for
aete
,
resinfo
in
aetelist
:
for
aete
,
resinfo
in
aetelist
:
compileaete
(
aete
,
resinfo
,
fullname
,
output
=
output
,
compileaete
(
aete
,
resinfo
,
fullname
,
output
=
output
,
basepkgname
=
basepkgname
,
edit_modnames
=
edit_modnames
)
basepkgname
=
basepkgname
,
edit_modnames
=
edit_modnames
,
creatorsignature
=
creatorsignature
)
def
decode
(
data
):
def
decode
(
data
):
"""Decode a resource into a python data structure"""
"""Decode a resource into a python data structure"""
...
@@ -298,11 +312,13 @@ getaete = [
...
@@ -298,11 +312,13 @@ getaete = [
(
getlist
,
"suites"
,
getsuite
)
(
getlist
,
"suites"
,
getsuite
)
]
]
def
compileaete
(
aete
,
resinfo
,
fname
,
output
=
None
,
basepkgname
=
None
,
edit_modnames
=
None
):
def
compileaete
(
aete
,
resinfo
,
fname
,
output
=
None
,
basepkgname
=
None
,
edit_modnames
=
None
,
creatorsignature
=
None
):
"""Generate code for a full aete resource. fname passed for doc purposes"""
"""Generate code for a full aete resource. fname passed for doc purposes"""
[
version
,
language
,
script
,
suites
]
=
aete
[
version
,
language
,
script
,
suites
]
=
aete
major
,
minor
=
divmod
(
version
,
256
)
major
,
minor
=
divmod
(
version
,
256
)
creatorsignature
,
dummy
=
MacOS
.
GetCreatorAndType
(
fname
)
if
not
creatorsignature
:
creatorsignature
,
dummy
=
MacOS
.
GetCreatorAndType
(
fname
)
packagename
=
identify
(
os
.
path
.
splitext
(
os
.
path
.
basename
(
fname
))[
0
])
packagename
=
identify
(
os
.
path
.
splitext
(
os
.
path
.
basename
(
fname
))[
0
])
if
language
:
if
language
:
packagename
=
packagename
+
'_lang%d'
%
language
packagename
=
packagename
+
'_lang%d'
%
language
...
@@ -344,7 +360,8 @@ def compileaete(aete, resinfo, fname, output=None, basepkgname=None, edit_modnam
...
@@ -344,7 +360,8 @@ def compileaete(aete, resinfo, fname, output=None, basepkgname=None, edit_modnam
suitelist
.
append
((
code
,
modname
))
suitelist
.
append
((
code
,
modname
))
allsuites
.
append
(
suiteinfo
)
allsuites
.
append
(
suiteinfo
)
for
suiteinfo
in
allsuites
:
for
suiteinfo
in
allsuites
:
compilesuite
(
suiteinfo
,
major
,
minor
,
language
,
script
,
fname
,
basepackage
,
allprecompinfo
)
compilesuite
(
suiteinfo
,
major
,
minor
,
language
,
script
,
fname
,
basepackage
,
allprecompinfo
,
interact
=
(
edit_modnames
is
None
))
initfilename
=
os
.
path
.
join
(
output
,
'__init__.py'
)
initfilename
=
os
.
path
.
join
(
output
,
'__init__.py'
)
fp
=
open
(
initfilename
,
'w'
)
fp
=
open
(
initfilename
,
'w'
)
MacOS
.
SetCreatorAndType
(
initfilename
,
'Pyth'
,
'TEXT'
)
MacOS
.
SetCreatorAndType
(
initfilename
,
'Pyth'
,
'TEXT'
)
...
@@ -443,7 +460,7 @@ def precompilesuite(suite, basepackage=None, edit_modnames=None, output=None):
...
@@ -443,7 +460,7 @@ def precompilesuite(suite, basepackage=None, edit_modnames=None, output=None):
for
event
in
events
:
for
event
in
events
:
findenumsinevent
(
event
,
enumsneeded
)
findenumsinevent
(
event
,
enumsneeded
)
objc
=
ObjectCompiler
(
None
,
basemodule
)
objc
=
ObjectCompiler
(
None
,
basemodule
,
interact
=
(
edit_modnames
is
None
)
)
for
cls
in
classes
:
for
cls
in
classes
:
objc
.
compileclass
(
cls
)
objc
.
compileclass
(
cls
)
for
cls
in
classes
:
for
cls
in
classes
:
...
@@ -462,7 +479,8 @@ def precompilesuite(suite, basepackage=None, edit_modnames=None, output=None):
...
@@ -462,7 +479,8 @@ def precompilesuite(suite, basepackage=None, edit_modnames=None, output=None):
return
code
,
suite
,
pathname
,
modname
,
precompinfo
return
code
,
suite
,
pathname
,
modname
,
precompinfo
def
compilesuite
((
suite
,
pathname
,
modname
),
major
,
minor
,
language
,
script
,
fname
,
basepackage
,
precompinfo
):
def
compilesuite
((
suite
,
pathname
,
modname
),
major
,
minor
,
language
,
script
,
fname
,
basepackage
,
precompinfo
,
interact
=
1
):
"""Generate code for a single suite"""
"""Generate code for a single suite"""
[
name
,
desc
,
code
,
level
,
version
,
events
,
classes
,
comps
,
enums
]
=
suite
[
name
,
desc
,
code
,
level
,
version
,
events
,
classes
,
comps
,
enums
]
=
suite
...
@@ -500,7 +518,7 @@ def compilesuite((suite, pathname, modname), major, minor, language, script, fna
...
@@ -500,7 +518,7 @@ def compilesuite((suite, pathname, modname), major, minor, language, script, fna
else
:
else
:
fp
.
write
(
"
\
t
pass
\
n
\
n
"
)
fp
.
write
(
"
\
t
pass
\
n
\
n
"
)
objc
=
ObjectCompiler
(
fp
,
basemodule
,
precompinfo
)
objc
=
ObjectCompiler
(
fp
,
basemodule
,
precompinfo
,
interact
=
interact
)
for
cls
in
classes
:
for
cls
in
classes
:
objc
.
compileclass
(
cls
)
objc
.
compileclass
(
cls
)
for
cls
in
classes
:
for
cls
in
classes
:
...
@@ -654,7 +672,7 @@ def findenumsinevent(event, enumsneeded):
...
@@ -654,7 +672,7 @@ def findenumsinevent(event, enumsneeded):
#
#
class
CodeNameMapper
:
class
CodeNameMapper
:
def
__init__
(
self
):
def
__init__
(
self
,
interact
=
1
):
self
.
code2name
=
{
self
.
code2name
=
{
"property"
:
{},
"property"
:
{},
"class"
:
{},
"class"
:
{},
...
@@ -669,6 +687,7 @@ class CodeNameMapper:
...
@@ -669,6 +687,7 @@ class CodeNameMapper:
}
}
self
.
modulename
=
None
self
.
modulename
=
None
self
.
star_imported
=
0
self
.
star_imported
=
0
self
.
can_interact
=
interact
def
addnamecode
(
self
,
type
,
name
,
code
):
def
addnamecode
(
self
,
type
,
name
,
code
):
self
.
name2code
[
type
][
name
]
=
code
self
.
name2code
[
type
][
name
]
=
code
...
@@ -712,16 +731,17 @@ class CodeNameMapper:
...
@@ -712,16 +731,17 @@ class CodeNameMapper:
return
self
return
self
class
ObjectCompiler
:
class
ObjectCompiler
:
def
__init__
(
self
,
fp
,
basesuite
=
None
,
othernamemappers
=
None
):
def
__init__
(
self
,
fp
,
basesuite
=
None
,
othernamemappers
=
None
,
interact
=
1
):
self
.
fp
=
fp
self
.
fp
=
fp
self
.
basesuite
=
basesuite
self
.
basesuite
=
basesuite
self
.
namemappers
=
[
CodeNameMapper
()]
self
.
can_interact
=
interact
self
.
namemappers
=
[
CodeNameMapper
(
self
.
can_interact
)]
if
othernamemappers
:
if
othernamemappers
:
self
.
othernamemappers
=
othernamemappers
[:]
self
.
othernamemappers
=
othernamemappers
[:]
else
:
else
:
self
.
othernamemappers
=
[]
self
.
othernamemappers
=
[]
if
basesuite
:
if
basesuite
:
basemapper
=
CodeNameMapper
()
basemapper
=
CodeNameMapper
(
self
.
can_interact
)
basemapper
.
addmodule
(
basesuite
,
''
,
1
)
basemapper
.
addmodule
(
basesuite
,
''
,
1
)
self
.
namemappers
.
append
(
basemapper
)
self
.
namemappers
.
append
(
basemapper
)
...
@@ -755,11 +775,14 @@ class ObjectCompiler:
...
@@ -755,11 +775,14 @@ class ObjectCompiler:
else
:
else
:
m
=
None
m
=
None
if
not
m
:
return
None
,
None
,
None
if
not
m
:
return
None
,
None
,
None
mapper
=
CodeNameMapper
()
mapper
=
CodeNameMapper
(
self
.
can_interact
)
mapper
.
addmodule
(
m
,
m
.
__name__
,
0
)
mapper
.
addmodule
(
m
,
m
.
__name__
,
0
)
self
.
namemappers
.
append
(
mapper
)
self
.
namemappers
.
append
(
mapper
)
def
askdefinitionmodule
(
self
,
type
,
code
):
def
askdefinitionmodule
(
self
,
type
,
code
):
if
not
self
.
can_interact
:
print
"** No definition for %s '%s' found"
%
(
type
,
code
)
return
None
path
=
EasyDialogs
.
AskFileForSave
(
message
=
'Where is %s %s declared?'
%
(
type
,
code
))
path
=
EasyDialogs
.
AskFileForSave
(
message
=
'Where is %s %s declared?'
%
(
type
,
code
))
if
not
path
:
return
if
not
path
:
return
path
,
file
=
os
.
path
.
split
(
path
)
path
,
file
=
os
.
path
.
split
(
path
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment