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():
--resource Parse resource file in stead of launching application (-r)
--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)
--creator code Set creator code for package (-c)
"""
)
sys
.
exit
(
1
)
def
main
():
if
len
(
sys
.
argv
)
>
1
:
SHORTOPTS
=
"rb:o:e:"
LONGOPTS
=
(
"resource"
,
"base="
,
"output="
,
"edit="
)
SHORTOPTS
=
"rb:o:e:
c:
"
LONGOPTS
=
(
"resource"
,
"base="
,
"output="
,
"edit="
,
"creator="
)
try
:
opts
,
args
=
getopt
.
getopt
(
sys
.
argv
[
1
:],
SHORTOPTS
,
LONGOPTS
)
except
getopt
.
GetoptError
:
...
...
@@ -49,6 +50,7 @@ def main():
basepkgname
=
'StdSuites'
output
=
None
edit_modnames
=
[]
creatorsignature
=
None
for
o
,
a
in
opts
:
if
o
in
(
'-r'
,
'--resource'
):
...
...
@@ -62,6 +64,12 @@ def main():
if
len
(
split
)
!=
2
:
usage
()
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
:
sys
.
stderr
.
write
(
"%s: cannot specify --output with multiple inputs
\
n
"
%
sys
.
argv
[
0
])
...
...
@@ -69,7 +77,7 @@ def main():
for
filename
in
args
:
process_func
(
filename
,
output
=
output
,
basepkgname
=
basepkgname
,
edit_modnames
=
edit_modnames
)
edit_modnames
=
edit_modnames
,
creatorsignature
=
creatorsignature
)
else
:
# The dialogOptionFlags below allows selection of .app bundles.
filename
=
EasyDialogs
.
AskFileForOpen
(
...
...
@@ -84,7 +92,8 @@ def main():
print
"Retry, manually parsing resources"
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"""
cur
=
CurResFile
()
print
"Processing"
,
fullname
...
...
@@ -112,9 +121,11 @@ def processfile_fromresource(fullname, output=None, basepkgname=None, edit_modna
# switch back (needed for dialogs in Python)
UseResFile
(
cur
)
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"""
aedescobj
,
launched
=
OSATerminology
.
GetSysTerminology
(
fullname
)
if
launched
:
...
...
@@ -128,12 +139,15 @@ def processfile(fullname, output=None, basepkgname=None, edit_modnames=None):
return
aedata
=
raw
[
0
]
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
:
compileaete
(
aete
,
resinfo
,
fullname
,
output
=
output
,
basepkgname
=
basepkgname
,
edit_modnames
=
edit_modnames
)
basepkgname
=
basepkgname
,
edit_modnames
=
edit_modnames
,
creatorsignature
=
creatorsignature
)
def
decode
(
data
):
"""Decode a resource into a python data structure"""
...
...
@@ -298,11 +312,13 @@ getaete = [
(
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"""
[
version
,
language
,
script
,
suites
]
=
aete
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
])
if
language
:
packagename
=
packagename
+
'_lang%d'
%
language
...
...
@@ -344,7 +360,8 @@ def compileaete(aete, resinfo, fname, output=None, basepkgname=None, edit_modnam
suitelist
.
append
((
code
,
modname
))
allsuites
.
append
(
suiteinfo
)
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'
)
fp
=
open
(
initfilename
,
'w'
)
MacOS
.
SetCreatorAndType
(
initfilename
,
'Pyth'
,
'TEXT'
)
...
...
@@ -443,7 +460,7 @@ def precompilesuite(suite, basepackage=None, edit_modnames=None, output=None):
for
event
in
events
:
findenumsinevent
(
event
,
enumsneeded
)
objc
=
ObjectCompiler
(
None
,
basemodule
)
objc
=
ObjectCompiler
(
None
,
basemodule
,
interact
=
(
edit_modnames
is
None
)
)
for
cls
in
classes
:
objc
.
compileclass
(
cls
)
for
cls
in
classes
:
...
...
@@ -462,7 +479,8 @@ def precompilesuite(suite, basepackage=None, edit_modnames=None, output=None):
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"""
[
name
,
desc
,
code
,
level
,
version
,
events
,
classes
,
comps
,
enums
]
=
suite
...
...
@@ -500,7 +518,7 @@ def compilesuite((suite, pathname, modname), major, minor, language, script, fna
else
:
fp
.
write
(
"
\
t
pass
\
n
\
n
"
)
objc
=
ObjectCompiler
(
fp
,
basemodule
,
precompinfo
)
objc
=
ObjectCompiler
(
fp
,
basemodule
,
precompinfo
,
interact
=
interact
)
for
cls
in
classes
:
objc
.
compileclass
(
cls
)
for
cls
in
classes
:
...
...
@@ -654,7 +672,7 @@ def findenumsinevent(event, enumsneeded):
#
class
CodeNameMapper
:
def
__init__
(
self
):
def
__init__
(
self
,
interact
=
1
):
self
.
code2name
=
{
"property"
:
{},
"class"
:
{},
...
...
@@ -669,6 +687,7 @@ class CodeNameMapper:
}
self
.
modulename
=
None
self
.
star_imported
=
0
self
.
can_interact
=
interact
def
addnamecode
(
self
,
type
,
name
,
code
):
self
.
name2code
[
type
][
name
]
=
code
...
...
@@ -712,16 +731,17 @@ class CodeNameMapper:
return
self
class
ObjectCompiler
:
def
__init__
(
self
,
fp
,
basesuite
=
None
,
othernamemappers
=
None
):
def
__init__
(
self
,
fp
,
basesuite
=
None
,
othernamemappers
=
None
,
interact
=
1
):
self
.
fp
=
fp
self
.
basesuite
=
basesuite
self
.
namemappers
=
[
CodeNameMapper
()]
self
.
can_interact
=
interact
self
.
namemappers
=
[
CodeNameMapper
(
self
.
can_interact
)]
if
othernamemappers
:
self
.
othernamemappers
=
othernamemappers
[:]
else
:
self
.
othernamemappers
=
[]
if
basesuite
:
basemapper
=
CodeNameMapper
()
basemapper
=
CodeNameMapper
(
self
.
can_interact
)
basemapper
.
addmodule
(
basesuite
,
''
,
1
)
self
.
namemappers
.
append
(
basemapper
)
...
...
@@ -755,11 +775,14 @@ class ObjectCompiler:
else
:
m
=
None
if
not
m
:
return
None
,
None
,
None
mapper
=
CodeNameMapper
()
mapper
=
CodeNameMapper
(
self
.
can_interact
)
mapper
.
addmodule
(
m
,
m
.
__name__
,
0
)
self
.
namemappers
.
append
(
mapper
)
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
))
if
not
path
:
return
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