summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Mac/Include/macglue.h4
-rw-r--r--Mac/Python/gusiconfig.cpp39
-rw-r--r--Mac/Python/macgetpath.c4
3 files changed, 42 insertions, 5 deletions
diff --git a/Mac/Include/macglue.h b/Mac/Include/macglue.h
index ec2dfbd..fe8d691 100644
--- a/Mac/Include/macglue.h
+++ b/Mac/Include/macglue.h
@@ -127,6 +127,10 @@ PyObject *PyMac_Buildwide(wide *); /* Convert wide to PyObject */
void PyMac_InitApplet(void); /* Initialize and run an Applet */
void PyMac_Initialize(void); /* Initialize function for embedding Python */
+#ifdef USE_GUSI2
+short PyMac_OpenPrefFile(void); /* From macgetpath.c, open and return preference file */
+#endif
+
/* From macfiletype.c: */
long getfiletype(char *); /* Get file type */
diff --git a/Mac/Python/gusiconfig.cpp b/Mac/Python/gusiconfig.cpp
index c69498f..943a0a6 100644
--- a/Mac/Python/gusiconfig.cpp
+++ b/Mac/Python/gusiconfig.cpp
@@ -5,9 +5,11 @@
#define GUSI_SOURCE
#include <GUSIConfig.h>
#include <sys/cdefs.h>
+#include <Resources.h>
#include "Python.h"
#include "macglue.h"
+#include "pythonresources.h"
static void
PyMac_GUSISpin(bool wait)
@@ -79,13 +81,44 @@ void GUSISetupDevices()
GUSIConfiguration::FileSuffix sSuffices[] = {
"", '????', '????'
};
-
extern "C" void GUSISetupConfig()
{
+ Handle h;
+ short oldrh, prefrh = -1;
+ short resource_id = GUSIConfiguration::kNoResource;
+
+ oldrh = CurResFile();
+
+ /* Try override from the application resource fork */
+ UseResFile(PyMac_AppRefNum);
+ h = Get1Resource('GU\267I', GUSIOPTIONSOVERRIDE_ID);
+ if ( h ) {
+ resource_id = GUSIOPTIONSOVERRIDE_ID;
+ } else {
+ /* Next try normal resource from preference file */
+ prefrh = PyMac_OpenPrefFile();
+ h = Get1Resource('GU\267I', GUSIOPTIONS_ID);
+ if ( h ) {
+ resource_id = GUSIOPTIONS_ID;
+ } else {
+ /* Finally try normal resource from application */
+ if ( prefrh != -1 ) {
+ CloseResFile(prefrh);
+ prefrh = -1;
+ }
+ resource_id = GUSIOPTIONS_ID;
+ }
+ }
+
+ /* Now we have the right resource file topmost and the id. Init GUSI. */
GUSIConfiguration * config =
- GUSIConfiguration::CreateInstance(GUSIConfiguration::kNoResource);
+ GUSIConfiguration::CreateInstance(resource_id);
+
+ /* Finally restore the old resource file */
+ if ( prefrh != -1) CloseResFile(prefrh);
+ UseResFile(oldrh);
- config->ConfigureDefaultTypeCreator('TEXT', 'TEXT');
+ config->ConfigureDefaultTypeCreator('ttxt', 'TEXT');
config->ConfigureSuffices(
sizeof(sSuffices)/sizeof(GUSIConfiguration::FileSuffix)-1, sSuffices);
config->ConfigureAutoInitGraf(false);
diff --git a/Mac/Python/macgetpath.c b/Mac/Python/macgetpath.c
index d1c60a0..bc957cc 100644
--- a/Mac/Python/macgetpath.c
+++ b/Mac/Python/macgetpath.c
@@ -189,7 +189,7 @@ Py_GetPath()
/*
** Open/create the Python Preferences file, return the handle
*/
-static short
+short
PyMac_OpenPrefFile()
{
AliasHandle handle;
@@ -467,4 +467,4 @@ PyMac_SetGUSIOptions()
if ( prefrh != -1) CloseResFile(prefrh);
UseResFile(oldrh);
}
-#endif /* USE_GUSI */
+#endif /* USE_GUSI1 */