blob: df292fa5544b534068a9c552e9e4d1280926d651 [file] [log] [blame]
Jack Jansen2d1306b2000-04-07 09:10:49 +00001/*
2 * Generated with the GUSIConfig application and then hand-modified by jack.
3 */
4
5#define GUSI_SOURCE
6#include <GUSIConfig.h>
7#include <sys/cdefs.h>
Jack Jansenee081042000-04-21 23:53:37 +00008#include <Resources.h>
Jack Jansen2d1306b2000-04-07 09:10:49 +00009
10#include "Python.h"
11#include "macglue.h"
Jack Jansenee081042000-04-21 23:53:37 +000012#include "pythonresources.h"
Jack Jansen2d1306b2000-04-07 09:10:49 +000013
14static void
15PyMac_GUSISpin(bool wait)
16{
17 static Boolean inForeground = true;
18 int maxsleep = 6; /* 6 ticks is "normal" sleeptime */
19
20 if (PyMac_ConsoleIsDead) return;
21
22 if ( !wait )
23 maxsleep = 0;
24
25 PyMac_DoYield(maxsleep, 0); /* XXXX or is it safe to call python here? */
26}
27
28
29/* Declarations of Socket Factories */
30
31__BEGIN_DECLS
32void GUSIwithInetSockets();
33void GUSIwithLocalSockets();
34void GUSIwithMTInetSockets();
35void GUSIwithMTTcpSockets();
36void GUSIwithMTUdpSockets();
37void GUSIwithOTInetSockets();
38void GUSIwithOTTcpSockets();
39void GUSIwithOTUdpSockets();
40void GUSIwithPPCSockets();
41void GUSISetupFactories();
42__END_DECLS
43
44/* Configure Socket Factories */
45
46void GUSISetupFactories()
47{
48#ifdef GUSISetupFactories_BeginHook
49 GUSISetupFactories_BeginHook
50#endif
Jack Jansenfb106c82000-08-17 20:04:26 +000051#if 1 || TARGET_API_MAC_CARBON
Jack Jansend843a012000-08-17 20:01:24 +000052 GUSIwithInetSockets();
53#else
Jack Jansen9cfce182000-05-10 15:15:54 +000054 GUSIwithMTInetSockets();
Jack Jansend843a012000-08-17 20:01:24 +000055#endif
Jack Jansen2d1306b2000-04-07 09:10:49 +000056#ifdef GUSISetupFactories_EndHook
57 GUSISetupFactories_EndHook
58#endif
59}
60
61/* Declarations of File Devices */
62
63__BEGIN_DECLS
64void GUSIwithDConSockets();
65void GUSIwithNullSockets();
66void GUSISetupDevices();
67__END_DECLS
68
69/* Configure File Devices */
70
71void GUSISetupDevices()
72{
73#ifdef GUSISetupDevices_BeginHook
74 GUSISetupDevices_BeginHook
75#endif
76#ifdef GUSISetupDevices_EndHook
77 GUSISetupDevices_EndHook
78#endif
79}
80
81#ifndef __cplusplus
82#error GUSISetupConfig() needs to be written in C++
83#endif
84
85GUSIConfiguration::FileSuffix sSuffices[] = {
86 "", '????', '????'
87};
Jack Jansen2d1306b2000-04-07 09:10:49 +000088extern "C" void GUSISetupConfig()
89{
Jack Jansenee081042000-04-21 23:53:37 +000090 Handle h;
91 short oldrh, prefrh = -1;
92 short resource_id = GUSIConfiguration::kNoResource;
93
94 oldrh = CurResFile();
95
96 /* Try override from the application resource fork */
97 UseResFile(PyMac_AppRefNum);
98 h = Get1Resource('GU\267I', GUSIOPTIONSOVERRIDE_ID);
99 if ( h ) {
100 resource_id = GUSIOPTIONSOVERRIDE_ID;
101 } else {
102 /* Next try normal resource from preference file */
103 prefrh = PyMac_OpenPrefFile();
104 h = Get1Resource('GU\267I', GUSIOPTIONS_ID);
105 if ( h ) {
106 resource_id = GUSIOPTIONS_ID;
107 } else {
108 /* Finally try normal resource from application */
109 if ( prefrh != -1 ) {
110 CloseResFile(prefrh);
111 prefrh = -1;
112 }
113 resource_id = GUSIOPTIONS_ID;
114 }
115 }
Jack Jansen2d1306b2000-04-07 09:10:49 +0000116
Jack Jansenee081042000-04-21 23:53:37 +0000117 /* Now we have the right resource file topmost and the id. Init GUSI. */
118 GUSIConfiguration * config =
119 GUSIConfiguration::CreateInstance(resource_id);
120
121 /* Finally restore the old resource file */
122 if ( prefrh != -1) CloseResFile(prefrh);
123 UseResFile(oldrh);
124
Jack Jansend843a012000-08-17 20:01:24 +0000125 config->ConfigureDefaultTypeCreator('TEXT', 'R*ch');
126#if 0
Jack Jansen2d1306b2000-04-07 09:10:49 +0000127 config->ConfigureSuffices(
128 sizeof(sSuffices)/sizeof(GUSIConfiguration::FileSuffix)-1, sSuffices);
Jack Jansend843a012000-08-17 20:01:24 +0000129#endif
Jack Jansen2d1306b2000-04-07 09:10:49 +0000130 config->ConfigureAutoInitGraf(false);
131 config->ConfigureAutoSpin(false);
132 config->ConfigureHandleAppleEvents(false);
133 config->ConfigureSigInt(false);
134 config->ConfigureSigPipe(true);
135
136 GUSISetHook(GUSI_SpinHook, (GUSIHook)PyMac_GUSISpin);
137
138}
139
140/**************** END GUSI CONFIGURATION *************************/