]> granicus.if.org Git - python/commitdiff
Made the GUSI options work again with GUSI 2.
authorJack Jansen <jack.jansen@cwi.nl>
Fri, 21 Apr 2000 23:53:37 +0000 (23:53 +0000)
committerJack Jansen <jack.jansen@cwi.nl>
Fri, 21 Apr 2000 23:53:37 +0000 (23:53 +0000)
Mac/Include/macglue.h
Mac/Python/gusiconfig.cpp
Mac/Python/macgetpath.c

index ec2dfbd93d3668140c65eeff8ca92df0dd0e87b2..fe8d69158762bed3da0822ea945ba8ef9803f70c 100644 (file)
@@ -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 */
index c69498f00be51392b2c3bafd37a5eebd7662b322..943a0a674b47f538f5b671a80ab40052b5ab6673 100644 (file)
@@ -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);
index d1c60a07d8ecac60475c589454a87606765ff2b4..bc957cc7c4385e180c50ad71441b657512c047ae 100644 (file)
@@ -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 */