home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / tcltk805.zip / tcl805s.zip / tk8.0.5 / os2 / README < prev    next >
Text File  |  2001-09-08  |  30KB  |  513 lines

  1. Last update: 8 September 2001
  2. Illya Vaes
  3. Martin Luther Kingstate 23
  4. 6716 NA Ede
  5. The Netherlands
  6. illya@vaeshiep.demon.nl
  7. http://www.vaeshiep.demon.nl/
  8.  
  9. Welcome to Tcl/Tk 8.0.5 for OS/2 PM.
  10. This version still has some issues (see pr.txt for Problem Reports), but I've
  11. decided to put what time I can spare into making an up-to-date version (8.3.3).
  12.  
  13. Binaries Installation:
  14. The installation program installs the packages below a directory of your choice
  15. (default C:\Tcl805), with binaries (EXE/DLL) in subdirectory bin and the Tcl
  16. and Tk library in lib. It offers to make the required settings in the profile
  17. (OS2.INI) and CONFIG.SYS. You can choose to override already present settings
  18. of the environment variables TCL_LIBRARY, TK_LIBRARY and TCLLIBPATH in the
  19. config.sys; these take precedence over the setting of the path stored in the
  20. profile. If you set them yourself, use forward slashes, eg.
  21. SET TCL_LIBRARY=D:/Tcl805/lib/tcl8.0.  TCLLIBPATH is used to get Tcl to load
  22. the correct DLLs for extensions ('package require') like tclreg80.dll.
  23. The 'bin' directory below the chosen destination directory is added to the end
  24. of both the PATH variable and LIBPATH statement; these entries therefore will
  25. have lower precedence than any other Tcl directories that might be in the PATH
  26. and LIBPATH already and contain the correctly named .exe and/or .dll files. A
  27. second install of this package will result in two entries. It will, however,
  28. *replace* the TCL_LIBRARY, TK_LIBRARY and TCLLIBPATH variable settings.
  29. The install also offers to associate the installed binaries with script files
  30. (both based on extension and on real WPS types), where you may choose to treat
  31. Tk scripts differently from Tcl scripts.
  32. The "application name" in the profile uses the full, patchlevel version (ie.
  33. 805), so you can install different versions next to eachother. It would seem
  34. that Scriptics has changed its mind about the 8.0.3, 8.0.4, 8.0.5, 8.1.1 stuff
  35. (going from 8.1.1 to 8.2 instead of 8.1.2), so this may not matter much in the
  36. future.
  37.  
  38. Paths in Tcl/Tk use _forward_ slashes, in this port too! You can change to a
  39. different drive (and, if you like to a different directory there at the same
  40. time) by saying e.g. "cd e:/tk8.0.5/os2".
  41. Tcl uses the environment variable TEMP (native OS/2 format, backslashes) to
  42. determine the directory in which to make temporary files (eg. for use with
  43. pipelines).
  44. This port has been compiled with EMX 0.9d, and requires its EMXLIBCM.DLL and
  45. EMX.DLL (or those of a higher version). Kudos to Eberhard Mattes for EMX.
  46.  
  47. Compiling:
  48. To compile the source yourself, you need the Tcl and Tk source from Scriptics
  49. (http://www.scriptics.com/).
  50. After extracting it (gzip -c -d tcl8.0.5.tar.gz | tar xvf - OR unzip tcl805.zip;
  51. ditto for tk8.0.5.tar.gz or tk805.zip) on your drive, unzip the source-zip of
  52. Tcl/Tk for OS/2 on the same drive, go to tcl8.0.5\os2, do what's described in
  53. the file INSTALL (copying patched .h files to tcl8.0.5\generic and
  54. tk8.0.5\generic and .tcl-files to tk8.0.5\library) and execute 'gmake'.
  55. Obviously, you need gzip, tar, unzip and gmake for this, as well as EMX.
  56. Also, \OS2\RC.EXE and IBM VisualAge 3.0's IPFC INF-cmpiler were used.
  57. Making the tcl805.inf file is done by "gmake doc" in the tcl directory.
  58.  
  59. Using the DLLs in other applications:
  60. To make use of tcl80.dll and/or tk80.dll in other applications, you have to
  61. link the executables of those with tcl80.lib and/or tk80.lib (the import
  62. libraries corresponding to the DLLs), and include code in your EXE to
  63. initialize and use Tcl/Tk (or initializing your own package, depending on how
  64. you look at it), as is shown in the files tclOS2AppInit.c (Tcl) and os2Main.c
  65. (Tk). See the Makefile for files to link with your executable, taking note of
  66. the way a command-line Tcl-application is built (eg. with or without defining
  67. CLI_VERSION and using TclOS2SetUsePm(0) when making a CLI application).
  68. If you want to make and/or debug Tcl/Tk-based applications that use the a.out
  69. style object code (eg. use GDB or PMGDB), you have to build Tcl/Tk in that
  70. format. From the EMX Application Developer's Guide: "Linking with LINK386
  71. (using GCC -Zomf) is recommended for dynamic link libraries. Use ld and emxbind
  72. only if you want to debug the dynamic link library.". You can create and debug
  73. an a.out-based executable that uses the OMF-based Tcl and/or Tk DLL; assuming I
  74. didn't botch up, you don't need to debug the Tcl and Tk DLLs anyway.
  75. If, for some reason, you only have tcl80.dll and/or tk80.dll and not the .lib
  76. files, then you can generate the latter by using emxexp and emximp (2x). See
  77. the Makefile (targets $(TKBASE).def, $(TKBASE).imp and $(TKLIB)) for how to.
  78.  
  79.  
  80. NOTES
  81. =====
  82. - Tk obviously looks on a scrollbar as "this many lines of text", where eg.
  83.   "glob *"'s output is counted as 1 line. This makes for some strange behaviour
  84.   with the thumb of the scrollbar changing size dependent upon what you're
  85.   showing in the text widget (seen in the console). The OS/2 native scrollbar
  86.   faithfully represents what Tk is feeding it (the firstFraction and
  87.   lastFraction numbers).
  88. - When you are in TclshPM, you can say "load <full-path-to-tk80.dll>" and you
  89.   have gotten all of Tk at your disposal (without wish's console).
  90.   Eg. "load E:/TclTk/bin/tk80.dll".
  91. - The native File Dialogs don't really support a "default extension" (like in
  92.   Windows), probably because OS/2 has *real* file types not related to the
  93.   filename. The code around the File dialogs will however add any given
  94.   default extension to any given initial file if that has no extension yet.
  95.   If the user then types in a file without an extension or choose one, then
  96.   _no_ extension is added (since the file dialog gives no such control).
  97.   This could probably be added after the dialog (adding the extension then),
  98.   but who am I to second-guess the user... Anyway, the Mac ignores extensions.
  99. - Because of difference in fonts and such, layout of scripts may turn out wrong.
  100.   This includes the test script hscale.tcl for instance, where the arrow that
  101.   follows the scale starts further to the left than the scale. Changing the
  102.   "-wraplength" option to the label $w.msg from 3.5i to 300 makes it (approx.)
  103.   correct.
  104. - Fonts need to be specified in the same case as Presentation Manager knows,
  105.   eg. Helvetica (not helvetica), Times New Roman (not times), ...
  106. - Mouse buttons are those known to OS/2, ie. Button 2 is the *right* button,
  107.   not the middle one as in X. Of course, for consistent lefties (I only write
  108.   left-handed) Button 2 is the left button ;-)
  109.  
  110. Programs that are known to run (with or without minor modification)
  111. -------------------------------------------------------------------
  112. Some apps seem to get into an infinite loop upon closing the main window with
  113. double clicking the window menu button (the icon topleft). At least Paradigm
  114. Visual Make does this. Visual Tcl and XF correctly intercept the
  115. WM_DELETE_WINDOW and/or other WM_PROTOCOLS.
  116. - Impress 0.4a
  117. - TkCon 1.03
  118.   The switch statement setting the envHome variable ("Determine what directory
  119.   the resource file should be in") must be augmented with an "os2" pattern:
  120.   "windows - os2 - unix    { set envHome HOME }"   instead of
  121.   "windows - unix    { set envHome HOME }"
  122.   And set the HOME environment variable in CONFIG.SYS ofcourse...
  123. - SpecTcl 1.1
  124.   Several tcl_platform checks need to have OS/2 added, which is easiest in
  125.   case statements by adding a line with "os2 -" before the "windows" case,
  126.   thereby making the Windows code pertinent to OS/2 too.
  127. - Visual Tcl 1.08
  128.   A smaller font must be specified to get the texts to show in their entirety
  129.   in the "Geometry Information" dialog, eg {8.Helv}.
  130. - Paradigm Visual Make (pvm_12).
  131.   Needs to have the testing for the platform to be augmented with OS/2, with
  132.   the same actions as for Windows.
  133. - XF 4.0pl1.
  134.   Needs to have "exec command.com..." changed to "exec cmd.exe" in
  135.   src/xfglobals.tcl and src/xfmisc.tcl (failure to do this will crash the
  136.   program), and the scripts xfhardcopy/xfhardcopy.tcl and
  137.   xfappdef/xfappdef.tcl need to have their wish modified to wish80.exe.
  138.  
  139. TESTS THAT FAIL
  140. ===============
  141. Tk:
  142. - Some tests fail because a default font is chosen instead of returning an
  143.   error.
  144. - Some tests fail because the fontname isn't capitalized (eg. helvetica
  145.   instead of Helvetica) and so a default font is chosen.
  146. - Tests in winfo.test with winfo interps fail since X Properties are not
  147.   supported (future implementation via Prf... ?).
  148. - Some tests fail because font sizes / rounding may vary between X and PM (eg.
  149.   entry xview or entry index @nr with a proportional font).
  150. - imgPPM.test fails because the file isn't written in a cross-platform manner.
  151.   Supposedly fixed in 8.0.
  152. - canvPsText.tcl: fails to select the correct fonts because they are specified
  153.   in lower case, while OS/2 font names start with a capital (eg. Helvetica),
  154.   while 'times' should be 'Times New Roman'.
  155. Tcl:
  156. - The Tcl env.test fails (after hacking it to use printenv.exe and a path
  157.   separator of ';' instead of ':') because EMX insert a variable _emx_sig,
  158.   after the contents of the environment that Tcl gets have been determined,
  159.   so all results are "off" by that variable.
  160. - Format: values that would get truncated to 0 seem to be rounded upwards by
  161.   EMX to the nearest non-0 value. This makes two format tests fail (ie. %3.1f
  162.   and 0.01 gives 0.1 instead of 0.0, but %3.1f and 0.001 gives 0.0).
  163.   Two other formats that fail concern "%#.0g" and "%#.4g", where EMX seems to
  164.   take the number of digits after the decimal point more literally than the
  165.   tests expect, rendering 0.0000 and 0. respectively (0.000 and 0.0 expected).
  166. - The "file volumes" commands in cmdAH.test cause OS/2 to generate an "error"
  167.   dialog if there is no disk in a floppy drive (SYS0039) or if there is no
  168.   drive B (if you try to use B:, the OS temporarily assigns that letter to
  169.   drive A, undoing this if you refer to A: again). This dialog should be
  170.   dismissed by choosing "Return error to application" (or something like that).
  171. Other than this, all Tcl tests work correctly.
  172. Tk doesn't crash on the file bugs.tcl.
  173.  
  174. HISTORICAL CHANGES
  175. ==================
  176.  
  177. 8.0 (8.0.5)
  178. ===========
  179. Beta 4
  180. - When dynamically loading tcl80.dll (DosLoadModule), the "environ" variable
  181.   isn't filled in, causing a crash in tclEnv.c. Fixed by filling it in
  182.   tclOS2Dll.c (like EMX does it somewhere).
  183. Beta 3
  184. - Install program mistakenly overwrote TCL_LIBRARY instead of writing
  185.   TK_LIBRARY.
  186. Beta 2
  187. - Native color dialog (tk_chooseColor), using the description from Rick Papo's
  188.   "Undocumented Features of OS/2". This only really offers the color wheel and
  189.   thumb, so for setting the color exactly via RGB numbers, a dialog button
  190.   offers the possibility of using the Tk dialog (tkColorDialog) after all.
  191.   An error in bringing up the native dialog should automatically give the Tk
  192.   dialog.
  193. - Use of actual system bitmaps for checkboxes and radio boxes.
  194. Beta 1
  195. - There's a loadable module for accessing profiles ("INI-files") now, which
  196.   is implemented as compatible as possible as the Windows version's "registry"
  197.   command. It loads the DLL tclreg80.dll when you use the commands
  198.   "package require registry 1.0" and "registry [...]". The "registry" command
  199.   is also known under the aliases "profile" and "ini".
  200.   Note that OS/2 INI-files have a fixed structure ("applications" with "keys"
  201.   with "values") unlike Windows' registry's near-free form tree-structure,
  202.   though you can cheat by using path separators (like Lotus has in the
  203.   SmartSuite, eg. "applications" LotusSystemServices\3.0 and
  204.   LotusSystemServices\3.1).
  205. - All Tcl/Tk changes to 8.0 are ofcourse there, ie. there's a bytecode compiler
  206.   builtin and buttons, menus and scrollbars are now native.
  207. - Files are now copied with preservation of attributes and time stamps.
  208. - Without measures, the recursion limit tests in interp.test fail with a stack
  209.   error. Lowering the limit from 50 to 25 made it go away, so obviously the
  210.   stack size was too small. The DEF files now use a STACKSIZE of 0x00030000.
  211. - Makefile.aout provided for building Tcl/Tk with a.out style object code,
  212.   which enables the use of stuff that expects that (eg. GDB).
  213. - File handle limit incremented from default 20 to 25.
  214. - All binary distribution filenames FAT-compatible:
  215.   tclshpm76.exe => tclpm80.exe
  216.   tcltest76.exe => tcltst80.exe
  217. Fixes for 7.6/4.2:
  218. - File handle leaking when executing external programs fixed.
  219. - When creating a process in a pipeline with either the file for stdout or
  220.   stderror not readable or NULL, the device "NUL" was opened for *reading*
  221.   instead of writing. Whoops...
  222. - The nasty side effect with the CLI tclsh76.exe was because it did a
  223.   WinSetFocus(HWND_DESKTOP) anyway, despite not being a PM program (and it
  224.   obviously worked too); put a test "if (usePm)" around it.
  225.  
  226. 7.6/4.2 (p2)
  227. ============
  228. - Tclsh76.exe is now a command line interface (CLI) version of tclsh.exe.
  229.   In this version you can*NOT* say "load tk42" and have Tk at your disposal,
  230.   since this version has PM usage switched off (mutually exclusive).
  231.   The previous PM implementation is now called tclshpm76.exe.
  232.   Note: the CLI version has a nasty side effect of making the window in which
  233.   it is run lose focus; under FeelX the window even has the active titlebar so
  234.   FeelX must think the focus is there, but typing in the window has no effect.
  235.   You must move your mouse out of the window and back in.
  236. - Native File Open/Save Dialog. If you use object types names as known to the
  237.   WPS, you can select files based purely on their type (not extension).
  238.   Note: for compatibility with existing (non-WPS aware) scripts, the initial
  239.   selection is with "type" <All Files>, so the name is significant.
  240. - Sockets are now handled (in/by code) like in the Unix version, making the
  241.   reliance on EMX more obvious (it was already present) because it makes the
  242.   use of sockets transparent, like on Unix.
  243. - NotifyVisibility events are now only generated for windows that are showing
  244.   according to PM (WinIsWindowShowing) and Tk considers mapped (TK_MAPPED).
  245.   Previously, the Windows port of generating it for every TK_MAPPED child
  246.   (because Windows has no equivalent of WinIsWindowShowing, only of
  247.   WinIsWindowVisible, which returns true for windows that are completely
  248.   obscured too) was used unchanged.
  249.   Any event still has a state of VisibilityUnobscured. More accurate transition
  250.   info could be generated, but in my opinion would be too expensive (both in
  251.   computation and memory) compared to its use.
  252.   Some changes from the 8.0 Windows version have been incorporated to fix the
  253.   double Map/Unmap binding triggering in two tests in textWind.test.
  254. - The names for temporary files are now determined with tempnam(), which made
  255.   eg. "exec cat << {Sample text}" work correctly. This, however, left the
  256.   temporary behind since that is closed (and tried to be deleted) before the
  257.   program that is reading from it (cat) exits, giving a sharing violation.
  258.   Therefore, when a temp file cannot be deleted, it is added to a list of
  259.   temp files as yet undeleted, to be deleted on exit. An exit procedure is
  260.   registered for that, which tries to close and delete every file in the list,
  261.   ignoring any errors. If that doesn't do it.... you're out of luck :-).
  262.   Oh... and EMX 0.9c has TMP_MAX defined as 1000, so after so many temp files
  263.   it starts over, so make sure you don't make that much at the same time... ;-)
  264. - Winfo rooty and winfo containing gave incorrect results, fixed.
  265. - Bug in XCopyPlane fixed.
  266. - Moving rectangles left spurious lines to the right (eg. widget demo,
  267.   arrowhead for canvas lines editor); fixed.
  268. - Optional compiling of key-handling fixes suggested by Ilya Zakharevich (break
  269.   e.g. Ctrl-X).
  270. - Fixes suggested by Ilya Zakharevich (fonts):
  271.   + Consider the "10" in e.g. "10.Courier" to be pixels, not points.
  272.   + Use lMaxBaselineExt as height indicator for pixmap fonts instead of
  273.     emHeight.
  274.   + Compile option for "display resolution correction" (ignoring what PM tells
  275.     us and using a given resolution, default 72 dpi.
  276.   + Default text font "10.Courier" when that "correction" is used.
  277. - The format of $tcl_platform(platform) has been changed to "os2" to make it
  278.   more consistent with those of other platforms ("unix", "macintosh",
  279.   "windows"). $tcl_platform(os) still returns "OS/2".
  280. - The Tclsh console now shows output sent to "stdout" or "stderr" when running
  281.   interactively. The tests make use of these explicit channel names.
  282. - Transients now get a dialogborder.
  283.  
  284. 7.5/4.1
  285. =======
  286. Fix 1
  287. -----
  288. - Opening files for appending truncated them. Fixed.
  289. - Bitmaps got reversed (again). XCopyPlane has to do the colours "reversed"
  290.   like the Windows port, contrary to what the PM Guide and Reference states.
  291.  
  292. Release
  293. -------
  294. - Execs (usually with pretty much output) gave an OS/2 error message that the
  295.   process tried to write to a non-existent pipe. Fixed by not using a named
  296.   pipe but an unnamed pipe.
  297. - The socket code works.
  298. - The Tclsh console tries its best to add all output to the end, no matter
  299.   where the cursor happens to be.
  300.   Insert output from commands with MLM_IMPORT instead of via the clipboard,
  301.   thereby not being limited to 64K.
  302.   Control-C can be used to (try to) break off a script (like is necessary to
  303.   regain control in the test-script remote.tcl).
  304. - Traced a (not-so) subtle bug in TclSetSystemEnv that reared its ugly head
  305.   later, by running Visual Tcl 1.08 (malloc-ing space for VARIABLE=VARIABLE
  306.   instead of VARIABLE=VALUE, for a lengthy value, ergo using memory that wasn't
  307.   malloc-ed). Stoooopid.
  308. - Use of the command processor in environment variable COMSPEC instead of
  309.   always using CMD for things not in the path (ie. likely internal commands
  310.   like DIR). Still uses CMD.EXE when this can't be determined.
  311. - Array subscripts in determining system values were one off, rendering OS/2
  312.   Warp 4 as major version 4, minor version 0, revision <some-number> instead
  313.   of the (documented) required 20, 40 and 0. Fixed, but "hacked" in the same
  314.   way as CMD.EXE, ie. returning version 4.0 for 20.40.0.
  315. - Globbing was broken for non-current directory searches.
  316.   It accepts volume-relative specs like "e:*.tk" and fills in the current
  317.   directory on the drive between the ':' and '*'.
  318.   It now also determines case (in)sensitivity and case (non)preservation from
  319.   the file system that the directory resides on. FAT, VINES and anything it
  320.   doesn't recognize are taken to be insensitive and non-preserving. NFS and
  321.   EXT2FS (Linux) are taken to be sensitive and preserving, HPFS and NTFS
  322.   insensitive and preserving.
  323. - Fixed "put" with a channelId in the Tclsh console.
  324. - Flashing of a new window in the corner (being displayed there and then
  325.   immediately moved) fixed. Was caused by a superfluous WS_VISIBLE in the
  326.   Window Style). By default windows start in upper left corner.
  327. - Overzealous looking at VK_ALTGRAF in tkOS2X.c removed. This caused any key
  328.   pressed with Alt Gr (German, Dutch keyboards) to be ignored.
  329. - First code for a CLI (Command Line Interface) version of tclsh put in, but
  330.   not pursued further. #ifdef-ed with CLI_VERSION.
  331.  
  332. Beta 5 - 11 sept.1997
  333. ------
  334. - Unlike the Windows port ;-), the functionality of stippling for ARCs is
  335.   implemented.
  336. - Fixed inconsistency and typo in tkOS2Pointer.c wrt. Y coordinate lastMousePos.
  337. - The format of $tcl_platform(os) has been modified again to make them more
  338.   logical though now the array elements for platform and OS return the same,
  339.   ie. "OS/2"; Other values: osVersion e.g. "4.0", machine "intel".
  340.   Similarly, "winfo server ." returns e.g. "OS/2 4.0".
  341.   No marketing names (Warp) allowed here...
  342. - Menus appear at the correct height (aligned with bottom of button).
  343. - Binding to ALT works. NB: A binding is case-sensitive: Control-Shift-x will
  344.   not match anything while Control-Shift-X will. The latter is equivalent to
  345.   Control-X, since you will only get X (not x) by pressing Shift.
  346. - Withdrawn windows completely disappear, ie. from the task list.
  347. - Stippling works (apart from stippled ARCs, which don't get stippled in the
  348.   Windows port either).
  349. - Windows port did not look at GC values for CapStyle, JoinStyle, LineStyle.
  350.   This port does.
  351. - Lines have (specified) width. This needs the "geometric line width" in OS/2,
  352.   which is only used by GpiStrokePath (and GpiModifyPath), so use that.
  353. - Ctrl-X and the likes work.
  354. - Focus problem after grab fixed. I was too correct in following the "Results"
  355.   section for XGrabPointer, which says to return AlreadyGrabbed if the grab
  356.   didn't succeed. This should be ignored, like in the Windows version, and
  357.   GrabSuccess should always be returned.
  358. (Font patch by Ilya Zakharevich assimilated)
  359. - Fonts (sigh ;-}): calculation of size was wrong.
  360.   Furthermore, because of unclear / confusing GPI programming info, the check
  361.   of the sizes of the available fonts wasn't done on the right value. It turns
  362.   out you have to *request* the size via the lMaxBaselineExt member, while the
  363.   actually used value is in lEmHeight.
  364.   Am I dense or what?? Actually, the returned nominal pointsize is OK.
  365.   Compile-time option (via #define) provided for ignoring a PM-provided font
  366.   resolution of 120dpi, taking 96dpi instead, which is the resolution in VGA
  367.   and upto ?800x600?; requested by Ilya Zakharevich.
  368. - Color images now work, including those that get split up into several before
  369.   drawing (LCOLF_RGB instead of LCOLF_CONSECRGB in GpiCreateLogColorTable;
  370.   LCOLF_CONSECRGB should (only) be used with Palette Manager).
  371. - Width calculation of fonts improved by using TXTBOX_BOTTOMRIGHT instead of
  372.   TXTBOX_CONCAT.
  373. - Tcl: File globbing was broken because DosQueryPathInfo doesn't like ".\" for
  374.   the file/directory argument. Similarly, directories weren't seen.
  375. - "option readfile" wasn't succesful with OS/2 files, but was with an .Xdefaults
  376.   copied from Linux. Choked on the Return&Newline being replaced by just the
  377.   Newline, yielding a "nr.of chars read" smaller than the file size, aborting
  378.   the entire process. Fix necessitated changing the generic file tkOption.c,
  379.   function ReadOptionFile with the corresponding (fixed) code of Tk 4.2.
  380. - Compile time option (set in makefile.emx) to use "9.WarpSans" as default
  381.   font.
  382.  
  383. Beta 4
  384. ------
  385. - A "wm withdraw" now also works when running or sourcing a script (i.e.
  386.   mapping/creating in withdrawn state).
  387.   Switching to a withdrawn window (eg. by using the task list) works okay.
  388.   Previously only a "wm deiconify" would do the trick of exposing the client
  389.   area (restoring contents).
  390. - Resizing in vertical direction fixed.
  391.   When resizing to a smaller height with a menu bar involved, the menu bar
  392.   disappeared (partly or entirely, depending on the size).
  393.   Cause was the use of CS_SIZEREDRAW for child windows.
  394. - The default screen name is determined from the DISPLAY environment variable,
  395.   if available, so scripts asking for toplevels with -screen <name> don't
  396.   abort (and any toplevels without specifying a screen in an invocation of
  397.   wish with the -screen <name> argument).
  398. - Double-clicking now works correctly, OS/2 PM's WM_BUTTONxDBLCLK messages get
  399.   changed to both a ButtonDown and a ButtonUp event.
  400. - Fonts changed again. Presentation Parameter-style specification now fully
  401.   supported:  PointSize.FontName[.Attribute][.Attribute]... where Attribute is
  402.   one of bold, italic, outline, strikeout, underline.
  403.   Some fonts (eg. -*-Helvetica-Bold-R-Normal-*-240-*-*-*-*-*-*) didn't show up.
  404.   This was because they were scaled to pointsize 0 because the 240 is in the
  405.   "pixels" spot, which should be a substitute for the point size (or at least
  406.   was in the Windows version), but wasn't implemented identically. An explicit
  407.   point size will override it.
  408.   The ascenders and descenders of scalable fonts are fixed, so they won't get
  409.   progressively larger when enlarging the font.
  410. - Double ckfree because of WM_DESTROY message (caused by WinDestroyWindow in
  411.   XDestroyWindow, tkOS2Window.c) fixed, care of sleuthing by Ilya Zakharevich.
  412. - Resizing works, wm minsize and wm maxsize likewise.
  413.  
  414. Beta 3
  415. ------
  416. - Merged resources for additional pointers into the DLL.
  417. - Clicking in the console gets the focus now too (previously, only clicking the
  418.   titlebar worked).
  419. - Fonts work a little bit more correct. ;-)  Height, width and actually used
  420.   pointsize are correct now. Without special handling, every scalable font is
  421.   of point size 12!
  422.   Code by Ilya Zakharevich (ilya@math.ohio-state.edu) incorporated into
  423.   tkOS2Font.c, enabling the use of e.g. "10.Courier".
  424. - Images work. Funnily, they are (exquisite) greyscale on a 64K display but
  425.   color on a 256 palette management. The OS/2 part is doing what Tk tells it
  426.   to with regard to color though, it just gets handed grey values, so I have to
  427.   assume it is working as advertised.
  428. - 'exec' was broken in Beta 2. Fixed. PM apps should be exec-ed with '&' unless
  429.   they are very short-lived. Tclsh will be "listening" for output from the app
  430.   and this will "lock up the queue" because of the single-threadedness.
  431. - The format of $tcl_platform(os) has been modified slightly; return values are
  432.   now "Warp 3" and "Warp 4" instead of "Warp v3" and "Warp 4 (Merlin)".
  433.   Other values: platform "OS/2", osVersion e.g. "4.0", machine "intel".
  434. - Temporary files are cleaned up when closed by specifying a DosClose wrapper
  435.   to be called on file closure.
  436. - Humongous memory leak in TkOS2SelectPalette fixed.
  437.  
  438. Beta 2
  439. ------
  440. - Font selection works correctly now, so that any font available through the
  441.   font dialog is available. It first determines all fonts in the system (#ifdef
  442.   DEBUG) / all fonts with the specified facename (#ifndef DEBUG) via
  443.   GpiQueryFonts and then determines the most suitable font based on the
  444.   size. Preference is given to bitmap fonts over outline (scalable) fonts for
  445.   purposes of performance in using the font. When many fonts of the same
  446.   facename exist, the scalable one is at the start of the "list" and the
  447.   correctly sized bitmap font is at the end of the "list", this may exact a
  448.   performance penalty at the time of determining the font. This is a small
  449.   one-time penalty though.
  450.   Fonts with a '-' in their name have to be specified by length-3-array (eg.
  451.   "Conga-Normal 180 normal").
  452.   To not get stuck with a default font (ie Courier), you will need to use font
  453.   names that OS/2 knows *and* use the right case:
  454.   helvetica      ->   Helvetica   or   Helv
  455.   Times          ->   Times New Roman   or   Tms Rmn
  456.   (eg: ... -font "-Adobe-Times New Roman-medium-r-normal-*-180-*-*-*-*-*-*" )
  457. - Colors on non-Palette management system work. Not tested on VGA but you will
  458.   not get any better there...
  459. - Choosing "Close" (Alt-F4) on a torn-off menu or otherwise non-"main" window
  460.   will only close that particular window, not the whole application.
  461.  
  462. Beta 1
  463. ------
  464. No record has been maintained for bugfixes previous to this.
  465.  
  466.  
  467. THANKS TO
  468. =========
  469. - Ilya Zakharevich for his critical testing.
  470. - Anna Chiara Bellini for putting an FTP server at my disposal for 7.5/4.1b.
  471. - Anyone not named that has assisted by beta testing and/or doing suggestions.
  472.  
  473.  
  474. BUGS
  475. ====
  476.  
  477. 8.0.5
  478. -----
  479. Embedded windows.
  480.  
  481. TO DO (?) (Extending port)
  482. ==========================
  483. - Have a native color dialog. This *is* available (on what versions? Warp 3
  484.   and higher?) but not in a documented class etc.
  485. - Handle WM_CHORD by translating to WM_BUTTON3.
  486. - Accept Drag-and-Drop of files to be sourced into the console.
  487. - Have TraversalCopy and TclpCopyFile also copy Extended Attributes (EAs).
  488. - Have Shift-Insert, Shift-Delete and Ctrl-Insert act on clipboard.
  489.   This means extending the "Tk Clipboard" only approach to use PRIMARY and/or
  490.   SECONDARY too. Just replacing CLIPBOARD with PRIMARY has Shift-Insert working.
  491. - Global Grab doesn't turn pointer into clock outside of dialog. Possible??
  492. - Make button 2 and 3 of the mouse switchable. To OS/2, button 2 is the right
  493.   mouse button and generates a WM_BUTTON2* message, 3 is an optional middle
  494.   mouse button (WM_BUTTON3*). For X, and thus XFree86 in an OS/2 Full Screen
  495.   session, button 2 is the ("always available") middle button and 3 the right.
  496. - Implement a "send", either via DDE or via Pipes/Queues?
  497. - Multithreading (dual-threading: one extra thread for the message queue to
  498.   stay responding to the system, coomunicating with the one that now exists
  499.   which might be computing for a longer time).
  500.   When introducing multi-threading (8.1 does this already), the access to the
  501.   anchor block handle (HAB) must be differentiated by thread instead of just
  502.   returning the value of a global variable. Where possible, this can easily be
  503.   achieved by replacing the call to TclOS2GetHAB() by WinQueryAnchorBlock(hwnd).
  504.   Where a HWND isn't available (eg. GpiCreatePalette() in InitBoxes()), the
  505.   function TclOS2GetHAB should be called in a modified form with thread-specific
  506.   information (ie. thread-id) and there has to be a mechanism for maintaining
  507.   the thread-id to HAB relationship (simple array might be possible if threads
  508.   are guaranteed to start at 0 or 1 and the number of threads possible can be
  509.   queried, but the Tcl Hash mechanism might be more applicable).
  510. - The list of occupied logical font IDs is a straight array. This method will
  511.   leave "holes" when freeing another font than the last one.
  512.   Solution: convert to a linked list or use Tcl's hash table mechanism.
  513.