annotate Mac/Python/macglue.c @ 3720:b341def4eef8 legacy-trunk

Ignore latex intermediate products.
author Guido van Rossum <guido@python.org>
date Wed, 26 Jun 1996 19:30:01 +0000
parents f89fa7e95b84
children 718c8af7be2a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2224
32435d33f34a cosmetics: copyright, comments
Guido van Rossum <guido@python.org>
parents: 2209
diff changeset
1 /***********************************************************
32435d33f34a cosmetics: copyright, comments
Guido van Rossum <guido@python.org>
parents: 2209
diff changeset
2 Copyright 1991-1995 by Stichting Mathematisch Centrum, Amsterdam,
32435d33f34a cosmetics: copyright, comments
Guido van Rossum <guido@python.org>
parents: 2209
diff changeset
3 The Netherlands.
32435d33f34a cosmetics: copyright, comments
Guido van Rossum <guido@python.org>
parents: 2209
diff changeset
4
32435d33f34a cosmetics: copyright, comments
Guido van Rossum <guido@python.org>
parents: 2209
diff changeset
5 All Rights Reserved
32435d33f34a cosmetics: copyright, comments
Guido van Rossum <guido@python.org>
parents: 2209
diff changeset
6
32435d33f34a cosmetics: copyright, comments
Guido van Rossum <guido@python.org>
parents: 2209
diff changeset
7 Permission to use, copy, modify, and distribute this software and its
32435d33f34a cosmetics: copyright, comments
Guido van Rossum <guido@python.org>
parents: 2209
diff changeset
8 documentation for any purpose and without fee is hereby granted,
32435d33f34a cosmetics: copyright, comments
Guido van Rossum <guido@python.org>
parents: 2209
diff changeset
9 provided that the above copyright notice appear in all copies and that
32435d33f34a cosmetics: copyright, comments
Guido van Rossum <guido@python.org>
parents: 2209
diff changeset
10 both that copyright notice and this permission notice appear in
32435d33f34a cosmetics: copyright, comments
Guido van Rossum <guido@python.org>
parents: 2209
diff changeset
11 supporting documentation, and that the names of Stichting Mathematisch
32435d33f34a cosmetics: copyright, comments
Guido van Rossum <guido@python.org>
parents: 2209
diff changeset
12 Centrum or CWI not be used in advertising or publicity pertaining to
32435d33f34a cosmetics: copyright, comments
Guido van Rossum <guido@python.org>
parents: 2209
diff changeset
13 distribution of the software without specific, written prior permission.
32435d33f34a cosmetics: copyright, comments
Guido van Rossum <guido@python.org>
parents: 2209
diff changeset
14
32435d33f34a cosmetics: copyright, comments
Guido van Rossum <guido@python.org>
parents: 2209
diff changeset
15 STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
32435d33f34a cosmetics: copyright, comments
Guido van Rossum <guido@python.org>
parents: 2209
diff changeset
16 THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
32435d33f34a cosmetics: copyright, comments
Guido van Rossum <guido@python.org>
parents: 2209
diff changeset
17 FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
32435d33f34a cosmetics: copyright, comments
Guido van Rossum <guido@python.org>
parents: 2209
diff changeset
18 FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
32435d33f34a cosmetics: copyright, comments
Guido van Rossum <guido@python.org>
parents: 2209
diff changeset
19 WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
32435d33f34a cosmetics: copyright, comments
Guido van Rossum <guido@python.org>
parents: 2209
diff changeset
20 ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
32435d33f34a cosmetics: copyright, comments
Guido van Rossum <guido@python.org>
parents: 2209
diff changeset
21 OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
32435d33f34a cosmetics: copyright, comments
Guido van Rossum <guido@python.org>
parents: 2209
diff changeset
22
32435d33f34a cosmetics: copyright, comments
Guido van Rossum <guido@python.org>
parents: 2209
diff changeset
23 ******************************************************************/
2035
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
24
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
25 #include "Python.h"
2337
71e60871c681 ported to Think C
Guido van Rossum <guido@python.org>
parents: 2333
diff changeset
26
2035
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
27 #include "macglue.h"
2350
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
28 #include "marshal.h"
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
29 #include "import.h"
2035
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
30
2988
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
31 #include "pythonresources.h"
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
32
2035
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
33 #include <OSUtils.h> /* for Set(Current)A5 */
2251
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
34 #include <Files.h>
2312
40aec48cd1e2 Added PyMac_GetPythonDir routine which obtains python home directory
Jack Jansen <jack.jansen@cwi.nl>
parents: 2276
diff changeset
35 #include <StandardFile.h>
2035
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
36 #include <Resources.h>
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
37 #include <Memory.h>
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
38 #include <Events.h>
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
39 #include <Windows.h>
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
40 #include <Desk.h>
2251
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
41 #include <Traps.h>
2262
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
42 #include <Processes.h>
2382
6450d8828d2b added applet initialization;
Guido van Rossum <guido@python.org>
parents: 2350
diff changeset
43 #include <Fonts.h>
6450d8828d2b added applet initialization;
Guido van Rossum <guido@python.org>
parents: 2350
diff changeset
44 #include <Menus.h>
2747
e41669a1dea0 Added code to obtain sys.path from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 2668
diff changeset
45 #include <TextUtils.h>
2265
4bcc92916fab added <OSEvents.h> for Think C
Guido van Rossum <guido@python.org>
parents: 2262
diff changeset
46 #ifdef THINK_C
4bcc92916fab added <OSEvents.h> for Think C
Guido van Rossum <guido@python.org>
parents: 2262
diff changeset
47 #include <OSEvents.h> /* For EvQElPtr */
4bcc92916fab added <OSEvents.h> for Think C
Guido van Rossum <guido@python.org>
parents: 2262
diff changeset
48 #endif
2443
2dcf7538347a Under MW also be more conservative about events to request
Jack Jansen <jack.jansen@cwi.nl>
parents: 2429
diff changeset
49 #ifdef __MWERKS__
2dcf7538347a Under MW also be more conservative about events to request
Jack Jansen <jack.jansen@cwi.nl>
parents: 2429
diff changeset
50 #include <SIOUX.h>
2dcf7538347a Under MW also be more conservative about events to request
Jack Jansen <jack.jansen@cwi.nl>
parents: 2429
diff changeset
51 #endif
3431
26bec9e22e5d Added code to make fsspecs work for gusi-python
Jack Jansen <jack.jansen@cwi.nl>
parents: 3278
diff changeset
52 #ifdef USE_GUSI
26bec9e22e5d Added code to make fsspecs work for gusi-python
Jack Jansen <jack.jansen@cwi.nl>
parents: 3278
diff changeset
53 #include <TFileSpec.h> /* For Path2FSSpec */
3433
578ca302a598 Replaced previous gusi-chdir() fix by a call to PyMac_FixGUSIcd()
Jack Jansen <jack.jansen@cwi.nl>
parents: 3431
diff changeset
54 #include <LowMem.h> /* For SetSFCurDir, etc */
3431
26bec9e22e5d Added code to make fsspecs work for gusi-python
Jack Jansen <jack.jansen@cwi.nl>
parents: 3278
diff changeset
55 #endif
2262
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
56
2382
6450d8828d2b added applet initialization;
Guido van Rossum <guido@python.org>
parents: 2350
diff changeset
57 #ifndef HAVE_UNIVERSAL_HEADERS
6450d8828d2b added applet initialization;
Guido van Rossum <guido@python.org>
parents: 2350
diff changeset
58 #define GetResourceSizeOnDisk(x) SizeResource(x)
2412
75ae104f7e6c ported to MPW, moved main() here
Guido van Rossum <guido@python.org>
parents: 2403
diff changeset
59 typedef DlgHookYDProcPtr DlgHookYDUPP;
75ae104f7e6c ported to MPW, moved main() here
Guido van Rossum <guido@python.org>
parents: 2403
diff changeset
60 #define NewDlgHookYDProc(userRoutine) ((DlgHookYDUPP) (userRoutine))
75ae104f7e6c ported to MPW, moved main() here
Guido van Rossum <guido@python.org>
parents: 2403
diff changeset
61 typedef FileFilterYDProcPtr FileFilterYDUPP;
2382
6450d8828d2b added applet initialization;
Guido van Rossum <guido@python.org>
parents: 2350
diff changeset
62 #endif
6450d8828d2b added applet initialization;
Guido van Rossum <guido@python.org>
parents: 2350
diff changeset
63
2262
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
64 #include <signal.h>
2350
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
65 #include <stdio.h>
2251
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
66
2262
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
67 /*
2443
2dcf7538347a Under MW also be more conservative about events to request
Jack Jansen <jack.jansen@cwi.nl>
parents: 2429
diff changeset
68 ** We have to be careful, since we can't handle
2262
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
69 ** things like updates (and they'll keep coming back if we don't
2443
2dcf7538347a Under MW also be more conservative about events to request
Jack Jansen <jack.jansen@cwi.nl>
parents: 2429
diff changeset
70 ** handle them). Note that we don't know who has windows open, so
2dcf7538347a Under MW also be more conservative about events to request
Jack Jansen <jack.jansen@cwi.nl>
parents: 2429
diff changeset
71 ** even handing updates off to SIOUX under MW isn't going to work.
2262
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
72 */
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
73 #define MAINLOOP_EVENTMASK (mDownMask|keyDownMask|osMask)
2251
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
74
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
75 #include <signal.h>
2035
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
76
2224
32435d33f34a cosmetics: copyright, comments
Guido van Rossum <guido@python.org>
parents: 2209
diff changeset
77 /* XXX We should include Errors.h here, but it has a name conflict
2176
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
78 ** with the python errors.h. */
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
79 #define fnfErr -43
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
80
2251
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
81 /* Declared in macfsmodule.c: */
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
82 extern FSSpec *mfs_GetFSSpecFSSpec();
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
83
2262
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
84 /* Interrupt code variables: */
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
85 static int interrupted; /* Set to true when cmd-. seen */
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
86 static RETSIGTYPE intcatcher Py_PROTO((int));
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
87
2251
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
88 /*
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
89 ** We attempt to be a good citizen by giving up the CPU periodically.
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
90 ** When in the foreground we do this less often and for shorter periods
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
91 ** than when in the background. At this time we also check for events and
2262
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
92 ** pass them off to SIOUX, if compiling with mwerks.
2251
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
93 ** The counts here are in ticks of 1/60th second.
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
94 ** XXXX The initial values here are not based on anything.
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
95 ** FG-python gives up the cpu for 1/60th 5 times per second,
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
96 ** BG-python for .2 second 10 times per second.
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
97 */
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
98 static long interval_fg = 12;
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
99 static long interval_bg = 6;
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
100 static long yield_fg = 1;
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
101 static long yield_bg = 12;
2262
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
102 static long lastyield;
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
103 static int in_foreground;
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
104
2429
efb0685a6c91 return old value of PyMac_DoYieldEnabled; -1 means do not even check for interrupts
Guido van Rossum <guido@python.org>
parents: 2426
diff changeset
105 /*
efb0685a6c91 return old value of PyMac_DoYieldEnabled; -1 means do not even check for interrupts
Guido van Rossum <guido@python.org>
parents: 2426
diff changeset
106 ** When > 0, do full scanning for events (program is not event aware)
efb0685a6c91 return old value of PyMac_DoYieldEnabled; -1 means do not even check for interrupts
Guido van Rossum <guido@python.org>
parents: 2426
diff changeset
107 ** when == 0, only scan for Command-period
efb0685a6c91 return old value of PyMac_DoYieldEnabled; -1 means do not even check for interrupts
Guido van Rossum <guido@python.org>
parents: 2426
diff changeset
108 ** when < 0, don't do any event scanning
efb0685a6c91 return old value of PyMac_DoYieldEnabled; -1 means do not even check for interrupts
Guido van Rossum <guido@python.org>
parents: 2426
diff changeset
109 */
efb0685a6c91 return old value of PyMac_DoYieldEnabled; -1 means do not even check for interrupts
Guido van Rossum <guido@python.org>
parents: 2426
diff changeset
110 int PyMac_DoYieldEnabled = 1;
2262
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
111
2988
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
112 /*
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
113 ** Some stuff for our GetDirectory and PromptGetFile routines
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
114 */
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
115 struct hook_args {
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
116 int selectcur_hit; /* Set to true when "select current" selected */
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
117 char *prompt; /* The prompt */
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
118 };
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
119 static DlgHookYDUPP myhook_upp;
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
120 static int upp_inited = 0;
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
121
3433
578ca302a598 Replaced previous gusi-chdir() fix by a call to PyMac_FixGUSIcd()
Jack Jansen <jack.jansen@cwi.nl>
parents: 3431
diff changeset
122 #ifdef USE_GUSI
578ca302a598 Replaced previous gusi-chdir() fix by a call to PyMac_FixGUSIcd()
Jack Jansen <jack.jansen@cwi.nl>
parents: 3431
diff changeset
123 /*
578ca302a598 Replaced previous gusi-chdir() fix by a call to PyMac_FixGUSIcd()
Jack Jansen <jack.jansen@cwi.nl>
parents: 3431
diff changeset
124 ** GUSI (1.6.0 and earlier, at the least) do not set the MacOS idea of
578ca302a598 Replaced previous gusi-chdir() fix by a call to PyMac_FixGUSIcd()
Jack Jansen <jack.jansen@cwi.nl>
parents: 3431
diff changeset
125 ** the working directory. Hence, we call this routine after each call
578ca302a598 Replaced previous gusi-chdir() fix by a call to PyMac_FixGUSIcd()
Jack Jansen <jack.jansen@cwi.nl>
parents: 3431
diff changeset
126 ** to chdir() to rectify things.
578ca302a598 Replaced previous gusi-chdir() fix by a call to PyMac_FixGUSIcd()
Jack Jansen <jack.jansen@cwi.nl>
parents: 3431
diff changeset
127 */
578ca302a598 Replaced previous gusi-chdir() fix by a call to PyMac_FixGUSIcd()
Jack Jansen <jack.jansen@cwi.nl>
parents: 3431
diff changeset
128 void
578ca302a598 Replaced previous gusi-chdir() fix by a call to PyMac_FixGUSIcd()
Jack Jansen <jack.jansen@cwi.nl>
parents: 3431
diff changeset
129 PyMac_FixGUSIcd()
578ca302a598 Replaced previous gusi-chdir() fix by a call to PyMac_FixGUSIcd()
Jack Jansen <jack.jansen@cwi.nl>
parents: 3431
diff changeset
130 {
578ca302a598 Replaced previous gusi-chdir() fix by a call to PyMac_FixGUSIcd()
Jack Jansen <jack.jansen@cwi.nl>
parents: 3431
diff changeset
131 WDPBRec pb;
578ca302a598 Replaced previous gusi-chdir() fix by a call to PyMac_FixGUSIcd()
Jack Jansen <jack.jansen@cwi.nl>
parents: 3431
diff changeset
132 FSSpec curdirfss;
578ca302a598 Replaced previous gusi-chdir() fix by a call to PyMac_FixGUSIcd()
Jack Jansen <jack.jansen@cwi.nl>
parents: 3431
diff changeset
133
578ca302a598 Replaced previous gusi-chdir() fix by a call to PyMac_FixGUSIcd()
Jack Jansen <jack.jansen@cwi.nl>
parents: 3431
diff changeset
134 if ( Path2FSSpec(":x", &curdirfss) != noErr )
578ca302a598 Replaced previous gusi-chdir() fix by a call to PyMac_FixGUSIcd()
Jack Jansen <jack.jansen@cwi.nl>
parents: 3431
diff changeset
135 return;
578ca302a598 Replaced previous gusi-chdir() fix by a call to PyMac_FixGUSIcd()
Jack Jansen <jack.jansen@cwi.nl>
parents: 3431
diff changeset
136
578ca302a598 Replaced previous gusi-chdir() fix by a call to PyMac_FixGUSIcd()
Jack Jansen <jack.jansen@cwi.nl>
parents: 3431
diff changeset
137 /* Set MacOS "working directory" */
578ca302a598 Replaced previous gusi-chdir() fix by a call to PyMac_FixGUSIcd()
Jack Jansen <jack.jansen@cwi.nl>
parents: 3431
diff changeset
138 pb.ioNamePtr= "\p";
578ca302a598 Replaced previous gusi-chdir() fix by a call to PyMac_FixGUSIcd()
Jack Jansen <jack.jansen@cwi.nl>
parents: 3431
diff changeset
139 pb.ioVRefNum= curdirfss.vRefNum;
578ca302a598 Replaced previous gusi-chdir() fix by a call to PyMac_FixGUSIcd()
Jack Jansen <jack.jansen@cwi.nl>
parents: 3431
diff changeset
140 pb.ioWDDirID= curdirfss.parID;
578ca302a598 Replaced previous gusi-chdir() fix by a call to PyMac_FixGUSIcd()
Jack Jansen <jack.jansen@cwi.nl>
parents: 3431
diff changeset
141 if (PBHSetVol(&pb, 0) != noErr)
578ca302a598 Replaced previous gusi-chdir() fix by a call to PyMac_FixGUSIcd()
Jack Jansen <jack.jansen@cwi.nl>
parents: 3431
diff changeset
142 return;
578ca302a598 Replaced previous gusi-chdir() fix by a call to PyMac_FixGUSIcd()
Jack Jansen <jack.jansen@cwi.nl>
parents: 3431
diff changeset
143
3478
89caffd2c061 Don't change Standard File folder on chdir().
Jack Jansen <jack.jansen@cwi.nl>
parents: 3433
diff changeset
144 #if 0
3433
578ca302a598 Replaced previous gusi-chdir() fix by a call to PyMac_FixGUSIcd()
Jack Jansen <jack.jansen@cwi.nl>
parents: 3431
diff changeset
145 /* Set standard-file working directory */
578ca302a598 Replaced previous gusi-chdir() fix by a call to PyMac_FixGUSIcd()
Jack Jansen <jack.jansen@cwi.nl>
parents: 3431
diff changeset
146 LMSetSFSaveDisk(-curdirfss.vRefNum);
578ca302a598 Replaced previous gusi-chdir() fix by a call to PyMac_FixGUSIcd()
Jack Jansen <jack.jansen@cwi.nl>
parents: 3431
diff changeset
147 LMSetCurDirStore(curdirfss.parID);
3478
89caffd2c061 Don't change Standard File folder on chdir().
Jack Jansen <jack.jansen@cwi.nl>
parents: 3433
diff changeset
148 #endif
3433
578ca302a598 Replaced previous gusi-chdir() fix by a call to PyMac_FixGUSIcd()
Jack Jansen <jack.jansen@cwi.nl>
parents: 3431
diff changeset
149 }
578ca302a598 Replaced previous gusi-chdir() fix by a call to PyMac_FixGUSIcd()
Jack Jansen <jack.jansen@cwi.nl>
parents: 3431
diff changeset
150 #endif
578ca302a598 Replaced previous gusi-chdir() fix by a call to PyMac_FixGUSIcd()
Jack Jansen <jack.jansen@cwi.nl>
parents: 3431
diff changeset
151
2988
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
152
2176
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
153 /* Convert C to Pascal string. Returns pointer to static buffer. */
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
154 unsigned char *
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
155 Pstring(char *str)
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
156 {
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
157 static Str255 buf;
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
158 int len;
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
159
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
160 len = strlen(str);
2209
4053d4cb50e0 renamed Get routines to PyMac_Get; added macfs to config.c
Guido van Rossum <guido@python.org>
parents: 2183
diff changeset
161 if (len > 255)
4053d4cb50e0 renamed Get routines to PyMac_Get; added macfs to config.c
Guido van Rossum <guido@python.org>
parents: 2183
diff changeset
162 len = 255;
2176
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
163 buf[0] = (unsigned char)len;
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
164 strncpy((char *)buf+1, str, len);
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
165 return buf;
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
166 }
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
167
2382
6450d8828d2b added applet initialization;
Guido van Rossum <guido@python.org>
parents: 2350
diff changeset
168 /* Like strerror() but for Mac OS error numbers */
6450d8828d2b added applet initialization;
Guido van Rossum <guido@python.org>
parents: 2350
diff changeset
169 char *PyMac_StrError(int err)
2035
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
170 {
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
171 static char buf[256];
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
172 Handle h;
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
173 char *str;
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
174
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
175 h = GetResource('Estr', err);
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
176 if ( h ) {
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
177 HLock(h);
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
178 str = (char *)*h;
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
179 memcpy(buf, str+1, (unsigned char)str[0]);
2324
faaece7ccd6e null-terminate the error string in macstrerror
Guido van Rossum <guido@python.org>
parents: 2312
diff changeset
180 buf[(unsigned char)str[0]] = '\0';
2035
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
181 HUnlock(h);
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
182 ReleaseResource(h);
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
183 } else {
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
184 sprintf(buf, "Mac OS error code %d", err);
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
185 }
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
186 return buf;
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
187 }
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
188
2231
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
189 /* Exception object shared by all Mac specific modules for Mac OS errors */
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
190 PyObject *PyMac_OSErrException;
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
191
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
192 /* Initialize and return PyMac_OSErrException */
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
193 PyObject *
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
194 PyMac_GetOSErrException()
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
195 {
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
196 if (PyMac_OSErrException == NULL)
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
197 PyMac_OSErrException = PyString_FromString("Mac OS Error");
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
198 return PyMac_OSErrException;
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
199 }
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
200
2035
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
201 /* Set a MAC-specific error from errno, and return NULL; return None if no error */
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
202 PyObject *
2136
c57b5c50a2d2 rename2 changes
Guido van Rossum <guido@python.org>
parents: 2035
diff changeset
203 PyErr_Mac(PyObject *eobj, int err)
2035
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
204 {
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
205 char *msg;
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
206 PyObject *v;
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
207
2183
62bdded5f00a modernized/rationalized, added PyMac_BuildOSType
Guido van Rossum <guido@python.org>
parents: 2176
diff changeset
208 if (err == 0 && !PyErr_Occurred()) {
2035
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
209 Py_INCREF(Py_None);
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
210 return Py_None;
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
211 }
2183
62bdded5f00a modernized/rationalized, added PyMac_BuildOSType
Guido van Rossum <guido@python.org>
parents: 2176
diff changeset
212 if (err == -1 && PyErr_Occurred())
62bdded5f00a modernized/rationalized, added PyMac_BuildOSType
Guido van Rossum <guido@python.org>
parents: 2176
diff changeset
213 return NULL;
2382
6450d8828d2b added applet initialization;
Guido van Rossum <guido@python.org>
parents: 2350
diff changeset
214 msg = PyMac_StrError(err);
2035
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
215 v = Py_BuildValue("(is)", err, msg);
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
216 PyErr_SetObject(eobj, v);
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
217 Py_DECREF(v);
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
218 return NULL;
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
219 }
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
220
2231
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
221 /* Call PyErr_Mac with PyMac_OSErrException */
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
222 PyObject *
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
223 PyMac_Error(OSErr err)
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
224 {
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
225 return PyErr_Mac(PyMac_GetOSErrException(), err);
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
226 }
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
227
2262
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
228 /* The catcher routine (which may not be used for all compilers) */
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
229 static RETSIGTYPE
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
230 intcatcher(sig)
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
231 int sig;
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
232 {
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
233 interrupted = 1;
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
234 signal(SIGINT, intcatcher);
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
235 }
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
236
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
237 void
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
238 PyOS_InitInterrupts()
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
239 {
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
240 if (signal(SIGINT, SIG_IGN) != SIG_IGN)
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
241 signal(SIGINT, intcatcher);
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
242 }
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
243
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
244 /*
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
245 ** This routine scans the event queue looking for cmd-.
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
246 ** This is the only way to get an interrupt under THINK (since it
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
247 ** doesn't do SIGINT handling), but is also used under MW, when
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
248 ** the full-fledged event loop is disabled. This way, we can at least
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
249 ** interrupt a runaway python program.
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
250 */
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
251 static void
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
252 scan_event_queue(flush)
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
253 int flush;
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
254 {
2794
823f3a8ecfe4 Initial port to CodeWarrior CFM68K support (mainly by disabling
Jack Jansen <jack.jansen@cwi.nl>
parents: 2747
diff changeset
255 #if defined(__MWERKS__) && defined(__CFM68K__)
823f3a8ecfe4 Initial port to CodeWarrior CFM68K support (mainly by disabling
Jack Jansen <jack.jansen@cwi.nl>
parents: 2747
diff changeset
256 return; /* No GetEvQHdr yet */
823f3a8ecfe4 Initial port to CodeWarrior CFM68K support (mainly by disabling
Jack Jansen <jack.jansen@cwi.nl>
parents: 2747
diff changeset
257 #else
2262
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
258 register EvQElPtr q;
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
259
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
260 q = (EvQElPtr) GetEvQHdr()->qHead;
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
261
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
262 for (; q; q = (EvQElPtr)q->qLink) {
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
263 if (q->evtQWhat == keyDown &&
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
264 (char)q->evtQMessage == '.' &&
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
265 (q->evtQModifiers & cmdKey) != 0) {
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
266 if ( flush )
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
267 FlushEvents(keyDownMask, 0);
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
268 interrupted = 1;
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
269 break;
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
270 }
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
271 }
2794
823f3a8ecfe4 Initial port to CodeWarrior CFM68K support (mainly by disabling
Jack Jansen <jack.jansen@cwi.nl>
parents: 2747
diff changeset
272 #endif
2262
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
273 }
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
274
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
275 int
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
276 PyOS_InterruptOccurred()
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
277 {
2429
efb0685a6c91 return old value of PyMac_DoYieldEnabled; -1 means do not even check for interrupts
Guido van Rossum <guido@python.org>
parents: 2426
diff changeset
278 if (PyMac_DoYieldEnabled < 0)
efb0685a6c91 return old value of PyMac_DoYieldEnabled; -1 means do not even check for interrupts
Guido van Rossum <guido@python.org>
parents: 2426
diff changeset
279 return 0;
2262
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
280 #ifdef THINK_C
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
281 scan_event_queue(1);
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
282 #endif
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
283 PyMac_Yield();
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
284 if (interrupted) {
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
285 interrupted = 0;
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
286 return 1;
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
287 }
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
288 return 0;
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
289 }
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
290
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
291 /* intrpeek() is like intrcheck(), but it doesn't flush the events. The
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
292 ** idea is that you call intrpeek() somewhere in a busy-wait loop, and return
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
293 ** None as soon as it returns 1. The mainloop will then pick up the cmd-. soon
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
294 ** thereafter.
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
295 */
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
296 static int
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
297 intrpeek()
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
298 {
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
299 #ifdef THINK_C
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
300 scan_event_queue(0);
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
301 #endif
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
302 return interrupted;
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
303 }
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
304
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
305 /* Check whether we are in the foreground */
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
306 int
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
307 PyMac_InForeground()
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
308 {
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
309 static ProcessSerialNumber ours;
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
310 static inited;
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
311 ProcessSerialNumber curfg;
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
312 Boolean eq;
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
313
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
314 if ( inited == 0 )
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
315 (void)GetCurrentProcess(&ours);
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
316 inited = 1;
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
317 if ( GetFrontProcess(&curfg) < 0 )
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
318 eq = 1;
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
319 else if ( SameProcess(&ours, &curfg, &eq) < 0 )
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
320 eq = 1;
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
321 return (int)eq;
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
322
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
323 }
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
324
2035
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
325 /*
2251
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
326 ** Set yield timeouts
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
327 */
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
328 void
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
329 PyMac_SetYield(long fgi, long fgy, long bgi, long bgy)
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
330 {
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
331 interval_fg = fgi;
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
332 yield_fg = fgy;
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
333 interval_bg = bgi;
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
334 yield_bg = bgy;
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
335 }
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
336
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
337 /*
2276
66d6d13df4f8 Added HandleEvent method to macos, so python programs can hand back
Jack Jansen <jack.jansen@cwi.nl>
parents: 2265
diff changeset
338 ** Handle an event, either one found in the mainloop eventhandler or
66d6d13df4f8 Added HandleEvent method to macos, so python programs can hand back
Jack Jansen <jack.jansen@cwi.nl>
parents: 2265
diff changeset
339 ** one passed back from the python program.
66d6d13df4f8 Added HandleEvent method to macos, so python programs can hand back
Jack Jansen <jack.jansen@cwi.nl>
parents: 2265
diff changeset
340 */
66d6d13df4f8 Added HandleEvent method to macos, so python programs can hand back
Jack Jansen <jack.jansen@cwi.nl>
parents: 2265
diff changeset
341 void
66d6d13df4f8 Added HandleEvent method to macos, so python programs can hand back
Jack Jansen <jack.jansen@cwi.nl>
parents: 2265
diff changeset
342 PyMac_HandleEvent(evp)
66d6d13df4f8 Added HandleEvent method to macos, so python programs can hand back
Jack Jansen <jack.jansen@cwi.nl>
parents: 2265
diff changeset
343 EventRecord *evp;
66d6d13df4f8 Added HandleEvent method to macos, so python programs can hand back
Jack Jansen <jack.jansen@cwi.nl>
parents: 2265
diff changeset
344 {
66d6d13df4f8 Added HandleEvent method to macos, so python programs can hand back
Jack Jansen <jack.jansen@cwi.nl>
parents: 2265
diff changeset
345
66d6d13df4f8 Added HandleEvent method to macos, so python programs can hand back
Jack Jansen <jack.jansen@cwi.nl>
parents: 2265
diff changeset
346 #ifdef __MWERKS__
3248
5e101ead1e69 Cosmetic change to event handling.
Jack Jansen <jack.jansen@cwi.nl>
parents: 3052
diff changeset
347 {
5e101ead1e69 Cosmetic change to event handling.
Jack Jansen <jack.jansen@cwi.nl>
parents: 3052
diff changeset
348 int siouxdidit;
5e101ead1e69 Cosmetic change to event handling.
Jack Jansen <jack.jansen@cwi.nl>
parents: 3052
diff changeset
349
5e101ead1e69 Cosmetic change to event handling.
Jack Jansen <jack.jansen@cwi.nl>
parents: 3052
diff changeset
350 /* If SIOUX wants it we're done */
5e101ead1e69 Cosmetic change to event handling.
Jack Jansen <jack.jansen@cwi.nl>
parents: 3052
diff changeset
351 siouxdidit = SIOUXHandleOneEvent(evp);
5e101ead1e69 Cosmetic change to event handling.
Jack Jansen <jack.jansen@cwi.nl>
parents: 3052
diff changeset
352 if ( siouxdidit )
5e101ead1e69 Cosmetic change to event handling.
Jack Jansen <jack.jansen@cwi.nl>
parents: 3052
diff changeset
353 return;
5e101ead1e69 Cosmetic change to event handling.
Jack Jansen <jack.jansen@cwi.nl>
parents: 3052
diff changeset
354 }
2276
66d6d13df4f8 Added HandleEvent method to macos, so python programs can hand back
Jack Jansen <jack.jansen@cwi.nl>
parents: 2265
diff changeset
355 #else
66d6d13df4f8 Added HandleEvent method to macos, so python programs can hand back
Jack Jansen <jack.jansen@cwi.nl>
parents: 2265
diff changeset
356 /* Other compilers are just unlucky: we only weed out clicks in other applications */
66d6d13df4f8 Added HandleEvent method to macos, so python programs can hand back
Jack Jansen <jack.jansen@cwi.nl>
parents: 2265
diff changeset
357 if ( evp->what == mouseDown ) {
3052
fd50986f35e5 Removed unused variables
Jack Jansen <jack.jansen@cwi.nl>
parents: 2988
diff changeset
358 WindowPtr wp;
fd50986f35e5 Removed unused variables
Jack Jansen <jack.jansen@cwi.nl>
parents: 2988
diff changeset
359
3248
5e101ead1e69 Cosmetic change to event handling.
Jack Jansen <jack.jansen@cwi.nl>
parents: 3052
diff changeset
360 if ( FindWindow(evp->where, &wp) == inSysWindow ) {
2276
66d6d13df4f8 Added HandleEvent method to macos, so python programs can hand back
Jack Jansen <jack.jansen@cwi.nl>
parents: 2265
diff changeset
361 SystemClick(evp, wp);
3248
5e101ead1e69 Cosmetic change to event handling.
Jack Jansen <jack.jansen@cwi.nl>
parents: 3052
diff changeset
362 return;
5e101ead1e69 Cosmetic change to event handling.
Jack Jansen <jack.jansen@cwi.nl>
parents: 3052
diff changeset
363 }
2276
66d6d13df4f8 Added HandleEvent method to macos, so python programs can hand back
Jack Jansen <jack.jansen@cwi.nl>
parents: 2265
diff changeset
364 }
66d6d13df4f8 Added HandleEvent method to macos, so python programs can hand back
Jack Jansen <jack.jansen@cwi.nl>
parents: 2265
diff changeset
365 #endif /* !__MWERKS__ */
66d6d13df4f8 Added HandleEvent method to macos, so python programs can hand back
Jack Jansen <jack.jansen@cwi.nl>
parents: 2265
diff changeset
366 }
66d6d13df4f8 Added HandleEvent method to macos, so python programs can hand back
Jack Jansen <jack.jansen@cwi.nl>
parents: 2265
diff changeset
367
66d6d13df4f8 Added HandleEvent method to macos, so python programs can hand back
Jack Jansen <jack.jansen@cwi.nl>
parents: 2265
diff changeset
368 /*
2251
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
369 ** Yield the CPU to other tasks.
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
370 */
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
371 static
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
372 PyMac_DoYield()
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
373 {
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
374 EventRecord ev;
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
375 long yield;
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
376 static int no_waitnextevent = -1;
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
377 int gotone;
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
378
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
379 if ( no_waitnextevent < 0 ) {
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
380 no_waitnextevent = (NGetTrapAddress(_WaitNextEvent, ToolTrap) ==
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
381 NGetTrapAddress(_Unimplemented, ToolTrap));
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
382 }
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
383
2262
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
384 if ( !PyMac_DoYieldEnabled ) {
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
385 #ifndef THINK_C
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
386 /* Under think this has been done before in intrcheck() or intrpeek() */
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
387 scan_event_queue(0);
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
388 #endif
2251
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
389 return;
2262
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
390 }
2251
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
391
2262
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
392 in_foreground = PyMac_InForeground();
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
393 if ( in_foreground )
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
394 yield = yield_fg;
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
395 else
2251
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
396 yield = yield_bg;
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
397 while ( 1 ) {
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
398 if ( no_waitnextevent ) {
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
399 SystemTask();
2262
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
400 gotone = GetNextEvent(MAINLOOP_EVENTMASK, &ev);
2251
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
401 } else {
2262
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
402 gotone = WaitNextEvent(MAINLOOP_EVENTMASK, &ev, yield, NULL);
2251
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
403 }
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
404 /* Get out quickly if nothing interesting is happening */
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
405 if ( !gotone || ev.what == nullEvent )
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
406 break;
2276
66d6d13df4f8 Added HandleEvent method to macos, so python programs can hand back
Jack Jansen <jack.jansen@cwi.nl>
parents: 2265
diff changeset
407 PyMac_HandleEvent(&ev);
2251
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
408 }
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
409 lastyield = TickCount();
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
410 }
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
411
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
412 /*
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
413 ** Yield the CPU to other tasks if opportune
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
414 */
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
415 void
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
416 PyMac_Yield() {
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
417 long iv;
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
418
2262
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
419 if ( in_foreground )
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
420 iv = interval_fg;
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2255
diff changeset
421 else
2251
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
422 iv = interval_bg;
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
423 if ( TickCount() > lastyield + iv )
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
424 PyMac_DoYield();
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
425 }
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
426
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
427 /*
2035
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
428 ** Idle routine for busy-wait loops.
2251
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
429 ** Gives up CPU, handles events and returns true if an interrupt is pending
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
430 ** (but not actually handled yet).
2035
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
431 */
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
432 int
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
433 PyMac_Idle()
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
434 {
2251
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
435 PyMac_DoYield();
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
436 return intrpeek();
2176
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
437 }
2350
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
438 /*
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
439 ** Returns true if the argument has a resource fork, and it contains
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
440 ** a 'PYC ' resource of the correct name
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
441 */
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
442 int
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
443 PyMac_FindResourceModule(module, filename)
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
444 char *module;
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
445 char *filename;
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
446 {
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
447 FSSpec fss;
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
448 FInfo finfo;
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
449 short oldrh, filerh;
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
450 int ok;
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
451 Handle h;
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
452
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
453 if ( FSMakeFSSpec(0, 0, Pstring(filename), &fss) != noErr )
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
454 return 0; /* It doesn't exist */
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
455 if ( FSpGetFInfo(&fss, &finfo) != noErr )
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
456 return 0; /* shouldn't happen, I guess */
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
457 oldrh = CurResFile();
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
458 filerh = FSpOpenResFile(&fss, fsRdPerm);
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
459 if ( filerh == -1 )
2382
6450d8828d2b added applet initialization;
Guido van Rossum <guido@python.org>
parents: 2350
diff changeset
460 return 0;
2350
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
461 UseResFile(filerh);
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
462 SetResLoad(0);
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
463 h = Get1NamedResource('PYC ', Pstring(module));
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
464 SetResLoad(1);
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
465 ok = (h != NULL);
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
466 CloseResFile(filerh);
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
467 UseResFile(oldrh);
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
468 return ok;
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
469 }
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
470
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
471 /*
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
472 ** Load the specified module from a resource
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
473 */
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
474 PyObject *
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
475 PyMac_LoadResourceModule(module, filename)
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
476 char *module;
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
477 char *filename;
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
478 {
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
479 FSSpec fss;
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
480 FInfo finfo;
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
481 short oldrh, filerh;
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
482 Handle h;
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
483 OSErr err;
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
484 PyObject *m, *co;
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
485 long num, size;
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
486
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
487 if ( (err=FSMakeFSSpec(0, 0, Pstring(filename), &fss)) != noErr )
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
488 goto error;
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
489 if ( (err=FSpGetFInfo(&fss, &finfo)) != noErr )
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
490 goto error;
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
491 oldrh = CurResFile();
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
492 filerh = FSpOpenResFile(&fss, fsRdPerm);
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
493 if ( filerh == -1 ) {
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
494 err = ResError();
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
495 goto error;
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
496 }
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
497 UseResFile(filerh);
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
498 h = Get1NamedResource('PYC ', Pstring(module));
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
499 if ( h == NULL ) {
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
500 err = ResError();
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
501 goto error;
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
502 }
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
503 HLock(h);
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
504 /*
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
505 ** XXXX The next few lines are intimately tied to the format of pyc
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
506 ** files. I'm not sure whether this code should be here or in import.c -- Jack
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
507 */
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
508 size = GetHandleSize(h);
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
509 if ( size < 8 ) {
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
510 PyErr_SetString(PyExc_ImportError, "Resource too small");
2382
6450d8828d2b added applet initialization;
Guido van Rossum <guido@python.org>
parents: 2350
diff changeset
511 co = NULL;
2350
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
512 } else {
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
513 num = (*h)[0] & 0xff;
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
514 num = num | (((*h)[1] & 0xff) << 8);
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
515 num = num | (((*h)[2] & 0xff) << 16);
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
516 num = num | (((*h)[3] & 0xff) << 24);
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
517 if ( num != PyImport_GetMagicNumber() ) {
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
518 PyErr_SetString(PyExc_ImportError, "Bad MAGIC in resource");
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
519 co = NULL;
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
520 } else {
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
521 co = PyMarshal_ReadObjectFromString((*h)+8, size-8);
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
522 }
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
523 }
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
524 HUnlock(h);
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
525 CloseResFile(filerh);
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
526 UseResFile(oldrh);
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
527 if ( co ) {
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
528 m = PyImport_ExecCodeModule(module, co);
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
529 Py_DECREF(co);
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
530 } else {
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
531 m = NULL;
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
532 }
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
533 return m;
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
534 error:
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
535 {
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
536 char buf[512];
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
537
2382
6450d8828d2b added applet initialization;
Guido van Rossum <guido@python.org>
parents: 2350
diff changeset
538 sprintf(buf, "%s: %s", filename, PyMac_StrError(err));
2350
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
539 PyErr_SetString(PyExc_ImportError, buf);
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
540 return NULL;
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
541 }
a2054933775b Added support for loading pyc code from a resource.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2337
diff changeset
542 }
2412
75ae104f7e6c ported to MPW, moved main() here
Guido van Rossum <guido@python.org>
parents: 2403
diff changeset
543
2403
72c715c004c8 - Added PyMac_GetDirectory call which asks the user to select a
Jack Jansen <jack.jansen@cwi.nl>
parents: 2394
diff changeset
544 /*
72c715c004c8 - Added PyMac_GetDirectory call which asks the user to select a
Jack Jansen <jack.jansen@cwi.nl>
parents: 2394
diff changeset
545 ** Helper routine for GetDirectory
72c715c004c8 - Added PyMac_GetDirectory call which asks the user to select a
Jack Jansen <jack.jansen@cwi.nl>
parents: 2394
diff changeset
546 */
2412
75ae104f7e6c ported to MPW, moved main() here
Guido van Rossum <guido@python.org>
parents: 2403
diff changeset
547 static pascal short
2988
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
548 myhook_proc(short item, DialogPtr theDialog, struct hook_args *dataptr)
2403
72c715c004c8 - Added PyMac_GetDirectory call which asks the user to select a
Jack Jansen <jack.jansen@cwi.nl>
parents: 2394
diff changeset
549 {
2988
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
550 if ( item == sfHookFirstCall && dataptr->prompt) {
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
551 Handle prompth;
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
552 short type;
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
553 Rect rect;
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
554
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
555 GetDialogItem(theDialog, PROMPT_ITEM, &type, &prompth, &rect);
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
556 if ( prompth )
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
557 SetDialogItemText(prompth, (unsigned char *)dataptr->prompt);
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
558 } else
2403
72c715c004c8 - Added PyMac_GetDirectory call which asks the user to select a
Jack Jansen <jack.jansen@cwi.nl>
parents: 2394
diff changeset
559 if ( item == SELECTCUR_ITEM ) {
72c715c004c8 - Added PyMac_GetDirectory call which asks the user to select a
Jack Jansen <jack.jansen@cwi.nl>
parents: 2394
diff changeset
560 item = sfItemCancelButton;
2988
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
561 dataptr->selectcur_hit = 1;
2403
72c715c004c8 - Added PyMac_GetDirectory call which asks the user to select a
Jack Jansen <jack.jansen@cwi.nl>
parents: 2394
diff changeset
562 }
72c715c004c8 - Added PyMac_GetDirectory call which asks the user to select a
Jack Jansen <jack.jansen@cwi.nl>
parents: 2394
diff changeset
563 return item;
72c715c004c8 - Added PyMac_GetDirectory call which asks the user to select a
Jack Jansen <jack.jansen@cwi.nl>
parents: 2394
diff changeset
564 }
72c715c004c8 - Added PyMac_GetDirectory call which asks the user to select a
Jack Jansen <jack.jansen@cwi.nl>
parents: 2394
diff changeset
565
72c715c004c8 - Added PyMac_GetDirectory call which asks the user to select a
Jack Jansen <jack.jansen@cwi.nl>
parents: 2394
diff changeset
566 /*
72c715c004c8 - Added PyMac_GetDirectory call which asks the user to select a
Jack Jansen <jack.jansen@cwi.nl>
parents: 2394
diff changeset
567 ** Ask the user for a directory. I still can't understand
72c715c004c8 - Added PyMac_GetDirectory call which asks the user to select a
Jack Jansen <jack.jansen@cwi.nl>
parents: 2394
diff changeset
568 ** why Apple doesn't provide a standard solution for this...
72c715c004c8 - Added PyMac_GetDirectory call which asks the user to select a
Jack Jansen <jack.jansen@cwi.nl>
parents: 2394
diff changeset
569 */
72c715c004c8 - Added PyMac_GetDirectory call which asks the user to select a
Jack Jansen <jack.jansen@cwi.nl>
parents: 2394
diff changeset
570 int
2988
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
571 PyMac_GetDirectory(dirfss, prompt)
2403
72c715c004c8 - Added PyMac_GetDirectory call which asks the user to select a
Jack Jansen <jack.jansen@cwi.nl>
parents: 2394
diff changeset
572 FSSpec *dirfss;
2988
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
573 char *prompt;
2403
72c715c004c8 - Added PyMac_GetDirectory call which asks the user to select a
Jack Jansen <jack.jansen@cwi.nl>
parents: 2394
diff changeset
574 {
72c715c004c8 - Added PyMac_GetDirectory call which asks the user to select a
Jack Jansen <jack.jansen@cwi.nl>
parents: 2394
diff changeset
575 static SFTypeList list = {'fldr', 0, 0, 0};
72c715c004c8 - Added PyMac_GetDirectory call which asks the user to select a
Jack Jansen <jack.jansen@cwi.nl>
parents: 2394
diff changeset
576 static Point where = {-1, -1};
72c715c004c8 - Added PyMac_GetDirectory call which asks the user to select a
Jack Jansen <jack.jansen@cwi.nl>
parents: 2394
diff changeset
577 StandardFileReply reply;
2988
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
578 struct hook_args hook_args;
2403
72c715c004c8 - Added PyMac_GetDirectory call which asks the user to select a
Jack Jansen <jack.jansen@cwi.nl>
parents: 2394
diff changeset
579
72c715c004c8 - Added PyMac_GetDirectory call which asks the user to select a
Jack Jansen <jack.jansen@cwi.nl>
parents: 2394
diff changeset
580 if ( !upp_inited ) {
72c715c004c8 - Added PyMac_GetDirectory call which asks the user to select a
Jack Jansen <jack.jansen@cwi.nl>
parents: 2394
diff changeset
581 myhook_upp = NewDlgHookYDProc(myhook_proc);
72c715c004c8 - Added PyMac_GetDirectory call which asks the user to select a
Jack Jansen <jack.jansen@cwi.nl>
parents: 2394
diff changeset
582 upp_inited = 1;
72c715c004c8 - Added PyMac_GetDirectory call which asks the user to select a
Jack Jansen <jack.jansen@cwi.nl>
parents: 2394
diff changeset
583 }
2988
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
584 if ( prompt && *prompt )
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
585 hook_args.prompt = (char *)Pstring(prompt);
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
586 else
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
587 hook_args.prompt = NULL;
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
588 hook_args.selectcur_hit = 0;
2412
75ae104f7e6c ported to MPW, moved main() here
Guido van Rossum <guido@python.org>
parents: 2403
diff changeset
589 CustomGetFile((FileFilterYDUPP)0, 1, list, &reply, GETDIR_ID, where, myhook_upp,
2988
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
590 NULL, NULL, NULL, (void *)&hook_args);
2403
72c715c004c8 - Added PyMac_GetDirectory call which asks the user to select a
Jack Jansen <jack.jansen@cwi.nl>
parents: 2394
diff changeset
591
72c715c004c8 - Added PyMac_GetDirectory call which asks the user to select a
Jack Jansen <jack.jansen@cwi.nl>
parents: 2394
diff changeset
592 reply.sfFile.name[0] = 0;
72c715c004c8 - Added PyMac_GetDirectory call which asks the user to select a
Jack Jansen <jack.jansen@cwi.nl>
parents: 2394
diff changeset
593 if( FSMakeFSSpec(reply.sfFile.vRefNum, reply.sfFile.parID, reply.sfFile.name, dirfss) )
72c715c004c8 - Added PyMac_GetDirectory call which asks the user to select a
Jack Jansen <jack.jansen@cwi.nl>
parents: 2394
diff changeset
594 return 0;
2988
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
595 return hook_args.selectcur_hit;
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
596 }
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
597
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
598 /*
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
599 ** Slightly extended StandardGetFile: accepts a prompt */
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
600 void PyMac_PromptGetFile(short numTypes, ConstSFTypeListPtr typeList,
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
601 StandardFileReply *reply, char *prompt)
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
602 {
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
603 static Point where = {-1, -1};
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
604 struct hook_args hook_args;
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
605
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
606 if ( !upp_inited ) {
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
607 myhook_upp = NewDlgHookYDProc(myhook_proc);
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
608 upp_inited = 1;
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
609 }
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
610 if ( prompt && *prompt )
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
611 hook_args.prompt = (char *)Pstring(prompt);
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
612 else
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
613 hook_args.prompt = NULL;
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
614 hook_args.selectcur_hit = 0;
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
615 CustomGetFile((FileFilterYDUPP)0, numTypes, typeList, reply, GETFILEPROMPT_ID, where,
2fe9d0371ecd Lots of stuff moved to other files.
Jack Jansen <jack.jansen@cwi.nl>
parents: 2913
diff changeset
616 myhook_upp, NULL, NULL, NULL, (void *)&hook_args);
2403
72c715c004c8 - Added PyMac_GetDirectory call which asks the user to select a
Jack Jansen <jack.jansen@cwi.nl>
parents: 2394
diff changeset
617 }
2176
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
618
2231
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
619 /* Convert a 4-char string object argument to an OSType value */
2176
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
620 int
2231
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
621 PyMac_GetOSType(PyObject *v, OSType *pr)
2176
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
622 {
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
623 if (!PyString_Check(v) || PyString_Size(v) != 4) {
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
624 PyErr_SetString(PyExc_TypeError,
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
625 "OSType arg must be string of 4 chars");
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
626 return 0;
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
627 }
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
628 memcpy((char *)pr, PyString_AsString(v), 4);
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
629 return 1;
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
630 }
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
631
2231
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
632 /* Convert an OSType value to a 4-char string object */
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
633 PyObject *
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
634 PyMac_BuildOSType(OSType t)
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
635 {
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
636 return PyString_FromStringAndSize((char *)&t, 4);
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
637 }
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
638
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
639
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
640 /* Convert a Python string object to a Str255 */
2176
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
641 int
2183
62bdded5f00a modernized/rationalized, added PyMac_BuildOSType
Guido van Rossum <guido@python.org>
parents: 2176
diff changeset
642 PyMac_GetStr255(PyObject *v, Str255 pbuf)
2176
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
643 {
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
644 int len;
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
645 if (!PyString_Check(v) || (len = PyString_Size(v)) > 255) {
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
646 PyErr_SetString(PyExc_TypeError,
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
647 "Str255 arg must be string of at most 255 chars");
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
648 return 0;
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
649 }
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
650 pbuf[0] = len;
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
651 memcpy((char *)(pbuf+1), PyString_AsString(v), len);
2035
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
652 return 1;
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
653 }
ce69742f2e77 New routines:
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
654
2231
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
655 /* Convert a Str255 to a Python string object */
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
656 PyObject *
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
657 PyMac_BuildStr255(Str255 s)
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
658 {
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
659 return PyString_FromStringAndSize((char *)&s[1], (int)s[0]);
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
660 }
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
661
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
662
2176
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
663 /*
2231
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
664 ** Convert a Python object to an FSSpec.
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
665 ** The object may either be a full pathname or a triple
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
666 ** (vrefnum, dirid, path).
2176
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
667 ** NOTE: This routine will fail on pre-sys7 machines.
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
668 ** The caller is responsible for not calling this routine
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
669 ** in those cases (which is fine, since everyone calling
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
670 ** this is probably sys7 dependent anyway).
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
671 */
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
672 int
2183
62bdded5f00a modernized/rationalized, added PyMac_BuildOSType
Guido van Rossum <guido@python.org>
parents: 2176
diff changeset
673 PyMac_GetFSSpec(PyObject *v, FSSpec *fs)
2176
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
674 {
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
675 Str255 path;
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
676 short refnum;
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
677 long parid;
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
678 OSErr err;
2251
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
679 FSSpec *fs2;
2176
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
680
2251
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
681 /* first check whether it already is an FSSpec */
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
682 fs2 = mfs_GetFSSpecFSSpec(v);
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
683 if ( fs2 ) {
2403
72c715c004c8 - Added PyMac_GetDirectory call which asks the user to select a
Jack Jansen <jack.jansen@cwi.nl>
parents: 2394
diff changeset
684 (void)FSMakeFSSpec(fs2->vRefNum, fs2->parID, fs2->name, fs);
2251
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
685 return 1;
e0a3242d5ae7 Added eventhandling in mainloop/busywait routine plus leaving some
Jack Jansen <jack.jansen@cwi.nl>
parents: 2231
diff changeset
686 }
2176
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
687 if ( PyString_Check(v) ) {
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
688 /* It's a pathname */
2209
4053d4cb50e0 renamed Get routines to PyMac_Get; added macfs to config.c
Guido van Rossum <guido@python.org>
parents: 2183
diff changeset
689 if( !PyArg_Parse(v, "O&", PyMac_GetStr255, &path) )
2176
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
690 return 0;
3433
578ca302a598 Replaced previous gusi-chdir() fix by a call to PyMac_FixGUSIcd()
Jack Jansen <jack.jansen@cwi.nl>
parents: 3431
diff changeset
691 refnum = 0; /* XXXX Should get CurWD here?? */
2176
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
692 parid = 0;
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
693 } else {
2209
4053d4cb50e0 renamed Get routines to PyMac_Get; added macfs to config.c
Guido van Rossum <guido@python.org>
parents: 2183
diff changeset
694 if( !PyArg_Parse(v, "(hlO&); FSSpec should be fullpath or (vrefnum,dirid,path)",
4053d4cb50e0 renamed Get routines to PyMac_Get; added macfs to config.c
Guido van Rossum <guido@python.org>
parents: 2183
diff changeset
695 &refnum, &parid, PyMac_GetStr255, &path)) {
2176
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
696 return 0;
2209
4053d4cb50e0 renamed Get routines to PyMac_Get; added macfs to config.c
Guido van Rossum <guido@python.org>
parents: 2183
diff changeset
697 }
2176
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
698 }
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
699 err = FSMakeFSSpec(refnum, parid, path, fs);
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
700 if ( err && err != fnfErr ) {
2209
4053d4cb50e0 renamed Get routines to PyMac_Get; added macfs to config.c
Guido van Rossum <guido@python.org>
parents: 2183
diff changeset
701 PyErr_Mac(PyExc_ValueError, err);
2176
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
702 return 0;
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
703 }
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
704 return 1;
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
705 }
1e9e74944bb5 - Moved some useful routines from macosmodule.c here
Jack Jansen <jack.jansen@cwi.nl>
parents: 2136
diff changeset
706
2183
62bdded5f00a modernized/rationalized, added PyMac_BuildOSType
Guido van Rossum <guido@python.org>
parents: 2176
diff changeset
707
2231
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
708 /* Convert a Python object to a Rect.
2255
382edef2d6d7 reverse h/v in Point and Rect
Guido van Rossum <guido@python.org>
parents: 2251
diff changeset
709 The object must be a (left, top, right, bottom) tuple.
382edef2d6d7 reverse h/v in Point and Rect
Guido van Rossum <guido@python.org>
parents: 2251
diff changeset
710 (This differs from the order in the struct but is consistent with
382edef2d6d7 reverse h/v in Point and Rect
Guido van Rossum <guido@python.org>
parents: 2251
diff changeset
711 the arguments to SetRect(), and also with STDWIN). */
2231
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
712 int
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
713 PyMac_GetRect(PyObject *v, Rect *r)
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
714 {
2255
382edef2d6d7 reverse h/v in Point and Rect
Guido van Rossum <guido@python.org>
parents: 2251
diff changeset
715 return PyArg_Parse(v, "(hhhh)", &r->left, &r->top, &r->right, &r->bottom);
2231
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
716 }
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
717
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
718 /* Convert a Rect to a Python object */
2183
62bdded5f00a modernized/rationalized, added PyMac_BuildOSType
Guido van Rossum <guido@python.org>
parents: 2176
diff changeset
719 PyObject *
2231
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
720 PyMac_BuildRect(Rect *r)
2183
62bdded5f00a modernized/rationalized, added PyMac_BuildOSType
Guido van Rossum <guido@python.org>
parents: 2176
diff changeset
721 {
2255
382edef2d6d7 reverse h/v in Point and Rect
Guido van Rossum <guido@python.org>
parents: 2251
diff changeset
722 return Py_BuildValue("(hhhh)", r->left, r->top, r->right, r->bottom);
2231
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
723 }
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
724
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
725
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
726 /* Convert a Python object to a Point.
2255
382edef2d6d7 reverse h/v in Point and Rect
Guido van Rossum <guido@python.org>
parents: 2251
diff changeset
727 The object must be a (h, v) tuple.
382edef2d6d7 reverse h/v in Point and Rect
Guido van Rossum <guido@python.org>
parents: 2251
diff changeset
728 (This differs from the order in the struct but is consistent with
382edef2d6d7 reverse h/v in Point and Rect
Guido van Rossum <guido@python.org>
parents: 2251
diff changeset
729 the arguments to SetPoint(), and also with STDWIN). */
2231
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
730 int
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
731 PyMac_GetPoint(PyObject *v, Point *p)
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
732 {
2255
382edef2d6d7 reverse h/v in Point and Rect
Guido van Rossum <guido@python.org>
parents: 2251
diff changeset
733 return PyArg_Parse(v, "(hh)", &p->h, &p->v);
2183
62bdded5f00a modernized/rationalized, added PyMac_BuildOSType
Guido van Rossum <guido@python.org>
parents: 2176
diff changeset
734 }
2224
32435d33f34a cosmetics: copyright, comments
Guido van Rossum <guido@python.org>
parents: 2209
diff changeset
735
2231
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
736 /* Convert a Point to a Python object */
2224
32435d33f34a cosmetics: copyright, comments
Guido van Rossum <guido@python.org>
parents: 2209
diff changeset
737 PyObject *
2231
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
738 PyMac_BuildPoint(Point p)
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
739 {
2255
382edef2d6d7 reverse h/v in Point and Rect
Guido van Rossum <guido@python.org>
parents: 2251
diff changeset
740 return Py_BuildValue("(hh)", p.h, p.v);
2231
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
741 }
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
742
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
743
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
744 /* Convert a Python object to an EventRecord.
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
745 The object must be a (what, message, when, (v, h), modifiers) tuple. */
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
746 int
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
747 PyMac_GetEventRecord(PyObject *v, EventRecord *e)
2224
32435d33f34a cosmetics: copyright, comments
Guido van Rossum <guido@python.org>
parents: 2209
diff changeset
748 {
2231
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
749 return PyArg_Parse(v, "(hll(hh)h)",
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
750 &e->what,
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
751 &e->message,
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
752 &e->when,
2255
382edef2d6d7 reverse h/v in Point and Rect
Guido van Rossum <guido@python.org>
parents: 2251
diff changeset
753 &e->where.h,
2231
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
754 &e->where.v,
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
755 &e->modifiers);
2224
32435d33f34a cosmetics: copyright, comments
Guido van Rossum <guido@python.org>
parents: 2209
diff changeset
756 }
2231
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
757
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
758 /* Convert a Rect to an EventRecord object */
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
759 PyObject *
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
760 PyMac_BuildEventRecord(EventRecord *e)
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
761 {
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
762 return Py_BuildValue("(hll(hh)h)",
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
763 e->what,
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
764 e->message,
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
765 e->when,
2255
382edef2d6d7 reverse h/v in Point and Rect
Guido van Rossum <guido@python.org>
parents: 2251
diff changeset
766 e->where.h,
2231
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
767 e->where.v,
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
768 e->modifiers);
1e8b347a056c Some layout changes; added EventRecord Get/Build functions (as a tuple).
Guido van Rossum <guido@python.org>
parents: 2224
diff changeset
769 }
3278
43c5e7a3fc1f Added converters for Fixed
Jack Jansen <jack.jansen@cwi.nl>
parents: 3248
diff changeset
770
43c5e7a3fc1f Added converters for Fixed
Jack Jansen <jack.jansen@cwi.nl>
parents: 3248
diff changeset
771 /* Convert Python object to Fixed */
43c5e7a3fc1f Added converters for Fixed
Jack Jansen <jack.jansen@cwi.nl>
parents: 3248
diff changeset
772 int
43c5e7a3fc1f Added converters for Fixed
Jack Jansen <jack.jansen@cwi.nl>
parents: 3248
diff changeset
773 PyMac_GetFixed(PyObject *v, Fixed *f)
43c5e7a3fc1f Added converters for Fixed
Jack Jansen <jack.jansen@cwi.nl>
parents: 3248
diff changeset
774 {
43c5e7a3fc1f Added converters for Fixed
Jack Jansen <jack.jansen@cwi.nl>
parents: 3248
diff changeset
775 double d;
43c5e7a3fc1f Added converters for Fixed
Jack Jansen <jack.jansen@cwi.nl>
parents: 3248
diff changeset
776
43c5e7a3fc1f Added converters for Fixed
Jack Jansen <jack.jansen@cwi.nl>
parents: 3248
diff changeset
777 if( !PyArg_Parse(v, "d", &d))
43c5e7a3fc1f Added converters for Fixed
Jack Jansen <jack.jansen@cwi.nl>
parents: 3248
diff changeset
778 return 0;
43c5e7a3fc1f Added converters for Fixed
Jack Jansen <jack.jansen@cwi.nl>
parents: 3248
diff changeset
779 *f = (Fixed)(d * 0x10000);
3655
f89fa7e95b84 PyMac_GetFixed() didn't return 1 on success
Jack Jansen <jack.jansen@cwi.nl>
parents: 3478
diff changeset
780 return 1;
3278
43c5e7a3fc1f Added converters for Fixed
Jack Jansen <jack.jansen@cwi.nl>
parents: 3248
diff changeset
781 }
43c5e7a3fc1f Added converters for Fixed
Jack Jansen <jack.jansen@cwi.nl>
parents: 3248
diff changeset
782
43c5e7a3fc1f Added converters for Fixed
Jack Jansen <jack.jansen@cwi.nl>
parents: 3248
diff changeset
783 /* Convert a Point to a Python object */
43c5e7a3fc1f Added converters for Fixed
Jack Jansen <jack.jansen@cwi.nl>
parents: 3248
diff changeset
784 PyObject *
43c5e7a3fc1f Added converters for Fixed
Jack Jansen <jack.jansen@cwi.nl>
parents: 3248
diff changeset
785 PyMac_BuildFixed(Fixed f)
43c5e7a3fc1f Added converters for Fixed
Jack Jansen <jack.jansen@cwi.nl>
parents: 3248
diff changeset
786 {
43c5e7a3fc1f Added converters for Fixed
Jack Jansen <jack.jansen@cwi.nl>
parents: 3248
diff changeset
787 double d;
43c5e7a3fc1f Added converters for Fixed
Jack Jansen <jack.jansen@cwi.nl>
parents: 3248
diff changeset
788
43c5e7a3fc1f Added converters for Fixed
Jack Jansen <jack.jansen@cwi.nl>
parents: 3248
diff changeset
789 d = f;
43c5e7a3fc1f Added converters for Fixed
Jack Jansen <jack.jansen@cwi.nl>
parents: 3248
diff changeset
790 d = d / 0x10000;
43c5e7a3fc1f Added converters for Fixed
Jack Jansen <jack.jansen@cwi.nl>
parents: 3248
diff changeset
791 return Py_BuildValue("d", d);
43c5e7a3fc1f Added converters for Fixed
Jack Jansen <jack.jansen@cwi.nl>
parents: 3248
diff changeset
792 }
43c5e7a3fc1f Added converters for Fixed
Jack Jansen <jack.jansen@cwi.nl>
parents: 3248
diff changeset
793