From 5f74a25a3cbcdb6be2be31828405630f4359b1af Mon Sep 17 00:00:00 2001 From: Erick Gallesio Date: Fri, 10 Apr 1998 12:59:06 +0200 Subject: [PATCH] Commit of 3.99.0 version --- BINARY_DISTRIB | 4 +- CHANGES | 116 +- ChangeLog | 758 +- Contrib/Stetris/stetris.stk | 2 +- Contrib/Trace/trace.stk | 1 - Demos/%README | 436 +- Demos/Html-Demos/Images/README | 11 + Demos/Html-Demos/Images/STk-tiny.gif | Bin 0 -> 1234 bytes Demos/Html-Demos/Images/amib-tiny.gif | Bin 0 -> 38732 bytes Demos/Html-Demos/Images/amib.gif | Bin 0 -> 91143 bytes Demos/Html-Demos/Images/backward.gif | Bin 0 -> 714 bytes Demos/Html-Demos/Images/compo-all.gif | Bin 0 -> 1813 bytes Demos/Html-Demos/Images/en.gif | Bin 0 -> 3431 bytes Demos/Html-Demos/Images/entry.gif | Bin 0 -> 1071 bytes Demos/Html-Demos/Images/envdraw.gif | Bin 0 -> 8182 bytes Demos/Html-Demos/Images/fr.gif | Bin 0 -> 2094 bytes Demos/Html-Demos/Images/frame.gif | Bin 0 -> 1575 bytes Demos/Html-Demos/Images/label.gif | Bin 0 -> 939 bytes Demos/Html-Demos/Images/mosaic_01.gif | Bin 0 -> 717 bytes Demos/Html-Demos/Images/mosaic_02.gif | Bin 0 -> 722 bytes Demos/Html-Demos/Images/mosaic_03.gif | Bin 0 -> 726 bytes Demos/Html-Demos/Images/mosaic_04.gif | Bin 0 -> 824 bytes Demos/Html-Demos/Images/mosaic_05.gif | Bin 0 -> 701 bytes Demos/Html-Demos/Images/mosaic_06.gif | Bin 0 -> 799 bytes Demos/Html-Demos/Images/mosaic_07.gif | Bin 0 -> 848 bytes Demos/Html-Demos/Images/mosaic_08.gif | Bin 0 -> 847 bytes Demos/Html-Demos/Images/mosaic_09.gif | Bin 0 -> 752 bytes Demos/Html-Demos/Images/mosaic_10.gif | Bin 0 -> 883 bytes Demos/Html-Demos/Images/mosaic_11.gif | Bin 0 -> 893 bytes Demos/Html-Demos/Images/mosaic_12.gif | Bin 0 -> 887 bytes Demos/Html-Demos/Images/mosaic_13.gif | Bin 0 -> 892 bytes Demos/Html-Demos/Images/mosaic_14.gif | Bin 0 -> 877 bytes Demos/Html-Demos/Images/mosaic_15.gif | Bin 0 -> 882 bytes Demos/Html-Demos/Images/mosaic_16.gif | Bin 0 -> 869 bytes Demos/Html-Demos/Images/mosaic_17.gif | Bin 0 -> 850 bytes Demos/Html-Demos/Images/mosaic_18.gif | Bin 0 -> 822 bytes Demos/Html-Demos/Images/mosaic_19.gif | Bin 0 -> 817 bytes Demos/Html-Demos/Images/mosaic_20.gif | Bin 0 -> 844 bytes Demos/Html-Demos/Images/mosaic_21.gif | Bin 0 -> 837 bytes Demos/Html-Demos/Images/mosaic_22.gif | Bin 0 -> 830 bytes Demos/Html-Demos/Images/mosaic_23.gif | Bin 0 -> 733 bytes Demos/Html-Demos/Images/mosaic_24.gif | Bin 0 -> 731 bytes Demos/Html-Demos/Images/mosaic_25.gif | Bin 0 -> 732 bytes Demos/Html-Demos/Lentry.stklos | 65 + Demos/Html-Demos/S-scape-fr.html | 34 + Demos/Html-Demos/amib-fr.html | 63 + Demos/Html-Demos/amib.stklos | 1 + Demos/Html-Demos/animate.stk | 56 + Demos/Html-Demos/applet-fr.html | 70 + Demos/Html-Demos/compo-fr.html | 70 + Demos/Html-Demos/envdraw-en.html | 33 + Demos/Html-Demos/envdraw-fr.html | 47 + Demos/Html-Demos/interface.stk | 49 + Demos/Html-Demos/intro-fr.html | 34 + Demos/Html-Demos/main-fr.html | 30 + Demos/Html-Demos/main.html | 24 + Demos/Html-Demos/puzzle.stk | 66 + Demos/Html-Demos/simple-fr.html | 39 + Demos/Html-Demos/stklos-widgets.stklos | 1 + Demos/README.html | 782 +- Demos/S-scape.stklos | 25 + Demos/STk-normal.gif | 2 +- Demos/Widget/Warrow.stklos | 2 +- Demos/Widget/Wcscroll.stklos | 69 + Demos/Widget/Wfloor.stklos | 1029 ++ Demos/Widget/Wimage1.stklos | 3 +- Demos/Widget/Wruler.stklos | 143 + Demos/Widget/Wwind.stklos | 2 + Demos/Widget/widget.stk | 282 - Demos/amib.stklos | 61 +- Demos/browse.stk | 3 +- Demos/browse.stklos | 3 +- Demos/calc.stklos | 6 +- Demos/colormap.stk | 6 +- Demos/compo-demo.stklos | 133 - Demos/filebox.stklos | 22 +- Demos/hbrowse.stklos | 109 - Demos/mc-server.stk | 11 +- Demos/queens.stk | 2 +- Demos/showvars.stk | 5 +- Demos/stklos-demo.stklos | 11 +- Demos/stklos-demo2.stklos | 28 +- Demos/stklos-widgets.stklos | 219 + Demos/term.stk | 8 +- Demos/turtle.stk | 2 +- Demos/widget.stk | 14 +- Doc/Extension/Extending.dvi | Bin 0 -> 69676 bytes Doc/Extension/Extending.ps | 3285 +++-- Doc/Extension/Extending.tex | 2 +- Doc/Isotas96/Isotas96.dvi | Bin 0 -> 64392 bytes Doc/Isotas96/Isotas96.ps | 2276 +-- Doc/Makefile | 26 +- Doc/Manual/Makefile | 43 +- Doc/Manual/bind.n | 67 +- Doc/Manual/bindtags.n | 4 +- Doc/Manual/bitmap.n | 2 +- Doc/Manual/button.n | 28 +- Doc/Manual/canvas.n | 66 +- Doc/Manual/checkbutton.n | 42 +- Doc/Manual/destroy.n | 2 +- Doc/Manual/entry.n | 5 + Doc/Manual/event.n | 339 + Doc/Manual/font.n | 280 + Doc/Manual/frame.n | 13 +- Doc/Manual/ftp.n | 6 +- Doc/Manual/grid.n | 149 +- Doc/Manual/image.n | 2 +- Doc/Manual/jpeg.n | 76 + Doc/Manual/label.n | 7 + Doc/Manual/links.stk | 21 + Doc/Manual/listener.n | 3 +- Doc/Manual/make-image.n | 80 + Doc/Manual/make-link.stk | 31 + Doc/Manual/menu.n | 166 +- Doc/Manual/menubutton.n | 17 +- Doc/Manual/options.n | 20 +- Doc/Manual/photo.n | 6 +- Doc/Manual/pixmap.n | 103 + Doc/Manual/radiobutton.n | 1 - Doc/Manual/report-error.n | 2 +- Doc/Manual/stk.1 | 33 +- Doc/Manual/stk.ps | 184 +- Doc/Manual/text.n | 169 +- Doc/Manual/wm.n | 11 +- Doc/Reference/Appendix-D.tex | 364 +- Doc/Reference/Appendix-E.tex | 75 + Doc/Reference/Appendix-F.tex | 277 + Doc/Reference/Makefile | 18 +- Doc/Reference/Reference1.tex | 92 +- Doc/Reference/Reference2.tex | 994 +- Doc/Reference/Reference3.tex | 846 ++ Doc/Reference/manual.dvi | Bin 0 -> 393552 bytes Doc/Reference/manual.ps | 14197 +++++++++++-------- Doc/Reference/manual.tex | 20 +- Doc/STklos+Tk/STklos+Tk.dvi | Bin 0 -> 67360 bytes Doc/STklos+Tk/STklos+Tk.ps | 4449 +++--- Doc/Tcl93/Tcl93.log | 113 + Doc/bibliography.bib | 112 +- Extensions/Makefile.in | 3 +- Extensions/hash.c | 6 +- Extensions/html.c | 2 +- Extensions/jpeg.c | 1067 ++ Extensions/pixmap.c | 519 +- Extensions/posix.c | 120 +- Extensions/process.c | 4 +- Extensions/socket.c | 63 +- Help/BlueIndex.html | 33 +- Help/GreenIndex.html | 16 +- Help/Makefile | 7 +- Help/STk-hlp.html | 26 +- Help/YellowIndex.html | 13 +- Help/after.n.html | 3 +- Help/amib-hlp.html | 8 +- Help/bell.n.html | 3 +- Help/bind.n.html | 64 +- Help/bindtags.n.html | 5 +- Help/bitmap.n.html | 7 +- Help/button.n.html | 53 +- Help/canvas.n.html | 61 +- Help/checkbutton.n.html | 36 +- Help/clipboard.n.html | 3 +- Help/create-image.n.html | 69 + Help/destroy.n.html | 3 +- Help/entry.n.html | 86 +- Help/event.n.html | 325 + Help/focus-next.n.html | 3 +- Help/focus.n.html | 3 +- Help/font.n.html | 165 + Help/frame.n.html | 33 +- Help/ftp.n.html | 5 +- Help/grab.n.html | 3 +- Help/grid.n.html | 207 +- Help/image.n.html | 7 +- Help/inspect-abt.html | 23 + Help/inspect-hlp.html | 51 + Help/jpeg.n.html | 65 + Help/label.n.html | 28 +- Help/listbox.n.html | 3 +- Help/listener.n.html | 4 +- Help/lower.n.html | 3 +- Help/make-dialog.n.html | 3 +- Help/make-link.stk | 35 + Help/menu.n.html | 264 +- Help/menubutton.n.html | 45 +- Help/message.n.html | 3 +- Help/option-menu.n.html | 3 +- Help/option.n.html | 3 +- Help/options.n.html | 28 +- Help/pack.n.html | 3 +- Help/palette.n.html | 3 +- Help/photo.n.html | 7 +- Help/pixmap.n.html | 74 + Help/place.n.html | 3 +- Help/popup.n.html | 3 +- Help/posix.n.html | 3 +- Help/radiobutton.n.html | 3 +- Help/raise.n.html | 3 +- Help/report-error.n.html | 5 +- Help/scale.n.html | 3 +- Help/scrollbar.n.html | 3 +- Help/selection.n.html | 3 +- Help/send.n.html | 7 +- Help/stk.1.html | 42 +- Help/text.n.html | 5 +- Help/tk.n.html | 3 +- Help/tkvars.n.html | 3 +- Help/tkwait.n.html | 3 +- Help/toplevel.n.html | 3 +- Help/update.n.html | 3 +- Help/winfo.n.html | 3 +- Help/wm.n.html | 12 +- INSTALL | 13 +- Lib/{images => Images}/Cancel.gif | Bin Lib/{images => Images}/Help.gif | Bin Lib/{images => Images}/Ok.gif | Bin Lib/Images/STk-large.gif | Bin 0 -> 2675 bytes Lib/Images/STk-normal.gif | Bin 0 -> 1596 bytes Lib/Images/STk-tiny.gif | Bin 0 -> 1234 bytes Lib/{images => Images}/boxes | 0 Lib/{images => Images}/cross_weave | 0 Lib/{images => Images}/dimple1 | 0 Lib/{images => Images}/dimple3 | 0 Lib/Images/dir.xpm | 24 + Lib/{images => Images}/down_arrow_8.bm | 0 Lib/{images => Images}/earth.gif | Bin Lib/{images => Images}/earthris.gif | Bin Lib/Images/error | 8 + Lib/Images/error.xpm | 64 + Lib/{images => Images}/face | 0 Lib/Images/file.xpm | 22 + Lib/{images => Images}/flagdown | 0 Lib/{images => Images}/flagup | 0 Lib/{images => Images}/full | 0 Lib/{images => Images}/gray1 | 0 Lib/{images => Images}/gray3 | 0 Lib/{images => Images}/grey.25 | 0 Lib/{images => Images}/grey.5 | 0 Lib/{images => Images}/grid4 | 0 Lib/{images => Images}/grid8 | 0 Lib/{images => Images}/hlines2 | 0 Lib/{images => Images}/hlines3 | 0 Lib/Images/info | 5 + Lib/Images/info.xpm | 98 + Lib/{images => Images}/letters | 0 Lib/{images => Images}/light_gray | 0 Lib/{images => Images}/menu.bm | 0 Lib/{images => Images}/mickey.gif | Bin Lib/{images => Images}/noletters | 0 Lib/Images/parentdir.xpm | 25 + Lib/{images => Images}/pattern | 0 Lib/{images => Images}/queen | 0 Lib/Images/question | 10 + Lib/Images/question.xpm | 59 + Lib/{images => Images}/root_weave | 0 Lib/{images => Images}/stipple | 0 Lib/{images => Images}/teapot.ppm | 0 Lib/{images => Images}/vlines2 | 0 Lib/{images => Images}/vlines3 | 0 Lib/Images/warning | 5 + Lib/Images/warning.xpm | 59 + Lib/Makefile | 13 +- Lib/Match/compiler.scm | 526 + Lib/Match/descr.scm | 608 + Lib/Match/mexpand.scm | 158 + Lib/Match/normalize.scm | 592 + Lib/Match/s2cfun.scm | 115 + Lib/STk.init | 6 + Lib/bigloo.stk | 89 + Lib/button.stk | 236 +- Lib/compatibility.stk | 6 +- Lib/dialog.stk | 13 +- Lib/editor.stk | 6 +- Lib/entry.stk | 89 +- Lib/error.stk | 11 +- Lib/extset.stk | 77 + Lib/ffi.stk | 98 + Lib/fileevent.stk | 7 +- Lib/focus.stk | 13 +- Lib/{ftp.stk => ftp.stklos} | 6 +- Lib/hash.stk | 4 +- Lib/help.stk | 36 +- Lib/html.stk | 5 +- Lib/image.stk | 91 + Lib/images/STk-normal.gif | Bin 742 -> 0 bytes Lib/init.stk | 290 +- Lib/inspect-detail.stk | 184 +- Lib/inspect-main.stk | 32 +- Lib/inspect-misc.stk | 11 +- Lib/inspect-view.stk | 41 +- Lib/jpeg.stk | 27 + Lib/listbox.stk | 21 +- Lib/listener.stk | 8 +- Lib/match.stk | 45 + Lib/menu.stk | 832 +- Lib/palette.stk | 10 +- Lib/pixmap.stk | 4 +- Lib/posix.stk | 17 +- Lib/scale.stk | 6 +- Lib/scrollbar.stk | 13 +- Lib/security.stk | 111 + Lib/sterm.stk | 29 +- Lib/tearoff.stk | 136 - Lib/text.stk | 105 +- Lib/tk-init.stk | 179 +- Lib/tk-unix.stk | 83 + Lib/trace.stk | 322 +- Lib/www-browser.stklos | 152 + Lib/www-file.stk | 78 + Lib/www-html.stk | 739 + Lib/www-http.stk | 48 + Lib/www-img.stk | 107 + Lib/www-snd.stk | 71 + Lib/www-txt.stk | 29 + Lib/www-url.stk | 437 + Lib/www.stk | 220 + Makefile.in | 18 +- Mp/Makefile | 2 +- README | 117 +- STk.prj | 2182 +-- STklos/%README | 168 +- STklos/Examples/E2.stklos | 2 +- STklos/Examples/E4.stklos | 2 +- STklos/Examples/complex.stklos | 104 + STklos/Makefile | 7 +- STklos/README.html | 118 + STklos/Tk/%README | 5 +- STklos/Tk/Basics.stklos | 416 +- STklos/Tk/Button.stklos | 85 +- STklos/Tk/Canvas.stklos | 24 +- STklos/Tk/Canvitem.stklos | 22 +- STklos/Tk/Composite/Balloon.stklos | 113 + STklos/Tk/Composite/Choicebox.stklos | 121 +- STklos/Tk/Composite/Colorbox.stklos | 181 + STklos/Tk/Composite/Defbutton.stklos | 54 +- STklos/Tk/Composite/Filebox.stklos | 567 +- STklos/Tk/Composite/Gauge.stklos | 154 + STklos/Tk/Composite/Lentry.stklos | 114 +- STklos/Tk/Composite/Lframe.stklos | 140 + STklos/Tk/Composite/Msgbox.stklos | 229 + STklos/Tk/Composite/Multipaned.stklos | 2 +- STklos/Tk/Composite/Multiwin.stklos | 65 +- STklos/Tk/Composite/Paned.stklos | 196 +- STklos/Tk/Composite/Scrollbox.stklos | 77 +- STklos/Tk/Composite/Scrollcanvas.stklos | 72 +- STklos/Tk/Composite/Scrolltext.stklos | 63 +- STklos/Tk/Entry.stklos | 41 +- STklos/Tk/Frame.stklos | 30 +- STklos/Tk/Image.stklos | 142 +- STklos/Tk/Listbox.stklos | 23 +- STklos/Tk/Menu.stklos | 30 +- STklos/Tk/Message.stklos | 10 +- STklos/Tk/Scale.stklos | 17 +- STklos/Tk/Scrollbar.stklos | 41 +- STklos/Tk/Text.stklos | 146 +- STklos/Tk/Tk-active.stklos | 26 + STklos/Tk/Tk-classes.stklos | 49 +- STklos/Tk/Tk-meta.stklos | 112 +- STklos/Tk/Tk-methods.stklos | 125 - STklos/Tk/Toplevel.stklos | 105 +- STklos/active-slot.stklos | 56 + STklos/composite-slot.stklos | 52 + STklos/describe.stk | 94 - STklos/describe.stklos | 165 + STklos/stklos.stk | 1133 +- STklos/trace-gf.stklos | 94 + Snow/module.c | 1 + Snow/module.h | 1 + Snow/tcl-glue.c | 1 + Snow/tcl-glue.h | 1 + Snow/tcl-obj.c | 1 + Snow/test-snow | 12 +- Src/.gdb_history | 256 - Src/Makefile | 147 - Src/Makefile.in | 23 +- Src/argv.c | 35 +- Src/boolean.c | 13 +- Src/char.c | 18 +- Src/cont.c | 38 +- Src/dummy.c | 14 +- Src/dump.c | 6 +- Src/dynload.c | 430 +- Src/env.c | 197 +- Src/error.c | 141 +- Src/eval.c | 247 +- Src/extend.c | 53 +- Src/extend.h | 29 +- Src/gc.c | 148 +- Src/io.c | 22 +- Src/jpeg.c | 1 + Src/list.c | 98 +- Src/macros.c | 16 +- Src/module.c | 559 + Src/module.h | 50 + Src/number.c | 148 +- Src/port.c | 217 +- Src/primitives.c | 84 +- Src/print.c | 243 +- Src/proc.c | 41 +- Src/read.c | 48 +- Src/signal.c | 192 +- Src/slib.c | 69 +- Src/sport.h | 14 +- Src/stk.c | 4 +- Src/stk.h | 280 +- Src/stklos.c | 868 +- Src/stklos.h | 53 +- Src/str.c | 57 +- Src/symbol.c | 16 +- Src/syntax.c | 88 +- Src/tcl-glue.c | 285 + Src/tcl-glue.h | 40 + Src/tcl-lib.c | 495 +- Src/tcl-obj.c | 756 + Src/tcl-util.c | 176 +- Src/test-stk | 19 +- Src/tk-glue.c | 187 +- Src/tk-glue.h | 27 +- Src/tk-main.c | 41 +- Src/toplevel.c | 87 +- Src/unix.c | 38 +- Src/userinit.c | 4 +- Src/values.c | 54 + Stack/Makefile.in | 37 + Stack/README | 71 + Stack/configure | 855 ++ Stack/configure.in | 51 + Stack/conftest.c | 3 + Stack/libstack-ALPHA.c | 83 + Stack/libstack-HP.c | 70 + Stack/libstack-I386.c | 44 + Stack/libstack-MIPS32.c | 99 + Stack/libstack-SUN.c | 49 + Stack/libstack-UNKNOWN_ARCH.c | 28 + Stack/libstack.h.in | 203 + Stack/lowstack-ALPHA.c | 44 + Stack/lowstack-ALPHA.s | 35 + Stack/lowstack-MIPS32.c | 40 + Stack/lowstack-MIPS32.s | 35 + Stack/test.c | 601 + Tcl/Makefile.in | 7 +- Tcl/configure | 4 +- Tcl/configure.in | 2 +- Tcl/panic.c | 16 +- Tcl/regexp.c | 4 +- Tcl/tcl.h | 798 +- Tcl/tclConfig.sh | 94 - Tcl/tclConfig.sh.in | 33 +- Tcl/tclEvent.c | 1859 +-- Tcl/tclGet.c | 120 +- Tcl/tclHash.c | 44 +- Tcl/tclInt.h | 1735 ++- Tcl/tclMtherr.c | 4 +- Tcl/tclNotify.c | 565 +- Tcl/tclPort.h | 12 +- Tcl/tclPreserve.c | 6 +- Tcl/tclTimer.c | 1169 ++ Tcl/tclUnixEvent.c | 76 + Tcl/tclUnixNotfy.c | 577 +- Tcl/tclUnixPort.h | 85 +- Tcl/tclUnixTime.c | 41 +- Tcl/tclUtil.c | 1280 +- Tcl/tclWinNotify.c | 273 - Tcl/tclWinPort.h | 369 - Tcl/tclWinTime.c | 127 - Tk/README | 261 +- Tk/ToDo | 90 - Tk/bitmaps/gray25.bmp | 6 +- Tk/bitmaps/gray75.bmp | 6 + Tk/changes | 832 +- Tk/compat/limits.h | 4 +- Tk/confdefs.h | 1 - Tk/configure.in | 335 - Tk/doc/README | 5 + Tk/doc/README.stk | 5 - Tk/generic/patchlevel.h | 23 - Tk/generic/tk.h | 311 +- Tk/generic/tk3d.c | 479 +- Tk/generic/tk3d.h | 79 + Tk/generic/tkArgv.c | 15 +- Tk/generic/tkBind.c | 3995 ++++-- Tk/generic/tkBitmap.c | 112 +- Tk/generic/tkButton.c | 1084 +- Tk/generic/tkButton.h | 247 + Tk/generic/tkCanvArc.c | 30 +- Tk/generic/tkCanvBmap.c | 6 +- Tk/generic/tkCanvImg.c | 10 +- Tk/generic/tkCanvLine.c | 37 +- Tk/generic/tkCanvPoly.c | 19 +- Tk/generic/tkCanvPs.c | 383 +- Tk/generic/tkCanvText.c | 839 +- Tk/generic/tkCanvUtil.c | 10 +- Tk/generic/tkCanvWind.c | 23 +- Tk/generic/tkCanvas.c | 117 +- Tk/generic/tkClipboard.c | 4 +- Tk/generic/tkCmds.c | 1546 +- Tk/generic/tkColor.c | 358 +- Tk/generic/tkColor.h | 60 + Tk/generic/tkConfig.c | 159 +- Tk/generic/tkConsole.c | 168 +- Tk/generic/tkEntry.c | 598 +- Tk/generic/tkError.c | 23 +- Tk/generic/tkEvent.c | 52 +- Tk/generic/tkFileFilter.c | 486 + Tk/generic/tkFileFilter.h | 83 + Tk/generic/tkFocus.c | 565 +- Tk/generic/tkFont.c | 3583 ++++- Tk/generic/tkFont.h | 208 + Tk/generic/tkFrame.c | 188 +- Tk/generic/tkGet.c | 4 +- Tk/generic/tkGrab.c | 34 +- Tk/generic/tkGrid.c | 2899 ++-- Tk/generic/tkImage.c | 70 +- Tk/generic/tkImgBmap.c | 69 +- Tk/generic/tkImgGIF.c | 1031 +- Tk/generic/tkImgPPM.c | 103 +- Tk/generic/tkImgPhoto.c | 199 +- Tk/generic/tkInitScript.h | 74 + Tk/generic/tkInt.h | 352 +- Tk/generic/tkListbox.c | 163 +- Tk/generic/tkMacWinMenu.c | 134 + Tk/generic/tkMain.c | 437 - Tk/generic/tkMenu.c | 3534 ++--- Tk/generic/tkMenu.h | 544 + Tk/generic/tkMenuDraw.c | 1024 ++ Tk/generic/tkMenubutton.c | 762 +- Tk/generic/tkMenubutton.h | 210 + Tk/generic/tkMessage.c | 287 +- Tk/generic/tkOption.c | 17 +- Tk/generic/tkPack.c | 3 +- Tk/generic/tkPlace.c | 22 +- Tk/generic/tkPointer.c | 634 + Tk/generic/tkRectOval.c | 14 +- Tk/generic/tkScale.c | 1266 +- Tk/generic/tkScale.h | 228 + Tk/generic/tkScrollbar.c | 713 +- Tk/generic/tkScrollbar.h | 200 + Tk/generic/tkSelect.c | 4 +- Tk/generic/tkSquare.c | 11 +- Tk/generic/tkTest.c | 1108 -- Tk/generic/tkText.c | 177 +- Tk/generic/tkText.h | 53 +- Tk/generic/tkTextBTree.c | 12 +- Tk/generic/tkTextDisp.c | 368 +- Tk/generic/tkTextImage.c | 895 ++ Tk/generic/tkTextIndex.c | 17 +- Tk/generic/tkTextMark.c | 6 +- Tk/generic/tkTextTag.c | 18 +- Tk/generic/tkTextWind.c | 6 +- Tk/generic/tkTrig.c | 62 +- Tk/generic/tkUtil.c | 244 +- Tk/generic/tkVisual.c | 8 +- Tk/generic/tkWindow.c | 663 +- Tk/porting.notes | 72 - Tk/porting.old | 324 - Tk/unix/Makefile.in | 505 +- Tk/unix/README | 16 +- Tk/unix/configure | 738 +- Tk/unix/configure.in | 301 +- Tk/unix/install-sh | 0 Tk/unix/libtk | 1 - Tk/unix/mkLinks | 118 +- Tk/unix/tkAppInit.c | 4 +- Tk/unix/tkConfig.sh | 61 + Tk/unix/tkConfig.sh.in | 13 +- Tk/unix/tkUnix.c | 7 +- Tk/unix/tkUnix3d.c | 448 + Tk/unix/tkUnixButton.c | 478 + Tk/unix/tkUnixColor.c | 424 + Tk/unix/tkUnixCursor.c | 13 +- Tk/unix/tkUnixDefault.h | 83 +- Tk/unix/tkUnixDialog.c | 206 + Tk/unix/tkUnixDraw.c | 8 +- Tk/unix/tkUnixEmbed.c | 1001 ++ Tk/unix/tkUnixEvent.c | 595 +- Tk/unix/tkUnixFocus.c | 132 + Tk/unix/tkUnixFont.c | 983 ++ Tk/unix/tkUnixInit.c | 135 +- Tk/unix/tkUnixInt.h | 12 +- Tk/unix/tkUnixMenu.c | 1613 +++ Tk/unix/tkUnixMenubu.c | 307 + Tk/unix/tkUnixNotify.c | 832 -- Tk/unix/tkUnixPort.h | 104 +- Tk/unix/tkUnixScale.c | 832 ++ Tk/unix/tkUnixScrlbr.c | 476 + Tk/{generic/tkSend.c => unix/tkUnixSend.c} | 181 +- Tk/unix/tkUnixWm.c | 1423 +- Tk/unix/tkUnixXId.c | 52 +- Tk/win/README | 101 - Tk/win/license.terms | 39 - Tk/win/makefile.bc | 319 - Tk/win/makefile.vc | 216 - Tk/win/rc/cursor00.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor02.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor04.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor06.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor08.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor0a.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor0c.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor0e.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor10.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor12.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor14.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor16.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor18.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor1a.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor1c.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor1e.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor20.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor22.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor24.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor26.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor28.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor2a.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor2c.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor2e.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor30.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor32.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor34.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor36.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor38.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor3a.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor3c.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor3e.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor40.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor42.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor44.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor46.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor48.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor4a.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor4c.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor4e.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor50.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor52.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor54.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor56.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor58.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor5a.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor5c.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor5e.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor60.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor62.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor64.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor66.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor68.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor6a.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor6c.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor6e.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor70.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor72.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor74.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor76.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor78.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor7a.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor7c.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor7e.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor80.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor82.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor84.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor86.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor88.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor8a.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor8c.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor8e.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor90.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor92.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor94.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor96.cur | Bin 326 -> 0 bytes Tk/win/rc/cursor98.cur | Bin 326 -> 0 bytes Tk/win/rc/tk.ico | Bin 1398 -> 0 bytes Tk/win/rc/tk.rc | 122 - Tk/win/rc/wish.ico | Bin 1398 -> 0 bytes Tk/win/rc/wish.rc | 40 - Tk/win/stubs.c | 454 - Tk/win/tkWin32Dll.c | 83 - Tk/win/tkWinClipboard.c | 281 - Tk/win/tkWinColor.c | 631 - Tk/win/tkWinCursor.c | 217 - Tk/win/tkWinDefault.h | 524 - Tk/win/tkWinDraw.c | 1258 -- Tk/win/tkWinFont.c | 729 - Tk/win/tkWinImage.c | 120 - Tk/win/tkWinInit.c | 96 - Tk/win/tkWinInt.h | 163 - Tk/win/tkWinKey.c | 334 - Tk/win/tkWinPixmap.c | 129 - Tk/win/tkWinPointer.c | 848 -- Tk/win/tkWinPort.h | 98 - Tk/win/tkWinRegion.c | 179 - Tk/win/tkWinWindow.c | 539 - Tk/win/tkWinWm.c | 3446 ----- Tk/win/tkWinX.c | 1075 -- Tk/win/winMain.c | 250 - Tk/xlib/X11/X.h | 669 - Tk/xlib/X11/Xatom.h | 79 - Tk/xlib/X11/Xfuncproto.h | 55 - Tk/xlib/X11/Xlib.h | 4310 ------ Tk/xlib/X11/Xutil.h | 879 -- Tk/xlib/X11/cursorfont.h | 79 - Tk/xlib/X11/keysym.h | 39 - Tk/xlib/X11/keysymdef.h | 1164 -- Tk/xlib/X11/license.terms | 39 - Tk/xlib/license.terms | 39 - Tk/xlib/xbytes.h | 58 - Tk/xlib/xcolors.h | 771 - Tk/xlib/xdraw.c | 82 - Tk/xlib/xgc.c | 231 - Tk/xlib/ximage.c | 115 - Tk/xlib/xutil.c | 116 - {Tk => Utils}/install-sh | 0 VERSION | 2 +- Win32/README | 40 - Win32/STk-inst.bat | 38 - Win32/STk-make.bc | 1210 -- Win32/STk-make.vc | 249 - Win32/STk.def | 6 - Win32/STk.ico | Bin 1398 -> 0 bytes Win32/STk.rc | 117 - configure | 66 +- configure.in | 39 +- 719 files changed, 81792 insertions(+), 61853 deletions(-) delete mode 120000 Contrib/Trace/trace.stk create mode 100644 Demos/Html-Demos/Images/README create mode 100644 Demos/Html-Demos/Images/STk-tiny.gif create mode 100644 Demos/Html-Demos/Images/amib-tiny.gif create mode 100644 Demos/Html-Demos/Images/amib.gif create mode 100644 Demos/Html-Demos/Images/backward.gif create mode 100644 Demos/Html-Demos/Images/compo-all.gif create mode 100644 Demos/Html-Demos/Images/en.gif create mode 100644 Demos/Html-Demos/Images/entry.gif create mode 100644 Demos/Html-Demos/Images/envdraw.gif create mode 100644 Demos/Html-Demos/Images/fr.gif create mode 100644 Demos/Html-Demos/Images/frame.gif create mode 100644 Demos/Html-Demos/Images/label.gif create mode 100644 Demos/Html-Demos/Images/mosaic_01.gif create mode 100644 Demos/Html-Demos/Images/mosaic_02.gif create mode 100644 Demos/Html-Demos/Images/mosaic_03.gif create mode 100644 Demos/Html-Demos/Images/mosaic_04.gif create mode 100644 Demos/Html-Demos/Images/mosaic_05.gif create mode 100644 Demos/Html-Demos/Images/mosaic_06.gif create mode 100644 Demos/Html-Demos/Images/mosaic_07.gif create mode 100644 Demos/Html-Demos/Images/mosaic_08.gif create mode 100644 Demos/Html-Demos/Images/mosaic_09.gif create mode 100644 Demos/Html-Demos/Images/mosaic_10.gif create mode 100644 Demos/Html-Demos/Images/mosaic_11.gif create mode 100644 Demos/Html-Demos/Images/mosaic_12.gif create mode 100644 Demos/Html-Demos/Images/mosaic_13.gif create mode 100644 Demos/Html-Demos/Images/mosaic_14.gif create mode 100644 Demos/Html-Demos/Images/mosaic_15.gif create mode 100644 Demos/Html-Demos/Images/mosaic_16.gif create mode 100644 Demos/Html-Demos/Images/mosaic_17.gif create mode 100644 Demos/Html-Demos/Images/mosaic_18.gif create mode 100644 Demos/Html-Demos/Images/mosaic_19.gif create mode 100644 Demos/Html-Demos/Images/mosaic_20.gif create mode 100644 Demos/Html-Demos/Images/mosaic_21.gif create mode 100644 Demos/Html-Demos/Images/mosaic_22.gif create mode 100644 Demos/Html-Demos/Images/mosaic_23.gif create mode 100644 Demos/Html-Demos/Images/mosaic_24.gif create mode 100644 Demos/Html-Demos/Images/mosaic_25.gif create mode 100644 Demos/Html-Demos/Lentry.stklos create mode 100644 Demos/Html-Demos/S-scape-fr.html create mode 100644 Demos/Html-Demos/amib-fr.html create mode 120000 Demos/Html-Demos/amib.stklos create mode 100644 Demos/Html-Demos/animate.stk create mode 100644 Demos/Html-Demos/applet-fr.html create mode 100644 Demos/Html-Demos/compo-fr.html create mode 100644 Demos/Html-Demos/envdraw-en.html create mode 100644 Demos/Html-Demos/envdraw-fr.html create mode 100644 Demos/Html-Demos/interface.stk create mode 100644 Demos/Html-Demos/intro-fr.html create mode 100644 Demos/Html-Demos/main-fr.html create mode 100644 Demos/Html-Demos/main.html create mode 100644 Demos/Html-Demos/puzzle.stk create mode 100644 Demos/Html-Demos/simple-fr.html create mode 120000 Demos/Html-Demos/stklos-widgets.stklos create mode 100755 Demos/S-scape.stklos create mode 100644 Demos/Widget/Wcscroll.stklos create mode 100644 Demos/Widget/Wfloor.stklos create mode 100644 Demos/Widget/Wruler.stklos delete mode 100644 Demos/Widget/widget.stk delete mode 100755 Demos/compo-demo.stklos delete mode 100644 Demos/hbrowse.stklos create mode 100755 Demos/stklos-widgets.stklos create mode 100644 Doc/Extension/Extending.dvi create mode 100644 Doc/Isotas96/Isotas96.dvi create mode 100644 Doc/Manual/event.n create mode 100644 Doc/Manual/font.n create mode 100644 Doc/Manual/jpeg.n create mode 100644 Doc/Manual/links.stk create mode 100644 Doc/Manual/make-image.n create mode 100644 Doc/Manual/make-link.stk create mode 100644 Doc/Manual/pixmap.n create mode 100644 Doc/Reference/Appendix-E.tex create mode 100644 Doc/Reference/Appendix-F.tex create mode 100644 Doc/Reference/Reference3.tex create mode 100644 Doc/Reference/manual.dvi create mode 100644 Doc/STklos+Tk/STklos+Tk.dvi create mode 100644 Doc/Tcl93/Tcl93.log create mode 100644 Extensions/jpeg.c create mode 100644 Help/create-image.n.html create mode 100644 Help/event.n.html create mode 100644 Help/font.n.html create mode 100644 Help/inspect-abt.html create mode 100644 Help/inspect-hlp.html create mode 100644 Help/jpeg.n.html create mode 100644 Help/make-link.stk create mode 100644 Help/pixmap.n.html rename Lib/{images => Images}/Cancel.gif (100%) rename Lib/{images => Images}/Help.gif (100%) rename Lib/{images => Images}/Ok.gif (100%) create mode 100644 Lib/Images/STk-large.gif create mode 100644 Lib/Images/STk-normal.gif create mode 100644 Lib/Images/STk-tiny.gif rename Lib/{images => Images}/boxes (100%) rename Lib/{images => Images}/cross_weave (100%) rename Lib/{images => Images}/dimple1 (100%) rename Lib/{images => Images}/dimple3 (100%) create mode 100644 Lib/Images/dir.xpm rename Lib/{images => Images}/down_arrow_8.bm (100%) rename Lib/{images => Images}/earth.gif (100%) rename Lib/{images => Images}/earthris.gif (100%) create mode 100644 Lib/Images/error create mode 100644 Lib/Images/error.xpm rename Lib/{images => Images}/face (100%) create mode 100644 Lib/Images/file.xpm rename Lib/{images => Images}/flagdown (100%) rename Lib/{images => Images}/flagup (100%) rename Lib/{images => Images}/full (100%) rename Lib/{images => Images}/gray1 (100%) rename Lib/{images => Images}/gray3 (100%) rename Lib/{images => Images}/grey.25 (100%) rename Lib/{images => Images}/grey.5 (100%) rename Lib/{images => Images}/grid4 (100%) rename Lib/{images => Images}/grid8 (100%) rename Lib/{images => Images}/hlines2 (100%) rename Lib/{images => Images}/hlines3 (100%) create mode 100644 Lib/Images/info create mode 100644 Lib/Images/info.xpm rename Lib/{images => Images}/letters (100%) rename Lib/{images => Images}/light_gray (100%) rename Lib/{images => Images}/menu.bm (100%) rename Lib/{images => Images}/mickey.gif (100%) rename Lib/{images => Images}/noletters (100%) create mode 100644 Lib/Images/parentdir.xpm rename Lib/{images => Images}/pattern (100%) rename Lib/{images => Images}/queen (100%) create mode 100644 Lib/Images/question create mode 100644 Lib/Images/question.xpm rename Lib/{images => Images}/root_weave (100%) rename Lib/{images => Images}/stipple (100%) rename Lib/{images => Images}/teapot.ppm (100%) rename Lib/{images => Images}/vlines2 (100%) rename Lib/{images => Images}/vlines3 (100%) create mode 100644 Lib/Images/warning create mode 100644 Lib/Images/warning.xpm create mode 100644 Lib/Match/compiler.scm create mode 100644 Lib/Match/descr.scm create mode 100644 Lib/Match/mexpand.scm create mode 100644 Lib/Match/normalize.scm create mode 100644 Lib/Match/s2cfun.scm create mode 100644 Lib/bigloo.stk create mode 100644 Lib/extset.stk create mode 100644 Lib/ffi.stk rename Lib/{ftp.stk => ftp.stklos} (96%) create mode 100644 Lib/image.stk delete mode 100644 Lib/images/STk-normal.gif create mode 100644 Lib/jpeg.stk create mode 100644 Lib/match.stk create mode 100644 Lib/security.stk delete mode 100644 Lib/tearoff.stk create mode 100644 Lib/tk-unix.stk create mode 100644 Lib/www-browser.stklos create mode 100644 Lib/www-file.stk create mode 100644 Lib/www-html.stk create mode 100644 Lib/www-http.stk create mode 100644 Lib/www-img.stk create mode 100644 Lib/www-snd.stk create mode 100644 Lib/www-txt.stk create mode 100644 Lib/www-url.stk create mode 100644 Lib/www.stk create mode 100644 STklos/Examples/complex.stklos create mode 100644 STklos/README.html create mode 100644 STklos/Tk/Composite/Balloon.stklos create mode 100644 STklos/Tk/Composite/Colorbox.stklos create mode 100644 STklos/Tk/Composite/Gauge.stklos create mode 100644 STklos/Tk/Composite/Lframe.stklos create mode 100644 STklos/Tk/Composite/Msgbox.stklos create mode 100644 STklos/Tk/Tk-active.stklos delete mode 100644 STklos/Tk/Tk-methods.stklos create mode 100644 STklos/active-slot.stklos create mode 100644 STklos/composite-slot.stklos delete mode 100644 STklos/describe.stk create mode 100644 STklos/describe.stklos create mode 100644 STklos/trace-gf.stklos create mode 120000 Snow/module.c create mode 120000 Snow/module.h create mode 120000 Snow/tcl-glue.c create mode 120000 Snow/tcl-glue.h create mode 120000 Snow/tcl-obj.c delete mode 100644 Src/.gdb_history delete mode 100644 Src/Makefile create mode 120000 Src/jpeg.c create mode 100644 Src/module.c create mode 100644 Src/module.h create mode 100644 Src/tcl-glue.c create mode 100644 Src/tcl-glue.h create mode 100644 Src/tcl-obj.c create mode 100644 Src/values.c create mode 100644 Stack/Makefile.in create mode 100644 Stack/README create mode 100755 Stack/configure create mode 100644 Stack/configure.in create mode 100644 Stack/conftest.c create mode 100644 Stack/libstack-ALPHA.c create mode 100644 Stack/libstack-HP.c create mode 100644 Stack/libstack-I386.c create mode 100644 Stack/libstack-MIPS32.c create mode 100644 Stack/libstack-SUN.c create mode 100644 Stack/libstack-UNKNOWN_ARCH.c create mode 100644 Stack/libstack.h.in create mode 100644 Stack/lowstack-ALPHA.c create mode 100644 Stack/lowstack-ALPHA.s create mode 100644 Stack/lowstack-MIPS32.c create mode 100644 Stack/lowstack-MIPS32.s create mode 100644 Stack/test.c delete mode 100644 Tcl/tclConfig.sh create mode 100644 Tcl/tclTimer.c create mode 100644 Tcl/tclUnixEvent.c delete mode 100644 Tcl/tclWinNotify.c delete mode 100644 Tcl/tclWinPort.h delete mode 100644 Tcl/tclWinTime.c delete mode 100644 Tk/ToDo create mode 100644 Tk/bitmaps/gray75.bmp delete mode 100644 Tk/confdefs.h delete mode 100644 Tk/configure.in create mode 100644 Tk/doc/README delete mode 100644 Tk/doc/README.stk delete mode 100644 Tk/generic/patchlevel.h create mode 100644 Tk/generic/tk3d.h create mode 100644 Tk/generic/tkButton.h create mode 100644 Tk/generic/tkColor.h create mode 100644 Tk/generic/tkFileFilter.c create mode 100644 Tk/generic/tkFileFilter.h create mode 100644 Tk/generic/tkFont.h create mode 100644 Tk/generic/tkInitScript.h create mode 100644 Tk/generic/tkMacWinMenu.c delete mode 100644 Tk/generic/tkMain.c create mode 100644 Tk/generic/tkMenu.h create mode 100644 Tk/generic/tkMenuDraw.c create mode 100644 Tk/generic/tkMenubutton.h create mode 100644 Tk/generic/tkPointer.c create mode 100644 Tk/generic/tkScale.h create mode 100644 Tk/generic/tkScrollbar.h delete mode 100644 Tk/generic/tkTest.c create mode 100644 Tk/generic/tkTextImage.c delete mode 100644 Tk/porting.notes delete mode 100644 Tk/porting.old mode change 100755 => 100644 Tk/unix/install-sh delete mode 100644 Tk/unix/libtk create mode 100644 Tk/unix/tkUnix3d.c create mode 100644 Tk/unix/tkUnixButton.c create mode 100644 Tk/unix/tkUnixColor.c create mode 100644 Tk/unix/tkUnixDialog.c create mode 100644 Tk/unix/tkUnixEmbed.c create mode 100644 Tk/unix/tkUnixFocus.c create mode 100644 Tk/unix/tkUnixFont.c create mode 100644 Tk/unix/tkUnixMenu.c create mode 100644 Tk/unix/tkUnixMenubu.c delete mode 100644 Tk/unix/tkUnixNotify.c create mode 100644 Tk/unix/tkUnixScale.c create mode 100644 Tk/unix/tkUnixScrlbr.c rename Tk/{generic/tkSend.c => unix/tkUnixSend.c} (93%) delete mode 100644 Tk/win/README delete mode 100644 Tk/win/license.terms delete mode 100644 Tk/win/makefile.bc delete mode 100644 Tk/win/makefile.vc delete mode 100644 Tk/win/rc/cursor00.cur delete mode 100644 Tk/win/rc/cursor02.cur delete mode 100644 Tk/win/rc/cursor04.cur delete mode 100644 Tk/win/rc/cursor06.cur delete mode 100644 Tk/win/rc/cursor08.cur delete mode 100644 Tk/win/rc/cursor0a.cur delete mode 100644 Tk/win/rc/cursor0c.cur delete mode 100644 Tk/win/rc/cursor0e.cur delete mode 100644 Tk/win/rc/cursor10.cur delete mode 100644 Tk/win/rc/cursor12.cur delete mode 100644 Tk/win/rc/cursor14.cur delete mode 100644 Tk/win/rc/cursor16.cur delete mode 100644 Tk/win/rc/cursor18.cur delete mode 100644 Tk/win/rc/cursor1a.cur delete mode 100644 Tk/win/rc/cursor1c.cur delete mode 100644 Tk/win/rc/cursor1e.cur delete mode 100644 Tk/win/rc/cursor20.cur delete mode 100644 Tk/win/rc/cursor22.cur delete mode 100644 Tk/win/rc/cursor24.cur delete mode 100644 Tk/win/rc/cursor26.cur delete mode 100644 Tk/win/rc/cursor28.cur delete mode 100644 Tk/win/rc/cursor2a.cur delete mode 100644 Tk/win/rc/cursor2c.cur delete mode 100644 Tk/win/rc/cursor2e.cur delete mode 100644 Tk/win/rc/cursor30.cur delete mode 100644 Tk/win/rc/cursor32.cur delete mode 100644 Tk/win/rc/cursor34.cur delete mode 100644 Tk/win/rc/cursor36.cur delete mode 100644 Tk/win/rc/cursor38.cur delete mode 100644 Tk/win/rc/cursor3a.cur delete mode 100644 Tk/win/rc/cursor3c.cur delete mode 100644 Tk/win/rc/cursor3e.cur delete mode 100644 Tk/win/rc/cursor40.cur delete mode 100644 Tk/win/rc/cursor42.cur delete mode 100644 Tk/win/rc/cursor44.cur delete mode 100644 Tk/win/rc/cursor46.cur delete mode 100644 Tk/win/rc/cursor48.cur delete mode 100644 Tk/win/rc/cursor4a.cur delete mode 100644 Tk/win/rc/cursor4c.cur delete mode 100644 Tk/win/rc/cursor4e.cur delete mode 100644 Tk/win/rc/cursor50.cur delete mode 100644 Tk/win/rc/cursor52.cur delete mode 100644 Tk/win/rc/cursor54.cur delete mode 100644 Tk/win/rc/cursor56.cur delete mode 100644 Tk/win/rc/cursor58.cur delete mode 100644 Tk/win/rc/cursor5a.cur delete mode 100644 Tk/win/rc/cursor5c.cur delete mode 100644 Tk/win/rc/cursor5e.cur delete mode 100644 Tk/win/rc/cursor60.cur delete mode 100644 Tk/win/rc/cursor62.cur delete mode 100644 Tk/win/rc/cursor64.cur delete mode 100644 Tk/win/rc/cursor66.cur delete mode 100644 Tk/win/rc/cursor68.cur delete mode 100644 Tk/win/rc/cursor6a.cur delete mode 100644 Tk/win/rc/cursor6c.cur delete mode 100644 Tk/win/rc/cursor6e.cur delete mode 100644 Tk/win/rc/cursor70.cur delete mode 100644 Tk/win/rc/cursor72.cur delete mode 100644 Tk/win/rc/cursor74.cur delete mode 100644 Tk/win/rc/cursor76.cur delete mode 100644 Tk/win/rc/cursor78.cur delete mode 100644 Tk/win/rc/cursor7a.cur delete mode 100644 Tk/win/rc/cursor7c.cur delete mode 100644 Tk/win/rc/cursor7e.cur delete mode 100644 Tk/win/rc/cursor80.cur delete mode 100644 Tk/win/rc/cursor82.cur delete mode 100644 Tk/win/rc/cursor84.cur delete mode 100644 Tk/win/rc/cursor86.cur delete mode 100644 Tk/win/rc/cursor88.cur delete mode 100644 Tk/win/rc/cursor8a.cur delete mode 100644 Tk/win/rc/cursor8c.cur delete mode 100644 Tk/win/rc/cursor8e.cur delete mode 100644 Tk/win/rc/cursor90.cur delete mode 100644 Tk/win/rc/cursor92.cur delete mode 100644 Tk/win/rc/cursor94.cur delete mode 100644 Tk/win/rc/cursor96.cur delete mode 100644 Tk/win/rc/cursor98.cur delete mode 100644 Tk/win/rc/tk.ico delete mode 100644 Tk/win/rc/tk.rc delete mode 100644 Tk/win/rc/wish.ico delete mode 100644 Tk/win/rc/wish.rc delete mode 100644 Tk/win/stubs.c delete mode 100644 Tk/win/tkWin32Dll.c delete mode 100644 Tk/win/tkWinClipboard.c delete mode 100644 Tk/win/tkWinColor.c delete mode 100644 Tk/win/tkWinCursor.c delete mode 100644 Tk/win/tkWinDefault.h delete mode 100644 Tk/win/tkWinDraw.c delete mode 100644 Tk/win/tkWinFont.c delete mode 100644 Tk/win/tkWinImage.c delete mode 100644 Tk/win/tkWinInit.c delete mode 100644 Tk/win/tkWinInt.h delete mode 100644 Tk/win/tkWinKey.c delete mode 100644 Tk/win/tkWinPixmap.c delete mode 100644 Tk/win/tkWinPointer.c delete mode 100644 Tk/win/tkWinPort.h delete mode 100644 Tk/win/tkWinRegion.c delete mode 100644 Tk/win/tkWinWindow.c delete mode 100644 Tk/win/tkWinWm.c delete mode 100644 Tk/win/tkWinX.c delete mode 100644 Tk/win/winMain.c delete mode 100644 Tk/xlib/X11/X.h delete mode 100644 Tk/xlib/X11/Xatom.h delete mode 100644 Tk/xlib/X11/Xfuncproto.h delete mode 100644 Tk/xlib/X11/Xlib.h delete mode 100644 Tk/xlib/X11/Xutil.h delete mode 100644 Tk/xlib/X11/cursorfont.h delete mode 100644 Tk/xlib/X11/keysym.h delete mode 100644 Tk/xlib/X11/keysymdef.h delete mode 100644 Tk/xlib/X11/license.terms delete mode 100644 Tk/xlib/license.terms delete mode 100644 Tk/xlib/xbytes.h delete mode 100644 Tk/xlib/xcolors.h delete mode 100644 Tk/xlib/xdraw.c delete mode 100644 Tk/xlib/xgc.c delete mode 100644 Tk/xlib/ximage.c delete mode 100644 Tk/xlib/xutil.c rename {Tk => Utils}/install-sh (100%) delete mode 100644 Win32/README delete mode 100644 Win32/STk-inst.bat delete mode 100644 Win32/STk-make.bc delete mode 100644 Win32/STk-make.vc delete mode 100644 Win32/STk.def delete mode 100644 Win32/STk.ico delete mode 100644 Win32/STk.rc diff --git a/BINARY_DISTRIB b/BINARY_DISTRIB index 4ccb1ef..cef545e 100644 --- a/BINARY_DISTRIB +++ b/BINARY_DISTRIB @@ -1,4 +1,4 @@ -Binary distributions are available at ftp://kaolin.unice.fr/pub/Binary. +Binary distributions are available at ftp://kaolin.unice.fr/pub/STk/Binary. If you succeed in compiling a version for which no binary is available on the previous site, you can probably help other people by sharing your binary. @@ -8,7 +8,7 @@ To make a machine-specific binary: 2. Create a README file for your distribution which indicates the options you chose. A model of the README file is given below. 3. Place the binary archive (the .tar.gz) and the README file in - ftp://kaolin.unice.fr/pub/Incoming/ + ftp://kaolin.unice.fr/pub/STk/Incoming/ Thanks diff --git a/CHANGES b/CHANGES index b0ac853..f23f9d9 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,117 @@ +04/10/98 Release 3.99.0 +----------------------- + +This is the pre-4.0 release. Why is is not calles 4.0? Good question. +This version would have been numbered 4.0 if there was not a so long +time between this release and the previous one. Since I take so long +to release, I had time to add a lot of things to my "TODO list". +And this version misses some things that I consider important (even if +not visible form outside) to be called 4.0. Furthermore, ther is a big +absent since last release which is the port on Windows. The real 4.0 +will have support for Windows. + +Here are the main visible changes from previous release: + + About Scheme + + * A module system has been added + * Integration of the Bigloo MATCH-CASE and MATCH-LAMBDA + primitives. Furthermore, the file bigloo.stk provide + some compatibility between STk and bigloo modules. + * A simple FFI has been added. It allows to access C + functions without writing C code (works only on a + limited set of architectures for now). + * integrates the R5RS VALUES and CALL-WITH-VALUES + * multi-line comments have been added. + * The "-file" interpreter option is no more necessary + * Display of the prompt and of the eval result in the + REPL are now user definable. + * report-error mechanism has been enhanced a lot (work + is not completely achieved). + * new-primitives: append!, mast-pair, C-string->string, + remove-file, rename-file, temporary-file-name, ... + * Numerous bug corrections + * ... + + About Tk + + * Integration of the Tk8.0 toolkit + * The old inspector has been adapted to work with + current release (not completely, but sufficiently + while the new version is terminated) + * Buttons, Checkbuttons and Radiobuttons can use a + :variable and :textvariable in a given environment. + This environment is given with the new :environment + option. + * New metaclass: . This is + identical to the class , except + that the widhet lives in its own toplevel window. + * make-image simplifies the usage of Tk images and uses + a cache, to speed-up access to already used images. + * The little square window, which used to appear as soon + as STk was launched, appears now only when the first + widget is mapped on screen. + * ... + + About STklos + + * The MOP of STklos is now very similar to the CLOS one. + Here are some of the new features: + o when a slot does not exists, the gf slot-missing + is called + o when a unbound slot is read, the gf slot-unbound + is called + o new generic functions slot-ref-using-class, + slot-set-using-class, slot-bound-using-class?, + slot-exists-using-class?, slot-definition-name, + slot-definition-options, + slot-definition-allocation, + slot-definition-getter, slot-definition-setter, + slot-definition-accessor, generic-function-name, + generic-function-methods, + method-generic-function, method-specializers + method-procedure, remove-method + change-object-class + * New kind of slot allocation: "active". An active slot + is a slot for which you can put a daemon before or + after its reading/writing + * Standard behavior of class slots is now identical to + CLOS: when a class-slot is inherited, it is shared + with instances of the superclass. If it is redefined, + a new slot is created + * slot initializers are evaluated in the lexical + environment of the class definition. + * (Tk-)virtual slots can now have an :initform option. + * Generic functions can be now traced with the standard + TRACE function. + * Composite widgets have now a class slots which + contains the class of the object. This slot is + initialized by default to "Composite", but it can be + overloaded for a particular class. For instance + labeled entries use the value "LabeledEntry" by + default. This feature can be used for initializing the + X11 resource database. for instance you can have + STk*LabeledEntry*Entry*Background: white in your + .Xdefaults file to set the default value of background + of the entry of a widget. + * New composites widgets: Gauge, Valued-Gauge, + Balloon-help + * The HTML-browser has been enhanced to access now the + web (i.e. you can grab distant texts or images). The + Web browser admit now applets written in Scheme. + * New kind of slot allocation: "active". An active slot + is a slot for which you can put a daemon before or + after its reading/writing + * extended types (defined in C) are now automatically + integrated in the STklos hierarchy. + * Several new classes for displaying messages boxes + * New class for choosing colors. + * New . This class is the now the parent + class of and of (the new) class + . + * ... + + 09/26/96 Release 3.1.1 ---------------------- @@ -240,4 +354,4 @@ This is a major release version. 93/09/02 Release 1.00 (first public release) ~~~~~~~~~~~~~~~~~~~~~ - Forget it :) \ No newline at end of file + Forget it :) diff --git a/ChangeLog b/ChangeLog index 8e67d67..468df64 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,758 @@ +Fri Apr 10 09:01:17 1998 Erick Gallesio + + * STk-3.99.0 release + +Wed Apr 8 17:02:26 1998 Erick Gallesio + + * Src/*.c: Correction: stderr (instead of STk_stderr) was incorrectly + used in some places. + + * Src/Stack: Code was absolutely incorrect for machine which don't + support FFI. + +Sun Mar 22 15:05:47 1998 Erick Gallesio + + * STk/port.c: load accepts now (again) a module as optionnal + parameter + +Mon Mar 9 21:42:08 1998 Erick Gallesio + + * Lib/www-html.stk: Code for applet in S-scape polished. + + * Src/tcl-glue: Bug correction in STk_valid_environment + + * Tcl/tclEvent.c: Bug correction: after events callback table was + not correctly cleaned when an event was fired. + +Sun Mar 8 23:41:11 1998 Erick Gallesio + + * Src/cont.c: Addition of R5RS values + +Sun Mar 1 11:53:40 1998 Erick Gallesio + + * Lib/www*: The Web Browser has been rewriten. + +Sat Feb 28 12:37:29 1998 Erick Gallesio + + * Src/gc.c: Bug correction: Error context was improperly reset + when an error occurs in catch. + +Fri Feb 27 01:07:50 1998 Erick Gallesio + + * Src/unix.c: Three new functions on file: remove-file, + rename-file temporary-file-name. They correspond to their + equivalent in the ANSI C norm. + +Tue Feb 24 18:56:17 1998 Erick Gallesio + + * Demos/Widget/*.stklos: All the widget demo are now implemented. + + * STklos/Tk/Text.stklos: New . This class is the + now the parent class of and of (the new) class + . + + * Tk/generic/tkConfig.c: a lot of change to take image as a real + type (instead of a string). Configuration has been cleaned. + +Thu Feb 19 16:39:46 1998 Erick Gallesio + + * Demos/stetris.stk (new-game): replaced an after which use a pre + STk-3.0 after bindind (i.e. an after with a list) by a + lambda. This cause problem with module environment (the first one + I see since a long time). This could have been resolved by + makeing Tk importing STklos+Tk. But there is no good reason to do + so. The bad news is that very old code can be broken if it uses + list bindings instead of lambda (it's more than 2 years than this + form is deprecated) and STklos. + +Thu Feb 12 16:17:36 1998 Erick Gallesio + + * Demos/stklos-widgets.stklos: Updated to take into account new + composite widgets. + + * Src/port.c: read-line now skips the '\r' characters. + +Sun Feb 8 20:59:34 1998 Erick Gallesio + + * Tk/generic/tkScale.c (ScaleVarProc): New option :ENVIRONMENT + * Tk/generic/tkMessage.c (ConfigureMessage): New option :ENVIRONMENT + + * Src/error.c: Cleanup (one more time :-<) + +Mon Feb 2 22:47:52 1998 Erick Gallesio + + * STklos/Tk/Composite/Colorbox.stklos: New class , and its + user function Tk:choose-color. + + +Sun Feb 1 19:16:46 1998 Erick Gallesio + + * Lib/tk-unix.stk: New file for the definition of standard messages + box. They are simulated on Unix and will be natve (someday) on Windows. + + + * STklos/Tk/MsgBox.stklos: New Classes: + + + + . This classes are used by the + new function Tk:message-box to build mesages boxes. + + * Src/read.c: Now #. is evaluated in the current module (instead + of the global one). + + * Src/tcl-glue.c (STk_convert_Tcl_string2list): current module is + set to the Tk module when converting a Tk result to Scheme. This + is mainly for "#." expression which must be evaluated in the Tk + module since all the side effects done by Tk are done in it. + + +Thu Jan 29 19:21:48 1998 Erick Gallesio + + * STklos/Tk/Composite/Choicebox.stklos: New slot for + es: CHOICE. This slot contains the set of possible + values for the entry. + + +Mon Jan 26 15:42:11 1998 Erick Gallesio + + * STklos/Tk/Tk-meta.stklos: Protocol for widget has been + "lighted". The slot tk-valid-option has ben deleted and slot are + set one by one after class initialization. This in in fact faster + than the old method. However and classes, don't + fit well in this scheme (some of their slots cannot be changed + after the widget is created (e.g. class or visual) => There is a + spcial init function for theses classes. + + * STklos/Tk/Basics.stklos: Composite widgets have now a class + slots which contains the class of the object. This slot is + initialized by default to "Composite", but it can be overloaded + for a particular class. For instance labeled entries use the value + "LabeledEntry" by default. This feature can be used for + initializing the X11 resource database. for instance you can have + + STk*LabeledEntry*Entry*Background: white + + in the .Xdefaults file to set the default value of background of + the entry of a widget. + + * STklos/Tk/Basics.stklos: :tk-virtual slots accept now the + :init-form option. That means that you can do new classes which + simply change the default value by subclassing a previous widget + class. + + * STklos/Tk/Frame.stklos: Change in the STklos hierarchy: + inherits now from . They were separate classes + before. + +Sun Jan 25 10:53:54 1998 Erick Gallesio + + * Src/toplevel.c: + * Lib/init.stk: User initialization file (.stkrc) is now loaded + after Tk is initialized. It used to be initialized at the end of + init.stk (and hence just before Tk). File loading is done in C. + now. + +Sat Jan 24 13:22:51 1998 Erick Gallesio + + * STklos/stklos.stk: Bug correction in METHOD. + + * STklos/describe.stk: renamed to STklos/describe.stklos + * STklos/active.stk: renamed to STklos/active.stklos + +Thu Jan 22 23:50:38 1998 Erick Gallesio + + * Lib/init.stk: New macro: DEFINE-VARIABLE. It's equivalent to the + Elisp/CL DEFVAR + + * Lib/tk-init.stk (*start-withdrawn*): A lot of people dislike the + fact that the root window is mapped on screen when Tk is started, + The code below, unmaps the *root* window and make it appearing as + soon as the first sub-window is packed or some action is asked to + the window manager for *root*. With this code, the the behaviour + is identical to the Tk original one except that the empty squared + window don't appears on screen. The original behaviour can be + recovered by setting *start-withdrawn* to #f + +Tue Jan 20 14:40:31 1998 Erick Gallesio + + * Src/proc.c: New undoumented procedure: %procedure-arity + + * STklos/stklos.stk: + * Src/stklos.c: Optimisation of slot accesses for virtual + slots. The call to APPLY is now inlined in the slot-ref and + slot-set! functions. The arity of the setter and getter functions + is now verified at class creation (rather than slot access, in + some extent). The only drawback is that the getter and setter + function must be closures now, whereas they could be generic + funtions or primitives before (but I cannot imagine how it could + be used). + +Sun Jan 18 20:06:00 1998 Erick Gallesio + + * STklos/trace-gf.stklos: New file for tracing generic functions. + * Lib/trace.stk: Trace has been updated and take into account + generic functions now. + +Tue Jan 13 10:13:22 1998 Erick Gallesio + + * Lib/dialog.stk: Correction of bug signaled by Fritz + Heinrichmeyer + +Fri Jan 9 21:06:22 1998 Erick Gallesio + + * Src/port.c: Bug correction in "AUTOLOAD?". BTW, this function + admit now a (optional) second parameter which can be a module. + + * Src/syntax.c: + * Src/env.c: + * Src/module.c: Bug correction for C varaiables which were + "disconnected" of their C counterpart in some cases + +Thu Jan 8 12:27:44 1998 Erick Gallesio + + * Src/stklos.c: New slot for generic functions: "module" + +Sat Jan 3 16:50:55 1998 Erick Gallesio + + * STk.prj: STk.prj has been completely redefines. Now PRCS + versions are in sync with STk version. + +Thu Jan 1 13:18:22 1998 Erick Gallesio + + * Src/dynload.c: New function: EXTERNAL-EXISTS? to determine if a + symbol is defined in a library. + +Wed Dec 31 15:37:36 1997 Erick Gallesio + + * Src/hash.c (hash_table_put) Bug correction: code was not GC + safe. Thanks to Sarah Calvo + +Tue Dec 30 23:33:09 1997 Erick Gallesio + + * Extensions/posix.c: Integration of several new functions given + by Shiro Kawai + + * Src/argv.c: The way arguments are processed has been changed: + now the first argument is taken as a script name (unless there was + already a -file option specified). Furthermore, when the -file + option is used (implicitly or explicitly), the variable + *program-name* is set to the name of the script file (instead of + the file name of the interpreter). + + * Doc/Manual/stk.1: Adaptation of the man page for the new + conventions for argument passing to the interpreter (-file option + and implicit -file). + + * Src/eval.c: + * Src/error.c: Bug correction: In some circumstances a buggy + REPORT-ERROR can lead to an infinite loop. Now we can have the + stack when in report-error AND the original error which caused the + execution of the report-error procedure. + +Sun Dec 28 21:44:01 1997 Erick Gallesio + + * Lib/Match/normalize.scm: + * Lib/Match/compiler.scm: + * Lib/Match/descr.scm: Adaptation for STk. + + +Mon Dec 22 00:00:54 1997 Erick Gallesio + + * Doc/Reference/Appendix.tex: New Appendix which describes the + main differences between STk versions. + + * Src/extend.c: POINTER->STRING has been moved to file dynload.c + and renamed C-STRING->STRING since ita accepts pointers AND + strings now. + +Mon Dec 15 13:53:46 1997 Erick Gallesio + + * Src/print.c: Cosmetic change: When a procedure is writen, it + displays its argument list. This is helpful when debugging + + * Src/number.c: Two new function for dealing with unsigned C + numbers: long STk_integer2long(SCM x); unsigned long + STk_integer2ulong(SCM x); + + * Src/extend.c: New primitive C-POINTER->STRING. This procedure + converts a C-pointer to a string. An optionnal length can be + given. + +Sat Dec 13 11:07:46 1997 Erick Gallesio + + * Src/stklos.c: + * Src/slib.c: + * Src/port.c: + * Src/gc.c: Correction of various bugs signalled by Walter C. Pelissero + + + * Src/syntax.c: Bug correction in definition of internal variables + +Wed Dec 10 23:25:21 1997 Erick Gallesio + + * Src/signal.c (handle_sigsegv_signal): new procedure. This + procedure is called when a SIGSEGV is called. This avoid an + infinite loop when a real SIGSEGV occurs. It just go to the + toplevel (if the signal has not been redirected) + +Sun Dec 7 22:01:54 1997 Erick Gallesio + + * configure.in: Take into account the new libc (Gnu libc) for + Linux. + +Wed Nov 19 09:34:22 1997 Erick Gallesio + + * Cleaning code of environment allocation. There is now a new type + for frame cells (tc_frame). For now this type is equivalent to a + cons, but it allows future optimization on environment allocation. + +Thu Nov 13 01:10:41 1997 Erick Gallesio + + * Src/proc.c: + * Src/gc.c: + * Src/eval.c: + * Src/syntax.c: Cleaning of procedure creation code. All + closures are created by the function STk_makeclosure + (instead of being inlined in code). + + * Src/syntax.c: + * Src/env.c: Correction of a long standing bug with internal + defines management. In some cases, access to local variable could + be false. This was because new variables were inserted at the + beginning of the environment instead of the end. + + * Extensions/process.c (free_process): Standard ports were freed + instead of closed when a process was deallocated. Bug discovered + by Sarah Calvo + + +Wed Nov 12 09:35:13 1997 Erick Gallesio + + * Src/list.c: new primitve: the R3RS last-pair + +Sun Nov 9 22:01:56 1997 Erick Gallesio + + * Src/list.c: + * Src/primitives.c: New primitive: append! + +Tue Oct 28 21:24:02 1997 Erick Gallesio + + * Lib/match.stk: Integration of the Bigloo MATCH-CASE and MATCH-LAMBDA + primitives + +Tue Oct 7 09:46:46 1997 Erick Gallesio + + * Extensions/posix.c (posix_stat2vector): bug correction (GC + problems) + + * Src/proc.c (STk_for_each): minor bug correction: return an + undefined result instead of NIL as before. + + * Lib/posix.stk: Two new functions POSIX-STAT->LIST and + POSIX-LSTAT which make easier the use of stat function (they + return a keyworded list instead of a (cryptic) vector. + +Wed Sep 17 15:39:54 1997 Erick Gallesio + + * Lib/tk-init.stk: New variable *image-path* which contains path + for loading images. + +Tue Sep 16 16:29:51 1997 Erick Gallesio + + * Src/tcl-lib.c (Tcl_OpenFileChannel): build an error message when + file cannot be opened. This is now done in Tcl. Note that the + Tk8.0 code is not consistent here since it exists places where the + check against NULL is done and other where it is supposed that Tcl + fill the error message!!!! + +Sun Sep 14 11:22:48 1997 Erick Gallesio + + * STklos/Tk/Basics.stklos: New metaclass: + . This is identical to the class + , except that the widhet lives in its own + toplevel window. Furthermore, this widget has a slot called TITLE + which contains the title of the widget window. + + *STklos/Tk/*.stklos: added a "(select-module Tk) in all these files + +Sat Sep 6 22:07:39 1997 Erick Gallesio + + * Src/toplevel.c: names of display-prompt and display-result have + been changed to repl-display-prompt and repl-display-result + +Wed Sep 3 18:18:45 1997 Erick Gallesio + + * STklos/Tk/Basics.stklos: + * STklos/Tk/Button.stklos: + * STklos/Tk/Menu.stklos: Addition of new Tk8.0 slots + +Fri Aug 29 12:17:58 1997 Erick Gallesio + + * Lib/tearoff.stk: File deleted. It is now included in menu.stk + +Wed Aug 27 15:46:25 1997 Erick Gallesio + + * Mp/Makefile: Path was incorrect when using fgmp. + + * Src/stklos.c: + * Src/tk-main.c: Gc_protect is no more useful on modules since a + module is always accessible from the module table. + + * Src/tcl-lib.c: Simulation of the new function + "Tcl_DeleteCommandFromToken" used by the final Tk8.0 + +Mon Aug 25 12:27:11 1997 Erick Gallesio + + * Start of port for final Tk8.0. + + * Src/module.c: + * Src/primitives.c: Modules are now stored in a private table + instead of bound in the global space. The new primitive + FIND-MODULE queries the module table to find a given module + (modules are still first-class objects). + + * Tk/generic/tkWindow.c: Reverted the command "tk-state" to "tk" + since the module names are no more bound in global space. + +Sun Aug 24 17:10:00 1997 Erick Gallesio + + * Src/module.c: There is now a module which is created when the + interpreter is initialized. This module (named Scheme) exports + all initial bindings (mainly primitives) defined when the + interpreter starts. So, even when the user overload a standard + primitive, the initial bindings can be found in the Scheme module. + + +Wed Aug 20 14:02:06 1997 Erick Gallesio + + * Doc/Makefile: Installation of manual pages even if the + documentation is not requested. + +Mon Aug 18 11:50:32 1997 Erick Gallesio + + * Doc/Manual/label.n: + * Doc/Manual/grid.n: + * Doc/Manual/frame.n: + * Doc/Manual/font.n: + * Doc/Manual/event.n: + * Doc/Manual/entry.n: + * Doc/Manual/destroy.n: + * Doc/Manual/checkbutton.n: + * Doc/Manual/button.n: + * Doc/Manual/canvas.n: + * Doc/Manual/bind.n: + * Doc/Manual/bindtags.n: Documentation update for Tk8.0 + +Sun Aug 17 23:47:09 1997 Erick Gallesio + + * STklos/Tk/Basics.stklos: New class for the + widget which have a "text-variable" or "variable" slot (Button, + Checkbutton, Entry, ...) The corresponding widget have been + changed to take into account this new class. + +Sat Aug 16 16:28:55 1997 Erick Gallesio + + * Tk/generic/tkButton.c: Buttons, Checkbuttons and Radiobuttons + can use a :variable and :textvariable in a given environment. This + environment is given with the new :environment option. + +Wed Aug 13 17:21:08 1997 Erick Gallesio + + * Src/error.c: The variables *last-error-message* and + *last-error-arg* are set hen an error occurs. This is useful to + find what error occured when errors are catched. This is also + needed by Envdraw. + +Tue Jul 8 10:00:26 1997 Erick Gallesio + + * New type in the interpreter: tc_tclobjet. This type is necessary + to simulate the Tcl "Tcl_Obj" type. Tcl_Obj is a crazy thing. + Why Tcl does not use a GC, and life would be a *lot* easier (for me + but for them too...) + +Mon Jul 7 09:59:49 1997 Erick Gallesio + + * Start of Tk8.0 integration + +Mon Jun 23 19:43:36 1997 Erick Gallesio + + * STklos/stklos.stk (class-subclasses): rewritten. It was too slow. + +Sun Jun 1 11:20:21 1997 Erick Gallesio + + * STklos/stklos.stk: (Tk-)virtual slots can now have an + :initform option. + +Fri May 23 16:07:01 1997 Erick Gallesio + + * Src/stklos.c (build_initializers): build_initializers takes now + one more parameter (the environment in which the class has been + defined) Consequently, initializer are evaluated in the lexical + environment of the class definition. + + * STklos/stklos.stk (compute-get-n-set): Standard behavior of class + slots is now identical to CLOS: when a class-slot is inherited, it + is shared with instances of the superclass. If it is redefined, + a new slot is created + +Thu May 15 18:04:50 1997 Erick Gallesio + + * Lib/inspect-*.stk: Adaptation of the old inspector for the + STk-3.x release. This is incomplete but it can be use until the + Rigth Thing is finished. All the adaptation was done by Brian + Denheyer . Thanks to him. + + * Src/proc.c (general_map): map was buggy with a null list of + argument (map +) gave a core dump! + +Thu May 8 11:28:11 1997 Erick Gallesio + + * Src/port.c: Go back: LOAD and TRY-LOAD don't use anymore the + environment parameter. In fact loading a file is done in the + current module now rather at the global level as before. + + * Tcl/tclUtil.c (Tcl_DStringStartSublist, Tcl_DStringEndSublist): + braces replaced by parentheses (bug signaled by Vincent Granet + ) + +Sun Apr 6 15:07:20 1997 Erick Gallesio + + * Src/port.c: File loading: LOAD and TRY-LOAD accept now an + optional second argument. This argument must be an environment + which states in which environment the file must be loaded. + +Fri Apr 4 14:49:15 1997 Erick Gallesio + + * Lib/error.stk: Minor fix in the layout of display environment + windows. + +Thu Mar 27 15:32:28 1997 Erick Gallesio + + * Src/toplevel.c (repl_loop): The interactive prompt is no more a + constant. In fact, when the prompt must be displayed, we try to + apply the thunk contained in the *prompt* global symbol (*prompt* + must be a thunk). If an error occurs during this application, the + usual "STk> " prompt is displayed. + + * Lib/init.stk: Adding a default *prompt* closure in the startup file + +Sun Mar 23 19:57:07 1997 Erick Gallesio + + * Src/toplevel.c (repl_driver): in the toplevel repl, the result is + not displayed if we are not in interactive mode (suggested by a mail + from Jesse Schell ) + +Fri Mar 14 14:00:51 1997 Erick Gallesio + + * Src/list.c (STk_append2): The old private append2 is now public + since it is often used in the interpreter. Part of it using + STk_append have been modified. + +Fri Feb 28 10:43:41 1997 Erick Gallesio + + * Src/read.c: New feature: multi lines comments + (as in Common Lisp: #| ... |# ) + + * Src/stklos.c (STk_init_STklos): New MOP procedures + generic-function-name + generic-function-methods + method-generic-function + method-specializers + method-procedure + remove-method + change-object-class + +Sun Feb 23 23:08:40 1997 Erick Gallesio + + * STklos/stklos.stk: New MOP procedures + slot-definition-name + slot-definition-options + slot-definition-allocation + slot-definition-getter + slot-definition-setter + slot-definition-accessor + + * Src/stklos.c: Instances type is now in the cell. This decreases + globally the size of a STklos instance of the size of one int. + + * Two new classes: and . + A is a method which cannot be call next_method. + s are used for defining slot-readers and writers. + Application of these methods are faster than normal method + since the next-method object is not constructed. + +Mon Jan 20 15:59:24 1997 Erick Gallesio + + * STklos/stklos.stk (object-equal?): has been redefined to call + eqv? rather than returning #f. This is the same thing except that + when you redefine eqv?, it automatically redefine equal?. + Furthermore, it is more coherent with standard Scheme eqv? and equal? + +Sat Jan 4 00:45:37 1997 Erick Gallesio + + * STklos/describe.stk: New DESCRIBE method for generic functions. + Modification of DESCRIBE method for classes to take into account new + class slots (specializers and initializers are no more displayed) + + * Src/stklos.c: + STklos/stklos.stk: + Modifications + - when a slot does not exists, the gf slot-missing is called + - when a unbound slot is read, the gf slot-unbound is called + New primitives + - slot-ref-using-class + - slot-set-using-class + - slot-bound-using-class? + - slot-exists-using-class? + + * STklos/stklos.stk (change-class): change-class didn't + initialize the slots added to the instance. This is done + now (but this is a little bit different from CLOS: unbound + slots in the "old" instances are initialized with the initform + value in the "new" instance, whereas they remain unbound + in CLOS). + +Wed Jan 1 11:44:45 1997 Erick Gallesio + + * Src/toplevel.c: Modification of copyright dates (we are (just) in + 1997 now). + +Mon Dec 30 10:08:19 1996 Erick Gallesio + + * STklos/stklos.stk: STklos does not need hash table anymore. + +Sun Dec 29 22:24:24 1996 Erick Gallesio + + * Src/port.c (STk_autoloadp): Bug correction. + +Mon Dec 23 12:05:35 1996 Erick Gallesio + + * Src/io.c: old trace deleted + + * Src/extend.h: + * Src/extend.c: Now, extended types are entered in the class + hierarchy; When you define a new type, such as hash-table, a new + class is defined. This class has a name which is built by adding + brackets (<>) around the type name; this class always inherits from + (that means that it is not possible to make fancy + inheritance schemes with the current solution, which would have been + too difficult to take into account with dynamic loading precedence + problems). + +Sun Dec 15 11:04:10 1996 Erick Gallesio + + * Src/list.c: member: bug correction on circular lists + * Src/list.c: New list functions: remq, remv, remove. + +Sun Dec 8 10:13:30 1996 Erick Gallesio + + * STklos/Tk/Toplevel.stklos: + * STklos/Tk/Tk-methods.stklos: + * STklos/Tk/Tk-classes.stklos: + * STklos/Tk/Basics.stklos: Bug correction: Toplevel.stklos could be + sometimes loaded several times. Toplevel is now loaded when doing a + (require "Tk-classes"). + +Thu Nov 14 22:17:58 1996 Erick Gallesio + + * Tk/generic/tkConfig.c (Tk_ConfigureInfo): Bug correction for gadgets + with only 1 option (such as separator in menus) + + * Demos/amib.stklos: Bug correction in code generation. It was + possible to use a non yet defined widget in the ":in" option for + "place" or "pack". + +Sat Nov 9 15:17:06 1996 Erick Gallesio + + * STklos/Tk/Composite/Scrolltext.stklos: + * STklos/Tk/Composite/Scrollcanvas.stklos: + * STklos/Tk/Composite/Scrollbox.stklos: Scrollbars are now managed by + grid. + +Wed Nov 6 00:15:42 1996 Erick Gallesio + + * Tk4.2 integration. + +Sun Nov 3 18:53:57 1996 Erick Gallesio + + * Lib/www-browser.stklos: A new Web browser package. + + * Demos/webrowse.stklos: This demo replaces the hbrowse demo + + +Wed Oct 30 16:19:46 1996 Erick Gallesio + + * Extensions/pixmap.c: upgrading pixmap package to the Tix 4.1b1 + +Tue Oct 29 00:54:05 1996 Erick Gallesio + + * Lib/www*.stk: New files for WEB browsing. Distant images and + files are now correctly handled. A lot of ideas have been taken + from the Harvey L. Stein WWW package. + +Wed Oct 23 16:53:19 1996 Erick Gallesio + + * Demos/stklos-widgets.stklos: New demo which replaces compo-demo + since it contains demo for widgets which are not composite. + + * STklos/Tk/Widget/Balloon.stklos: new widget written in STklos + + * Lib/focus.stk: + * Lib/tk-init.stk: binding for and are now set in + tk-init.stk to avoid problems when this default binding must be + overloaded by user. Bug signalled by Harvey J. Stein + + +Mon Oct 21 12:29:07 1996 Erick Gallesio + + * STklos/active.stk: a new metaclass which provides actives slots. + Actives slots are slots to which a function can be associated + before/after reading/setting its value. The allocation is :active + and functions can be set with :before-slot-ref, :after-slot-ref + before-slot-set! or after-slot-set!. + + * STklos/Tk/Widget/Gauge: Two new widgets written in Scheme: + and . They use the active slots metaclass. + +Thu Oct 17 14:50:29 1996 Erick Gallesio + + * Tk/generic/tkText.c: Modified "text dumping". It yields now a + correct Scheme list. The :command option is not corrected correctly + for now. + +Mon Oct 14 10:22:37 1996 Erick Gallesio + + * Extensions/socket.c: Correction of a bug in socket_shutdown (when GC + occurs) + +Fri Oct 11 13:02:55 1996 Erick Gallesio + + * Extensions/socket.c (socket_shutdown): Bug correction in shutdown + (shutdown and close where inverted). + + * Src/number.c: + * Src/read.c: Some change in number reading (in particular for + string<->number conversions which were buggy when number start with + a #. + +Thu Oct 10 09:31:51 1996 Erick Gallesio + + + * configure.in: + * Src/primitives.c: Adding support por JPEG images + +Sun Oct 6 23:54:28 1996 Erick Gallesio + + * Src/stk.h: + * Src/char.c: + * Src/port.c: + * Src/sport.h: + * Src/io.c: + * Src/print.c: Scheme characters were used as unsigned char without + explicitely specify it. Modified some declarations to specifically + say that chars were unsigned. + Thu Sep 26 19:38:42 1996 Erick Gallesio * STk-3.1.1 Release @@ -1191,6 +1946,3 @@ Tue Aug 23 17:16:34 1994 Erick Gallesio (eg@kaolin.unice.fr) their enhancment (font, color, ...). Now, tags can be dynamically created (instead of choosen in a fixed list). A compatibility mode is provided (see above) - - - diff --git a/Contrib/Stetris/stetris.stk b/Contrib/Stetris/stetris.stk index b5965da..ede7459 100755 --- a/Contrib/Stetris/stetris.stk +++ b/Contrib/Stetris/stetris.stk @@ -748,7 +748,7 @@ ;;; play. (set! quit-now #t) (after (* 2 fall-delay) - '(begin + (lambda() (reset-vars) (for-each destroy (find-items stetris-canvas 'all)) (set! current-piece (make-new-stetris-piece)) diff --git a/Contrib/Trace/trace.stk b/Contrib/Trace/trace.stk deleted file mode 120000 index b029ff2..0000000 --- a/Contrib/Trace/trace.stk +++ /dev/null @@ -1 +0,0 @@ -../../Lib/trace.stk \ No newline at end of file diff --git a/Demos/%README b/Demos/%README index 6348fff..5965155 100644 --- a/Demos/%README +++ b/Demos/%README @@ -1,278 +1,246 @@ [Image] Demo directory -This directory contains demo programs for STk. -If you want to run a demo BEFORE a complete installation of the STk package, -you must use the - ../Src/test-stk -command to run the interpreter. -If you view this file with the STk HTML browser, you can click on each given -command to launch a demo. +Content -To use the STk HTML browser, just type: + This directory contains the demo programs for STk. There are several + categories of demos available from here: + o STk demos: They correspond to program which don't use CLOS like + object extension of STk. These demo are quite simple and they + often mimic original Tcl/Tk demonstrations + o STklos demos: These demonstration programs use the STklos object + Extension of STk. The code of most of these demos has been kept + short to illustrate the basic of STklos programming. + o Html demo: This demo is in fact an overview of STk/STklos that I + have used once in a presentation of STklos. The pages accessible + from this link present STk but also contains links or Scheme + applets which illustrate the kind of things that can be done with + the STk browser. Of course, to properly execute the applets + contained in theses pages, you need to run the STk Html browser + (see below). - ../Src/test-stk -f hbrowse README.html +Running demonstration programs without installing STk -Happy STking ----------------------------------------------------------------------------- + If you want to run a demo BEFORE a complete installation of the STk + package, you must use the shell script ../Src/test-stk in order to run + the interpreter (this shell script set some variables to run properly + the interpreter without installing it). - STk demos +Running demonstration programs in the STk web browser ----------------------------------------------------------------------------- + STk provides a simple Web browser which can be used to launch the demo + of this directory. If you are not running it now, you can type the + following command: -File - browse.stk -Description - a simple Unix file browser -Run - ../Src/test-stk -f browse.stk + ../Src/test-stk -f S-scape README.html ----------------------------------------------------------------------------- + at the shell prompt. -File - colormap.stk -Description - a simple color builder -Run - ../Src/test-stk -f colormap.stk -Comment - On exit, the RGB value is printed on the sandard output +1. STk demos ----------------------------------------------------------------------------- +1.1 Basic STk demos -File - small-ed.stk -Description - A small editor to create enhanced text -Run - ../Src/test-stk -f small-ed.stk -Comment - Does not work (still) with STk 3.0 + * hello.stk + This is the traditional first program. This program creates a single + button that you can click on. + Run with : ../Src/test-stk -f hello.stk ----------------------------------------------------------------------------- + * browse.stk + A simple Unix file browser. The code of this demo is less than a page. + Run with: .../Src/test-stk -f browse.stk -File - hanoi.stk -Description - Hanoi towers animation -Run - ../Src/test-stk -f hanoi.stk +1.2 Basics of STk programming ----------------------------------------------------------------------------- - -File - hello.stk -Description - a simple button demonstration -Run - ../Src/test-stk -f hello.stk - ----------------------------------------------------------------------------- - -File - showvars.stk -Description - a variable shower - This program shows the value of three variables (named a,b and c) - Changing the value of one of these vars (with a set! for instance) will - redisplay its new value immediatly -Run - ../Src/test-stk -load showvars.stk -Comment -Exit - type (exit) on the STk prompt - ----------------------------------------------------------------------------- - -File - turtle.stk -Description - a Logo turtle package + some demo functions. -Run - ../Src/test-stk -f turtle.stk - ----------------------------------------------------------------------------- - -File - inspector.stk -Description - A simple demo of the inspector on Tk widgets -Run - ../Src/test-stk -f inspector.stk -Comment - Does not work (still) with STk 3.0 - ----------------------------------------------------------------------------- - -File - mc-server.stk -Description - A multiple-clients server. -Run - ../Src/test-stk -load mc-server.stk - ----------------------------------------------------------------------------- - -File - queens.stk -Description - The queens problem. You can do it yourself (and it will make sure you - follow the rules) or you can ask it to solve the puzzle starting with a - given board configuration. This code is a contribution of Grant Edwards - (grante@rosemount.com) -Run - ../Src/test-stk -f queens.stk - ----------------------------------------------------------------------------- - -File - stetris.stk -Description - This is a falling block game not unlike tetris(tm) :). It is - implemented in STk just to prove it can be done, and as a challenge to - TCLers. It starts slowly and becomes faster and faster. Have fun. This - code is a contribution of Harvey J. Stein(hjstein@math.huji.ac.il) -Run - ../Src/test-stk -f stetris.stk - ----------------------------------------------------------------------------- - -File - ttt.stk -Description - A 3D Tic-Tac-Toe, where the board is 4x4x4, a 3 dimensional board of - four planes with four rows and four columns each. This code is a - contribution of Edin "Dino" Hodzic -Run - ../Src/test-stk -f ttt.stk - ----------------------------------------------------------------------------- - -File - server.stk -Description - A simple server showing how to use the socket package. It creates a - xterm window in which a read-eval-print-loop is executed. When the - window is closed or when an error occurs, the socket is closed -Run - ../Src/test-stk -f server.stk - ----------------------------------------------------------------------------- - -File - term.stk -Description - A simple terminal emulator (a kind of xterm, but in a text widget). -Run - ../Src/test-stk -f term.stk - ----------------------------------------------------------------------------- - -File - wtour.stk -Description + * wtour.stk This is a rewrite of the Tcl/Tk wtour2.0 in Scheme/STk. Use the menus to navigate through different lessons. You can make changes to the lesson source code; click on the Apply button to see the results of the changes. -Run - ../Src/test-stk -f ./wtour.stk ../Contrib/STk-wtour + Run with: ../Src/test-stk -f ./wtour.stk ../Contrib/STk-wtour + Comment: This code is a contribution of Suresh Srinivas + ----------------------------------------------------------------------------- +1.3 Client/Server Demos - STklos demos + * server.stk + A simple server showing how to use the socket package. It creates an + xterm window in which a read-eval-print-loop is executed. When the + window is closed or when an error occurs, the socket is closed + Run with: ../Src/test-stk -no -f server.stk ----------------------------------------------------------------------------- -There are few demos of STklos. What is interesting is not what they do but -how they are programmmed (IMO). ----------------------------------------------------------------------------- + * mc-server.stk + A multiple-clients server. On Unix, you can use several telnet sessions + to discuss with the server. Each discussion has its own dedicated + channel. Type (exit) at the STk when you want to exit the demo. + Run with: ../Src/test-stk -load mc-server.stk -File - widget.stklos -Description - A tour of the Tk widgets. This demo shows all the Tk widgets -Run - ../Src/test-stk -f widget.stklos +1.4 Fun and Games ----------------------------------------------------------------------------- + * turtle.stk + A Logo turtle package + some demo functions. + Run with: ../Src/test-stk -f turtle.stk -File - stklos-demo.stklos -Description - a simple demo written in STklos -Run - ../Src/test-stk -f stklos-demo.stklos + * hanoi.stk + Hanoi towers animation. + Run with: ../Src/test-stk -f hanoi.stk ----------------------------------------------------------------------------- + * queens.stk + The queens problem. You can do it yourself (and it will make sure you + follow the rules) or you can ask it to solve the puzzle starting with a + given board configuration. + Run with: ../Src/test-stk -f queens.stk + Comment: This code is a contribution of Grant Edwards + -File - stklos-demo2.stklos -Description - another simple demo written in STklos -Run - ../Src/test-stk -f stklos-demo2.stklos + * stetris.stk + This is a falling block game not unlike tetris(tm) :). It is + implemented in STk just to prove it can be done, and as a challenge to + TCLers. It starts slowly and becomes faster and faster. Have fun. + Run with: ../Src/test-stk -f stetris.stk + Comment: This code is a contribution of Harvey J. Stein + ----------------------------------------------------------------------------- + * ttt.stk + A 3D Tic-Tac-Toe, where the board is 4x4x4, a 3 dimensional board of + four planes with four rows and four columns each. + Run with: ../Src/test-stk -f ttt.stk + Comment: This code is a contribution of Edin "Dino" Hodzic + -File - hello.stklos -Description - a rewriting of the hello.stk demo in STklos -Run - ../Src/test-stk -f hello.stklos +1.5 Misc ----------------------------------------------------------------------------- + * colormap.stk + This is a simple color palette written in STk. + Run with: ../Src/test-stk -f colormap.stk + Comment: Note that this program is no more really useful since STk + offers now the function Tk:choose-color which allow to choose a color + by name or by value. -File - browse.stklos -Description - a rewriting of the browse.stk demo in STklos -Run - ../Src/test-stk -f browse.stklos + * small-ed.stk + A small editor to create enhanced text + Run with: ../Src/test-stk -f small-ed.stk + Comment: This editor use a ad-hoc format for saving file and was used + for the help buttons of various widgets in old versions of STk. It will + not be developed anymore since the preferred format for help is now + HTML. ----------------------------------------------------------------------------- + * showvars.stk + A variable shower: this program shows the value of three variables + (named a,b and c) Changing the value of one of these vars (with a set! + for instance) will redisplay its new value immediately. Run with: + ../Src/test-stk -load showvars.stk -File - calc.stklos -Description - a very simple calculator -Run - ../Src/test-stk -f calc.stklos + * inspector.stk + A simple demo of the inspector on Tk widgets + Run with: ../Src/test-stk -f inspector.stk + Comment: Does not work with this version of STk + A new version of the inspector is in practically finished and will be + soon released. ----------------------------------------------------------------------------- + * term.stk + A simple terminal emulator (a kind of xterm, but in a text widget). + Run with: ../Src/test-stk -f term.stk + Comment: Users of Glibc2 (aka libc6, or RedHat 5.0 users): This program + has problems with new release of the libc under Linux, if your shell + has the line editing mode set. To avoid the problem you can + o disable the line editing mode of your shell + o set the SHELL variable to a dumb shell (e.g. ash) + o link STk with the old libc + o don't run the demo :-) -File - compo-demo.stklos -Description - A quick demo of the composite widgets which are in the STk release. - This code is a contribution of -Run - ../Src/test-stk -f compo-demo.stklos +2. STklos demos ----------------------------------------------------------------------------- + All the standard Tk widgets have been wrapped in STklos classes. As a + result, in STklos, Tk widgets are seen as instances of STklos classes. + There are two kinds of STklos widgets: + o Simple widgets which map one to one the Tk standard widgets + o Composite widgets which are built from simple Tk widgets (or even + simpler composite widgets). + Demonstration programs accessible from this page use indifferently + simple widgets and composite widgets. -File - filebox.stklos -Description - a simple program which uses the compositeclass. A - is a file requestor with file name completion. It is a composition of - various composite widget classes. -Run - ../Src/test-stk -f filebox.stklos +2.1 Basic STklos demos ----------------------------------------------------------------------------- + * hello.stklos + This is a simple rewriting of the hello.stk demonstration in STklos + Run with: ../Src/test-stk -f hello.stklos -File - tkcolor.stklos -Description - a simple color picker written in STklos. Clicking button 1 on the color - box sets the text color to that color; Clicking button 3 sets the - background. -Run - ../Src/test-stk -f tkcolor.stklos + * browse.stklos + This is a simple rewriting of the browse.stk demonstration in STklos + Run with: ../Src/test-stk -f browse.stklos ----------------------------------------------------------------------------- -eg@unice.fr + * stklos-demo.stklos A simple demo written in STklos. + Run with: ../Src/test-stk -f stklos-demo.stklos + Comment: What is interesting in this demo is not what it does, nothing + specially fancy, but how it is easy to program, IMHO. + + * stklos-demo2.stklos Another simple demo written in STklos. + Run with: ../Src/test-stk -f stklos-demo2.stklos + Comment: Here again, what is interesting in this demo is not what it + does, nothing specially fancy, but how it is easy to program, IMHO. + +2.2 STklos widgets + + * widget.stklos + A tour of the Tk widgets. This demo shows all the Tk widgets. This is a + rewriting in STklos of the big Tcl/Tk demo widget.tcl. For each widget + demo accessible from this program, you can see the source by just + clicking the "See code" button. You can modify the code and test your + modified version by clicking the button "Rerun demo" + Run with: ../Src/test-stk -f widget.stk + Comment: This demo illustrate only the simple widgets (the ones of the + Tk library). For a composite widgets demo look at the + stklos-widgets.stklos program. + + * filebox.stklos + This is a simple program which uses the composite widget. A + is a file requester with file name completion (on the Tab + key).This widget is itself a composition of various composite widget + classes. + Run with: ../Src/test-stk -f filebox.stklos + + * stklos-widgets.stklos + A quick demo of some of the STklos Composite widgets which are + available in this release. + Run with: ../Src/test-stk -f stklos-widgets.stklos + Comment: This code is a contribution of Drew Whitehouse + . + +2.3 STklos Applications + + * calc.stklos + This is a simplistic calculator. + Run with: ../Src/test-stk -f calc.stklos + + * tkcolor.stklos + This is a simple color picker written in STklos. Clicking the left + mouse button in the color box sets the text color to the chosen color. + Clicking the right button sets the background color. The Select button + sets the selection to a string which can be used (by pasting it in an + xterm window) as argument of most X11 applications to set their + foreground and background color. + Run with: ../Src/test-stk -f tkcolor.stklos + + * amib.stklos + A Mini Interface Builder. + Run with: ../Src/test-stk -f amib.stklos + Comment: The current version of AMIB allow you to: + o place objects on a plane by drag and drop + o resize objects + o displace objects + o change all the slots of an object (color, font, value, ...) + o save an interface to reload it later in an application + However it is far from a really usable interface builder (but after all + it is only a 600 lines of code application!!!!) + + * S-scape.stklos + The STk web browser. You are probably using it while seeing these + lines. + Run with: ../Src/test-stk -f S-scape.stklos + + ------------------------------------------------------------------------ +Erick Gallesio +Last modified: Mon Mar 9 19:15:46 CET 1998 diff --git a/Demos/Html-Demos/Images/README b/Demos/Html-Demos/Images/README new file mode 100644 index 0000000..58352ba --- /dev/null +++ b/Demos/Html-Demos/Images/README @@ -0,0 +1,11 @@ + +prog/movies/mosaic Animated Mosaic Icon (for ctwm) + +The icon in this directory was extracted from the Mosaic WWW distribution +and donated by Vivek Khera . + +Author Unknown. + +Note These icons have been NOT been recolored to the standard color table. + +Anthony Thyssen http://www.cit.gu.edu.au/~anthony/ diff --git a/Demos/Html-Demos/Images/STk-tiny.gif b/Demos/Html-Demos/Images/STk-tiny.gif new file mode 100644 index 0000000000000000000000000000000000000000..fd6840b8417c32f58bd24c2a2bfaa0f44eca397c GIT binary patch literal 1234 zcmcgr{ZG|p6hCN-TPtCP8#Q!L-ZhzP)iL7+8ybZ7>Qr9RS%VO!XNuy$B~F`?qS4aI zw+lX#n}P;PE%8DbxVf=ZSUzMqC0~kifR}Rp;9NO#&I{#b z1j?$&Pcb5=&pKzE6X)1D(#l$AjkDq`J4@O$)*0iBIK$46&Wd$noQM;4Lb}SE6K05Pxu4J^{+w2c~%MM#5$KhUCL z7AE8hyHJ6q5DOtkB#i)|3*!hHZV@H&fJ|&74rqd5ID~3|K{PfY3pzjyY(SHqNT<<8 zjYqf`f`mWNqGHk?hvw?tTbteqHD>QBI_m|kse9S!suzbI!E>lco@l*^r$d1~X#5;- zC4>i0O68IL|KGInNejzXtW4dw`rTEj^Fj;rDeb`{aS%i^^`rk1@{LoRFD2MdaFf6l7ud_H$_=EfhUCwCn$h)nqS-{STc$MP4$1n5?XGyG?MlgSg{>OYkqof9~*`1I`8l3HTd zo2O6E>#8%C0&mm?B0aq~2QGbf zduV)bMdgoy@X=WJp{#SUruVop`|6f~Yj?71Pd<}$aLdk)o$-;fdrSHbuW?hl!doZy z4!%=(t|b0e-9O#_Bkw;UACzt{EeV!xp1kPz{+g7_8xq$~9Q=G}Yjfqn-`Dw~8IAQ5 z=1v)|^|gFkUNU3S$l!-roA3Yj>EBOhM0Veeqr;10;j!i0{CP7*54@SzcR9SQbwyD_ Pan1F@@bVi;iIn*t{k&?R literal 0 HcmV?d00001 diff --git a/Demos/Html-Demos/Images/amib-tiny.gif b/Demos/Html-Demos/Images/amib-tiny.gif new file mode 100644 index 0000000000000000000000000000000000000000..4987a3d3543eaffc89d430476824833f714cd666 GIT binary patch literal 38732 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 baUVCSCATm;r4~x#b_iQHQY|;>1OWg$!jVx* literal 0 HcmV?d00001 diff --git a/Demos/Html-Demos/Images/amib.gif b/Demos/Html-Demos/Images/amib.gif new file mode 100644 index 0000000000000000000000000000000000000000..ce63a5503cedf2552b5b14982766f7cccc49f53d GIT binary patch literal 91143 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 literal 0 HcmV?d00001 diff --git a/Demos/Html-Demos/Images/backward.gif b/Demos/Html-Demos/Images/backward.gif new file mode 100644 index 0000000000000000000000000000000000000000..4b6183345078bfa52d5da8afd0d9d47a0b511ff7 GIT binary patch literal 714 zcmZ?wbhEHbRA5kGSjxcg|Ns9}r_LNZcI4c-Gq-NtxpwW!rAt>19XfLF-kp8>_UziV zXWOApdf9LDRwfBf`bp+0)m1t>N;X$;vJ|r>Bp9f%qaG-eo)z z5`Nih*3H`}vT(~bz8w_u9wfJT+g$rU$0v7CI9Y+JYuP|*gzx+;A;9xwfV!epWYH8o7y(}qDSE@Q3 zXnMTei9xf#;pT_bR>l)$H@p=Z9v^pR;4})I86$bcD^j_Fx2j`7(6W5>vwOuGpNDPe zysO&7JB~Q hnF-ZA)!%Zj-u^d%?NhF6eEmP2C0W`ZmX)&M@Z3043A literal 0 HcmV?d00001 diff --git a/Demos/Html-Demos/Images/compo-all.gif b/Demos/Html-Demos/Images/compo-all.gif new file mode 100644 index 0000000000000000000000000000000000000000..e0f29fdd9329278a3651edbf5d2807a3e9bf7384 GIT binary patch literal 1813 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 CzFHOl literal 0 HcmV?d00001 diff --git a/Demos/Html-Demos/Images/entry.gif b/Demos/Html-Demos/Images/entry.gif new file mode 100644 index 0000000000000000000000000000000000000000..2e3973c38e58f628e4da90ae2be941a132cb07e7 GIT binary patch literal 1071 zcmcgr?`vCS6n^gR-S(!W>q}Opqlr^+P;FNW?Ye*puQHadtLtT9A~ z&Uv2mJm&;7KL{`G!il;Tt*56algX6IrMxCd6pR2Z>opTpfN&rt897i1gdx>t z=wY2wN(fOC%Ynijmk^BetdcI`js(HLRdr4ZJeJ0ikFpiW`nETW^Z zoJ3>ZJ-LEg5`^(i<&hS62;?>lgfx>%E_Fr zNR%-mPkW&k9xP8(-Ski)6HYo5tojcdL{)nO0k~X@F}Vh?G~*?-rZp%wMm3EZpcKRg zt8LMf=ukYXY~tf}x>=w?5YD?|_pRIpA<3MPL*;$<^iG*pE%~MAOb`JmCjmR%8P#tE z3c@A0tpcu5&F!J`FYsF03xZZ#-;rK_v~94F+VJ(lel8 zcCAHXt^iNo?i$lwh9$%qv$ohqZj zG-N?hu|yH_fDYzWAON^*i@a}Tfg+d$nPKg2SoTpkgCiCDN(c*3ZcmRYFo8KBui?SL zIoAIF(cnNjzW{O{Yl*kbi2l$^)<3y-+BkmheY$Z?Ut9c(^G9l$8$Tb8pP2gS(apOa zXQM+ipVS3M_RfrcIrnMP>$6=uw4t8Q{M|Q~X1@Ju{ut}6@UG9+@XF4ygI9)jPW|}o%VU2p zOa$jH`SN48gXxg#!lpOJR~9GtuiRRwUyNV-u&@5$f%ndIpTF4uM0c?x``C^6f%%h- zKOOxu_p5RI`G;#K-kn@bc0V=w&BWF#zv*vOY}}O^U%9&JaQ&9q)S1HdpHE!hc5~vp sZGUApymRr=@5{wo%jX_iQ`31ib+2&a^4G7;pZ)%yySJ}SRS`V>F9MTkIsgCw literal 0 HcmV?d00001 diff --git a/Demos/Html-Demos/Images/envdraw.gif b/Demos/Html-Demos/Images/envdraw.gif new file mode 100644 index 0000000000000000000000000000000000000000..ecd93bf13e2b5cf2c084534871459ca3e3ab0c11 GIT binary patch literal 8182 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

+0h%G!ap_5*AMhCzKcX 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 WU{W!fbRenM;@OJFeY$Q84AubgCNB8^ literal 0 HcmV?d00001 diff --git a/Demos/Html-Demos/Images/mosaic_02.gif b/Demos/Html-Demos/Images/mosaic_02.gif new file mode 100644 index 0000000000000000000000000000000000000000..4cd0cf33c279d1a1d113ae212e46b5b4443b1ffe GIT binary patch literal 722 zcmZ?wbhEHbbYO5`_{__os^X=onjaM$UQv*3D8E@tu{$uZ$2)Lie%XS;`cw1UllJY~ zH)-BwAjtp*ia%Kx85npObU-|i8O@}c!18ayNzc`LEnc79{XapYFXbeoW5PPQhGm-C z@p?JuD}rx-kNV>R%JIrhyZSr#&@udNY1_*8A5wez6~Og&wWi>e|f zylYwL^eVmh=KCLe>=MLh*%y`6=v!2j*2^(AX;=zZ=_wS~X!VLzDHNp`P8BOt>MEKt z$C#0gwPUf)%-Qm6%timQxTEcLT;icU)6=KS9PHo1F0xr_a=x}^?Km6U z(9j^p#Ig9}ZuPZ?W}B@)Q#!HeK!PnxkklkD1GYxhhJS%;UhL|~f6~zN$3p6Z#zKCL zS`NW9L(7B+rpeCr z3SB9Z9vOVsaq<;)qwr^k`lPz2r2EXv$exxI*{K^o&xV;Nz<|MRYHjJ#N3uQ(4&2+v zoA4xOOX-HkdxJ7Wmueqgm%OLy_q|uo*Il@H`eMh#jTiirpKe_6b>^?_mrS^Kmw)y< z=dVNvJEpGJvYhhsN{Gxk&$8jfyy?4TMP#}UQ6~*y5bOeXXlL<6NJ9bTFUI- zA#!2I{;;Iz8YS1o&Q}cHPY-Q3@2P2=&g`^ma%SDj`VIbbT0bPen;W>`nAfZ|i3%e1 zcel@v=lS7$R&b@OAggOsilA5J(VG(-g#X?!mJn6&b3ES4RX2%+KS;)dh0A7dnG(;< dncMGo8=kUQTyEC)z_ZWh+l$Bji(MEPtN}%uJs|)9 literal 0 HcmV?d00001 diff --git a/Demos/Html-Demos/Images/mosaic_03.gif b/Demos/Html-Demos/Images/mosaic_03.gif new file mode 100644 index 0000000000000000000000000000000000000000..33acf46c2a237cfeaecca5546aa13c294f9d84a4 GIT binary patch literal 726 zcmZ?wbhEHbbYO5`_{`6ss^X=onjaM$UQv*3D8E@tu{$uZ$2)Lie%XS;`cw1UllJY~ zH)-DG#T&1mefSf|R{Y7r$iTqQpu+$JATydtHG$>dhm)SG_gcI@yZe8FMqkQFM#qG8 zaIE8q5t9Z1Nx(2?NlbV>ehWx!`Ji8sSQYTfa}Uk|)36ZCXD{BVV& zP@71?7cQ}mf=8x%9^Z6&@9@v{_3!@;^*qhB&e`($4q18@r6y)33RN{)mO_ma*VLs(jG?Pm>nvI#$Gmmh24T$r`K?UbnD&LUZrHV6lKH^4Q(M;^ zo_AE{#J0An(cP~;RB91N49Be+0Ti+dHe1I z*OM3?fd$i*U3W?L{}6q!iRU0gB?}9O_6gPdEiGK!0umjp-C_y3KIYLxuQH#Z~okHs?AKR@^ z|0m3}Ek9;qG%ve8=eHj`r%vvdU~O_&Pr7$L`i69B`k!xQaViHcKK7XRZO6;d;|@%= zM-vkS-Iq*s<4EKA;l%7M(7~S>5wNjUT=XitLJo_aL?Y7Z`F m4uuOG7i2t8_r!39*b+3H126C$yyV}-R{zKvA{;odqHDi!=;{}=Biu^ znOpCEFfM#rwZAXPVS>SoWXs^7u$J)LQr>uPA3sY5!`@~GyD3wrO=pPYt{F{sKD#-(Cw(kn=)vF^Qdk12-C#6Y^-eCo@u>Uo%!YmN8T|{Kh7tbEDVAy z=Na}f7Ti0kyp6y0KqJe;ojaF3b7*8d!ld#d%!%KniN$GCX7T~4!{%!LGGaR;6qa~v zvUqWwxRJh)qrWj?*Bwcrd7dhkzZ5E1yHdU9*?1?N>0oGVTv*j3=X&e%bDzoxzJOCJ zCud!?wSRi?P-cEtI1|g^Z@0SGmR#TB-M;au)(f3G>BXn7EuAHH_rlhcrPq2Re8s(@ zQ@(PEnFx1W-tX~AEAEX-9$)Q*R*z*eh7K_tj=E}|HaB0)n*k+}JgP2OO!>OvuMdxn#FEoD+5MMP1}w;kIO5Ik_C{!m_`IC( zriMZuw$I1pS)M5{F#mrt;eVu9{>OV literal 0 HcmV?d00001 diff --git a/Demos/Html-Demos/Images/mosaic_05.gif b/Demos/Html-Demos/Images/mosaic_05.gif new file mode 100644 index 0000000000000000000000000000000000000000..c47b99dc27d61c240576edb69d13e3c0997ed02c GIT binary patch literal 701 zcmZ?wbhEHbbYO5`_{`6ss^X=onjaM$UQv*3D8E@tu{$uZ$2)Lie%XS;`cw1UllJY~ zH)-DG#T&1mefSf|R{Y7r$iTqQpu+$JATydtHG$>dhm)SG_gcI@yZe8FMqkQFM#qG8 zat+Hgwd3`2&i^Rhv$Ak~>w*hzJR&^pE=>SPd8Q|yZH=v3X%^r%Z`+lxg- If(#7S0D9{yWdHyG literal 0 HcmV?d00001 diff --git a/Demos/Html-Demos/Images/mosaic_06.gif b/Demos/Html-Demos/Images/mosaic_06.gif new file mode 100644 index 0000000000000000000000000000000000000000..fd6489801b82f97efcb2bc71535974ce40b49034 GIT binary patch literal 799 zcmZ?wbhEHbbYO5`_#(ids^X=onjaM$UQv*3D8E@tu{$uZ$2)Lie%XS;`cw1UllJY~ zH)-DG#T&10J#g{t!=FGd11Ui9CkrD3g8+jLNE67;7FyfL`cFZnFC}wc#;SEWulE(` zoG&@cLY!`o57wGUa5gU#&|u@~Vct;I z({=y7cG&H=bsIaIZwj1aOmhfK2@Ve9h~SNm8sDi z%yjk4^>db4x=GAQQ$m@!xX$jqwN0y_sfp=2^E1ZVFOwg@=R%%*)Ov?wy^jS~^QA^0WH6wsUm?qA637gOo$UZk7BL(K@=AHR6_a zbC86}q`)nCYl|43tX`iW`HG?F)3i%lgfBjIC|K}XU@7-QuaDmg&P2*EeOf2H=X$(H zKgU#tzFnb;`Y|;^{DKS%W-)B-<6Zt`MP+;H>0Z%Q9qdo9JZ9`^6N?Am(usJ^ak}Cf_fk|zTj8&<@BG1UsBZ(Ip*?8?X z$yNGfJYtV5zVfkwx%>&^adR#=r^5kL4K{i*b*ePE*9AXFIA2up^WmwIJ4X*Cl^ok^ S;Vfu$E#q;og_ST9gEav3b~~~F literal 0 HcmV?d00001 diff --git a/Demos/Html-Demos/Images/mosaic_07.gif b/Demos/Html-Demos/Images/mosaic_07.gif new file mode 100644 index 0000000000000000000000000000000000000000..9d164ab37eef9205e5b15e2b6c8bf31f660e4d50 GIT binary patch literal 848 zcmZ?wbhEHbbYO5`_#(ids^X=onjaM$UQv*3D8E@tu{$uZ$2)Lie%XS;`cw1UllJY~ zH)-DG#T&10J#g{t!=FGd11Ui9CkrD3g8+jLNE67;7FyfL`cFZnFC}wc#;SEWulE(` zoG&@ct$~&nb~9$=bIh4Lr=Y)K zMuS_Ue(Kakj?OcErY+NBTxsE{ymqER$daw9+c)T@)?4jSn_;x6{)ne<>M4(dtM!>L zUpc32nWfKmnW;YP>Z$g_+L!ZNf|wp`z42J{>D1>fY%lk`(Y~9K`|;D(RL-|*EG3t> zzn{}s%FZX^pcrsqK@%&#(#enST@JT@F~i!_3c%km~nJRnhcWa0#O=d%ve z+NKGJ9+wfn*4QrbtfF+b!oQh`Cw!_iE;_Vn{B3l$v2ppt)$#M|p(8@iTrD3|g`Ilg QJT0c|<D620x;9%e)cw>t?(@W@E8C%ly~ zm05G+?Y7e!l=v#Nz6O}7@K`b!I|K$;=7okwM)8&=uq7okdiypROl(U@W$dg9iJvrU zO5-%Wq?z`9PTp(m3>a6e@)TI>x_-mtO`DarPT%3NTWy=+hKUDvGfr4~+$pJHmk#r# z%V$*DFKAw7PMmo3s%56`c$6n&aS}uNPc`e8>Vxt7N>vn%|vE|Re7W44byYrY|A4sVGk<6*T%o;;1i zg7UI6P6__y6`U5t_iy@w^7#o9S!Kgy7KkX8#$I>QV!Lv%Eh=9_={PfQMIyVL!6lXi zejk+w=T#VYG9Fhd-cfNp*Lc(S1#0(vHzs$Nz7Y%&u~G2oYWmT;Ag(g7?}pb@6Q1U$ P(_+eAJ~dQiV6X-NOpir{ literal 0 HcmV?d00001 diff --git a/Demos/Html-Demos/Images/mosaic_09.gif b/Demos/Html-Demos/Images/mosaic_09.gif new file mode 100644 index 0000000000000000000000000000000000000000..fd215afed87013ad21bcecca3d08691f308bd45a GIT binary patch literal 752 zcmZ?wbhEHbbYO5`_{`6ss^X=onjaM$UQv*3D8E@tu{$uZ$2)Lie%XS;`cw1UllJY~ zH)-DG#T&1mefSf|R{Y7r$iTqQpu+$JATydtHG$>dhm)SG_gcI@yZe8FMqkQFM#qG8 zau1eiYRBtw9WRc%eeA3ltBcaX42!B&bF_G|*Ane=6~jgPp>; zq-R$qR4}S}BKpnUlzhkgsA-suXAO+i|g z!qZJ>&SKPOgQp7S7J*8RxYnCyxHEo*Lv{8Y1&))4Kn(T9B_qI;n!n*(9VX3{H z4zmMJt~o8k%*5QnGV8(x1GX!S;nFwuY`t^$<+dG+oM*(IUT1&x>h@IQkk1l(ueVJ4 z@-m~+>*2emh6=Vh3@j@$7f2R}KAJmo`-F!Mg)JH~C2kuZ9qRtqDd4l?Sr3B)lZG$T z9MyHb9yw2~mU(wxO4^~u#+PJmJ~{1F|E47`)*Kb?@So+7|5C(Zi`bUM_Tm4W78ZB! zUmlRXs^#13#_l;x45h`BCiI+VidL1}^|eX!#wIoksjIKv&K8c;yYo%kJN@3pU0Mk( zCRe{b2z7RvHDzVxnxHNSUN~<7Z8Tlu(;Y!Zd4zbv(S;VVoRn(XpM3@o|RHYz1v>^|_T@)2r<4d-Z*z+}PMW zX7$(^Fm_mYDlb{PeEzD{Dr=X`P3X4Tq&CZF#k5_X3BCtBeD@nLpFDL$xpt@SDQ2ej ze%2%BE?kW4aJ#nYhW4dfQBR&&E?WISlZlC$>*R!aPoJK5_T{*z@#fu0CiW|zUtARy zdf>ZH=#Q+~wBsTgI# zB6aep%SzX$O9b^M@0{tLpmwT+;mjSGm1la-&-19ZTH>+c!TwsS%@S88nP|EvRNZi# z%C#vgwEYZ2hHNE=N+?sIkydY~mX5W-$wv!pFR(d!ZuPJ)jahn9T&AL6UChDRA}4%f zYq@=l7WZhY9`gFy@UvZFiljv`x2RNu>sxhM2Oh---P*^uFh*Xu6?#Hy>m}W@OgkiP zy9BjDSowA&pN(>0-1b#0@n-hod~y3dmCQ0>O2?0=EZHG)W9}c>yc@gK1lK3ZOz~#^ zaK^B80`tL&cXxd^TTgjhJVAst+sVKGWi1!O#}wD~`Ty%`j{Mf#be#7;qcgXze#4|f z4r3*SiY|lOhCd!i2)%3YmNOCwR1`>_<9Hq)$ literal 0 HcmV?d00001 diff --git a/Demos/Html-Demos/Images/mosaic_11.gif b/Demos/Html-Demos/Images/mosaic_11.gif new file mode 100644 index 0000000000000000000000000000000000000000..70a6025e1b6ba541eb3ce604fd90ecc87090e6ab GIT binary patch literal 893 zcmZ?wbhEHbbYO5`_#()ls^X=onjaM$UQv*3D8E@tu{$uZ$2)Lie%XS;`cw1UlcrBw zuy5bKN%Jl*-gtfMfs1D!{seLvhz5#3Sr{1@1Q~QdIzV=|(Aq}Ue+epmDVg&!R;|l< zy{|y$e92iR$AtHK4bLs-eR#qw)qcW5FvH@VTtNHci5@aNH*&s-TbQhKoF(FN7~jI7x?3q6%)EY-JUt+ZOBGGjJl#g?tAQ;e2Z?D5>mT6M^I(?J8~GiQ%0 zTZZeOWuC~o$>F%AukMvI6Ir76EWf19%ygEEc`nN3j3O`D_#BEq%yR9%IpN8Va;F7HvYPa|d?eC17))3H^H?C= z;oo?0qOv#F%@b`$EUPV6hPG6G6gePkBG~i6%~zmtF3Th(k;<;b28%AGE6TGJR!T4R z=2lU)eD{)(A$adv%c!RcVQV<$%UGlPeT^OSAH*D85jKOrifN0SM#Y5nvm7{9S&IBz z!(rRa%3ACFc;%XF$FFnU7cE%j@TjTju1?eL(%AuV?MXX*|EM)uH7VX*$#hm#Oug(n zheASSzO0k1!@C->P>*Tv_ini=xr6uY>paCNToY%@);OeAO3SKo&OKW6p}I1)>qdll zWwtKcij9_YHcp@W&c;a4NMXU;9m3M}?+$#7-6<>*tK`2tFMi)zzZaFqvqDi_c3D76yWp8cKKx5sPB05^I$)rn zpU1EwN&oBA)9LJ!XXj|Cwr{ga+y=U&L)73 zCHRb?b9S*sW}x+YSIuYfAyS>G%-mN#BsV#PmHW!{SxkuQwU{8mT)O_o%SEkKc{9@I PH?V2FSg^H)fx#L8+VWi{ literal 0 HcmV?d00001 diff --git a/Demos/Html-Demos/Images/mosaic_12.gif b/Demos/Html-Demos/Images/mosaic_12.gif new file mode 100644 index 0000000000000000000000000000000000000000..0c421043be2f12dc8a553d800bf74b13d5166147 GIT binary patch literal 887 zcmZ?wbhEHbbYO5`_#()ls^X=onjaM$UQv*3D8E@tu{$uZ$2)Lie%XS;`cw1UlcrBw zuy5bKN%Jl*-gtfMfs1D!{seLvhz5#3Sr{1@1Q~QdIzV=|(Aq}Ue+epmDVg&!R;|l< zy{|y$e92iR$AtHK4bLs-eR%SlvGj0?V1~sfnQpeETQ*VaBjVp(uwcmM=QwiFV+KE4 z$*%)>yKi%BmfUEfvZ^66!bVU1LPTSecUYwXA74#UDu=IY|AdK?`rYjeQacm*LcAtV z(=X)hVe?d(XTVxm&%RV`(hAnRwHmHQj2l@!HhXS&-0itD)R6he(fumXyL6b29%+c* ze^U3%8D=gnW{!-V7uH_VX1;puI&&u5&O4`^EjeGQFB={EVw{QCnFuv9L_~}Uz z#~tYxdF~8mtN|jwzvmyA-zdO+Eg@Xso<-ZWO|lIV8$}wJ%kK#$cl6$nZ-gC*p za||m5AG(=sDVxN5YKnIH78i!%g?rL&aWuHhFiKo0Q^@mS%MboWpY|L-K9z#v>(iJS z9vqbx(C*Wku$s^3WSYZ+wHb_?4jDVVnPY2NBsNFT`l-X!CvP^ZX0e}$Z#L5zM8cAOls5Ii;694MAlAf zmY&GOxsLlJ-x3Wm5s~OXt$FXdx|+XTnXKP`{uCDj>$$T{Dko0X#;o`l?!njgXZd}7 zrbp8Py1BP=gv{WWcw~aJ@FQCfWN*o>f}E7zC{GoOYq zOD_7sc(_JaP0>rK#$tj4v$52{*!sp5M_Q73ADnQXX!sz_LGsqdGXBu-EgJ3lt93-BeCHuv`RPjD?O*XI+MF2Kvd6yPz@ z&R|AozNhj;1K#QUeB4V_`&V%CRr0QLSzuV0#IenjZTDV}v=l?;W5*9FTgK@#F`r}R zI+kg*_w-e5rd!9k?w-#GzTwHpdPe*Fxx25p3fNhK+16dZ`SSHE=KR#aM^3>Ue^j^K z+}!See_s&e2@!{nI=2p#vMxO!Ev~?LfP+c?p7dkCM^jW7P8{LR@L9aeBKsdt#S)M7 zB^_<5oK`XhZ4Dls;@M9Y9QHo4ZH7Akp2!Ui%92bT6U!F;IL5Gk{+%T|trgsQ0$A9B zxB@b>Z_b>r#qV-D>OfkPEqBjX#pcqLHr5FXB_tfgGOx0^W^ZzRa7}DideEj-I^L#^ z7q{koEaYwTW3cQG%2{XlctY&?xL#T3dpxX+M;Mm;$-3;;y4hvpeBpT;O>ccnz8q+? zURZ#U74#ZH@Z3YtRSL^sKu{{2p)PrvQnyef;&S~B0~Xg8;PjOUxO zX7&R43Klyf&nBHc(|S1ijx0FVAbjh=6$#0A3%VtY{#-~5-28&kS^2})OAXBYF+r!f zqc|qbyoqH6$yQf=BP!=eCBXL6Xx5CbcT^$cBo`@w%G{z)6O*wk3 zJ!yu7lA`F}l}PO Ozky9F!$6UN!5RSdK47N+ literal 0 HcmV?d00001 diff --git a/Demos/Html-Demos/Images/mosaic_14.gif b/Demos/Html-Demos/Images/mosaic_14.gif new file mode 100644 index 0000000000000000000000000000000000000000..ff2c44d54dc328e47ed074e38de437b45cfc2c5d GIT binary patch literal 877 zcmZ?wbhEHbbYO5`_#()ls^X=onjaM$UQv*3D8E@tu{$uZ$2)Lie%XS;`cw1UlcrBw zuy5bKN%Jl*-gtfMfs1D!{seLvhz5#3Sr{1@1Q~QdIzV=|(Aq}Ue+epmDVg&!R;|l< zy{|y$e92iR$AtHK4bLs-eR#qw)qbMmy|{o(dFzTT32UO(pT4s&k>Q%a-2+z~)a3cv zHdn3n+acJVWGu*b=0W?*((~+TYs(Dy@+%p=+dDeDx*H65^YUW7Jv!?e_4sCTCa`%b zcTd;l7Z7OXn5Wv+v}7sw3Ku&gzBRn-J$aY#ZS%#wkXJo2GLD)5PX>o6WUaa;WR?8LOoS?(ApzwMcba z_Id-xT1NJF*$d{}I@Bh}Jx_}lrSFIrx|W&DELr7etGrzxICr?#=0pL(VLAd zEk4f`Ezfwq__+1N_VwG}Oa4%4{c5vf0e1pZ%ic;6#!FvnVqN&6l@~6Va87Nvfl(*- zag`nhAH&Wg1wH!QV#&@-n_nnBj>&&SEJY5~810Pp4*eA@*044Drc+^NF5N1utA>BPY^hk1AJ z(>ZmTnd{nhu0yNlEYmr8`o@hj%(v%m(z<;0;lqQ83pn!GUYt7c`VBM3R1eR{sT%hW zh}{rgt}wrm>C+EZj}84tOj2&LiJ4r`J0s%5z<0oSqTgN9{+m1k76RP&7|Xf-`KyXd z)ZuZd`EW{M1zZ1t6A|oeEtw~jkFP8ioYK1T`^E-e7Vb|sRW`6mc-1jnk(l7xf75iL zx3z49mB}+NA4{Gv-n87;mo|GZoO9=w$Q8M)Gp8h6XJ6xUDmr{@(pk1vJ;vSTAD_M2 zQSKnJtBi?7PAnvU_u=%nT5M_wuO75tVe#nH*~wtU*ywkTsX_9l;|ViH=Rh$=4x0te zH8x9fmaluFp!DQP^V!8G-keGbaW6D-+HUW$8>lrY8Y&#{ZV`Id;GipzvLdl*?}>y3?TIP@UM99DHnJpJPFQlE zyX!>Zd;y;|jLtpPXFQliQ#%S53;O;zsGy|vEzrHcvF2)1W8;iZuEjwU1lgoA?kr5< zx8KuvU~-_xOI696KQD&y7=;-=nJMzFVR4V#u>3I-k!=GQ}o!T z&zY&zZor)pykOxhJ0srQq?Mk$oW&bFczO9aISiS(_U+rMyhDIbpP8BI`0@P*Ht_Ka z2 z+1wS&edM>9ALrqaIn+9>v+CQSogYmfFff{BPRg+SykXvqxP2c&_f#k(GES2DH}T1f z=lMs>8RgdoZt-~V$b*SXFyx9v!ns2w*HZ4S@ig%|*XkVh?KZ1|(osgM`vP;dQhip* zr19Kft}I||T4}npqxEaX>U}H;oE>wSR3!q|{oZkjMf+M1VBm3X@= ztlsi<@43Y$P3x2zn?K+4{k)g?uIJATekaje!nQ}vI6gjAX8Ob|+Qs(FVB1M8Jrx08 z!-E0+{JW)i7k7WB@M)Lc3-hc}X0 rK5T(UylBUV2TJu80Y4VY|NW`{tdo15C9_)AwwKRl7aS5|Vz34P!;)En literal 0 HcmV?d00001 diff --git a/Demos/Html-Demos/Images/mosaic_17.gif b/Demos/Html-Demos/Images/mosaic_17.gif new file mode 100644 index 0000000000000000000000000000000000000000..5a89a16430085709f312aee7ba32315ea5aad092 GIT binary patch literal 850 zcmZ?wbhEHbbYO5`_#()ls^X=onjaM$UQv*3D8E@tu{$uZ$2)Lie%XS;`cw1UlcrBw zuy5bKN%Jl*-gtfMfs1D!{seLvhz5#3Sr{1@1Q~QdIzV=|(Aq}Ue+epmDVg&!R;|l< zy{|y$e92iR$AtHK51w1j`|#v2WAovZiy0Q5xGrQo^jI6keDuJ=LWXO70nP^<^d|Ga z*do=Nq0ATQyr_FFndv(<7Gxm0QDt8zJ2ir|o zYn#RBTRP8Wu3@6bQqM)ftEY3Yv9B}W+O~bYN^Y?}Gcyy@zU@2K^KtTW>h9ln=MqlEzkOPby^)onN`X7toY#4&bZy+qyzhZo7lXH*DNjx~^-a*8E5P@V@!g$ckzCh&qQh65e2js+jp-8Y>-R93gMg<;WAvGlFi zyc+!j3Z2?`>=h&$6?_+5VdATu!`dS8)^~>-UvTV?+q|zWCq3i~=?IDAy3pIiD*sz_ z(QyeySq|qsHU;Lk{Gb_%$2_u^D4vKjHcFhRT<|jE$wY}ZHWdZMPY2`V+CMyqYUX3( Y^qOiI)2Z6LJm=-p=?QH+y*L=G0cuuN00000 literal 0 HcmV?d00001 diff --git a/Demos/Html-Demos/Images/mosaic_18.gif b/Demos/Html-Demos/Images/mosaic_18.gif new file mode 100644 index 0000000000000000000000000000000000000000..de9d8288808cda8b0262ed5af5b33b6c930c5a86 GIT binary patch literal 822 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 DMfyva literal 0 HcmV?d00001 diff --git a/Demos/Html-Demos/Images/mosaic_23.gif b/Demos/Html-Demos/Images/mosaic_23.gif new file mode 100644 index 0000000000000000000000000000000000000000..18bd198275efd8329f84d3be21ab519c6805afb5 GIT binary patch literal 733 zcmZ?wbhEHbbYO5`_{`6ss^X=onjaM$UQv*3D8E@tu{$uZ$2)Lie%XS;`cw1UlcrBw zuy5bKN%Jl*-gq6zQ2fcl$iTqQpu+$JATydtHG$>dhm)SG_gcI@yZe8FMqkQFM#qG8 zaqv^=-Sv4kYAz$Xp6)JI3g?iIux8<4b`-!1@TSq}d)aeT>eBCNTBH zonKTX%kce-Ldn6hJ2&6|_;XHzpW(E%MTNdeVSR3arB#(eadB&xNM&zb>O|uSZN+xe zjS`FJS`??uk@I(0D6Hu%&&a|0F0KPd z7}rQ`W(s3>WMSEO=5|*x=T6bfS5mI~b8NkR*y6%Pv4fj8oUCVmdFM6beep*hKe68Y za=T$=_rY@wt+jtoF-Ci6yLTC~sdqR}`w$`;v6*dCMFvCTk<5Qf{1T;S`ld9t@i8lS zG#og{JmFf^M3tF72UN9qWlUx~U4CkEjboGhC6$Yw%f;S{iC-V5YAHUXQw4CG4Opdnpt-fy@g%u2R?n^FMSai2pccq*(gNVReb7PzAmL~66 zeY<}ZRI~_XPVoCXNzPh6t(?DAokb{MrJ2)ZIs3mkza;vu)PHCa>3FEIB<7NQjqZm7 zElOrG-{&`)-Dzek`w{x!SaHLg<;SH0LJAkKbH01(;`+(wph%10xeM~%^52w?c4`0H s=-KRR5Wyy$z2L$IzTqi1P6v@QcYm_cj2Vx>b(}P&+h)8pwX9dlF>0? zo!qQ_IW>&$W}n*Oe7)_g*ntJP9y-f1G@TzaDBo;iJ$%r?)@SVv9kYYJG7}gb7l||U z#9e4AJj=#^R$pJEGjBBKr zm`-r89}C>P-y(~1yTrM3M=m?8Y^5a-95^VI{lR zK^ggpJSrBthtEy0TqruBG4_|j8HsJ3SDX!Yakiy8@GSScc$VwEH>-s<|G7QW7Ybj@ zEI*d~SgU$pZ52hB@<7P6M&@02FI&FqXlt^+S_s@w(62loimpIzTqi1P6v@QcYm_cj2Vx>b(}P&+h)8pwX9dlF>0? zo!qQ_IW>&$W}n*Oe7o(e*ntJP9y-gi+Kw^0ZDQrU;2e@=5wZS;b5gg(8>TiFeFllW zO{|NneAnGPwV?Qy>+0L@f9#pd@qI~yd#OcveyuEHL$0N8Rhvv^rb)MGrNRXF$;Oiu zJCbKwCS=aH$ecGVgLSd6rnfu?N5Be3Cg#O!v}BkAb}@&stYF(ZdHYT#4(1bk*;h0i zTEMtgis|ynUHi{C9PG~I+#zxK!AZ6o8Ej157cPo1KYa9L#pUyN#hDndo@BrN-hqj0 zK^U9PnO)`&LhWkbpL^(`sHU*E@q|dpNv8!#j4c^^jwW!l3Nl3fd$cY@B_Y+DN&AdR zUdy!rcCHD#5)vIZBs4IkaQNvlPwAX0F3x(!*Esy?0Yg@E&c0+L&Qszp2iC~=R{0;0 zncDs8Ph!|d2cuOd*BG5$QmQ?x>mWzl-c_sC-0aS{x~n>o;h_5Vfb;Kub&1^EByJ>| zRytWc!exp1@w0^nZl@X#=6z#zUZZ_+RY^a)t?rqgu=|YRrbaQ-4(lounF()Rd%$4o zv$OflU%cNOW@^w{m-?XhEdTSYM#g7T+hnbx52~6QIWRNLJR2}iDsOU|PsG_yrpqhC z*FWT7W_Ytx-Bjp_`$jF!3X9f5RdFm_rEh0Dr0!32|090Fafjo=u5~N;H>gIp_tk%? z48I$p&BHjaL3W2Bo9yG48{Gne6izVm^Oh(dw>#iq=qgrk$gzNzQ(;4*rQEU=NnO)< s0+}S;WKOWj=H58y)L?K-oGEAaixu%zc6| ( ) + ((entry :accessor entry-of) + (label :accessor label-of) + (class :init-keyword :class + :init-form "LabeledEntry") + + ;; Fictive slots + (title :accessor title + :init-keyword :title + :allocation :propagated + :propagate-to ((label text))) + (title-width :accessor title-width + :init-keyword :title-width + :allocation :propagated + :propagate-to ((label width))) + (title-anchor :accessor title-anchor + :init-keyword :title-anchor + :allocation :propagated + :propagate-to ((label anchor))) + (anchor :accessor anchor + :init-keyword :anchor + :allocation :propagated + :propagate-to (label)) + (background :accessor background + :init-keyword :background + :allocation :propagated + :propagate-to (frame entry label)) + (foreground :accessor foreground + :init-keyword :foreground + :allocation :propagated + :propagate-to (entry label)) + (border-width :accessor border-width + :allocation :propagated + :init-keyword :border-width + :propagate-to (frame)) + (relief :accessor relief + :init-keyword :relief + :allocation :propagated + :propagate-to (frame)) + (entry-relief :accessor entry-relief + :init-keyword :entry-relief + :allocation :propagated + :propagate-to ((entry relief))) )) + +(define-method initialize-composite-widget ((self ) initargs frame) + (let* ((e (make :parent frame)) + (l (make

S-scape: le browser Web de STk.

+ + S-scape est un browser Web

+

+ +
+ Retour +
+
Erick Gallesio
+ + +Last modified: Mon Mar 9 21:41:18 CET 1998 + + + diff --git a/Demos/Html-Demos/amib-fr.html b/Demos/Html-Demos/amib-fr.html new file mode 100644 index 0000000..23ded11 --- /dev/null +++ b/Demos/Html-Demos/amib-fr.html @@ -0,0 +1,63 @@ + + + + Construction d'interfaces en STklos + + + + + + + +

+ AMIB: A + Mini + Interface + Builder

+ +
+ +
+
    +

+ Objectif: Construction interactive d'interfaces graphiques

+

    +
  • Ecrit en STklos

    +

  • Permet +
      +
    • Construction interactive d'interfaces graphiques; +
    • Sauvegarde/Chargement des interfaces construites

      +

    +
  • Utilise le MOP de STklos

    +

  • Code +
      +
    • générique (ajouter une nouvelle widget + <==> ajouter une ligne dans le programme +
    • juste une démo (moins de 600 lignes!!)

      +

    + +
  • Lancer une démo d'AMIB avec + +
+
+ +
+ Retour +
+
Erick Gallesio
+ + +Last modified: Tue Mar 10 18:41:48 CET 1998 + + + diff --git a/Demos/Html-Demos/amib.stklos b/Demos/Html-Demos/amib.stklos new file mode 120000 index 0000000..e65d369 --- /dev/null +++ b/Demos/Html-Demos/amib.stklos @@ -0,0 +1 @@ +../amib.stklos \ No newline at end of file diff --git a/Demos/Html-Demos/animate.stk b/Demos/Html-Demos/animate.stk new file mode 100644 index 0000000..59907e7 --- /dev/null +++ b/Demos/Html-Demos/animate.stk @@ -0,0 +1,56 @@ +;;;; animate.stk -- A simple image animation (Demo) +;;;; +;;;; Copyright © 1998 Erick Gallesio - I3S-CNRS/ESSI +;;;; +;;;; Permission to use, copy, and/or distribute this software and its +;;;; documentation for any purpose and without fee is hereby granted, provided +;;;; that both the above copyright notice and this permission notice appear in +;;;; all copies and derived works. Fees for distribution or use of this +;;;; software or derived works may only be charged with express written +;;;; permission of the copyright holder. +;;;; This software is provided ``as is'' without express or implied warranty. +;;;; +;;;; $Id: animate.stk 1.1 Tue, 10 Mar 1998 21:43:37 +0100 eg $ +;;;; +;;;; Author: Erick Gallesio [eg@unice.fr] +;;;; Creation date: 9-Mar-1998 18:51 +;;;;Last file update: 9-Mar-1998 21:07 + +(define *img* #f) + +(define (make-animation pattern parent delay) + (let* ((files (sort (glob pattern) string= delay 0) + (when (winfo (quote exists) widget) + (if (>= i size) (set! i 0)) + (tk-set! widget :image (vector-ref images i)) + (set! i (+ i 1)) + (update) + (after (abs delay) anim)) + (after 100 anim)))))) + (after 'idle anim)) + widget)) + + +(define (change-animation-delay w delay) + (let ((env (tk-get w :env))) + (eval `(set! delay ,delay) env))) + diff --git a/Demos/Html-Demos/applet-fr.html b/Demos/Html-Demos/applet-fr.html new file mode 100644 index 0000000..25e5256 --- /dev/null +++ b/Demos/Html-Demos/applet-fr.html @@ -0,0 +1,70 @@ + + + + Applets en STk + + + +

Applets en STk

+

+ + + + + S-scape permet d'insérer du code STk dans une page HTML. +

Exemples d'utilisation: +

    +
  • Animation: + +

    +

  • Morceau d'interface embarqué: + +

    +

  • Application embarquée: + +
+ + +
+ Retour +
+
Erick Gallesio
+ + +Last modified: Tue Mar 10 21:37:14 CET 1998 + + + diff --git a/Demos/Html-Demos/compo-fr.html b/Demos/Html-Demos/compo-fr.html new file mode 100644 index 0000000..b52ad50 --- /dev/null +++ b/Demos/Html-Demos/compo-fr.html @@ -0,0 +1,70 @@ + + + + Widgets composites + + + + + + +

Widgets composites

+ + Une widget composite consiste en fait en un assemblage de plusieurs + widgets (simples ou composites): + + +
+     (define le (make <Labeled-entry> :value 50 :title "Valeur:"))
+    
+ + + permet de définir le comme une instance de la classe + <Labeled-entry>. L'affichage de cet objet est donné + ci-dessous: +

+

+

+

+
+
+
+    
+ En fait, cette image est composée de trois widgets Tk de base: une + frame, un label et une entry: +
+
+    
+
+ + +

+

+ +
+
+    
+
    +
  • Une démonstration de quelques widgets composites peut-être exécutée d'ici +
      +
    • la version non installée de STk + (test-stk) +
    • la version installée de STk + (stk)

      +

    +
  • Le code complet de la classe <Labeled-entry> fait environ 60 lignes. +
+
+
+ Retour +
+
Erick Gallesio
+ + +Last modified: Tue Mar 10 19:26:41 CET 1998 + + + diff --git a/Demos/Html-Demos/envdraw-en.html b/Demos/Html-Demos/envdraw-en.html new file mode 100644 index 0000000..28bb808 --- /dev/null +++ b/Demos/Html-Demos/envdraw-en.html @@ -0,0 +1,33 @@ + + + + Envdraw + + + +

Envdraw

+ + +EnvDraw is a environment diagramming package which draws environment +diagrams as taught in Abelson and Sussman's _Structure and +Interpretation of Computer Languages_. It was written as an +instructional tool for the CS61A course at the University of +California at Berkeley. The environment diagrammer is a metacircular +evaluator which draws procedures, environments, and box and pointer +diagrams along with all the accompanying symbols and mutation. It +includes a box and pointer diagrammer which handles circular list +structures, cons cell mutation, and also will watch for modification +of any symbols known to be pointing to drawn cells. + + + + + + +
+
Erick Gallesio
+ + + + + diff --git a/Demos/Html-Demos/envdraw-fr.html b/Demos/Html-Demos/envdraw-fr.html new file mode 100644 index 0000000..0726cf5 --- /dev/null +++ b/Demos/Html-Demos/envdraw-fr.html @@ -0,0 +1,47 @@ + + + + Envdraw + + + +

Envdraw

+ +
+ +
+
+
+
+ + + +EnvDraw est un package qui permet de dessiner les diagrammes +d'environnement tels qu'il sont présentés dans le livre +Structure and Interpretation of Computer Languages +d'Abelson et Sussman. + +

+Cet outil a été écrit comme un outil pédagogique pour le cours +CS61A de l'Université de Berkeley (Californie). + +Envdraw est en fait un interprète méta-circulaire capable de +dessiner des procedures, des environnement ainsi que des listes sous forme +de boîtes (les listes circulaire sont gérées) +Les symbole permettant d'accéder à ces objets ainsi que les +modifications apportées aux objets sont répercutées sur le diagramme. + +

+Envdraw peut être récupéré à l'URL suivante: +http://kaolin.unice.fr/Contribs + +


+ Retour +
+
Erick Gallesio
+ + +Last modified: Tue Mar 10 21:24:50 CET 1998 + + + diff --git a/Demos/Html-Demos/interface.stk b/Demos/Html-Demos/interface.stk new file mode 100644 index 0000000..4464e9c --- /dev/null +++ b/Demos/Html-Demos/interface.stk @@ -0,0 +1,49 @@ +;; C'est très laid. puisque ca peremt de définir une globale et donc de +;; truander les controles d'accès. +;; (scale '.s :variable 'speed) +;; (.s 'set 1) +;; (destroy .s) + +(require "image") + +(define (make-animation pattern parent delay) + (let* ((files (sort (glob pattern) string= i size) + (set! i 0)) + (tk-set! widget :image (vector-ref images i)) + (set! i (+ i 1)) + (update) + (after delay anim)))))) + (after 'idle anim)) + widget)) + + +(define (change-animation-delay w delay) + (let ((env (tk-get w :env))) + (eval `(set! delay ,delay) env))) + + +(define x (make-animation "/users/eg/PublicHtml/img*.gif" *root* 100)) +(pack x :fill "both" :expand #t) + +(change-animation-delay x 1000) + diff --git a/Demos/Html-Demos/intro-fr.html b/Demos/Html-Demos/intro-fr.html new file mode 100644 index 0000000..d7fc121 --- /dev/null +++ b/Demos/Html-Demos/intro-fr.html @@ -0,0 +1,34 @@ + + + + Introduction à STk/STklos + + + +

Introduction à STk/STklos

+

+ + STk est un interprète Scheme:

+

    +
  • interfacé avec la boîte à outils graphique Tk

    +

  • permet de construire facilement des interfaces graphiques

    +

+ STklos est l'extension objet de STk

+

    +
  • donne l'accès à la toolkit Tk sous forme objet

    +

  • simplifie l'utilisation de la toolkit Tk

    + + +

+ Un exemple simple écrit en STklos +
+
+ Retour +
+
Erick Gallesio
+ + +Last modified: Mon Mar 9 18:59:57 CET 1998 + + + diff --git a/Demos/Html-Demos/main-fr.html b/Demos/Html-Demos/main-fr.html new file mode 100644 index 0000000..01682a7 --- /dev/null +++ b/Demos/Html-Demos/main-fr.html @@ -0,0 +1,30 @@ + + + + Présentation de STk + + + +

Présentation de STk

+ + + +
+
Erick Gallesio
+ + +Last modified: Tue Mar 10 19:30:06 CET 1998 + + + diff --git a/Demos/Html-Demos/main.html b/Demos/Html-Demos/main.html new file mode 100644 index 0000000..b91d3aa --- /dev/null +++ b/Demos/Html-Demos/main.html @@ -0,0 +1,24 @@ + + + + Presentation of STk + + + +

Presentation of STk / Présentation de STk

+ +

+ + Présentation en Français. +

+ + Presentation in (a kind of) English. + +


+
Erick Gallesio
+ + +Last modified: Mon Mar 9 12:38:04 CET 1998 + + + diff --git a/Demos/Html-Demos/puzzle.stk b/Demos/Html-Demos/puzzle.stk new file mode 100644 index 0000000..b0d0df3 --- /dev/null +++ b/Demos/Html-Demos/puzzle.stk @@ -0,0 +1,66 @@ +;;;; puzzle.stk -- A puzzle written in STk (from the Tcl Demo) +;;;; +;;;; Copyright © 1998 Erick Gallesio - I3S-CNRS/ESSI +;;;; +;;;; Permission to use, copy, and/or distribute this software and its +;;;; documentation for any purpose and without fee is hereby granted, provided +;;;; that both the above copyright notice and this permission notice appear in +;;;; all copies and derived works. Fees for distribution or use of this +;;;; software or derived works may only be charged with express written +;;;; permission of the copyright holder. +;;;; This software is provided ``as is'' without express or implied warranty. +;;;; +;;;; $Id: puzzle.stk 1.1 Tue, 10 Mar 1998 21:43:37 +0100 eg $ +;;;; +;;;; Author: Erick Gallesio [eg@unice.fr] +;;;; Creation date: 9-Mar-1998 21:11 +;;;;Last file update: 9-Mar-1998 21:37 + +(define (display-puzzle parent) + + (define (puzzle-switch w num xpos ypos space) + (let ((x (vector-ref xpos num)) + (y (vector-ref ypos num)) + (x_spc (vector-ref xpos space)) + (y_spc (vector-ref ypos space))) + (when (or (and (>= y (- y_spc 0.01)) (<= y (+ y_spc 0.01)) + (>= x (- x_spc 0.26)) (<= x (+ x_spc 0.26))) + (and (>= x (- x_spc 0.01)) (<= x (+ x_spc 0.01)) + (>= y (- y_spc 0.26)) (<= y (+ y_spc 0.26)))) + (vector-set! xpos space x) + (vector-set! xpos num x_spc) + (vector-set! ypos space y) + (vector-set! ypos num y_spc) + (place w :relx x_spc :rely y_spc)))) + + (let ((order '#(3 1 6 2 5 7 15 13 4 11 8 9 14 10 12)) + (xpos (make-vector 16)) + (ypos (make-vector 16)) + (space 0) + (f (frame (format #f "~A.f" (widget-name parent)) + :width 150 :height 150 :bd 4 :relief "solid"))) + + (do ((i 0 (+ i 1))) + ((= i 15)) + (let* ((num (vector-ref order i)) + (b (button (format #f "~A.b~A" (widget-name f) i) :text num + :highlightthickness 0))) + ;; Set the command of the button (and grab current environment) + (tk-set! b :command (lambda () + (puzzle-switch b num xpos ypos space))) + + (vector-set! xpos num (* (modulo i 4) 0.25)) + (vector-set! ypos num (* (floor (/ i 4)) 0.25)) + + (place b :relx (vector-ref xpos num) + :rely (vector-ref ypos num) + :relwidth 0.25 + :relheight 0.25))) + (vector-set! xpos space 0.75) + (vector-set! ypos space 0.75) + + (pack f :expand #t :fill "both") + f)) + + + diff --git a/Demos/Html-Demos/simple-fr.html b/Demos/Html-Demos/simple-fr.html new file mode 100644 index 0000000..1b8cb72 --- /dev/null +++ b/Demos/Html-Demos/simple-fr.html @@ -0,0 +1,39 @@ + + + + Exemple en STklos + + + +

Exemple en STklos

+ + Lancer un xterm pour tester ce programme avec +
    +
  • la version non installée de STk + (test-stk) +
  • la version installée de STk + (stk) +
+
+
+      (require "Tk-classes")
+      (define l (make <Button>
+                      :text    "Hello, world"
+                      :font    "10x20"
+                      :command (lambda () (exit 0))))
+      (pack l)
+     
+ + Coupez les 3 expressions précédentes et Collez les dans la + fenêtre xterm dès que celle-ci apparaît. + +
+ Retour +
+
Erick Gallesio
+ + +Last modified: Tue Mar 10 18:18:42 CET 1998 + + + diff --git a/Demos/Html-Demos/stklos-widgets.stklos b/Demos/Html-Demos/stklos-widgets.stklos new file mode 120000 index 0000000..26e442c --- /dev/null +++ b/Demos/Html-Demos/stklos-widgets.stklos @@ -0,0 +1 @@ +../stklos-widgets.stklos \ No newline at end of file diff --git a/Demos/README.html b/Demos/README.html index 673caba..05a14bc 100644 --- a/Demos/README.html +++ b/Demos/README.html @@ -1,364 +1,442 @@ + - - -Demo directory README (Version 3.1 - July 1996) - - -

Demo directory

-
+  
+    Demo directory README (Version 3.99 - March 1998)
+  
+
+  
+    

Demo directory

+ + + + -
-

This directory contains demo programs for STk. + +

+    
 
-

If you want to run a demo BEFORE a complete - installation of the STk package, you must use the -

    ../Src/test-stk
-command to run the interpreter. +
-

If you view this file with the STk HTML browser, you can click on -each given command to launch a demo.

-To use the STk HTML browser, just type: -

    ../Src/test-stk -f hbrowse README.html
-

Happy STking +

Content

+
    + This directory contains the demo programs for STk. + There are several categories of demos available from here: +
      +
    • STk demos: They correspond to + program which don't use CLOS like object extension of + STk. These demo are quite simple and they often mimic + original Tcl/Tk demonstrations +
    • STklos demos: These + demonstration programs use the STklos object Extension of + STk. The code of most of these demos has been kept short + to illustrate the basic of STklos programming. +
    • Html demo: This demo is + in fact an overview of STk/STklos that I have used once in a + presentation of STklos. The pages accessible from this link + present STk but also contains links or Scheme applets which + illustrate the kind of things that can be done with the STk + browser. Of course, to properly execute the applets contained + in theses pages, you need to run the STk Html browser + (see below). + +
    +
+

Running demonstration programs without installing STk

+
    + If you want to run a demo BEFORE a complete + installation of the STk package, you must use the shell + script ../Src/test-stk in order to run the + interpreter (this shell script set some variables to run properly + the interpreter without installing it). +
+

Running demonstration programs in the STk web browser

+
    + STk provides a simple Web browser which can be used to launch + the demo of this directory. If you are not running it now, you can + type the following command: +
              ../Src/test-stk -f S-scape README.html
    + at the shell prompt. +
-

-

-
STk demos
-

-
+

1. STk demos

+

1.1 Basic STk demos

+ + -
-
File -
browse.stk -
Description -
a simple Unix file browser -
Run -
- ../Src/test-stk -f browse.stk - -
+

1.2 Basics of STk programming

+
    +

  • + wtour.stk +
    + This is a rewrite of the Tcl/Tk wtour2.0 in Scheme/STk. Use + the menus to navigate through different lessons. You can make + changes to the lesson source code; click on the Apply button + to see the results of the changes. +
    + Run with: + + ../Src/test-stk -f ./wtour.stk ../Contrib/STk-wtour + +
    Comment: This code is a contribution of Suresh Srinivas + <ssriniva@cs.indiana.edu> +
-
-
-
File -
colormap.stk -
Description -
a simple color builder -
Run -
- ../Src/test-stk -f colormap.stk - -
Comment -
On exit, the RGB value is printed on the sandard output -
+

1.3 Client/Server Demos

+
    +

  • + server.stk +
    + A simple server showing how to use the socket package. It + creates an xterm window in which a read-eval-print-loop is + executed. When the window is closed or when an error occurs, + the socket is closed +
    + Run with: + ../Src/test-stk -no -f server.stk +

  • + mc-server.stk +
    + A multiple-clients server. On Unix, you can use several telnet + sessions to discuss with the server. Each discussion + has its own dedicated channel. Type (exit) at the STk + when you want to exit the demo. +
    + Run with: + + ../Src/test-stk -load mc-server.stk +
+ + +

1.4 Fun and Games

+
    +

  • + turtle.stk +
    + A Logo turtle package + some demo functions. +
    + Run with: + ../Src/test-stk -f turtle.stk +

  • + hanoi.stk +
    + Hanoi towers animation. +
    + Run with: + ../Src/test-stk -f hanoi.stk +

  • + queens.stk +
    + The queens problem. You can do it yourself (and it will make + sure you follow the rules) or you can ask it to solve the + puzzle starting with a given board configuration. +
    + Run with: + ../Src/test-stk -f queens.stk +
    + Comment: This code is a contribution of Grant + Edwards <grante@rosemount.com)> +

  • + stetris.stk +
    + This is a falling block game not unlike tetris(tm) :). It is + implemented in STk just to prove it can be done, and as a + challenge to TCLers. It starts slowly and becomes faster and + faster. Have fun. +
    + Run with: + ../Src/test-stk -f stetris.stk +
    + Comment: + This code is a contribution of Harvey J. Stein + <hjstein@math.huji.ac.il> + +

  • + ttt.stk +
    + A 3D Tic-Tac-Toe, where the board is 4x4x4, a 3 dimensional + board of four planes with four rows and four columns each. +
    + Run with: + ../Src/test-stk -f ttt.stk +
    + Comment: + This code is a contribution of Edin "Dino" Hodzic + <ehodzic@scu.edu> +
+ + +

1.5 Misc

+
    +

  • + colormap.stk +
    + This is a simple color palette written in STk. +
    + Run with: + ../Src/test-stk -f colormap.stk +
    + Comment: Note that this program is no more really useful since + STk offers now the function Tk:choose-color + which allow to choose a color by name or by value. + +

  • + small-ed.stk +
    + A small editor to create enhanced text +
    + Run with: + ../Src/test-stk -f small-ed.stk +
    + Comment: + This editor use a ad-hoc format for saving file and was + used for the help buttons of various widgets in old versions + of STk. It will not be developed anymore since the + preferred format for help is now HTML. + +

  • + showvars.stk +
    + A variable shower: this program shows the value of three + variables (named a,b and c) Changing the value of one of + these vars (with a set! for instance) will + redisplay its new value immediately. + Run with: + + ../Src/test-stk -load showvars.stk +
    + +

  • + inspector.stk +
    + A simple demo of the inspector on Tk widgets +
    + Run with: + ../Src/test-stk -f inspector.stk +
    + Comment: + Does not work with this version of STk +
    A new version of the inspector is in practically finished and + will be soon released.
    + +

  • + term.stk +
    + A simple terminal emulator (a kind of xterm, but in a text widget). +
    + Run with: + ../Src/test-stk -f term.stk +
    + Comment: Users of Glibc2 (aka libc6, or RedHat 5.0 + users): This program has problems with new release of the + libc under Linux, if your shell has the line editing mode + set. To avoid the problem you can +
      +
    • disable the line editing mode of your shell +
    • set the SHELL variable to a dumb shell (e.g. ash) +
    • link STk with the old libc +
    • don't run the demo :-) +
    +
+ + + + +

2. STklos demos

+
    + All the standard Tk widgets have been wrapped in STklos + classes. As a result, in STklos, Tk widgets are seen as instances of + STklos classes. +
    There are two kinds of STklos widgets: +
      +
    • Simple widgets which map one to one the Tk standard + widgets + +
    • Composite widgets which are built from simple Tk + widgets (or even simpler composite widgets). +
    + Demonstration programs accessible from this page use indifferently + simple widgets and composite widgets. +
+ +

2.1 Basic STklos demos

+ + + +

2.2 STklos widgets

+ +
    +

  • + widget.stklos +
    + A tour of the Tk widgets. This demo shows all the Tk + widgets. This is a rewriting in STklos of the big Tcl/Tk demo + widget.tcl. For each widget demo accessible from this + program, you can see the source by just clicking the "See + code" button. You can modify the code and test your + modified version by clicking the button "Rerun demo" +
    + Run with: + ../Src/test-stk -f widget.stk +
    + Comment: This demo illustrate only the simple widgets + (the ones of the Tk library). For a composite widgets + demo look at the stklos-widgets.stklos program. + +

  • + filebox.stklos +
    + This is a simple program which uses the <File-box> + composite widget. A <File-box> is a file requester + with file name completion (on the Tab key).This widget is + itself a composition of various composite widget classes. +
    + Run with: + ../Src/test-stk -f filebox.stklos + +

  • + stklos-widgets.stklos +
    + A quick demo of some of the STklos Composite widgets + which are available in this release. +
    + Run with: + + ../Src/test-stk -f stklos-widgets.stklos +
    + Comment: This code is a contribution of Drew Whitehouse + <Drew.Whitehouse@anu.edu.au>. +
+ + +

2.3 STklos Applications

+
    +

  • + calc.stklos +
    + This is a simplistic calculator. +
    + Run with: + ../Src/test-stk -f calc.stklos + +

  • + tkcolor.stklos +
    + This is a simple color picker written in STklos. + Clicking the left mouse button in the color box sets the text + color to the chosen color. Clicking the right button sets the + background color. The Select button sets the selection + to a string which can be used (by pasting it in an xterm window) + as argument of most X11 applications to set their foreground and + background color. +
    + Run with: + ../Src/test-stk -f tkcolor.stklos + +

  • + amib.stklos +
    + A Mini Interface Builder. +
    + Run with: + ../Src/test-stk -f amib.stklos +
    + Comment: The current version of AMIB allow you to: +
      +
    • place objects on a plane by drag and drop +
    • resize objects +
    • displace objects +
    • change all the slots of an object (color, font, value, ...) +
    • save an interface to reload it later in an application +
    + However it is far from a really usable interface builder (but + after all it is only a 600 lines of code application!!!!) + +

  • + S-scape.stklos +
    + The STk web browser. You are probably using it while seeing these lines. +
    + Run with: + ../Src/test-stk -f S-scape.stklos +

-
-
File -
small-ed.stk -
Description -
A small editor to create enhanced text -
Run -
- ../Src/test-stk -f small-ed.stk - -
Comment -
Does not work (still) with STk 3.0 -
+
Erick Gallesio
+ + +Last modified: Mon Mar 9 19:15:46 CET 1998 + + + -
-
-
File -
hanoi.stk -
Description -
Hanoi towers animation -
Run -
- ../Src/test-stk -f hanoi.stk - -
- -
-
-
File -
hello.stk -
Description -
a simple button demonstration -
Run -
- ../Src/test-stk -f hello.stk - -
- -
-
-
File -
showvars.stk -
Description -
a variable shower
- This program shows the value of three variables (named a,b and c) - Changing the value of one of these vars (with a set! for - instance) will redisplay its new value immediatly -
Run -
- ../Src/test-stk -load showvars.stk - -
Comment -
Exit -
type (exit) on the STk prompt -
- -
-
-
File -
turtle.stk -
Description -
a Logo turtle package + some demo functions. -
Run -
- ../Src/test-stk -f turtle.stk - -
- -
-
-
File -
inspector.stk -
Description -
A simple demo of the inspector on Tk widgets -
Run -
- ../Src/test-stk -f inspector.stk - -
Comment -
Does not work (still) with STk 3.0 -
- -
-
-
File -
mc-server.stk -
Description -
A multiple-clients server. -
Run -
- ../Src/test-stk -load mc-server.stk - -
- -
-
-
File -
queens.stk -
Description -
The queens problem. You can do it yourself (and it will make - sure you follow the rules) or you can ask it to solve the - puzzle starting with a given board configuration. - This code is a contribution of Grant Edwards - (grante@rosemount.com) -
Run -
- ../Src/test-stk -f queens.stk - -
- - -
-
File -
stetris.stk -
Description -
This is a falling block game not unlike tetris(tm) :). - It is implemented in STk just to prove it can be done, - and as a challenge to TCLers. - It starts slowly and becomes faster and faster. - Have fun. - This code is a contribution of Harvey J. Stein(hjstein@math.huji.ac.il) -
Run -
- ../Src/test-stk -f stetris.stk - -
- - -
-
File -
ttt.stk -
Description -
A 3D Tic-Tac-Toe, where the board is 4x4x4, a 3 dimensional board -of four planes with four rows and four columns each. -This code is a contribution of Edin "Dino" Hodzic <ehodzic@scu.edu> -
Run -
- ../Src/test-stk -f ttt.stk - -
- -
-
File -
server.stk -
Description -
A simple server showing how to use the socket package. - It creates a xterm window in which a read-eval-print-loop - is executed. When the window is closed or when an error occurs, - the socket is closed -
Run -
- ../Src/test-stk -f server.stk - -
- -
-
File -
term.stk -
Description -
A simple terminal emulator (a kind of xterm, but in a text widget). -
Run -
- ../Src/test-stk -f term.stk - -
- -
-
File -
wtour.stk -
Description -
This is a rewrite of the Tcl/Tk wtour2.0 in Scheme/STk. Use the menus -to navigate through different lessons. You can make changes -to the lesson source code; click on the Apply button to see the results of -the changes. -
Run -
- ../Src/test-stk -f ./wtour.stk ../Contrib/STk-wtour - -
- - -
-

-
STklos demos
-

-
- - -There are few demos of STklos. What is interesting is not what they do but -how they are programmmed (IMO). - -
-
-
File -
widget.stklos -
Description -
A tour of the Tk widgets. This demo shows all the Tk widgets -
Run -
- ../Src/test-stk -f widget.stklos - -
- - -
-
File -
stklos-demo.stklos -
Description -
a simple demo written in STklos -
Run -
- ../Src/test-stk -f stklos-demo.stklos - -
- - -
-
File -
stklos-demo2.stklos -
Description -
another simple demo written in STklos -
Run -
- ../Src/test-stk -f stklos-demo2.stklos - -
- - -
-
File -
hello.stklos -
Description -
a rewriting of the hello.stk demo in STklos -
Run -
- ../Src/test-stk -f hello.stklos - -
- -
-
File -
browse.stklos -
Description -
a rewriting of the browse.stk demo in STklos -
Run -
- ../Src/test-stk -f browse.stklos - -
- - -
-
File -
calc.stklos -
Description -
a very simple calculator -
Run -
- ../Src/test-stk -f calc.stklos - -
- - -
-
File -
compo-demo.stklos -
Description -
A quick demo of the composite widgets which are in the STk release. -
- This code is a contribution of - <Drew.Whitehouse@anu.edu.au> -
Run -
- ../Src/test-stk -f compo-demo.stklos - -
- - -
-
File -
filebox.stklos -
Description -
a simple program which uses the <File-box> compositeclass. - A <File-box> is a file requestor with file name completion. - It is a composition of various composite widget classes. -
Run -
- ../Src/test-stk -f filebox.stklos - -
- - -
-
File -
tkcolor.stklos -
Description -
a simple color picker written in STklos. Clicking button 1 on the color - box sets the text color to that color; Clicking button 3 sets the background. -
Run -
- ../Src/test-stk -f tkcolor.stklos - -
- -
-
eg@unice.fr
- - diff --git a/Demos/S-scape.stklos b/Demos/S-scape.stklos new file mode 100755 index 0000000..335b3d5 --- /dev/null +++ b/Demos/S-scape.stklos @@ -0,0 +1,25 @@ +#!/bin/sh +:; exec /usr/local/bin/stk -f "$0" "$@" +;;;; +;;;; S - s c a p e . s t k l o s -- A simple WEB browser +;;;; +;;;; Copyright © 1993-1998 Erick Gallesio - I3S-CNRS/ESSI +;;;; +;;;; Permission to use, copy, and/or distribute this software and its +;;;; documentation for any purpose and without fee is hereby granted, provided +;;;; that both the above copyright notice and this permission notice appear in +;;;; all copies and derived works. Fees for distribution or use of this +;;;; software or derived works may only be charged with express written +;;;; permission of the copyright holder. +;;;; This software is provided ``as is'' without express or implied warranty. +;;;; +;;;; Author: Erick Gallesio [eg@unice.fr] +;;;; Creation date: 3-Nov-1996 18:44 +;;;; Last file update: 2-Mar-1998 09:42 +;;;; + +(require "www-browser") + +(apply WWW:browser + :parent *top-root* + (if (> *argc* 0) (list :url (car *argv*)) '())) diff --git a/Demos/STk-normal.gif b/Demos/STk-normal.gif index 36681af..908e1d8 120000 --- a/Demos/STk-normal.gif +++ b/Demos/STk-normal.gif @@ -1 +1 @@ -../Lib/images/STk-normal.gif \ No newline at end of file +../Lib/Images/STk-normal.gif \ No newline at end of file diff --git a/Demos/Widget/Warrow.stklos b/Demos/Widget/Warrow.stklos index 7bc44ac..782dfbc 100644 --- a/Demos/Widget/Warrow.stklos +++ b/Demos/Widget/Warrow.stklos @@ -44,7 +44,7 @@ (if (> (winfo 'depth cnv) 1) `(:fill "SkyBlue1") `(:fill black - :stipple ,(& "@" *stk-library* "/images/grey.25")))) + :stipple ,(& "@" *stk-library* "/Images/grey.25")))) (let ((xtip (- x2 (* 10 b))) (delta-y (+ (* 10 c) (* 5 width)))) diff --git a/Demos/Widget/Wcscroll.stklos b/Demos/Widget/Wcscroll.stklos new file mode 100644 index 0000000..a864cce --- /dev/null +++ b/Demos/Widget/Wcscroll.stklos @@ -0,0 +1,69 @@ +;;;; +;;;; STk adaptation of the Tk widget demo. +;;;; +;;;; This demonstration script creates a simple canvas that can be +;;;; scrolled in two dimensions. +;;;; + +(require "Tk-classes") + +(define canv-old-fill "") +(define canv-current-item #f) + +(define (demo-cscroll) + (define w (make-demo-toplevel "cscroll" + "Scrollable Canvas Demonstration" + "This window displays a canvas widget that can be scrolled either using the scrollbars or by dragging with button 2 in the canvas. If you click button 1 on one of the rectangles, its indices will be printed on stdout.")) + (define (scroll-enter) + (let* ((item (car (find-items c 'with 'current))) + (rect (if (is-a? item ) + item + (Cid->instance c (- (Cid item) 1))))) + + (set! canv-current-item rect) + (when (> (winfo 'depth c) 1) + (set! canv-old-fill (fill rect)) + (set! (fill rect) "RoyalBlue1")))) + + (define (scroll-leave) + (when (and canv-current-item (> (winfo 'depth c) 1)) + (set! (fill canv-current-item) canv-old-fill) + (set! canv-current-item #f))) + + (define (scroll-button) + (let* ((item (car (find-items c 'with 'current))) + (txt (if (is-a? item ) + item + (Cid->instance c (+ (Cid item) 1))))) + (format #t "You buttoned at ~A\n" (text-of txt)))) + + (define c (make :parent w :scroll-region '(-11c -11c 20c 20c) + :h-scroll-side "bottom" :border-width 2 :relief "raised")) + + ;; Make internal objects + (let ((bg (background c))) + (dotimes (i 10) + (let ((x (+ -10 (* 3 i))) + (y -10)) + (dotimes (j 10) + (make :parent c + :ouline "black" :fill bg :tags "rect" + :coords (read-from-string (format #f "(~Ac ~Ac ~Ac ~Ac)" + x y (+ x 2) (+ y 2)))) + (make :parent c :text (cons i j) :anchor 'center + :font "fixed" + :tags "text" :coords (read-from-string + (format #f "(~Ac ~Ac)" + (+ x 1) (+ y 1)))) + (set! y (+ y 3)))))) + + ;; Pack canvas + (pack c :fill "both" :expand #t) + + ;; Some bindings + (bind c "all" "" scroll-enter) + (bind c "all" "" scroll-leave) + (bind c "all" "<1>" scroll-button) + + (bind c "<2>" (lambda (x y) (scan c 'mark x y))) + (bind c "" (lambda (x y) (scan c 'dragto x y)))) diff --git a/Demos/Widget/Wfloor.stklos b/Demos/Widget/Wfloor.stklos new file mode 100644 index 0000000..aedef23 --- /dev/null +++ b/Demos/Widget/Wfloor.stklos @@ -0,0 +1,1029 @@ +;;;; +;;;; STk adaptation of the Tk widget demo. +;;;; +;;;; This demonstration script creates a canvas widet that displays the +;;;; floorplan for DEC's Western Research Laboratory. +;;;; +(require "Tk-classes") + +(define activeFloor 0) +(define currentRoom #f) +(define floorLabels "") +(define floorItems "") + +(define floor-colors (if (> (winfo 'depth *root*) 1) + '((bg1 "#a9c1da") ;; Color display + (outline1 "#77889a") + (bg2 "#9ab0c6") + (outline2 "#687786") + (bg3 "#8ba0b3") + (outline3 "#596673") + (offices "Black") + (active "#c4d1df")) + '((bg1 "white") ;; Monochrome display + (outline1 "black") + (bg2 "white") + (outline2 "black") + (bg3 "white") + (outline3 "black") + (offices "Black") + (active "black")))) + +(define (find-color name) + (cadr (assoc name floor-colors))) + + + + +(define (demo-floor) + (define w (make-demo-toplevel "floor" + "Floorplan Canvas Demonstration" + "This window contains a canvas widget showing the floorplan of Digital Equipment Corporation's Western Research Laboratory. It has three levels. At any given time one of the levels is active, meaning that you can see its room structure. To activate a level, click the left mouse button anywhere on it. As the mouse moves over the active level, the room under the mouse lights up and its room number appears in the \"Room:\" entry. You can also type a room number in the entry and the room will light up.")) + + (define c (make :width 900 :height 500 :border-width 0 + :highlight-thickness 0 :parent w :h-scroll-side "bottom")) + + (define e (make :parent c :width 10 :relief "sunken" + :bd 2 :text-variable 'currentRoom)) + + (pack c :expand #t :fill "both") + + + ;;;; + ;;;; floor-display + ;;;; + (define (floor-display w active) + (unless (= activeFloor active) + (canvas-delete w 'all) + (set! activeFloor active) + + ; First go through the three floors, displaying the backgrounds for + ; each floor. + (bg1 (Id w) (find-color 'bg1) (find-color 'outline1)) + (bg2 (Id w) (find-color 'bg2) (find-color 'outline2)) + (bg3 (Id w) (find-color 'bg3) (find-color 'outline3)) + + ; Raise the background for the active floor so that it's on top. + (raise w (format #f "floor~A" active)) + + ; Create a dummy item just to mark this point in the display list, + ; so we can insert highlights here. + (make :parent w :coords '(0 100 1 101) :fill "" + :outline "" :tags "marker") + + ; Add the walls and labels for the active floor, along with + ; transparent polygons that define the rooms on the floor. + ; Make sure that the room polygons are on top. + (set! floorLabels "") + (set! floorItems "") + (let ((fg (case active + ((1) fg1) + ((2) fg2) + ((3) fg3)))) + (fg (Id w) (find-color 'offices))) + (raise w "room") + + ; Offset the floors diagonally from each other. + (move w "floor1" '2c '2c) + (move w "floor2" '1c '1c) + + ; Create items for the room entry and its label. + + (make :parent w :coords '(600 100) :anchor 'w + :window e) + (make :parent w :coords '(600 100) :anchor 'e + :text "Room: ") + (slot-set! w 'scroll-region (bounding-box w 'all)))) + + ;;;; + ;;;; newRoom -- + ;;;; This procedure is invoked whenever the mouse enters a room + ;;;; in the floorplan. It changes tags so that the current room is + ;;;; highlighted. + (define (newRoom w) + (let ((x ((Id w) 'find 'withtag 'current))) + (unless (null? x) + (set! currentRoom (cdr (assoc (car x) floorLabels))) + (update 'idletasks)))) + + ;;;; + ;;;; roomChanged -- + ;;;; This procedure is invoked whenever the currentRoom variable changes. + ;;;; It highlights the current room and unhighlights any previous room. + + (define (roomChanged w) + (canvas-delete w "highlight") + (let ((item (assoc currentRoom floorItems))) + (when item + (let ((new (make :parent w + :coords (coords w (cdr item)) + :fill (find-color 'active) :tags "highlight"))) + ((Id w) 'raise new 'marker))))) + + ;====================================================================== + ; + ; Demo starts here + ; + ;====================================================================== + (set! activeFloor 0) + (set! currentRoom "") + (trace-var 'currentRoom (lambda () (roomChanged c))) + + (floor-display c 3) + + ;; Set up event bindings for canvas: + (bind c "floor1" "<1>" (lambda () (floor-display c 1))) + (bind c "floor2" "<1>" (lambda () (floor-display c 2))) + (bind c "floor3" "<1>" (lambda () (floor-display c 3))) + + (bind c "room" "" (lambda () (newRoom c))) + (bind c "room" "" (lambda () (set! currentRoom ""))) + + (bind c "<2>" (lambda (x y) ((Id c) 'scan 'mark x y))) + (bind c "" (lambda (x y) ((Id c) 'scan 'dragto x y))) + (bind c "" (lambda () (set! currentRoom "")))) + + + +(define (clearReferences) + (set! floorLabels ()) + (set! floorItems ())) + +(define (storeReference roomItem roomLabel) + (set! floorLabels (cons (cons roomItem roomLabel) floorLabels)) + (set! floorItems (cons (cons roomLabel roomItem) floorItems))) + + +;;;;============================================================================ + +(define (bg1 w fill outline) + (w 'create 'poly 347 80 349 82 351 84 353 85 363 92 375 99 386 104 + 386 129 398 129 398 162 484 162 484 129 559 129 559 133 725 + 133 725 129 802 129 802 389 644 389 644 391 559 391 559 327 + 508 327 508 311 484 311 484 278 395 278 395 288 400 288 404 + 288 409 290 413 292 418 297 421 302 422 309 421 318 417 325 + 411 330 405 332 397 333 344 333 340 334 336 336 335 338 332 + 342 331 347 332 351 334 354 336 357 341 359 340 360 335 363 + 331 365 326 366 304 366 304 355 258 355 258 387 60 387 60 391 + 0 391 0 337 3 337 3 114 8 114 8 25 30 25 30 5 93 5 98 5 104 7 + 110 10 116 16 119 20 122 28 123 32 123 68 220 68 220 34 221 + 22 223 17 227 13 231 8 236 4 242 2 246 0 260 0 283 1 300 5 + 321 14 335 22 348 25 365 29 363 39 358 48 352 56 337 70 + 344 76 347 80 + :tags "floor1 bg" :fill fill) + (w 'create 'line 386 129 398 129 :fill outline :tags "floor1 bg") + (w 'create 'line 258 355 258 387 :fill outline :tags "floor1 bg") + (w 'create 'line 60 387 60 391 :fill outline :tags "floor1 bg") + (w 'create 'line 0 337 0 391 :fill outline :tags "floor1 bg") + (w 'create 'line 60 391 0 391 :fill outline :tags "floor1 bg") + (w 'create 'line 3 114 3 337 :fill outline :tags "floor1 bg") + (w 'create 'line 258 387 60 387 :fill outline :tags "floor1 bg") + (w 'create 'line 484 162 398 162 :fill outline :tags "floor1 bg") + (w 'create 'line 398 162 398 129 :fill outline :tags "floor1 bg") + (w 'create 'line 484 278 484 311 :fill outline :tags "floor1 bg") + (w 'create 'line 484 311 508 311 :fill outline :tags "floor1 bg") + (w 'create 'line 508 327 508 311 :fill outline :tags "floor1 bg") + (w 'create 'line 559 327 508 327 :fill outline :tags "floor1 bg") + (w 'create 'line 644 391 559 391 :fill outline :tags "floor1 bg") + (w 'create 'line 644 389 644 391 :fill outline :tags "floor1 bg") + (w 'create 'line 559 129 484 129 :fill outline :tags "floor1 bg") + (w 'create 'line 484 162 484 129 :fill outline :tags "floor1 bg") + (w 'create 'line 725 133 559 133 :fill outline :tags "floor1 bg") + (w 'create 'line 559 129 559 133 :fill outline :tags "floor1 bg") + (w 'create 'line 725 129 802 129 :fill outline :tags "floor1 bg") + (w 'create 'line 802 389 802 129 :fill outline :tags "floor1 bg") + (w 'create 'line 3 337 0 337 :fill outline :tags "floor1 bg") + (w 'create 'line 559 391 559 327 :fill outline :tags "floor1 bg") + (w 'create 'line 802 389 644 389 :fill outline :tags "floor1 bg") + (w 'create 'line 725 133 725 129 :fill outline :tags "floor1 bg") + (w 'create 'line 8 25 8 114 :fill outline :tags "floor1 bg") + (w 'create 'line 8 114 3 114 :fill outline :tags "floor1 bg") + (w 'create 'line 30 25 8 25 :fill outline :tags "floor1 bg") + (w 'create 'line 484 278 395 278 :fill outline :tags "floor1 bg") + (w 'create 'line 30 25 30 5 :fill outline :tags "floor1 bg") + (w 'create 'line 93 5 30 5 :fill outline :tags "floor1 bg") + (w 'create 'line 98 5 93 5 :fill outline :tags "floor1 bg") + (w 'create 'line 104 7 98 5 :fill outline :tags "floor1 bg") + (w 'create 'line 110 10 104 7 :fill outline :tags "floor1 bg") + (w 'create 'line 116 16 110 10 :fill outline :tags "floor1 bg") + (w 'create 'line 119 20 116 16 :fill outline :tags "floor1 bg") + (w 'create 'line 122 28 119 20 :fill outline :tags "floor1 bg") + (w 'create 'line 123 32 122 28 :fill outline :tags "floor1 bg") + (w 'create 'line 123 68 123 32 :fill outline :tags "floor1 bg") + (w 'create 'line 220 68 123 68 :fill outline :tags "floor1 bg") + (w 'create 'line 386 129 386 104 :fill outline :tags "floor1 bg") + (w 'create 'line 386 104 375 99 :fill outline :tags "floor1 bg") + (w 'create 'line 375 99 363 92 :fill outline :tags "floor1 bg") + (w 'create 'line 353 85 363 92 :fill outline :tags "floor1 bg") + (w 'create 'line 220 68 220 34 :fill outline :tags "floor1 bg") + (w 'create 'line 337 70 352 56 :fill outline :tags "floor1 bg") + (w 'create 'line 352 56 358 48 :fill outline :tags "floor1 bg") + (w 'create 'line 358 48 363 39 :fill outline :tags "floor1 bg") + (w 'create 'line 363 39 365 29 :fill outline :tags "floor1 bg") + (w 'create 'line 365 29 348 25 :fill outline :tags "floor1 bg") + (w 'create 'line 348 25 335 22 :fill outline :tags "floor1 bg") + (w 'create 'line 335 22 321 14 :fill outline :tags "floor1 bg") + (w 'create 'line 321 14 300 5 :fill outline :tags "floor1 bg") + (w 'create 'line 300 5 283 1 :fill outline :tags "floor1 bg") + (w 'create 'line 283 1 260 0 :fill outline :tags "floor1 bg") + (w 'create 'line 260 0 246 0 :fill outline :tags "floor1 bg") + (w 'create 'line 246 0 242 2 :fill outline :tags "floor1 bg") + (w 'create 'line 242 2 236 4 :fill outline :tags "floor1 bg") + (w 'create 'line 236 4 231 8 :fill outline :tags "floor1 bg") + (w 'create 'line 231 8 227 13 :fill outline :tags "floor1 bg") + (w 'create 'line 223 17 227 13 :fill outline :tags "floor1 bg") + (w 'create 'line 221 22 223 17 :fill outline :tags "floor1 bg") + (w 'create 'line 220 34 221 22 :fill outline :tags "floor1 bg") + (w 'create 'line 340 360 335 363 :fill outline :tags "floor1 bg") + (w 'create 'line 335 363 331 365 :fill outline :tags "floor1 bg") + (w 'create 'line 331 365 326 366 :fill outline :tags "floor1 bg") + (w 'create 'line 326 366 304 366 :fill outline :tags "floor1 bg") + (w 'create 'line 304 355 304 366 :fill outline :tags "floor1 bg") + (w 'create 'line 395 288 400 288 :fill outline :tags "floor1 bg") + (w 'create 'line 404 288 400 288 :fill outline :tags "floor1 bg") + (w 'create 'line 409 290 404 288 :fill outline :tags "floor1 bg") + (w 'create 'line 413 292 409 290 :fill outline :tags "floor1 bg") + (w 'create 'line 418 297 413 292 :fill outline :tags "floor1 bg") + (w 'create 'line 421 302 418 297 :fill outline :tags "floor1 bg") + (w 'create 'line 422 309 421 302 :fill outline :tags "floor1 bg") + (w 'create 'line 421 318 422 309 :fill outline :tags "floor1 bg") + (w 'create 'line 421 318 417 325 :fill outline :tags "floor1 bg") + (w 'create 'line 417 325 411 330 :fill outline :tags "floor1 bg") + (w 'create 'line 411 330 405 332 :fill outline :tags "floor1 bg") + (w 'create 'line 405 332 397 333 :fill outline :tags "floor1 bg") + (w 'create 'line 397 333 344 333 :fill outline :tags "floor1 bg") + (w 'create 'line 344 333 340 334 :fill outline :tags "floor1 bg") + (w 'create 'line 340 334 336 336 :fill outline :tags "floor1 bg") + (w 'create 'line 336 336 335 338 :fill outline :tags "floor1 bg") + (w 'create 'line 335 338 332 342 :fill outline :tags "floor1 bg") + (w 'create 'line 331 347 332 342 :fill outline :tags "floor1 bg") + (w 'create 'line 332 351 331 347 :fill outline :tags "floor1 bg") + (w 'create 'line 334 354 332 351 :fill outline :tags "floor1 bg") + (w 'create 'line 336 357 334 354 :fill outline :tags "floor1 bg") + (w 'create 'line 341 359 336 357 :fill outline :tags "floor1 bg") + (w 'create 'line 341 359 340 360 :fill outline :tags "floor1 bg") + (w 'create 'line 395 288 395 278 :fill outline :tags "floor1 bg") + (w 'create 'line 304 355 258 355 :fill outline :tags "floor1 bg") + (w 'create 'line 347 80 344 76 :fill outline :tags "floor1 bg") + (w 'create 'line 344 76 337 70 :fill outline :tags "floor1 bg") + (w 'create 'line 349 82 347 80 :fill outline :tags "floor1 bg") + (w 'create 'line 351 84 349 82 :fill outline :tags "floor1 bg") + (w 'create 'line 353 85 351 84 :fill outline :tags "floor1 bg")) + +(define (bg2 w fill outline) + (w 'create 'poly 559 129 484 129 484 162 398 162 398 129 315 129 + 315 133 176 133 176 129 96 129 96 133 3 133 3 339 0 339 0 391 + 60 391 60 387 258 387 258 329 350 329 350 311 395 311 395 280 + 484 280 484 311 508 311 508 327 558 327 558 391 644 391 644 + 367 802 367 802 129 725 129 725 133 559 133 559 129 + :tags "floor2 bg" :fill fill) + (w 'create 'line 350 311 350 329 :fill outline :tags "floor2 bg") + (w 'create 'line 398 129 398 162 :fill outline :tags "floor2 bg") + (w 'create 'line 802 367 802 129 :fill outline :tags "floor2 bg") + (w 'create 'line 802 129 725 129 :fill outline :tags "floor2 bg") + (w 'create 'line 725 133 725 129 :fill outline :tags "floor2 bg") + (w 'create 'line 559 129 559 133 :fill outline :tags "floor2 bg") + (w 'create 'line 559 133 725 133 :fill outline :tags "floor2 bg") + (w 'create 'line 484 162 484 129 :fill outline :tags "floor2 bg") + (w 'create 'line 559 129 484 129 :fill outline :tags "floor2 bg") + (w 'create 'line 802 367 644 367 :fill outline :tags "floor2 bg") + (w 'create 'line 644 367 644 391 :fill outline :tags "floor2 bg") + (w 'create 'line 644 391 558 391 :fill outline :tags "floor2 bg") + (w 'create 'line 558 327 558 391 :fill outline :tags "floor2 bg") + (w 'create 'line 558 327 508 327 :fill outline :tags "floor2 bg") + (w 'create 'line 508 327 508 311 :fill outline :tags "floor2 bg") + (w 'create 'line 484 311 508 311 :fill outline :tags "floor2 bg") + (w 'create 'line 484 280 484 311 :fill outline :tags "floor2 bg") + (w 'create 'line 398 162 484 162 :fill outline :tags "floor2 bg") + (w 'create 'line 484 280 395 280 :fill outline :tags "floor2 bg") + (w 'create 'line 395 280 395 311 :fill outline :tags "floor2 bg") + (w 'create 'line 258 387 60 387 :fill outline :tags "floor2 bg") + (w 'create 'line 3 133 3 339 :fill outline :tags "floor2 bg") + (w 'create 'line 3 339 0 339 :fill outline :tags "floor2 bg") + (w 'create 'line 60 391 0 391 :fill outline :tags "floor2 bg") + (w 'create 'line 0 339 0 391 :fill outline :tags "floor2 bg") + (w 'create 'line 60 387 60 391 :fill outline :tags "floor2 bg") + (w 'create 'line 258 329 258 387 :fill outline :tags "floor2 bg") + (w 'create 'line 350 329 258 329 :fill outline :tags "floor2 bg") + (w 'create 'line 395 311 350 311 :fill outline :tags "floor2 bg") + (w 'create 'line 398 129 315 129 :fill outline :tags "floor2 bg") + (w 'create 'line 176 133 315 133 :fill outline :tags "floor2 bg") + (w 'create 'line 176 129 96 129 :fill outline :tags "floor2 bg") + (w 'create 'line 3 133 96 133 :fill outline :tags "floor2 bg") + (w 'create 'line 315 133 315 129 :fill outline :tags "floor2 bg") + (w 'create 'line 176 133 176 129 :fill outline :tags "floor2 bg") + (w 'create 'line 96 133 96 129 :fill outline :tags "floor2 bg")) + + +(define (bg3 w fill outline) + (w 'create 'poly 159 300 107 300 107 248 159 248 159 129 96 129 96 + 133 21 133 21 331 0 331 0 391 60 391 60 370 159 370 159 300 + :tags "floor3 bg" :fill fill) + (w 'create 'poly 258 370 258 329 350 329 350 311 399 311 399 129 + 315 129 315 133 176 133 176 129 159 129 159 370 258 370 + :tags "floor3 bg" :fill fill) + (w 'create 'line 96 133 96 129 :fill outline :tags "floor3 bg") + (w 'create 'line 176 129 96 129 :fill outline :tags "floor3 bg") + (w 'create 'line 176 129 176 133 :fill outline :tags "floor3 bg") + (w 'create 'line 315 133 176 133 :fill outline :tags "floor3 bg") + (w 'create 'line 315 133 315 129 :fill outline :tags "floor3 bg") + (w 'create 'line 399 129 315 129 :fill outline :tags "floor3 bg") + (w 'create 'line 399 311 399 129 :fill outline :tags "floor3 bg") + (w 'create 'line 399 311 350 311 :fill outline :tags "floor3 bg") + (w 'create 'line 350 329 350 311 :fill outline :tags "floor3 bg") + (w 'create 'line 350 329 258 329 :fill outline :tags "floor3 bg") + (w 'create 'line 258 370 258 329 :fill outline :tags "floor3 bg") + (w 'create 'line 60 370 258 370 :fill outline :tags "floor3 bg") + (w 'create 'line 60 370 60 391 :fill outline :tags "floor3 bg") + (w 'create 'line 60 391 0 391 :fill outline :tags "floor3 bg") + (w 'create 'line 0 391 0 331 :fill outline :tags "floor3 bg") + (w 'create 'line 21 331 0 331 :fill outline :tags "floor3 bg") + (w 'create 'line 21 331 21 133 :fill outline :tags "floor3 bg") + (w 'create 'line 96 133 21 133 :fill outline :tags "floor3 bg") + (w 'create 'line 107 300 159 300 159 248 107 248 107 300 + :fill outline :tags "floor3 bg")) + + + + + + +(define (fg1 w color) + (clearReferences) + (storeReference [w 'create 'polygon 375 246 375 172 341 172 341 246 :fill "" :tags "floor1 room"] "101") + (w 'create 'text 358 209 :text "101" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 307 240 339 240 339 206 307 206 :fill "" :tags "floor1 room"] "Pub Lift1") + (w 'create 'text 323 223 :text "Pub Lift1" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 339 205 307 205 307 171 339 171 :fill "" :tags "floor1 room"] "Priv Lift1") + (w 'create 'text 323 188 :text "Priv Lift1" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 42 389 42 337 1 337 1 389 :fill "" :tags "floor1 room"] "110") + (w 'create 'text 21.5 363 :text "110" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 59 389 59 385 90 385 90 337 44 337 44 389 :fill "" :tags "floor1 room"] "109") + (w 'create 'text 67 363 :text "109" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 51 300 51 253 6 253 6 300 :fill "" :tags "floor1 room"] "111") + (w 'create 'text 28.5 276.5 :text "111" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 98 248 98 309 79 309 79 248 :fill "" :tags "floor1 room"] "117B") + (w 'create 'text 88.5 278.5 :text "117B" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 51 251 51 204 6 204 6 251 :fill "" :tags "floor1 room"] "112") + (w 'create 'text 28.5 227.5 :text "112" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 6 156 51 156 51 203 6 203 :fill "" :tags "floor1 room"] "113") + (w 'create 'text 28.5 179.5 :text "113" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 85 169 79 169 79 192 85 192 :fill "" :tags "floor1 room"] "117A") + (w 'create 'text 82 180.5 :text "117A" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 77 302 77 168 53 168 53 302 :fill "" :tags "floor1 room"] "117") + (w 'create 'text 65 235 :text "117" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 51 155 51 115 6 115 6 155 :fill "" :tags "floor1 room"] "114") + (w 'create 'text 28.5 135 :text "114" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 95 115 53 115 53 168 95 168 :fill "" :tags "floor1 room"] "115") + (w 'create 'text 74 141.5 :text "115" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 87 113 87 27 10 27 10 113 :fill "" :tags "floor1 room"] "116") + (w 'create 'text 48.5 70 :text "116" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 89 91 128 91 128 113 89 113 :fill "" :tags "floor1 room"] "118") + (w 'create 'text 108.5 102 :text "118" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 178 128 178 132 216 132 216 91 163 91 163 112 149 112 149 128 :fill "" :tags "floor1 room"] "120") + (w 'create 'text 189.5 111.5 :text "120" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 79 193 87 193 87 169 136 169 136 192 156 192 156 169 175 169 175 246 79 246 :fill "" :tags "floor1 room"] "122") + (w 'create 'text 131 207.5 :text "122" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 138 169 154 169 154 191 138 191 :fill "" :tags "floor1 room"] "121") + (w 'create 'text 146 180 :text "121" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 99 300 126 300 126 309 99 309 :fill "" :tags "floor1 room"] "106A") + (w 'create 'text 112.5 304.5 :text "106A" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 128 299 128 309 150 309 150 248 99 248 99 299 :fill "" :tags "floor1 room"] "105") + (w 'create 'text 124.5 278.5 :text "105" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 174 309 174 300 152 300 152 309 :fill "" :tags "floor1 room"] "106B") + (w 'create 'text 163 304.5 :text "106B" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 176 299 176 309 216 309 216 248 152 248 152 299 :fill "" :tags "floor1 room"] "104") + (w 'create 'text 184 278.5 :text "104" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 138 385 138 337 91 337 91 385 :fill "" :tags "floor1 room"] "108") + (w 'create 'text 114.5 361 :text "108" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 256 337 140 337 140 385 256 385 :fill "" :tags "floor1 room"] "107") + (w 'create 'text 198 361 :text "107" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 300 353 300 329 260 329 260 353 :fill "" :tags "floor1 room"] "Smoking") + (w 'create 'text 280 341 :text "Smoking" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 314 135 314 170 306 170 306 246 177 246 177 135 :fill "" :tags "floor1 room"] "123") + (w 'create 'text 245.5 190.5 :text "123" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 217 248 301 248 301 326 257 326 257 310 217 310 :fill "" :tags "floor1 room"] "103") + (w 'create 'text 259 287 :text "103" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 396 188 377 188 377 169 316 169 316 131 396 131 :fill "" :tags "floor1 room"] "124") + (w 'create 'text 356 150 :text "124" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 397 226 407 226 407 189 377 189 377 246 397 246 :fill "" :tags "floor1 room"] "125") + (w 'create 'text 392 217.5 :text "125" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 399 187 409 187 409 207 474 207 474 164 399 164 :fill "" :tags "floor1 room"] "126") + (w 'create 'text 436.5 185.5 :text "126" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 409 209 409 229 399 229 399 253 486 253 486 239 474 239 474 209 :fill "" :tags "floor1 room"] "127") + (w 'create 'text 436.5 231 :text "127" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 501 164 501 174 495 174 495 188 490 188 490 204 476 204 476 164 :fill "" :tags "floor1 room"] "MShower") + (w 'create 'text 488.5 184 :text "MShower" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 497 176 513 176 513 204 492 204 492 190 497 190 :fill "" :tags "floor1 room"] "Closet") + (w 'create 'text 502.5 190 :text "Closet" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 476 237 476 206 513 206 513 254 488 254 488 237 :fill "" :tags "floor1 room"] "WShower") + (w 'create 'text 494.5 230 :text "WShower" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 486 131 558 131 558 135 724 135 724 166 697 166 697 275 553 275 531 254 515 254 515 174 503 174 503 161 486 161 :fill "" :tags "floor1 room"] "130") + (w 'create 'text 638.5 205 :text "130" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 308 242 339 242 339 248 342 248 342 246 397 246 397 276 393 276 393 309 300 309 300 248 308 248 :fill "" :tags "floor1 room"] "102") + (w 'create 'text 367.5 278.5 :text "102" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 397 255 486 255 486 276 397 276 :fill "" :tags "floor1 room"] "128") + (w 'create 'text 441.5 265.5 :text "128" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 510 309 486 309 486 255 530 255 552 277 561 277 561 325 510 325 :fill "" :tags "floor1 room"] "129") + (w 'create 'text 535.5 293 :text "129" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 696 281 740 281 740 387 642 387 642 389 561 389 561 277 696 277 :fill "" :tags "floor1 room"] "133") + (w 'create 'text 628.5 335 :text "133" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 742 387 742 281 800 281 800 387 :fill "" :tags "floor1 room"] "132") + (w 'create 'text 771 334 :text "132" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 800 168 800 280 699 280 699 168 :fill "" :tags "floor1 room"] "134") + (w 'create 'text 749.5 224 :text "134" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 726 131 726 166 800 166 800 131 :fill "" :tags "floor1 room"] "135") + (w 'create 'text 763 148.5 :text "135" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 340 360 335 363 331 365 326 366 304 366 304 312 396 312 396 288 400 288 404 288 409 290 413 292 418 297 421 302 422 309 421 318 417 325 411 330 405 332 397 333 344 333 340 334 336 336 335 338 332 342 331 347 332 351 334 354 336 357 341 359 :fill "" :tags "floor1 room"] "Ramona Stair") + (w 'create 'text 368 323 :text "Ramona Stair" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 30 23 30 5 93 5 98 5 104 7 110 10 116 16 119 20 122 28 123 32 123 68 220 68 220 87 90 87 90 23 :fill "" :tags "floor1 room"] "University Stair") + (w 'create 'text 155 77.5 :text "University Stair" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 282 37 295 40 312 49 323 56 337 70 352 56 358 48 363 39 365 29 348 25 335 22 321 14 300 5 283 1 260 0 246 0 242 2 236 4 231 8 227 13 223 17 221 22 220 34 260 34 :fill "" :tags "floor1 room"] "Plaza Stair") + (w 'create 'text 317.5 28.5 :text "Plaza Stair" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 220 34 260 34 282 37 295 40 312 49 323 56 337 70 350 83 365 94 377 100 386 104 386 128 220 128 :fill "" :tags "floor1 room"] "Plaza Deck") + (w 'create 'text 303 81 :text "Plaza Deck" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 257 336 77 336 6 336 6 301 77 301 77 310 257 310 :fill "" :tags "floor1 room"] "106") + (w 'create 'text 131.5 318.5 :text "106" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + (storeReference [w 'create 'polygon 146 110 162 110 162 91 130 91 130 115 95 115 95 128 114 128 114 151 157 151 157 153 112 153 112 130 97 130 97 168 175 168 175 131 146 131 :fill "" :tags "floor1 room"] "119") + (w 'create 'text 143.5 133 :text "119" :fill color :anchor "c" :tags "floor1 label" :font "fixed") + + (w 'create 'line 155 191 155 189 :fill color :tags "floor1 wall") + (w 'create 'line 155 177 155 169 :fill color :tags "floor1 wall") + (w 'create 'line 96 129 96 169 :fill color :tags "floor1 wall") + (w 'create 'line 78 169 176 169 :fill color :tags "floor1 wall") + (w 'create 'line 176 247 176 129 :fill color :tags "floor1 wall") + (w 'create 'line 340 206 307 206 :fill color :tags "floor1 wall") + (w 'create 'line 340 187 340 170 :fill color :tags "floor1 wall") + (w 'create 'line 340 210 340 201 :fill color :tags "floor1 wall") + (w 'create 'line 340 247 340 224 :fill color :tags "floor1 wall") + (w 'create 'line 340 241 307 241 :fill color :tags "floor1 wall") + (w 'create 'line 376 246 376 170 :fill color :tags "floor1 wall") + (w 'create 'line 307 247 307 170 :fill color :tags "floor1 wall") + (w 'create 'line 376 170 307 170 :fill color :tags "floor1 wall") + (w 'create 'line 315 129 315 170 :fill color :tags "floor1 wall") + (w 'create 'line 147 129 176 129 :fill color :tags "floor1 wall") + (w 'create 'line 202 133 176 133 :fill color :tags "floor1 wall") + (w 'create 'line 398 129 315 129 :fill color :tags "floor1 wall") + (w 'create 'line 258 352 258 387 :fill color :tags "floor1 wall") + (w 'create 'line 60 387 60 391 :fill color :tags "floor1 wall") + (w 'create 'line 0 337 0 391 :fill color :tags "floor1 wall") + (w 'create 'line 60 391 0 391 :fill color :tags "floor1 wall") + (w 'create 'line 3 114 3 337 :fill color :tags "floor1 wall") + (w 'create 'line 258 387 60 387 :fill color :tags "floor1 wall") + (w 'create 'line 52 237 52 273 :fill color :tags "floor1 wall") + (w 'create 'line 52 189 52 225 :fill color :tags "floor1 wall") + (w 'create 'line 52 140 52 177 :fill color :tags "floor1 wall") + (w 'create 'line 395 306 395 311 :fill color :tags "floor1 wall") + (w 'create 'line 531 254 398 254 :fill color :tags "floor1 wall") + (w 'create 'line 475 178 475 238 :fill color :tags "floor1 wall") + (w 'create 'line 502 162 398 162 :fill color :tags "floor1 wall") + (w 'create 'line 398 129 398 188 :fill color :tags "floor1 wall") + (w 'create 'line 383 188 376 188 :fill color :tags "floor1 wall") + (w 'create 'line 408 188 408 194 :fill color :tags "floor1 wall") + (w 'create 'line 398 227 398 254 :fill color :tags "floor1 wall") + (w 'create 'line 408 227 398 227 :fill color :tags "floor1 wall") + (w 'create 'line 408 222 408 227 :fill color :tags "floor1 wall") + (w 'create 'line 408 206 408 210 :fill color :tags "floor1 wall") + (w 'create 'line 408 208 475 208 :fill color :tags "floor1 wall") + (w 'create 'line 484 278 484 311 :fill color :tags "floor1 wall") + (w 'create 'line 484 311 508 311 :fill color :tags "floor1 wall") + (w 'create 'line 508 327 508 311 :fill color :tags "floor1 wall") + (w 'create 'line 559 327 508 327 :fill color :tags "floor1 wall") + (w 'create 'line 644 391 559 391 :fill color :tags "floor1 wall") + (w 'create 'line 644 389 644 391 :fill color :tags "floor1 wall") + (w 'create 'line 514 205 475 205 :fill color :tags "floor1 wall") + (w 'create 'line 496 189 496 187 :fill color :tags "floor1 wall") + (w 'create 'line 559 129 484 129 :fill color :tags "floor1 wall") + (w 'create 'line 484 162 484 129 :fill color :tags "floor1 wall") + (w 'create 'line 725 133 559 133 :fill color :tags "floor1 wall") + (w 'create 'line 559 129 559 133 :fill color :tags "floor1 wall") + (w 'create 'line 725 149 725 167 :fill color :tags "floor1 wall") + (w 'create 'line 725 129 802 129 :fill color :tags "floor1 wall") + (w 'create 'line 802 389 802 129 :fill color :tags "floor1 wall") + (w 'create 'line 739 167 802 167 :fill color :tags "floor1 wall") + (w 'create 'line 396 188 408 188 :fill color :tags "floor1 wall") + (w 'create 'line 0 337 9 337 :fill color :tags "floor1 wall") + (w 'create 'line 58 337 21 337 :fill color :tags "floor1 wall") + (w 'create 'line 43 391 43 337 :fill color :tags "floor1 wall") + (w 'create 'line 105 337 75 337 :fill color :tags "floor1 wall") + (w 'create 'line 91 387 91 337 :fill color :tags "floor1 wall") + (w 'create 'line 154 337 117 337 :fill color :tags "floor1 wall") + (w 'create 'line 139 387 139 337 :fill color :tags "floor1 wall") + (w 'create 'line 227 337 166 337 :fill color :tags "floor1 wall") + (w 'create 'line 258 337 251 337 :fill color :tags "floor1 wall") + (w 'create 'line 258 328 302 328 :fill color :tags "floor1 wall") + (w 'create 'line 302 355 302 311 :fill color :tags "floor1 wall") + (w 'create 'line 395 311 302 311 :fill color :tags "floor1 wall") + (w 'create 'line 484 278 395 278 :fill color :tags "floor1 wall") + (w 'create 'line 395 294 395 278 :fill color :tags "floor1 wall") + (w 'create 'line 473 278 473 275 :fill color :tags "floor1 wall") + (w 'create 'line 473 256 473 254 :fill color :tags "floor1 wall") + (w 'create 'line 533 257 531 254 :fill color :tags "floor1 wall") + (w 'create 'line 553 276 551 274 :fill color :tags "floor1 wall") + (w 'create 'line 698 276 553 276 :fill color :tags "floor1 wall") + (w 'create 'line 559 391 559 327 :fill color :tags "floor1 wall") + (w 'create 'line 802 389 644 389 :fill color :tags "floor1 wall") + (w 'create 'line 741 314 741 389 :fill color :tags "floor1 wall") + (w 'create 'line 698 280 698 167 :fill color :tags "floor1 wall") + (w 'create 'line 707 280 698 280 :fill color :tags "floor1 wall") + (w 'create 'line 802 280 731 280 :fill color :tags "floor1 wall") + (w 'create 'line 741 280 741 302 :fill color :tags "floor1 wall") + (w 'create 'line 698 167 727 167 :fill color :tags "floor1 wall") + (w 'create 'line 725 137 725 129 :fill color :tags "floor1 wall") + (w 'create 'line 514 254 514 175 :fill color :tags "floor1 wall") + (w 'create 'line 496 175 514 175 :fill color :tags "floor1 wall") + (w 'create 'line 502 175 502 162 :fill color :tags "floor1 wall") + (w 'create 'line 475 166 475 162 :fill color :tags "floor1 wall") + (w 'create 'line 496 176 496 175 :fill color :tags "floor1 wall") + (w 'create 'line 491 189 496 189 :fill color :tags "floor1 wall") + (w 'create 'line 491 205 491 189 :fill color :tags "floor1 wall") + (w 'create 'line 487 238 475 238 :fill color :tags "floor1 wall") + (w 'create 'line 487 240 487 238 :fill color :tags "floor1 wall") + (w 'create 'line 487 252 487 254 :fill color :tags "floor1 wall") + (w 'create 'line 315 133 304 133 :fill color :tags "floor1 wall") + (w 'create 'line 256 133 280 133 :fill color :tags "floor1 wall") + (w 'create 'line 78 247 270 247 :fill color :tags "floor1 wall") + (w 'create 'line 307 247 294 247 :fill color :tags "floor1 wall") + (w 'create 'line 214 133 232 133 :fill color :tags "floor1 wall") + (w 'create 'line 217 247 217 266 :fill color :tags "floor1 wall") + (w 'create 'line 217 309 217 291 :fill color :tags "floor1 wall") + (w 'create 'line 217 309 172 309 :fill color :tags "floor1 wall") + (w 'create 'line 154 309 148 309 :fill color :tags "floor1 wall") + (w 'create 'line 175 300 175 309 :fill color :tags "floor1 wall") + (w 'create 'line 151 300 175 300 :fill color :tags "floor1 wall") + (w 'create 'line 151 247 151 309 :fill color :tags "floor1 wall") + (w 'create 'line 78 237 78 265 :fill color :tags "floor1 wall") + (w 'create 'line 78 286 78 309 :fill color :tags "floor1 wall") + (w 'create 'line 106 309 78 309 :fill color :tags "floor1 wall") + (w 'create 'line 130 309 125 309 :fill color :tags "floor1 wall") + (w 'create 'line 99 309 99 247 :fill color :tags "floor1 wall") + (w 'create 'line 127 299 99 299 :fill color :tags "floor1 wall") + (w 'create 'line 127 309 127 299 :fill color :tags "floor1 wall") + (w 'create 'line 155 191 137 191 :fill color :tags "floor1 wall") + (w 'create 'line 137 169 137 191 :fill color :tags "floor1 wall") + (w 'create 'line 78 171 78 169 :fill color :tags "floor1 wall") + (w 'create 'line 78 190 78 218 :fill color :tags "floor1 wall") + (w 'create 'line 86 192 86 169 :fill color :tags "floor1 wall") + (w 'create 'line 86 192 78 192 :fill color :tags "floor1 wall") + (w 'create 'line 52 301 3 301 :fill color :tags "floor1 wall") + (w 'create 'line 52 286 52 301 :fill color :tags "floor1 wall") + (w 'create 'line 52 252 3 252 :fill color :tags "floor1 wall") + (w 'create 'line 52 203 3 203 :fill color :tags "floor1 wall") + (w 'create 'line 3 156 52 156 :fill color :tags "floor1 wall") + (w 'create 'line 8 25 8 114 :fill color :tags "floor1 wall") + (w 'create 'line 63 114 3 114 :fill color :tags "floor1 wall") + (w 'create 'line 75 114 97 114 :fill color :tags "floor1 wall") + (w 'create 'line 108 114 129 114 :fill color :tags "floor1 wall") + (w 'create 'line 129 114 129 89 :fill color :tags "floor1 wall") + (w 'create 'line 52 114 52 128 :fill color :tags "floor1 wall") + (w 'create 'line 132 89 88 89 :fill color :tags "floor1 wall") + (w 'create 'line 88 25 88 89 :fill color :tags "floor1 wall") + (w 'create 'line 88 114 88 89 :fill color :tags "floor1 wall") + (w 'create 'line 218 89 144 89 :fill color :tags "floor1 wall") + (w 'create 'line 147 111 147 129 :fill color :tags "floor1 wall") + (w 'create 'line 162 111 147 111 :fill color :tags "floor1 wall") + (w 'create 'line 162 109 162 111 :fill color :tags "floor1 wall") + (w 'create 'line 162 96 162 89 :fill color :tags "floor1 wall") + (w 'create 'line 218 89 218 94 :fill color :tags "floor1 wall") + (w 'create 'line 218 89 218 119 :fill color :tags "floor1 wall") + (w 'create 'line 8 25 88 25 :fill color :tags "floor1 wall") + (w 'create 'line 258 337 258 328 :fill color :tags "floor1 wall") + (w 'create 'line 113 129 96 129 :fill color :tags "floor1 wall") + (w 'create 'line 302 355 258 355 :fill color :tags "floor1 wall") + (w 'create 'line 386 104 386 129 :fill color :tags "floor1 wall") + (w 'create 'line 377 100 386 104 :fill color :tags "floor1 wall") + (w 'create 'line 365 94 377 100 :fill color :tags "floor1 wall") + (w 'create 'line 350 83 365 94 :fill color :tags "floor1 wall") + (w 'create 'line 337 70 350 83 :fill color :tags "floor1 wall") + (w 'create 'line 337 70 323 56 :fill color :tags "floor1 wall") + (w 'create 'line 312 49 323 56 :fill color :tags "floor1 wall") + (w 'create 'line 295 40 312 49 :fill color :tags "floor1 wall") + (w 'create 'line 282 37 295 40 :fill color :tags "floor1 wall") + (w 'create 'line 260 34 282 37 :fill color :tags "floor1 wall") + (w 'create 'line 253 34 260 34 :fill color :tags "floor1 wall") + (w 'create 'line 386 128 386 104 :fill color :tags "floor1 wall") + (w 'create 'line 113 152 156 152 :fill color :tags "floor1 wall") + (w 'create 'line 113 152 156 152 :fill color :tags "floor1 wall") + (w 'create 'line 113 152 113 129 :fill color :tags "floor1 wall")) + + +(define (fg2 w color) + (clearReferences) + (storeReference [w 'create 'polygon 748 188 755 188 755 205 758 205 758 222 800 222 800 168 748 168 :fill "" :tags "floor2 room"] "238") + (w 'create 'text 774 195 :text "238" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 726 188 746 188 746 166 800 166 800 131 726 131 :fill "" :tags "floor2 room"] "237") + (w 'create 'text 763 148.5 :text "237" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 497 187 497 204 559 204 559 324 641 324 643 324 643 291 641 291 641 205 696 205 696 291 694 291 694 314 715 314 715 291 715 205 755 205 755 190 724 190 724 187 :fill "" :tags "floor2 room"] "246") + (w 'create 'text 600 264 :text "246" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 694 279 643 279 643 314 694 314 :fill "" :tags "floor2 room"] "247") + (w 'create 'text 668.5 296.5 :text "247" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 232 250 308 250 308 242 339 242 339 246 397 246 397 255 476 255 476 250 482 250 559 250 559 274 482 274 482 278 396 278 396 274 232 274 :fill "" :tags "floor2 room"] "202") + (w 'create 'text 285.5 260 :text "202" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 53 228 53 338 176 338 233 338 233 196 306 196 306 180 175 180 175 169 156 169 156 196 176 196 176 228 :fill "" :tags "floor2 room"] "206") + (w 'create 'text 143 267 :text "206" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 51 277 6 277 6 338 51 338 :fill "" :tags "floor2 room"] "212") + (w 'create 'text 28.5 307.5 :text "212" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 557 276 486 276 486 309 510 309 510 325 557 325 :fill "" :tags "floor2 room"] "245") + (w 'create 'text 521.5 300.5 :text "245" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 560 389 599 389 599 326 560 326 :fill "" :tags "floor2 room"] "244") + (w 'create 'text 579.5 357.5 :text "244" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 601 389 601 326 643 326 643 389 :fill "" :tags "floor2 room"] "243") + (w 'create 'text 622 357.5 :text "243" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 688 316 645 316 645 365 688 365 :fill "" :tags "floor2 room"] "242") + (w 'create 'text 666.5 340.5 :text "242" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 802 367 759 367 759 226 802 226 :fill "" :tags "floor2 room"] "Barbecue Deck") + (w 'create 'text 780.5 296.5 :text "Barbecue Deck" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 755 262 755 314 717 314 717 262 :fill "" :tags "floor2 room"] "240") + (w 'create 'text 736 288 :text "240" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 755 316 689 316 689 365 755 365 :fill "" :tags "floor2 room"] "241") + (w 'create 'text 722 340.5 :text "241" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 755 206 717 206 717 261 755 261 :fill "" :tags "floor2 room"] "239") + (w 'create 'text 736 233.5 :text "239" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 695 277 643 277 643 206 695 206 :fill "" :tags "floor2 room"] "248") + (w 'create 'text 669 241.5 :text "248" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 676 135 676 185 724 185 724 135 :fill "" :tags "floor2 room"] "236") + (w 'create 'text 700 160 :text "236" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 675 135 635 135 635 145 628 145 628 185 675 185 :fill "" :tags "floor2 room"] "235") + (w 'create 'text 651.5 160 :text "235" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 626 143 633 143 633 135 572 135 572 143 579 143 579 185 626 185 :fill "" :tags "floor2 room"] "234") + (w 'create 'text 606 160 :text "234" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 557 135 571 135 571 145 578 145 578 185 527 185 527 131 557 131 :fill "" :tags "floor2 room"] "233") + (w 'create 'text 552.5 158 :text "233" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 476 249 557 249 557 205 476 205 :fill "" :tags "floor2 room"] "230") + (w 'create 'text 516.5 227 :text "230" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 476 164 486 164 486 131 525 131 525 185 476 185 :fill "" :tags "floor2 room"] "232") + (w 'create 'text 500.5 158 :text "232" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 476 186 495 186 495 204 476 204 :fill "" :tags "floor2 room"] "229") + (w 'create 'text 485.5 195 :text "229" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 474 207 409 207 409 187 399 187 399 164 474 164 :fill "" :tags "floor2 room"] "227") + (w 'create 'text 436.5 185.5 :text "227" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 399 228 399 253 474 253 474 209 409 209 409 228 :fill "" :tags "floor2 room"] "228") + (w 'create 'text 436.5 231 :text "228" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 397 246 397 226 407 226 407 189 377 189 377 246 :fill "" :tags "floor2 room"] "226") + (w 'create 'text 392 217.5 :text "226" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 377 169 316 169 316 131 397 131 397 188 377 188 :fill "" :tags "floor2 room"] "225") + (w 'create 'text 356.5 150 :text "225" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 234 198 306 198 306 249 234 249 :fill "" :tags "floor2 room"] "224") + (w 'create 'text 270 223.5 :text "224" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 270 179 306 179 306 170 314 170 314 135 270 135 :fill "" :tags "floor2 room"] "223") + (w 'create 'text 292 157 :text "223" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 268 179 221 179 221 135 268 135 :fill "" :tags "floor2 room"] "222") + (w 'create 'text 244.5 157 :text "222" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 177 179 219 179 219 135 177 135 :fill "" :tags "floor2 room"] "221") + (w 'create 'text 198 157 :text "221" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 299 327 349 327 349 284 341 284 341 276 299 276 :fill "" :tags "floor2 room"] "204") + (w 'create 'text 324 301.5 :text "204" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 234 276 297 276 297 327 257 327 257 338 234 338 :fill "" :tags "floor2 room"] "205") + (w 'create 'text 265.5 307 :text "205" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 256 385 256 340 212 340 212 385 :fill "" :tags "floor2 room"] "207") + (w 'create 'text 234 362.5 :text "207" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 210 340 164 340 164 385 210 385 :fill "" :tags "floor2 room"] "208") + (w 'create 'text 187 362.5 :text "208" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 115 340 162 340 162 385 115 385 :fill "" :tags "floor2 room"] "209") + (w 'create 'text 138.5 362.5 :text "209" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 89 228 89 156 53 156 53 228 :fill "" :tags "floor2 room"] "217") + (w 'create 'text 71 192 :text "217" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 89 169 97 169 97 190 89 190 :fill "" :tags "floor2 room"] "217A") + (w 'create 'text 93 179.5 :text "217A" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 89 156 89 168 95 168 95 135 53 135 53 156 :fill "" :tags "floor2 room"] "216") + (w 'create 'text 71 145.5 :text "216" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 51 179 51 135 6 135 6 179 :fill "" :tags "floor2 room"] "215") + (w 'create 'text 28.5 157 :text "215" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 51 227 6 227 6 180 51 180 :fill "" :tags "floor2 room"] "214") + (w 'create 'text 28.5 203.5 :text "214" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 51 275 6 275 6 229 51 229 :fill "" :tags "floor2 room"] "213") + (w 'create 'text 28.5 252 :text "213" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 114 340 67 340 67 385 114 385 :fill "" :tags "floor2 room"] "210") + (w 'create 'text 90.5 362.5 :text "210" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 59 389 59 385 65 385 65 340 1 340 1 389 :fill "" :tags "floor2 room"] "211") + (w 'create 'text 33 364.5 :text "211" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 393 309 350 309 350 282 342 282 342 276 393 276 :fill "" :tags "floor2 room"] "203") + (w 'create 'text 367.5 292.5 :text "203" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 99 191 91 191 91 226 174 226 174 198 154 198 154 192 109 192 109 169 99 169 :fill "" :tags "floor2 room"] "220") + (w 'create 'text 132.5 208.5 :text "220" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 339 205 307 205 307 171 339 171 :fill "" :tags "floor2 room"] "Priv Lift2") + (w 'create 'text 323 188 :text "Priv Lift2" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 307 240 339 240 339 206 307 206 :fill "" :tags "floor2 room"] "Pub Lift 2") + (w 'create 'text 323 223 :text "Pub Lift 2" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 175 168 97 168 97 131 175 131 :fill "" :tags "floor2 room"] "218") + (w 'create 'text 136 149.5 :text "218" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 154 191 111 191 111 169 154 169 :fill "" :tags "floor2 room"] "219") + (w 'create 'text 132.5 180 :text "219" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + (storeReference [w 'create 'polygon 375 246 375 172 341 172 341 246 :fill "" :tags "floor2 room"] "201") + (w 'create 'text 358 209 :text "201" :fill color :anchor "c" :tags "floor2 label" :font "fixed") + + (w 'create 'line 641 186 678 186 :fill color :tags "floor2 wall") + (w 'create 'line 757 350 757 367 :fill color :tags "floor2 wall") + (w 'create 'line 634 133 634 144 :fill color :tags "floor2 wall") + (w 'create 'line 634 144 627 144 :fill color :tags "floor2 wall") + (w 'create 'line 572 133 572 144 :fill color :tags "floor2 wall") + (w 'create 'line 572 144 579 144 :fill color :tags "floor2 wall") + (w 'create 'line 398 129 398 162 :fill color :tags "floor2 wall") + (w 'create 'line 174 197 175 197 :fill color :tags "floor2 wall") + (w 'create 'line 175 197 175 227 :fill color :tags "floor2 wall") + (w 'create 'line 757 206 757 221 :fill color :tags "floor2 wall") + (w 'create 'line 396 188 408 188 :fill color :tags "floor2 wall") + (w 'create 'line 727 189 725 189 :fill color :tags "floor2 wall") + (w 'create 'line 747 167 802 167 :fill color :tags "floor2 wall") + (w 'create 'line 747 167 747 189 :fill color :tags "floor2 wall") + (w 'create 'line 755 189 739 189 :fill color :tags "floor2 wall") + (w 'create 'line 769 224 757 224 :fill color :tags "floor2 wall") + (w 'create 'line 802 224 802 129 :fill color :tags "floor2 wall") + (w 'create 'line 802 129 725 129 :fill color :tags "floor2 wall") + (w 'create 'line 725 189 725 129 :fill color :tags "floor2 wall") + (w 'create 'line 725 186 690 186 :fill color :tags "floor2 wall") + (w 'create 'line 676 133 676 186 :fill color :tags "floor2 wall") + (w 'create 'line 627 144 627 186 :fill color :tags "floor2 wall") + (w 'create 'line 629 186 593 186 :fill color :tags "floor2 wall") + (w 'create 'line 579 144 579 186 :fill color :tags "floor2 wall") + (w 'create 'line 559 129 559 133 :fill color :tags "floor2 wall") + (w 'create 'line 725 133 559 133 :fill color :tags "floor2 wall") + (w 'create 'line 484 162 484 129 :fill color :tags "floor2 wall") + (w 'create 'line 559 129 484 129 :fill color :tags "floor2 wall") + (w 'create 'line 526 129 526 186 :fill color :tags "floor2 wall") + (w 'create 'line 540 186 581 186 :fill color :tags "floor2 wall") + (w 'create 'line 528 186 523 186 :fill color :tags "floor2 wall") + (w 'create 'line 511 186 475 186 :fill color :tags "floor2 wall") + (w 'create 'line 496 190 496 186 :fill color :tags "floor2 wall") + (w 'create 'line 496 205 496 202 :fill color :tags "floor2 wall") + (w 'create 'line 475 205 527 205 :fill color :tags "floor2 wall") + (w 'create 'line 558 205 539 205 :fill color :tags "floor2 wall") + (w 'create 'line 558 205 558 249 :fill color :tags "floor2 wall") + (w 'create 'line 558 249 475 249 :fill color :tags "floor2 wall") + (w 'create 'line 662 206 642 206 :fill color :tags "floor2 wall") + (w 'create 'line 695 206 675 206 :fill color :tags "floor2 wall") + (w 'create 'line 695 278 642 278 :fill color :tags "floor2 wall") + (w 'create 'line 642 291 642 206 :fill color :tags "floor2 wall") + (w 'create 'line 695 291 695 206 :fill color :tags "floor2 wall") + (w 'create 'line 716 208 716 206 :fill color :tags "floor2 wall") + (w 'create 'line 757 206 716 206 :fill color :tags "floor2 wall") + (w 'create 'line 757 221 757 224 :fill color :tags "floor2 wall") + (w 'create 'line 793 224 802 224 :fill color :tags "floor2 wall") + (w 'create 'line 757 262 716 262 :fill color :tags "floor2 wall") + (w 'create 'line 716 220 716 264 :fill color :tags "floor2 wall") + (w 'create 'line 716 315 716 276 :fill color :tags "floor2 wall") + (w 'create 'line 757 315 703 315 :fill color :tags "floor2 wall") + (w 'create 'line 757 325 757 224 :fill color :tags "floor2 wall") + (w 'create 'line 757 367 644 367 :fill color :tags "floor2 wall") + (w 'create 'line 689 367 689 315 :fill color :tags "floor2 wall") + (w 'create 'line 647 315 644 315 :fill color :tags "floor2 wall") + (w 'create 'line 659 315 691 315 :fill color :tags "floor2 wall") + (w 'create 'line 600 325 600 391 :fill color :tags "floor2 wall") + (w 'create 'line 627 325 644 325 :fill color :tags "floor2 wall") + (w 'create 'line 644 391 644 315 :fill color :tags "floor2 wall") + (w 'create 'line 615 325 575 325 :fill color :tags "floor2 wall") + (w 'create 'line 644 391 558 391 :fill color :tags "floor2 wall") + (w 'create 'line 563 325 558 325 :fill color :tags "floor2 wall") + (w 'create 'line 558 391 558 314 :fill color :tags "floor2 wall") + (w 'create 'line 558 327 508 327 :fill color :tags "floor2 wall") + (w 'create 'line 558 275 484 275 :fill color :tags "floor2 wall") + (w 'create 'line 558 302 558 275 :fill color :tags "floor2 wall") + (w 'create 'line 508 327 508 311 :fill color :tags "floor2 wall") + (w 'create 'line 484 311 508 311 :fill color :tags "floor2 wall") + (w 'create 'line 484 275 484 311 :fill color :tags "floor2 wall") + (w 'create 'line 475 208 408 208 :fill color :tags "floor2 wall") + (w 'create 'line 408 206 408 210 :fill color :tags "floor2 wall") + (w 'create 'line 408 222 408 227 :fill color :tags "floor2 wall") + (w 'create 'line 408 227 398 227 :fill color :tags "floor2 wall") + (w 'create 'line 398 227 398 254 :fill color :tags "floor2 wall") + (w 'create 'line 408 188 408 194 :fill color :tags "floor2 wall") + (w 'create 'line 383 188 376 188 :fill color :tags "floor2 wall") + (w 'create 'line 398 188 398 162 :fill color :tags "floor2 wall") + (w 'create 'line 398 162 484 162 :fill color :tags "floor2 wall") + (w 'create 'line 475 162 475 254 :fill color :tags "floor2 wall") + (w 'create 'line 398 254 475 254 :fill color :tags "floor2 wall") + (w 'create 'line 484 280 395 280 :fill color :tags "floor2 wall") + (w 'create 'line 395 311 395 275 :fill color :tags "floor2 wall") + (w 'create 'line 307 197 293 197 :fill color :tags "floor2 wall") + (w 'create 'line 278 197 233 197 :fill color :tags "floor2 wall") + (w 'create 'line 233 197 233 249 :fill color :tags "floor2 wall") + (w 'create 'line 307 179 284 179 :fill color :tags "floor2 wall") + (w 'create 'line 233 249 278 249 :fill color :tags "floor2 wall") + (w 'create 'line 269 179 269 133 :fill color :tags "floor2 wall") + (w 'create 'line 220 179 220 133 :fill color :tags "floor2 wall") + (w 'create 'line 155 191 110 191 :fill color :tags "floor2 wall") + (w 'create 'line 90 190 98 190 :fill color :tags "floor2 wall") + (w 'create 'line 98 169 98 190 :fill color :tags "floor2 wall") + (w 'create 'line 52 133 52 165 :fill color :tags "floor2 wall") + (w 'create 'line 52 214 52 177 :fill color :tags "floor2 wall") + (w 'create 'line 52 226 52 262 :fill color :tags "floor2 wall") + (w 'create 'line 52 274 52 276 :fill color :tags "floor2 wall") + (w 'create 'line 234 275 234 339 :fill color :tags "floor2 wall") + (w 'create 'line 226 339 258 339 :fill color :tags "floor2 wall") + (w 'create 'line 211 387 211 339 :fill color :tags "floor2 wall") + (w 'create 'line 214 339 177 339 :fill color :tags "floor2 wall") + (w 'create 'line 258 387 60 387 :fill color :tags "floor2 wall") + (w 'create 'line 3 133 3 339 :fill color :tags "floor2 wall") + (w 'create 'line 165 339 129 339 :fill color :tags "floor2 wall") + (w 'create 'line 117 339 80 339 :fill color :tags "floor2 wall") + (w 'create 'line 68 339 59 339 :fill color :tags "floor2 wall") + (w 'create 'line 0 339 46 339 :fill color :tags "floor2 wall") + (w 'create 'line 60 391 0 391 :fill color :tags "floor2 wall") + (w 'create 'line 0 339 0 391 :fill color :tags "floor2 wall") + (w 'create 'line 60 387 60 391 :fill color :tags "floor2 wall") + (w 'create 'line 258 329 258 387 :fill color :tags "floor2 wall") + (w 'create 'line 350 329 258 329 :fill color :tags "floor2 wall") + (w 'create 'line 395 311 350 311 :fill color :tags "floor2 wall") + (w 'create 'line 398 129 315 129 :fill color :tags "floor2 wall") + (w 'create 'line 176 133 315 133 :fill color :tags "floor2 wall") + (w 'create 'line 176 129 96 129 :fill color :tags "floor2 wall") + (w 'create 'line 3 133 96 133 :fill color :tags "floor2 wall") + (w 'create 'line 66 387 66 339 :fill color :tags "floor2 wall") + (w 'create 'line 115 387 115 339 :fill color :tags "floor2 wall") + (w 'create 'line 163 387 163 339 :fill color :tags "floor2 wall") + (w 'create 'line 234 275 276 275 :fill color :tags "floor2 wall") + (w 'create 'line 288 275 309 275 :fill color :tags "floor2 wall") + (w 'create 'line 298 275 298 329 :fill color :tags "floor2 wall") + (w 'create 'line 341 283 350 283 :fill color :tags "floor2 wall") + (w 'create 'line 321 275 341 275 :fill color :tags "floor2 wall") + (w 'create 'line 375 275 395 275 :fill color :tags "floor2 wall") + (w 'create 'line 315 129 315 170 :fill color :tags "floor2 wall") + (w 'create 'line 376 170 307 170 :fill color :tags "floor2 wall") + (w 'create 'line 307 250 307 170 :fill color :tags "floor2 wall") + (w 'create 'line 376 245 376 170 :fill color :tags "floor2 wall") + (w 'create 'line 340 241 307 241 :fill color :tags "floor2 wall") + (w 'create 'line 340 245 340 224 :fill color :tags "floor2 wall") + (w 'create 'line 340 210 340 201 :fill color :tags "floor2 wall") + (w 'create 'line 340 187 340 170 :fill color :tags "floor2 wall") + (w 'create 'line 340 206 307 206 :fill color :tags "floor2 wall") + (w 'create 'line 293 250 307 250 :fill color :tags "floor2 wall") + (w 'create 'line 271 179 238 179 :fill color :tags "floor2 wall") + (w 'create 'line 226 179 195 179 :fill color :tags "floor2 wall") + (w 'create 'line 176 129 176 179 :fill color :tags "floor2 wall") + (w 'create 'line 182 179 176 179 :fill color :tags "floor2 wall") + (w 'create 'line 174 169 176 169 :fill color :tags "floor2 wall") + (w 'create 'line 162 169 90 169 :fill color :tags "floor2 wall") + (w 'create 'line 96 169 96 129 :fill color :tags "floor2 wall") + (w 'create 'line 175 227 90 227 :fill color :tags "floor2 wall") + (w 'create 'line 90 190 90 227 :fill color :tags "floor2 wall") + (w 'create 'line 52 179 3 179 :fill color :tags "floor2 wall") + (w 'create 'line 52 228 3 228 :fill color :tags "floor2 wall") + (w 'create 'line 52 276 3 276 :fill color :tags "floor2 wall") + (w 'create 'line 155 177 155 169 :fill color :tags "floor2 wall") + (w 'create 'line 110 191 110 169 :fill color :tags "floor2 wall") + (w 'create 'line 155 189 155 197 :fill color :tags "floor2 wall") + (w 'create 'line 350 283 350 329 :fill color :tags "floor2 wall") + (w 'create 'line 162 197 155 197 :fill color :tags "floor2 wall") + (w 'create 'line 341 275 341 283 :fill color :tags "floor2 wall")) + + +(define (fg3 w color) + (clearReferences) + (storeReference [w 'create 'polygon 89 228 89 180 70 180 70 228 :fill "" :tags "floor3 room"] "316") + (w 'create 'text 79.5 204 :text "316" :fill color :anchor "c" :tags "floor3 label" :font "fixed") + (storeReference [w 'create 'polygon 115 368 162 368 162 323 115 323 :fill "" :tags "floor3 room"] "309") + (w 'create 'text 138.5 345.5 :text "309" :fill color :anchor "c" :tags "floor3 label" :font "fixed") + (storeReference [w 'create 'polygon 164 323 164 368 211 368 211 323 :fill "" :tags "floor3 room"] "308") + (w 'create 'text 187.5 345.5 :text "308" :fill color :anchor "c" :tags "floor3 label" :font "fixed") + (storeReference [w 'create 'polygon 256 368 212 368 212 323 256 323 :fill "" :tags "floor3 room"] "307") + (w 'create 'text 234 345.5 :text "307" :fill color :anchor "c" :tags "floor3 label" :font "fixed") + (storeReference [w 'create 'polygon 244 276 297 276 297 327 260 327 260 321 244 321 :fill "" :tags "floor3 room"] "305") + (w 'create 'text 270.5 301.5 :text "305" :fill color :anchor "c" :tags "floor3 label" :font "fixed") + (storeReference [w 'create 'polygon 251 219 251 203 244 203 244 219 :fill "" :tags "floor3 room"] "324B") + (w 'create 'text 247.5 211 :text "324B" :fill color :anchor "c" :tags "floor3 label" :font "fixed") + (storeReference [w 'create 'polygon 251 249 244 249 244 232 251 232 :fill "" :tags "floor3 room"] "324A") + (w 'create 'text 247.5 240.5 :text "324A" :fill color :anchor "c" :tags "floor3 label" :font "fixed") + (storeReference [w 'create 'polygon 223 135 223 179 177 179 177 135 :fill "" :tags "floor3 room"] "320") + (w 'create 'text 200 157 :text "320" :fill color :anchor "c" :tags "floor3 label" :font "fixed") + (storeReference [w 'create 'polygon 114 368 114 323 67 323 67 368 :fill "" :tags "floor3 room"] "310") + (w 'create 'text 90.5 345.5 :text "310" :fill color :anchor "c" :tags "floor3 label" :font "fixed") + (storeReference [w 'create 'polygon 23 277 23 321 68 321 68 277 :fill "" :tags "floor3 room"] "312") + (w 'create 'text 45.5 299 :text "312" :fill color :anchor "c" :tags "floor3 label" :font "fixed") + (storeReference [w 'create 'polygon 23 229 68 229 68 275 23 275 :fill "" :tags "floor3 room"] "313") + (w 'create 'text 45.5 252 :text "313" :fill color :anchor "c" :tags "floor3 label" :font "fixed") + (storeReference [w 'create 'polygon 68 227 23 227 23 180 68 180 :fill "" :tags "floor3 room"] "314") + (w 'create 'text 45.5 203.5 :text "314" :fill color :anchor "c" :tags "floor3 label" :font "fixed") + (storeReference [w 'create 'polygon 95 179 95 135 23 135 23 179 :fill "" :tags "floor3 room"] "315") + (w 'create 'text 59 157 :text "315" :fill color :anchor "c" :tags "floor3 label" :font "fixed") + (storeReference [w 'create 'polygon 99 226 99 204 91 204 91 226 :fill "" :tags "floor3 room"] "316B") + (w 'create 'text 95 215 :text "316B" :fill color :anchor "c" :tags "floor3 label" :font "fixed") + (storeReference [w 'create 'polygon 91 202 99 202 99 180 91 180 :fill "" :tags "floor3 room"] "316A") + (w 'create 'text 95 191 :text "316A" :fill color :anchor "c" :tags "floor3 label" :font "fixed") + (storeReference [w 'create 'polygon 97 169 109 169 109 192 154 192 154 198 174 198 174 226 101 226 101 179 97 179 :fill "" :tags "floor3 room"] "319") + (w 'create 'text 141.5 209 :text "319" :fill color :anchor "c" :tags "floor3 label" :font "fixed") + (storeReference [w 'create 'polygon 65 368 58 368 58 389 1 389 1 333 23 333 23 323 65 323 :fill "" :tags "floor3 room"] "311") + (w 'create 'text 29.5 361 :text "311" :fill color :anchor "c" :tags "floor3 label" :font "fixed") + (storeReference [w 'create 'polygon 154 191 111 191 111 169 154 169 :fill "" :tags "floor3 room"] "318") + (w 'create 'text 132.5 180 :text "318" :fill color :anchor "c" :tags "floor3 label" :font "fixed") + (storeReference [w 'create 'polygon 175 168 97 168 97 131 175 131 :fill "" :tags "floor3 room"] "317") + (w 'create 'text 136 149.5 :text "317" :fill color :anchor "c" :tags "floor3 label" :font "fixed") + (storeReference [w 'create 'polygon 274 194 274 221 306 221 306 194 :fill "" :tags "floor3 room"] "323") + (w 'create 'text 290 207.5 :text "323" :fill color :anchor "c" :tags "floor3 label" :font "fixed") + (storeReference [w 'create 'polygon 306 222 274 222 274 249 306 249 :fill "" :tags "floor3 room"] "325") + (w 'create 'text 290 235.5 :text "325" :fill color :anchor "c" :tags "floor3 label" :font "fixed") + (storeReference [w 'create 'polygon 263 179 224 179 224 135 263 135 :fill "" :tags "floor3 room"] "321") + (w 'create 'text 243.5 157 :text "321" :fill color :anchor "c" :tags "floor3 label" :font "fixed") + (storeReference [w 'create 'polygon 314 169 306 169 306 192 273 192 264 181 264 135 314 135 :fill "" :tags "floor3 room"] "322") + (w 'create 'text 293.5 163.5 :text "322" :fill color :anchor "c" :tags "floor3 label" :font "fixed") + (storeReference [w 'create 'polygon 307 240 339 240 339 206 307 206 :fill "" :tags "floor3 room"] "Pub Lift3") + (w 'create 'text 323 223 :text "Pub Lift3" :fill color :anchor "c" :tags "floor3 label" :font "fixed") + (storeReference [w 'create 'polygon 339 205 307 205 307 171 339 171 :fill "" :tags "floor3 room"] "Priv Lift3") + (w 'create 'text 323 188 :text "Priv Lift3" :fill color :anchor "c" :tags "floor3 label" :font "fixed") + (storeReference [w 'create 'polygon 350 284 376 284 376 276 397 276 397 309 350 309 :fill "" :tags "floor3 room"] "303") + (w 'create 'text 373.5 292.5 :text "303" :fill color :anchor "c" :tags "floor3 label" :font "fixed") + (storeReference [w 'create 'polygon 272 203 272 249 252 249 252 230 244 230 244 221 252 221 252 203 :fill "" :tags "floor3 room"] "324") + (w 'create 'text 262 226 :text "324" :fill color :anchor "c" :tags "floor3 label" :font "fixed") + (storeReference [w 'create 'polygon 299 276 299 327 349 327 349 284 341 284 341 276 :fill "" :tags "floor3 room"] "304") + (w 'create 'text 324 301.5 :text "304" :fill color :anchor "c" :tags "floor3 label" :font "fixed") + (storeReference [w 'create 'polygon 375 246 375 172 341 172 341 246 :fill "" :tags "floor3 room"] "301") + (w 'create 'text 358 209 :text "301" :fill color :anchor "c" :tags "floor3 label" :font "fixed") + (storeReference [w 'create 'polygon 397 246 377 246 377 185 397 185 :fill "" :tags "floor3 room"] "327") + (w 'create 'text 387 215.5 :text "327" :fill color :anchor "c" :tags "floor3 label" :font "fixed") + (storeReference [w 'create 'polygon 316 131 316 169 377 169 377 185 397 185 397 131 :fill "" :tags "floor3 room"] "326") + (w 'create 'text 356.5 150 :text "326" :fill color :anchor "c" :tags "floor3 label" :font "fixed") + (storeReference [w 'create 'polygon 308 251 242 251 242 274 342 274 342 282 375 282 375 274 397 274 397 248 339 248 339 242 308 242 :fill "" :tags "floor3 room"] "302") + (w 'create 'text 319.5 261 :text "302" :fill color :anchor "c" :tags "floor3 label" :font "fixed") + (storeReference [w 'create 'polygon 70 321 242 321 242 200 259 200 259 203 272 203 272 193 263 180 242 180 175 180 175 169 156 169 156 196 177 196 177 228 107 228 70 228 70 275 107 275 107 248 160 248 160 301 107 301 107 275 70 275 :fill "" :tags "floor3 room"] "306") + (w 'create 'text 200.5 284.5 :text "306" :fill color :anchor "c" :tags "floor3 label" :font "fixed") + + (w 'create 'line 341 275 341 283 :fill color :tags "floor3 wall") + (w 'create 'line 162 197 155 197 :fill color :tags "floor3 wall") + (w 'create 'line 396 247 399 247 :fill color :tags "floor3 wall") + (w 'create 'line 399 129 399 311 :fill color :tags "floor3 wall") + (w 'create 'line 258 202 243 202 :fill color :tags "floor3 wall") + (w 'create 'line 350 283 350 329 :fill color :tags "floor3 wall") + (w 'create 'line 251 231 243 231 :fill color :tags "floor3 wall") + (w 'create 'line 243 220 251 220 :fill color :tags "floor3 wall") + (w 'create 'line 243 250 243 202 :fill color :tags "floor3 wall") + (w 'create 'line 155 197 155 190 :fill color :tags "floor3 wall") + (w 'create 'line 110 192 110 169 :fill color :tags "floor3 wall") + (w 'create 'line 155 192 110 192 :fill color :tags "floor3 wall") + (w 'create 'line 155 177 155 169 :fill color :tags "floor3 wall") + (w 'create 'line 176 197 176 227 :fill color :tags "floor3 wall") + (w 'create 'line 69 280 69 274 :fill color :tags "floor3 wall") + (w 'create 'line 21 276 69 276 :fill color :tags "floor3 wall") + (w 'create 'line 69 262 69 226 :fill color :tags "floor3 wall") + (w 'create 'line 21 228 69 228 :fill color :tags "floor3 wall") + (w 'create 'line 21 179 75 179 :fill color :tags "floor3 wall") + (w 'create 'line 69 179 69 214 :fill color :tags "floor3 wall") + (w 'create 'line 90 220 90 227 :fill color :tags "floor3 wall") + (w 'create 'line 90 204 90 202 :fill color :tags "floor3 wall") + (w 'create 'line 90 203 100 203 :fill color :tags "floor3 wall") + (w 'create 'line 90 187 90 179 :fill color :tags "floor3 wall") + (w 'create 'line 90 227 176 227 :fill color :tags "floor3 wall") + (w 'create 'line 100 179 100 227 :fill color :tags "floor3 wall") + (w 'create 'line 100 179 87 179 :fill color :tags "floor3 wall") + (w 'create 'line 96 179 96 129 :fill color :tags "floor3 wall") + (w 'create 'line 162 169 96 169 :fill color :tags "floor3 wall") + (w 'create 'line 173 169 176 169 :fill color :tags "floor3 wall") + (w 'create 'line 182 179 176 179 :fill color :tags "floor3 wall") + (w 'create 'line 176 129 176 179 :fill color :tags "floor3 wall") + (w 'create 'line 195 179 226 179 :fill color :tags "floor3 wall") + (w 'create 'line 224 133 224 179 :fill color :tags "floor3 wall") + (w 'create 'line 264 179 264 133 :fill color :tags "floor3 wall") + (w 'create 'line 238 179 264 179 :fill color :tags "floor3 wall") + (w 'create 'line 273 207 273 193 :fill color :tags "floor3 wall") + (w 'create 'line 273 235 273 250 :fill color :tags "floor3 wall") + (w 'create 'line 273 224 273 219 :fill color :tags "floor3 wall") + (w 'create 'line 273 193 307 193 :fill color :tags "floor3 wall") + (w 'create 'line 273 222 307 222 :fill color :tags "floor3 wall") + (w 'create 'line 273 250 307 250 :fill color :tags "floor3 wall") + (w 'create 'line 384 247 376 247 :fill color :tags "floor3 wall") + (w 'create 'line 340 206 307 206 :fill color :tags "floor3 wall") + (w 'create 'line 340 187 340 170 :fill color :tags "floor3 wall") + (w 'create 'line 340 210 340 201 :fill color :tags "floor3 wall") + (w 'create 'line 340 247 340 224 :fill color :tags "floor3 wall") + (w 'create 'line 340 241 307 241 :fill color :tags "floor3 wall") + (w 'create 'line 376 247 376 170 :fill color :tags "floor3 wall") + (w 'create 'line 307 250 307 170 :fill color :tags "floor3 wall") + (w 'create 'line 376 170 307 170 :fill color :tags "floor3 wall") + (w 'create 'line 315 129 315 170 :fill color :tags "floor3 wall") + (w 'create 'line 376 283 366 283 :fill color :tags "floor3 wall") + (w 'create 'line 376 283 376 275 :fill color :tags "floor3 wall") + (w 'create 'line 399 275 376 275 :fill color :tags "floor3 wall") + (w 'create 'line 341 275 320 275 :fill color :tags "floor3 wall") + (w 'create 'line 341 283 350 283 :fill color :tags "floor3 wall") + (w 'create 'line 298 275 298 329 :fill color :tags "floor3 wall") + (w 'create 'line 308 275 298 275 :fill color :tags "floor3 wall") + (w 'create 'line 243 322 243 275 :fill color :tags "floor3 wall") + (w 'create 'line 243 275 284 275 :fill color :tags "floor3 wall") + (w 'create 'line 258 322 226 322 :fill color :tags "floor3 wall") + (w 'create 'line 212 370 212 322 :fill color :tags "floor3 wall") + (w 'create 'line 214 322 177 322 :fill color :tags "floor3 wall") + (w 'create 'line 163 370 163 322 :fill color :tags "floor3 wall") + (w 'create 'line 165 322 129 322 :fill color :tags "floor3 wall") + (w 'create 'line 84 322 117 322 :fill color :tags "floor3 wall") + (w 'create 'line 71 322 64 322 :fill color :tags "floor3 wall") + (w 'create 'line 115 322 115 370 :fill color :tags "floor3 wall") + (w 'create 'line 66 322 66 370 :fill color :tags "floor3 wall") + (w 'create 'line 52 322 21 322 :fill color :tags "floor3 wall") + (w 'create 'line 21 331 0 331 :fill color :tags "floor3 wall") + (w 'create 'line 21 331 21 133 :fill color :tags "floor3 wall") + (w 'create 'line 96 133 21 133 :fill color :tags "floor3 wall") + (w 'create 'line 176 129 96 129 :fill color :tags "floor3 wall") + (w 'create 'line 315 133 176 133 :fill color :tags "floor3 wall") + (w 'create 'line 315 129 399 129 :fill color :tags "floor3 wall") + (w 'create 'line 399 311 350 311 :fill color :tags "floor3 wall") + (w 'create 'line 350 329 258 329 :fill color :tags "floor3 wall") + (w 'create 'line 258 322 258 370 :fill color :tags "floor3 wall") + (w 'create 'line 60 370 258 370 :fill color :tags "floor3 wall") + (w 'create 'line 60 370 60 391 :fill color :tags "floor3 wall") + (w 'create 'line 0 391 0 331 :fill color :tags "floor3 wall") + (w 'create 'line 60 391 0 391 :fill color :tags "floor3 wall") + (w 'create 'line 307 250 307 242 :fill color :tags "floor3 wall") + (w 'create 'line 273 250 307 250 :fill color :tags "floor3 wall") + (w 'create 'line 258 250 243 250 :fill color :tags "floor3 wall")) + + + + diff --git a/Demos/Widget/Wimage1.stklos b/Demos/Widget/Wimage1.stklos index 1701e06..f9263e9 100644 --- a/Demos/Widget/Wimage1.stklos +++ b/Demos/Widget/Wimage1.stklos @@ -4,8 +4,7 @@ ;;;; This demonstration script displays two image widgets. ;;;; -(require "Button") -(require "Image") +(require "Tk-classes") (define (demo-image1) (let ((w (make-demo-toplevel "image1" diff --git a/Demos/Widget/Wruler.stklos b/Demos/Widget/Wruler.stklos new file mode 100644 index 0000000..eafdc6d --- /dev/null +++ b/Demos/Widget/Wruler.stklos @@ -0,0 +1,143 @@ +;;;; +;;;; STk adaptation of the Tk widget demo. +;;;; +;;;; This demonstration script creates a canvas widget that displays a ruler +;;;; with tab stops that can be set, moved, and deleted. +;;;; +(require "Tk-classes") + +(define ruler-x 0) +(define ruler-y 0) +(define ruler-grid '.25c) +(define ruler-left 0) +(define ruler-right 0) +(define ruler-top 0) +(define ruler-bottom 0) +(define ruler-size 0) +(define ruler-item #f) + +(define (demo-ruler) + (define w (make-demo-toplevel "ruler" + "Ruler Demonstration" + "This canvas widget shows a mock-up of a ruler. You can create tab stops by dragging them out of the well to the right of the ruler. You can also drag existing tab stops. If you drag a tab stop far enough up or down so that it turns dim, it will be deleted when you release the mouse button.")) + + (define c (make :parent w :width '14.8c :height '2.5c)) + + (define (make-coords fmt . args) + (read-from-string (apply format #f (string-append "(" fmt ")") args))) + + (pack c :fill "x") + + (make :parent c :coords '(1c 0.5c 1c 1c 13c 1c 13c 0.5c) :width 1) + (dotimes (i 12) + (let ((x (+ i 1))) + (make :parent c :coords (make-coords "~Ac 1c ~Ac 0.6c" x x)) + (make :parent c :coords (make-coords "~A.25c 1c ~A.25c 0.8c" x x)) + (make :parent c :coords (make-coords "~A.5c 1c ~A.5c 0.7c" x x)) + (make :parent c :coords (make-coords "~A.75c 1c ~A.75c 0.8c" x x)) + + (make :parent c :coords (make-coords "~A.15c .75c" x) + :text i :anchor 'sw))) + + (let ((r (make :parent c :coords '(13.2c 1c 13.8c 0.5c) + :outline "black" :fill (background c))) + (tab (make-ruler-tab c (winfo 'pixels c '13.5c) (winfo 'pixels c '.65c)))) + (add-tag r "weel") + (add-tag tab "weel") + (bind c "weel" "<1>" (lambda (x y) (ruler-new-tab c x y))) + (bind c "tab" "<1>" (lambda (x y) (ruler-select-tab c x y))) + (bind c "" (lambda (x y) (ruler-move-tab c x y))) + (bind c "" (lambda () (ruler-release-tab c)))) + + (set! ruler-left (winfo 'fpixels c '1c)) + (set! ruler-right (winfo 'fpixels c '13c)) + (set! ruler-top (winfo 'fpixels c '1c)) + (set! ruler-bottom (winfo 'fpixels c '1.5c)) + (set! ruler-size (winfo 'fpixels c '.2c))) + + + +;;;; make-ruler-tab -- +;;;; This procedure creates a new triangular polygon in a canvas to +;;;; represent a tab stop. + +(define (make-ruler-tab c x y) + (let ((size [winfo 'pixels c '.2c])) + (make :parent c :fill 'black + :coords (list x y (+ x size) (+ y size) (- x size) (+ y size))))) + +;;;; ruler-new-tab -- +;;;; Does all the work of creating a tab stop, including creating the +;;;; triangle object and adding tags to it to give it tab behavior. + +(define (ruler-new-tab c x y) + (let ((tab (make-ruler-tab c x y))) + (add-tag tab "active") + (add-tag tab "tab") + (set! ruler-x x) + (set! ruler-y y) + (set! ruler-item tab) + (ruler-move-tab c x y))) + +;;;; ruler-select-tab -- +;;;; This procedure is invoked when mouse button 1 is pressed over +;;;; a tab. It remembers information about the tab so that it can +;;;; be dragged interactively. +;;;; +(define (ruler-select-tab c x y) + (add-tag c "active" 'withtag 'current) + (raise c "active") + + (set! ruler-x (canvas-x c x ruler-grid)) + (set! ruler-y (+ ruler-top 2)) + (set! ruler-item (car (find-items c 'withtag "active"))) + (ruler-set-style! ruler-item 'active) +) + +;;;; ruler-move-tab -- +;;;; This procedure is invoked during mouse motion events to drag a tab. +;;;; It adjusts the position of the tab, and changes its appearance if +;;;; it is about to be dragged out of the ruler. + +(define (ruler-move-tab c x y) + (let ((active (find-items c 'withtag "active"))) + (unless (null? active) + (let ((cx (canvas-x c x ruler-grid)) + (cy (canvas-y c y))) + (if (< cx ruler-left) (set! cx ruler-left)) + (if (> cx ruler-right) (set! cx ruler-right)) + (if (and (>= cy ruler-top) (<= cy ruler-bottom)) + (begin + (set! cy (+ ruler-top 2)) + (ruler-set-style! ruler-item 'active) + ) + (begin + (set! cy (- cy ruler-size 2)) + (ruler-set-style! ruler-item 'delete) + )) + (move (car active) (- cx ruler-x) (- cy ruler-y)) + (set! ruler-x cx) + (set! ruler-y cy))))) + +;;;; ruler-release-tab -- +;;;; This procedure is invoked during button release events that end +;;;; a tab drag operation. It deselects the tab and deletes the tab if +;;;; it was dragged out of the ruler. + +(define (ruler-release-tab c) + (let ((active (find-items c 'withtag "active"))) + (unless (null? active) + (if (= ruler-y (+ ruler-top 2)) + (begin + (ruler-set-style! ruler-item 'normal) + (delete-tag c "active")) + (canvas-delete c "active"))))) + +;;;; ruler-set-style! +;;;; Set the style of the tab +(define (ruler-set-style! tab style) + (case style + ((active) (when (> (winfo 'depth (parent tab)) 1) (slot-set! tab 'fill "red")) + (slot-set! tab 'stipple "")) + ((delete) (slot-set! tab 'stipple 'gray25)) + ((normal) (slot-set! tab 'fill "black")))) diff --git a/Demos/Widget/Wwind.stklos b/Demos/Widget/Wwind.stklos index 4137b98..7676020 100644 --- a/Demos/Widget/Wwind.stklos +++ b/Demos/Widget/Wwind.stklos @@ -5,6 +5,8 @@ ;;;; embedded windows. ;;;; +(define demo-wind-toggle "Short") + (define (demo-wind) (define embedded-canvas #f) diff --git a/Demos/Widget/widget.stk b/Demos/Widget/widget.stk deleted file mode 100644 index 13e8af9..0000000 --- a/Demos/Widget/widget.stk +++ /dev/null @@ -1,282 +0,0 @@ -#!/bin/sh -:;exec /usr/local/bin/stk -f "$0" "$@" -;;;; -;;;; STk adaptation of the Tk widget demo. -;;;; -;;;; This script demonstrates the various widgets provided by Tk, along -;;;; with many of the features of the Tk toolkit. This file only -;;;; contains code to generate the main window for the application, -;;;; which invokes individual demonstrations. The code for the actual -;;;; demonstrations is contained in separate ".stklos" files in this -;;;; directory, which are sourced by this script as needed. - -(require "Tk-classes") - -(define demo-font "-*-Helvetica-Medium-R-Normal--*-140-*-*-*-*-*-*") -(define *STk-images* (string-append *STk-library* "/images/")) -(set! *load-path* `("./Widget" - ,(string-append *STk-library* "/demos") - ,@*load-path*)) - -;; -;; make-demo-toplevel -;; -(define (make-demo-toplevel name title text . variables) - (let* ((t (make :title title :geometry "+300+300")) - (f (make :parent t)) - (b (make :parent t))) - - ;; Pack the demo text - (when text - (pack (make