Short: V3.3b4 EasyGUI with OS 1.2+ support V0.9 Author: Ralf "hippie2000" Steines + Various (see below) Uploader: metamonk yahoo com Type: dev/e Requires: gadtools13.library, AmigaOS 1.2 or higher Architecture: m68k-amigaos INTRODUCTION ------------ EasyGUI_OS12 is a fully compatible version of EasyGUI V3.3b4, which was enhanced to work under any versions of the Amiga-OS which are supported by Amiga-E (V1.2+/V33+) (original EasyGUI requires V37) All pre V36 OS support functions were written in hybrid way, so that on newer Amiga-OS everything is done the same way as in the original EasyGUI, which is a very future compatible solution IMHO. Programs using the EasyGUI_OS12 modules do not have any additional requirements unless they are run on pre V36 Amiga-OS, in which case they require the "gadtools13.library" V34.23 by JABA development, which is not part of this package, since I do neither know about the legal state of that library, nor do I know how to contact the author yet (HELP ME PLEASE!!!) Check your libs: directory or the stonecracker archive from aminet or visit amigasystems.org to find this lib. COPYRIGHT --------- Note that this is an "unofficial" release of EasyGUI, released with permission of Jason R. Hulance (current maintainer of EasyGUI). The EasyGUI module, the EasyGUI example sources and docs are Copyright (c) 1994-6, Wouter van Oortmerssen (the author of the great language E) and Jason R. Hulance (the author of the "beginners.guide" and long time supporter of E). The plugins, demo sources and docs in the EasyPlugins folders are (C) Copyright Ali Graham, Fabio Rotondo and Ralph Wermke, used with permission too. See the headers of each source file to find out who exactly did what. All changes and additional files are Copyright (c) 2000, Ralf 'hippie2000' Steines [metamonk@yahoo.com] and inherit the legal state from the original EasyGUI disctribution. (Reuse there is welcome :) Please do not redistribute any modified versions of these files without having talked about first, since this is going to be updated again (hopefully :) PROGRAMMERS INFO ---------------- EasyGUI_OS12 is used in the same way as the original EasyGUI, so read the original manual which you can find in the docs/easygui#? folder. Additionally to all info provided there you need to know a few differences: - The workbenchbase shared by EasyGUI_OS12 will be NIL if the workbench.library could not be opened (which is the fact on older Amiga-OS) WITHOUT raising an exception. So, if you use AppIcon/ AppTool/AppWindow functions test workbenchbase first and degrade graceful if it is NIL. The EasyGUI_OS12 builtin AppWindow support is already safe. - Write hybrid code if you use new os functions, and do not rely on KickVersion() only (which just checks the exec library version). For this the module 'hybrid/version' is provided with this package, making life easier for you: bool:=intuiVersion(minver) -> intuitionbase version bool:=gfxVersion(minver) -> gfxbase version bool:=libVersion(libbase,minver) -> whateverbase version - Take care that plugins you use also were compiled with EasyGUI_OS12 otherwise both versions of EasyGUI will be included in your project. (check the example plugins how to do that best) - When writing plugins you will very likely need the taglist parsing function GetTagData() of utility.library. Since this library does not exist on older Amiga-OS versions you should use the hybrid replacement in the module 'hybrid/tagdata' instead, which uses the utility function in case of a non zero utilitybase, otherwise a replacement. The module 'hybrid/utility' provides you with the necessary open and close functions which do not raise an exception. openUtility() -> at the beginning of the main prog (no return code, result is utilitybase) data:=getTagData(tag,default,taglist) -> within the plugin closeUtility() -> at the end of the main prog - Note that old intuition was not very resistant against passing it stupid values, so don't blame me or the authors of EasyGUI for possible GURUs. During tests i made excellent experience with gadtools13.library under WB1.2 and 1.3, and i did not experience any GURU which was not my fault :) DANGER: the EasyGUI functions movewin() and sizewin() horribly crash on early intuition versions when the window is moved out of the screen. In the next release i should implement some clipping to avoid this. - Using changing GUIs under early intuition versions requires some care during design. Best: don't use. Second best: try to make the size of all GUIs the same, and try to open the biggest one first. The changegui feature relies on window resizing (which is not guaranteed to happen ever) and may by this lead to dangerous gadget sizes. Modern intuition is flexible in such cases, but early intuition verions prefer to crash in such situations. GADTOOLS VERSIONS ----------------- Note that gadtools13.library and even early real gadtools versions misses some functions which are present in newer ones. This should not be a big problem since all important things work. Just don't rely on the behaviour of recent gadtools and your software will work fine. Here a reference of things I noticed, sorted by gadget kind: BUTTON,SBUTTON GT13 - GT37 - CHECK GT13 - GT37 - MX Do not use disabling, really makes no sense: GT13 only disables + ghosts the first item. resize breaks disabling. Text is spaced but not rendered. GT37 disabling visibly sets to first item of the list, value is not affected. Resize restores the visible state. The left or right text is spaced but is not rendered. CYCLE GT13 set or resize breaks disabling GT37 - INTEGER,STR GT13 - GT37 - NUM,TEXT Do not use disabling, really makes no sense: GT13 can be disabled, but disabling breaks by set or resize and is NOT possible with any later GT versions at all!!! GT37 No disable possible. This is no bug but a feature. Maybe EasyGUI should not allow disabling of these gadgets at all. SLIDE Do not use without a slider value format text! GT13 always clears the background behind slider values, even with an empty format string. Sliders values are still a TODO in EasyGUI so no workaround was added. GT37 Rendering errors after a set within a disabled gadget, old knob position is cleared and remains unghosted. SCROLL GT13 - GT37 Rendering errors after a set within a disabled gadget, old knob position is cleared and remains unghosted. LISTV Do not rely on the read only feature, use a "do nothing" action funtion additionally. GT13 set or resize breaks disabling, read only (recessed) mode does not exist. always read/write. GT37 Listviews can't be disabled PALETTE GT13 set breaks disabling, setting to a value above the screen's depth is not visible (but works internally) GT37 setting to a value above the screen's depth is not visible (but works internally) BEVEL,BEVELR GT13 no recessed bevel, both render same. GT37 - GT13 means gadtools13.library, GT37 means gadtools.library V37... I had no access to a V36 ROM so far (or is GT36 disk based?), so i could not test this gadtools version.