From dde800ec4ee704d0c4d6d0b60d74e72e0ea834d8 Mon Sep 17 00:00:00 2001 From: Jack Jansen Date: Thu, 7 Nov 2002 23:07:05 +0000 Subject: [PATCH] Got rid of the python.rsrc resource file. The error message strings and dialogs are now stored in Mac/Lib, and loaded on demand through macresource. Not only does this simplify a MacPython based on Apple's Python, but it also makes Mac error codes come out symbolically when running command line python (if you have Mac/Lib in your path). The resource files are copied from Mac/Resources. The old ones will disappear after the OS9 build procedure has been adjusted. --- Mac/Lib/EasyDialogs.py | 16 ++++++++++- Mac/Lib/buildtools.py | 57 +++++++++++----------------------------- Mac/Lib/dialogs.rsrc | Bin 0 -> 19016 bytes Mac/Lib/errors.rsrc | Bin 0 -> 86868 bytes Mac/Lib/macresource.py | 5 ++++ Mac/OSX/Makefile | 38 ++++----------------------- Python/mactoolboxglue.c | 34 ++++++++++++++++++++++++ 7 files changed, 74 insertions(+), 76 deletions(-) create mode 100644 Mac/Lib/dialogs.rsrc create mode 100644 Mac/Lib/errors.rsrc diff --git a/Mac/Lib/EasyDialogs.py b/Mac/Lib/EasyDialogs.py index 52aad9791d9e..8b810635ca0a 100644 --- a/Mac/Lib/EasyDialogs.py +++ b/Mac/Lib/EasyDialogs.py @@ -27,6 +27,15 @@ import MacOS import string from Carbon.ControlAccessor import * # Also import Controls constants import macfs +import macresource + +_initialized = 0 + +def _initialize(): + global _initialized + if _initialized: return + macresource.need("DLOG", 260, "dialogs.rsrc", __name__) + def cr2lf(text): if '\r' in text: @@ -47,7 +56,7 @@ def Message(msg, id=260, ok=None): The MESSAGE string can be at most 255 characters long. """ - + _initialize() d = GetNewDialog(id, -1) if not d: print "EasyDialogs: Can't get DLOG resource with id =", id, " (missing resource file?)" @@ -79,6 +88,7 @@ def AskString(prompt, default = "", id=261, ok=None, cancel=None): can be at most 255 characters long. """ + _initialize() d = GetNewDialog(id, -1) if not d: print "EasyDialogs: Can't get DLOG resource with id =", id, " (missing resource file?)" @@ -119,6 +129,7 @@ def AskPassword(prompt, default='', id=264, ok=None, cancel=None): The PROMPT and DEFAULT strings, as well as the return value, can be at most 255 characters long. """ + _initialize() d = GetNewDialog(id, -1) if not d: print "EasyDialogs: Can't get DLOG resource with id =", id, " (missing resource file?)" @@ -161,6 +172,7 @@ def AskYesNoCancel(question, default = 0, yes=None, no=None, cancel=None, id=262 The QUESTION string can be at most 255 characters. """ + _initialize() d = GetNewDialog(id, -1) if not d: print "EasyDialogs: Can't get DLOG resource with id =", id, " (missing resource file?)" @@ -221,6 +233,7 @@ class ProgressBar: def __init__(self, title="Working...", maxval=0, label="", id=263): self.w = None self.d = None + _initialize() self.d = GetNewDialog(id, -1) self.w = self.d.GetDialogWindow() self.label(label) @@ -391,6 +404,7 @@ def _selectoption(d, optionlist, idx): def GetArgv(optionlist=None, commandlist=None, addoldfile=1, addnewfile=1, addfolder=1, id=ARGV_ID): + _initialize() d = GetNewDialog(id, -1) if not d: print "EasyDialogs: Can't get DLOG resource with id =", id, " (missing resource file?)" diff --git a/Mac/Lib/buildtools.py b/Mac/Lib/buildtools.py index a02c609901ba..163f19a0cf05 100644 --- a/Mac/Lib/buildtools.py +++ b/Mac/Lib/buildtools.py @@ -353,58 +353,31 @@ def process_common_macho(template, progress, code, rsrcname, destname, is_update ofp.close() - if progress: - progress.label("Copy resources...") - progress.set(20) - resfilename = 'python.rsrc' # XXXX later: '%s.rsrc' % shortname - try: - output = Res.FSOpenResourceFile( - os.path.join(destname, 'Contents', 'Resources', resfilename), - u'', WRITE) - except MacOS.Error: - fsr, dummy = Res.FSCreateResourceFile( - os.path.join(destname, 'Contents', 'Resources'), - unicode(resfilename), '') - output = Res.FSOpenResourceFile(fsr, u'', WRITE) - # Copy the resources from the target specific resource template, if any typesfound, ownertype = [], None try: input = macresource.open_pathname(rsrcname) except (MacOS.Error, ValueError): - pass if progress: progress.inc(50) else: + if progress: + progress.label("Copy resources...") + progress.set(20) + resfilename = 'python.rsrc' # XXXX later: '%s.rsrc' % shortname + try: + output = Res.FSOpenResourceFile( + os.path.join(destname, 'Contents', 'Resources', resfilename), + u'', WRITE) + except MacOS.Error: + fsr, dummy = Res.FSCreateResourceFile( + os.path.join(destname, 'Contents', 'Resources'), + unicode(resfilename), '') + output = Res.FSOpenResourceFile(fsr, u'', WRITE) + typesfound, ownertype = copyres(input, output, [], 0, progress) Res.CloseResFile(input) - - # Check which resource-types we should not copy from the template - skiptypes = [] -## if 'vers' in typesfound: skiptypes.append('vers') -## if 'SIZE' in typesfound: skiptypes.append('SIZE') -## if 'BNDL' in typesfound: skiptypes = skiptypes + ['BNDL', 'FREF', 'icl4', -## 'icl8', 'ics4', 'ics8', 'ICN#', 'ics#'] -## if not copy_codefragment: -## skiptypes.append('cfrg') -## skipowner = (ownertype <> None) - - # Copy the resources from the template - - input = Res.FSOpenResourceFile( - os.path.join(template, 'Contents', 'Resources', 'python.rsrc'), u'', READ) - if progress: - progress.label("Copy standard resources...") - progress.inc(0) -## dummy, tmplowner = copyres(input, output, skiptypes, 1, progress) - dummy, tmplowner = copyres(input, output, skiptypes, 1, None) - - Res.CloseResFile(input) -## if ownertype == None: -## raise BuildError, "No owner resource found in either resource file or template" - # Make sure we're manipulating the output resource file now - - Res.CloseResFile(output) + Res.CloseResFile(output) if code: if raw: diff --git a/Mac/Lib/dialogs.rsrc b/Mac/Lib/dialogs.rsrc new file mode 100644 index 0000000000000000000000000000000000000000..711bd5b26bc24a62d401f5b564fcd9edb4bc393c GIT binary patch literal 19016 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 dialogs.r ; \ - $(DEREZ) -useDF -skip ckid dialogs.rsrc > dialogs.r ; \ - else \ - echo $(DEREZ) -skip ckid $(RESOURCEDIR)/dialogs.rsrc > dialogs.r ; \ - $(DEREZ) -skip ckid $(RESOURCEDIR)/dialogs.rsrc > dialogs.r ; \ - fi - @if test -s $(RESOURCEDIR)/errors.rsrc; then \ - echo $(PYTHON) $(RFCONVERTER) -r $(RESOURCEDIR)/errors.rsrc errors.rsrc ;\ - $(PYTHON) $(RFCONVERTER) -r $(RESOURCEDIR)/errors.rsrc errors.rsrc ; \ - echo $(DEREZ) -useDF -skip ckid errors.rsrc > errors.r ; \ - $(DEREZ) -useDF -skip ckid errors.rsrc > errors.r ; \ - else \ - echo $(DEREZ) -skip ckid $(RESOURCEDIR)/errors.rsrc > errors.r ; \ - $(DEREZ) -skip ckid $(RESOURCEDIR)/errors.rsrc > errors.r ; \ - fi - $(REZ) -useDF -o $(RESOURCEFILE) dialogs.r errors.r - $(INSTALL_DATA) $(RESOURCEFILE) $(APPINSTALLDIR)/Contents/Resources/$(RESOURCEFILE) # Finally create the documentation symlink $(LN) -fsn ../../../../English.lproj/Documentation $(APPINSTALLDIR)/Contents/Resources/English.lproj/Documentation @@ -205,11 +177,11 @@ installmacsubtree: echo $(INSTALL_DATA) $$i $(MACLIBDEST); \ fi; \ done -## @for i in $(MACLIBSRC)/*.rsrc; \ -## do \ -## echo $(CPMAC) $$i $$b ; \ -## $(CPMAC) $$i $$b ; \ -## done + @for i in $(MACLIBSRC)/*.rsrc; \ + do \ + echo $(CPMAC) $$i $(MACLIBDEST) ; \ + $(CPMAC) $$i $(MACLIBDEST) ; \ + done @for d in $(MACLIBSUBDIRS); \ do \ a=$(MACLIBSRC)/$$d; \ diff --git a/Python/mactoolboxglue.c b/Python/mactoolboxglue.c index 13e7afa6be5a..dd42f07d1e6e 100644 --- a/Python/mactoolboxglue.c +++ b/Python/mactoolboxglue.c @@ -81,8 +81,42 @@ char *PyMac_StrError(int err) static char buf[256]; Handle h; char *str; + static int errors_loaded; h = GetResource('Estr', err); + if (!h && !errors_loaded) { + /* + ** Attempt to open the resource file containing the + ** Estr resources. We ignore all errors. We also try + ** this only once. + */ + errors_loaded = 1; + PyObject *m, *rv; + + m = PyImport_ImportModule("macresource"); + if (!m) { + if (Py_VerboseFlag) + PyErr_Print(); + PyErr_Clear(); + } else { + rv = PyObject_CallMethod(m, "open_error_resource", ""); + if (!rv) { + if (Py_VerboseFlag) + PyErr_Print(); + PyErr_Clear(); + } else { + Py_DECREF(rv); + /* And try again... */ + h = GetResource('Estr', err); + } + } + } + /* + ** Whether the code above succeeded or not, we won't try + ** again. + */ + errors_loaded = 1; + if ( h ) { HLock(h); str = (char *)*h; -- 2.47.3