annotate Mac/Demo/example0.html @ 4566:6403c94de50d legacy-trunk

Added safeguard against failure in __del__.
author Guido van Rossum <guido@python.org>
date Wed, 27 Nov 1996 19:39:58 +0000
parents 2db6363459ca
children 9a3e6f0d6b5a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3751
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
1 <HTML><HEAD><TITLE>Using python to create Macintosh applications, part zero</TITLE></HEAD>
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
2 <BODY>
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
3 <H1>Using python to create Macintosh applications, part zero</H1>
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
4 <HR>
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
5
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
6 This document will show you how to create a simple mac-style
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
7 application using Python. We will glance at how to use file dialogs and
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
8 messages. <p>
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
9
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
10 Our example program <a href="example0/checktext.py">checktext.py</a> asks
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
11 the user for a text file and checks what style end-of-lines the file has.
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
12 This may need a little explanation: ASCII text files are almost identical
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
13 on different machines, with one exception:
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
14 <ul>
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
15 <li> Unix systems terminate lines with the "linefeed" character, <code>0x0a</code>,
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
16 <li> Macintoshes terminate lines with the "carriage return" character,
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
17 <code>0x0d</code> and
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
18 <li> MSDOS systems terminate lines with first a carriage return and then a linefeed.
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
19 </ul>
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
20
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
21 Let us have a look at the program. The first interesting statement in the main
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
22 program is the call to <code>macfs.PromptGetFile</code>. This is one of the routines
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
23 that allow you to ask the user to specify a file. You pass it one required
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
24 argument, the prompt string. There are up to four optional MacOS <em>file type</em> arguments
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
25 you can pass, as 4-byte strings. Specifying no file
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
26 type will allow the user to select any file, specifying one or more types restricts
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
27 the user to files of this type. File types are explained in most books on the Mac. <p>
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
28
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
29 <code>PromptGetFile</code> returns two values: an <em>FSSpec</em> object and a
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
30 success indicator. The FSSpec object is the "official" MacOS way of specifying a
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
31 file, more on it later. The success indicator tells you whether the user clicked OK
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
32 or Cancel. In the event of Cancel we simply exit back to the finder. <p>
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
33
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
34 <code>PromptGetFile</code> has a number of friends that do similar things:
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
35 <ul>
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
36 <li> <code>StandardGetFile</code> is identical to <code>PromptGetFile</code> but
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
37 without the prompt. It has up to four optional filetype arguments.
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
38 <li> <code>StandardPutFile</code> asks the user for an output file. It will
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
39 warn the user when she tries to overwrite an existing file. The routine has one
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
40 mandatory argument: a prompt string. Pass the empty string if you do not want a prompt.
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
41 <li> <code>GetDirectory</code> asks the user for a folder (or directory, in unix terms).
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
42 It has one optional argument: a prompt string.
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
43 </ul>
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
44 All routines return an FSSpec and a success indicator. <p>
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
45
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
46 There are many things you can do with FSSpec objects (see the
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
47 <a href="http://www.python.org/doc/lib/macfs.html">macfs</a> section in the
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
48 <a href="http://www.python.org/doc/lib/Top.html">Python Library Reference</a>
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
49 for details), but passing them to <code>open</code> is not
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
50 one of them. For this, we first have to convert the FSSpec object to a pathname, with
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
51 the <code>as_pathname</code> method. This returns a standard MacOS-style pathname with
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
52 colon-separated components. This can then be passed to <code>open</code>. Note that
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
53 we call open with mode parameter <code>'rb'</code>: we want to read the file in binary
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
54 mode. Python, like C and C++, uses unix-style line endings internally and opening a
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
55 file in text mode (<code>'r'</code>) would result in conversion of carriage-returns to
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
56 linefeeds upon reading. This is something that Mac and DOS programmers are usually aware
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
57 of but that never ceases to amaze unix buffs. <p>
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
58
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
59 After we open the file we attempt to read all data into memory. If this fails we use
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
60 <code>EasyDialogs.Message</code> to display a message in a standard dialog box and exit.
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
61 The EasyDialogs module has a few more useful simple dialog routines, more on that in
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
62 <a href="example1.html">example 1</a>. <p>
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
63
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
64 The rest of the code is pretty straightforward: we check that the file actually contains
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
65 data, count the number of linefeeds and returns and display a message with our guess of the
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
66 end-of-line convention used in the file. <p>
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
67
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
68 The <a href="example0">example0</a> folder has three text files in Mac, Unix and DOS style
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
69 for you to try the program on. After that, you can continue with <a href="example1.html">example 1</a>
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
70 or go back to the <a href="index.html">index</a> to find another interesting topic. <p>
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
71
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
72 <HR>
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
73 <A HREF="http://www.cwi.nl/~jack">Jack Jansen</A>,
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
74 <A HREF="mailto:jack@cwi.nl">jack@cwi.nl</A>, 18-July-1996.
2db6363459ca - Added a file dialog example
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
75 </BODY></HTML>