Mercurial > cpython-lru_cache-weakref
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 |
| 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"><piovanel@kagi.com></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"><ftp://ftp.dsi.unimi.it/DSI/piovanel/WASTE></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. |
