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