From ee0810403dc95f232c0217876e026bac6667e8ae Mon Sep 17 00:00:00 2001 From: Jack Jansen Date: Fri, 21 Apr 2000 23:53:37 +0000 Subject: [PATCH] Made the GUSI options work again with GUSI 2. --- Mac/Include/macglue.h | 4 ++++ Mac/Python/gusiconfig.cpp | 41 +++++++++++++++++++++++++++++++++++---- Mac/Python/macgetpath.c | 4 ++-- 3 files changed, 43 insertions(+), 6 deletions(-) diff --git a/Mac/Include/macglue.h b/Mac/Include/macglue.h index ec2dfbd93d3..fe8d6915876 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 c69498f00be..943a0a674b4 100644 --- a/Mac/Python/gusiconfig.cpp +++ b/Mac/Python/gusiconfig.cpp @@ -5,9 +5,11 @@ #define GUSI_SOURCE #include #include +#include #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() { - GUSIConfiguration * config = - GUSIConfiguration::CreateInstance(GUSIConfiguration::kNoResource); + 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; + } + } - config->ConfigureDefaultTypeCreator('TEXT', 'TEXT'); + /* Now we have the right resource file topmost and the id. Init GUSI. */ + GUSIConfiguration * config = + GUSIConfiguration::CreateInstance(resource_id); + + /* Finally restore the old resource file */ + if ( prefrh != -1) CloseResFile(prefrh); + UseResFile(oldrh); + + 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 d1c60a07d8e..bc957cc7c43 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 */