annotate Mac/Demo/waste.html @ 5817:48b94de85bf3 legacy-trunk

Extensive changes by AMK.
author Guido van Rossum <guido@python.org>
date Thu, 17 Jul 1997 16:29:42 +0000
parents a8264d70f281
children 149a54798896
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3531
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
1 <HTML><HEAD><TITLE>Using WASTE</TITLE></HEAD>
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
2 <BODY>
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
3 <H1>Using WASTE</H1>
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
4 <HR>
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
5
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
6 WASTE is an almost-compatible TextEdit replacement which overcomes
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
7 some of the limitations of it (like the 32K limit) and provides some extensions
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
8 (drag and drop, images, undo support). Moreover, it has a much cleaner interface
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
9 and is therefore easier integrated in Python. <p>
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
10
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
11 WASTE is written by Marco Piovanelli, <A HREF="mailto:piovanel@kagi.com">&lt;piovanel@kagi.com&gt;</A>,
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
12 and copyrighted by him. You can always obtain the latest version (for use in C
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
13 or Pascal programs) and the documentation from
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
14 <A HREF="ftp://ftp.dsi.unimi.it/DSI/piovanel/WASTE">&lt;ftp://ftp.dsi.unimi.it/DSI/piovanel/WASTE&gt;</A>.
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
15
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
16 We explain the useage of waste here by showing how to modify the TextEdit based
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
17 <A HREF="textedit/ped.py">ped.py</A> of the
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
18 <A HREF="textedit.html">previous example</A> into the waste-based <A HREF="waste/wed.py">wed.py</A>,
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
19 so you should have both sources handy. <p>
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
20
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
21 Functionally, <code>wed.py</code> provides three new things: resizable windows, a horizontal
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
22 scroll bar and undo. <p>
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
23
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
24 Let us look at the code, first at the application class <code>Wed</code>. The only real change is that
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
25 we now handle <code>undo</code>. Aside from enabling it in the creation routine and the addition of
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
26 a callback routine there is a bit of new code in <code>updatemenubar</code>: Waste not only handles
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
27 the full details of implementing undo, it will also tell us what the next undo operation will undo
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
28 (or redo). We use this to our advantage by changing the undo menu label to tell the user. <p>
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
29
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
30 The <code>WasteWindow</code> has seen a bit more change. Initialization of the waste data structure is
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
31 a bit different, in that we can specify some options at creation time. Also, waste has no <code>SetText</code>
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
32 method but a <code>UseText</code> which expects a handle as parameter. We have to be <EM>very</EM> careful
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
33 that we keep this handle around, because Python will happily free the handle if we have no more references
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
34 to it (and I doubt that Waste would like this:-). A final difference in <code>open</code>
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
35 is that we use a large number for the destination rectangle width, because we will use a horizontal scroll
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
36 bar. <p>
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
37
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
38 The <code>idle</code> method is a bit more involved, since we also call <code>WEAdjustCursor</code> to
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
39 provide the correct cursor based on mouse-position. Users like this. <p>
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
40
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
41 <code>Getscrollbarvalues</code> is simpler than its' TextEdit counterpart because Waste correctly
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
42 updates the destination rectangle when the document changes. Also note that waste uses accessor functions
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
43 to get at internal values, as opposed to direct struct access for TextEdit. <p>
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
44
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
45 <code>Scrollbar_callback</code> on the other hand is more elaborate (but also provides more functionality).
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
46 It also handles horizontal scrolls (scrolling one-tenth and half a screenful with the buttons). This
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
47 function is also "multi-font-ready" in that scrolling one line will do the expected thing in case of multiple
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
48 fonts. We will implement a multi-font editor later. A minor annoyance of Waste is that is does not provide
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
49 a pinned scroll, so at the end of our callback routine we have to check that we have not scrolled past the
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
50 beginning or end of the document, and adjust when needed. <p>
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
51
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
52 <code>do_update</code> is also changed, because Waste is completely region-based (as opposed to rect-based).
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
53 Hence, we erase regions here and we can also return immedeately if there is nothing to update. <p>
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
54
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
55 <code>Do_postresize</code> is new: because Waste uses accessor functions we can now modify the viewRect from
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
56 Python, which is impossible in the Python TextEdit interface, and hence we can implement resize. The
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
57 <code>do_key</code> and <code>do_contentclick</code> methods have also seen minor changes, because the
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
58 corresponding waste routines need a bit more information than their TextEdit counterparts. The Cut/copy/paste
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
59 code is simplified, because Waste uses the normal desktop scrap. <p>
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
60
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
61 Implementing undo is a wonder of simplicity: Waste handles all the details for us. Also, the new
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
62 <code>can_paste</code> method (which controls greying out of the paste menu entry) is an improvement
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
63 over what <code>ped</code> did: in ped it was possible that paste was enabled but that the data on the
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
64 scrap was incompatible with TextEdit. No more such problems here. <p>
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
65
4461
a8264d70f281 Added a note on swed and htmled examples, added tab support, fixed typo
Jack Jansen <jack.jansen@cwi.nl>
parents: 3531
diff changeset
66 That is all for now. There is an undocumented extended version of wed, <a href="waste/swed.py">swed.py</a>,
a8264d70f281 Added a note on swed and htmled examples, added tab support, fixed typo
Jack Jansen <jack.jansen@cwi.nl>
parents: 3531
diff changeset
67 which supports multiple fonts, sizes and faces, and uses Waste's tab-calculation to do tab characters "right".
a8264d70f281 Added a note on swed and htmled examples, added tab support, fixed typo
Jack Jansen <jack.jansen@cwi.nl>
parents: 3531
diff changeset
68 There is also an even more elaborate example, <a href="waste/htmled.py">htmled.py</a> which extends swed with
a8264d70f281 Added a note on swed and htmled examples, added tab support, fixed typo
Jack Jansen <jack.jansen@cwi.nl>
parents: 3531
diff changeset
69 the ability to import html files, showing the use of color and how to use embedded object (rulers, in this case).
a8264d70f281 Added a note on swed and htmled examples, added tab support, fixed typo
Jack Jansen <jack.jansen@cwi.nl>
parents: 3531
diff changeset
70 These two programs have not been documented yet, though, so you will have to look at them without guidance. <p>
3531
38e1480e7f89 Added documentation on FrameWork, TextEdit and Waste
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
71 <hr>
4461
a8264d70f281 Added a note on swed and htmled examples, added tab support, fixed typo
Jack Jansen <jack.jansen@cwi.nl>
parents: 3531
diff changeset
72 Back to the <A HREF="index.html">index</A> to pick another example.