home *** CD-ROM | disk | FTP | other *** search
/ Crawly Crypt Collection 1 / crawlyvol1.bin / utility / patch / gnva_003 / gnva_003.txt next >
Text File  |  1993-12-31  |  24KB  |  553 lines

  1. Updating to Geneva release 003 (1.02):
  2. -------------------------------------
  3.  
  4. To update to the new version, follow these steps:
  5.  
  6. 1. If you intend to keep the old version around for some reason, be sure
  7.    to make a backup of all files.
  8.  
  9. 2. Make a backup of your original Geneva disk!
  10.  
  11. 3. Run the enclosed patch program, PATCH003.PRG.
  12.  
  13. 4. After the patch has successfully completed, run the INSTALL.PRG on the
  14.    modified disk. It will re-install all of the new files. If you get error
  15.    message saying that the file already exists, just let the program
  16.    overwrite the old files.
  17.  
  18. If you have problems with the patch
  19. -----------------------------------
  20.  
  21. If, for some reason, the patch program does not run properly you can send
  22. your original Geneva disk back to us along with a check for $5 + $2 to
  23. cover return shipping. We will rewrite the disk with the most recent
  24. version for you and return it to you by mail. Send to:
  25.  
  26.   Gribnif Software
  27.   P.O. Box 779
  28.   Northampton, MA  01061
  29.  
  30.  
  31. Files affected
  32. --------------
  33.  
  34. INSTALL.SCR
  35. INSTALL.PRG
  36. TASKMAN\TASKMAN.ACC
  37.         TASKMAN.RSC
  38. GENEVA\GENEVA.PRG
  39.        GENEVA.CNF
  40. HELP\GNVAHELP.PRG
  41.      GENEVA.HLP
  42.      TASKMAN.HLP
  43. PROGRAM\GNVA_DB.PRG
  44.         NEW_AES.H
  45.         NEW_GEM.LIB
  46.         XWIND.H
  47.         XWINDGFA.SFX *
  48.         TASKMAN\TASKMAN.C
  49.                 TASKMAN.H
  50.                 TASKMAN.HRD
  51.  
  52. * To extract XWINDGFA.LST, copy it to another disk and change its name
  53. to XWINDGFA.TOS. Then, run this program and the file will self-extract.
  54.  
  55.  
  56. Geneva Revision Notes                                   12/31/93
  57.  
  58.   Notes:
  59.  
  60.     If you want to use That's Write's desk accessories with it, you will have
  61.       to set That's Write to be single-tasking. This is due to a shortcoming
  62.       in the method that desk accessories use to communicate with That's
  63.       Write. Newer versions of the That's Write desk accessories will address
  64.       this problem.
  65.  
  66.     Page Assistant's Index dialog will show some underlines in places where
  67.       they should not be. This can only be avoided by turning the "Auto
  68.       keyboard equivs" option off for the program. This is true as of version
  69.       2.05.
  70.  
  71. Changes since 9/29/93:
  72. ---------------------
  73.  
  74.   INSTALL:
  75.  
  76.     INSTALL.SCR will now allow you to set the parameters for SETMOUSE.
  77.  
  78.     INSTALL.PRG will no longer have redraw errors when run under Geneva.
  79.  
  80.   TASKMAN:
  81.  
  82.     Added a new Misc. Option to allow the video resolution in GENEVA.CNF to be
  83.       ignored, in favor of the one in NEWDESK/DESKTOP.INF. This means that you
  84.       can continue to use a boot manager like XBoot to choose video
  85.       resolutions using the same method you always used.
  86.  
  87.     The main window can now be "iconized" by clicking on the "delta" gadget.
  88.       This shrinks any open windows to a single "icon" window.
  89.       Double-clicking on the icon window's contents will reopen the Task
  90.       Manager.
  91.  
  92.     The Window Options dialog now accepts any Speedo GDOS font, and any
  93.       other monospaced GDOS (bitmaped or scalable) font which has all 255
  94.       characters. This font is used when drawing menu bars, windows and
  95.       dialogs. There are a few restrictions, though:
  96.       o If you use Speedo GDOS, it must be version 4.11 or newer.
  97.       o When using a Speedo font, Geneva attempts to remap the characters
  98.         used in window gadgets (like the Full box, the Close box, etc.) While
  99.         this remapping does work with most Speedo fonts, some fonts (like the
  100.         Monospace 821 font) do not have the characters in the right locations
  101.         for this translation, and incorrect characters will appear in the
  102.         gadgets when they are drawn. This is unavoidable.
  103.       o Speedo GDOS does not do a very good job of supporting the italics and
  104.         bold special effects which are found in some of Geneva's dialogs.
  105.       o Bitmapped fonts can be used, with the same limitations as before.
  106.         They can even be used with Speedo GDOS.
  107.  
  108.     The Task Manager now uses a more exact method for drawing the contents of
  109.       the Sample Window in the Window Options dialog. The current window
  110.       gadget colors are also used.
  111.  
  112.     The objects which make up the Sample dialog in the Dialog Options dialog
  113.       can be clicked on in order to switch object types.
  114.  
  115.     The Outer Box in the Dialog Options sample is now always drawn correctly.
  116.  
  117.   GENEVA:
  118.  
  119.     The version number and date are now displayed when Geneva runs from the
  120.       AUTO folder.
  121.  
  122.     The icons in alerts will be colored if there are at least 16 colors
  123.       available in the current video mode.
  124.  
  125.     Item selector: If the path is very long, only the first 10 characters of
  126.       the template will be shown when the path gets updated. This way you can
  127.       always see at least the last 16 chars of the full path.
  128.  
  129.     You can now press [Alt][\] to move to the root directory in the item
  130.       selector.
  131.  
  132.     Using GDOS fonts within TEDINFO objects is now supported, as in AES 4.1.
  133.       Note that if you click on an editable field containing a GDOS font with
  134.       the mouse, the edit cursor will always be positioned to the end of the
  135.       field. Actually positioning to the character under the mouse would be
  136.       too computationally intensive.
  137.  
  138.     Added a new type of wildcard to the item selector. The ! can be used for
  139.       inversion ("not") of the next item in a string. If the next item is just
  140.       a regular character, then that one letter will be inverted; if the next
  141.       item is a {} or [] bracketed expression, then the meaning of that
  142.       expression will be inverted. Examples:
  143.  
  144.         *.prg           Ending in PRG
  145.         *.!abc          *.?BC, excluding *.ABC
  146.         *.ab!c          *.AB?, excluding *.ABC
  147.         *.!a!bc         *.??C, excluding *.ABC
  148.         [a-d]*.*        Starting with A, B, C, or D
  149.         ![a-d]*.*       Anything not starting with A, B, C, or D
  150.         *.{prg,prx}     Ending in PRG or PRX
  151.         *.!{prg,prx}    Anything not ending in PRG or PRX
  152.  
  153.       Any number of !'s can be used within a wildcard. The effect is that the
  154.       expressions are negatively added together. For example:
  155.  
  156.         !{stalker,neodesk?}.!{ac[cx],rsc}
  157.  
  158.       Matches anything but:
  159.  
  160.         stalker.acc    stalker.acx    stalker.rsc
  161.         neodesk?.acc   neodesk?.acx   neodesk?.rsc
  162.  
  163.       However, NEODESK.ACC will match, since it does not have a character
  164.         between the "k" and the period.
  165.  
  166.       The ! can be used in the main item selector path, and also in the Find
  167.       dialog.
  168.  
  169.     Added a new flag to allow the video resolution in GENEVA.CNF to be
  170.       ignored, in favor of the one in NEWDESK/DESKTOP.INF.
  171.  
  172.     A program flag has been added for GENEVA. This allows you to change the
  173.       name of the Geneva Manager in the Desk menu (and also its Activation
  174.       key) by using the Task Manager.
  175.  
  176.  
  177.   Other changes in Geneva:
  178.  
  179.     Fixed a typo that prevented the use of multiple [] or {} bracketed
  180.       expressions in a wildcard.
  181.  
  182.     Using function keys to access the paths in item selector works again.
  183.  
  184.     Fixed a problem which caused characters to disappear in editable fields
  185.       which were created with the WERCS resource contruction program.
  186.  
  187.     Geneva now works correctly when:
  188.       o Run on a Moniterm card while a color monitor or no monitor at all
  189.         is plugged into the Atari video port.
  190.       o Using Crazy Dots board running NVDI in 2-color mode.
  191.       o Using a GENEVA.CNF file which was saved while using a TTM195
  192.         monitor with another resolution. (I could not test this one)
  193.  
  194.     Added a check to avoid a bug in TOS 2.01-2.05 which sometimes causes a
  195.       monochrome screen to "wrap around" several pixels.
  196.  
  197.     Fixed the GEM.CNF "run" command to correctly pass parameters to the
  198.       program to be run.
  199.  
  200.     Fixed a typo that prevented the windows in GNVAHELP and GNVA_TOS from
  201.       scrolling quickly when the scroll bar was dragged.
  202.  
  203.     Atari-style 3D buttons are now drawn much more like the way AES 4.0 does.
  204.       Furthermore, objc_find() takes an OUTLINED attribute into account for
  205.       background objects.
  206.  
  207.     Fixed wind_get( X_WF_xSPLIT.
  208.  
  209.     Setting a new window split location with wind_set( X_WF_xSPLIT now causes
  210.       a redraw of the window areas.
  211.  
  212.     A horizontally split window will now always at least have an empty
  213.       vertical scroll bar. The same goes for a vertical split/horiz scroll.
  214.  
  215.     Fixed wind_calc() with HSLIDE, LFARROW, RTARROW, VSLIDE and nothing else.
  216.  
  217.     In release 002, Geneva would try to keep track of how many times an
  218.       application had turned the mouse on or off, and then take this into
  219.       account when making a different application the foreground one. This
  220.       cannot always work because of screen acceleration programs, and has
  221.       therefore been removed.
  222.  
  223.     Clicking on the small text in the item selector's Find dialog will no
  224.       longer cause a crash. Also, the "Find Next" button will not sometimes
  225.       remain selected when it should not.
  226.  
  227.     Multi-color icons work again.
  228.  
  229.     appl_read() again works correctly when reading more than 16 bytes.  This
  230.       used to cause the Miscellaneous Options help to crash.
  231.  
  232.     The name and serial number are centered in About Geneva.
  233.  
  234.     Double-clicking on the move box of an alert or the About Geneva dialog
  235.       will now work correctly.
  236.  
  237.     Added a hack to avoid a bug in the Falcon TOS that would cause some
  238.       programs to think that the wrong system font was being used.
  239.  
  240.     The Applications list should no longer lockup unexpectedly.
  241.  
  242.     Sub-submenus are now always positioned correctly.
  243.  
  244.     The bottom line of popup menu will always be drawn correctly.
  245.  
  246.     Added a check to avoid an error made by at least one program: passing an
  247.       mn_scroll=1 value to menu_popup() when 1 is not a child of the parent
  248.       scroll box will no longer cause a crash.
  249.  
  250.     Moving the mouse rapidly from a pulldown menu to a submenu will no longer
  251.       result in the submenu disappearing if the mouse happens to pass over
  252.       another menu entry. The menu display delay is used for this.
  253.  
  254.     The event_multi() mode X_MU_DIALOG can now be used at the same time as
  255.       MU_BUTTON and/or MU_KEYBD.
  256.  
  257.     If another program uses the exec_os variable and obeys the XBRA protocol,
  258.       Geneva will not complain that it cannot install itself.
  259.  
  260.     When a program redefines the tree of the desktop and uses G_USERDEF
  261.       objects in the tree, strange results will no longer occur if the
  262.       program quits without first unsetting the new desktop. (INSHAPE)
  263.  
  264.     When copying in the item selector, using the OK button when a filename
  265.       conflict occurs will always result in an overwrite of the old file.
  266.       Previously, this would only sometimes happen. Also, the file count is
  267.       always displayed, and is updated properly when Skipping a conflict.
  268.       Furthermore, you can press the OK button when a folder conflict occurs,
  269.       in order to use the existing folder.
  270.  
  271.     Programs which use GEMDOS text output (and other GEMDOS-level standard
  272.       file handle operations) will now work on the Falcon with TOS versions
  273.       4.00-4.04. (Technically speaking, these versions of TOS do not copy the
  274.       standard file handles of the parent process to the child when a Pexec(5)
  275.       is performed.)
  276.  
  277.     An incompatibility with TOS 4.00-4.04 which would result in the inability
  278.       to run any more programs, after a large number had been run, has been
  279.       fixed.  This tended to show up mostly when changing resolutions.
  280.  
  281.     If a program requests an event of zero mouse clicks, it no longer gets
  282.       a return value of one, it gets zero.
  283.  
  284.     The About Geneva dialog is now more resolution/font size independent.
  285.  
  286.     Now works completely with the Screenblaster. When you tell Geneva to
  287.       change resolutions, you also get the Screenblaster video resolution
  288.       menu.
  289.  
  290.     Fixed objc_find() and mouse rectangle events so that they no longer
  291.       consider a pixel one past the lower right or bottom edge.
  292.  
  293.     A program's message buffer is no longer modified if it does not receive
  294.       any message events. (PAGEASIT)
  295.  
  296.     The objc_draw() call will correctly affect clipping if either the width or
  297.       the height of the rectangle passed to the function is zero. Previously,
  298.       there was a chance this would not happen. (PAGEASIT)
  299.  
  300.     If a program asks for mouse events with 0 clicks, the report it gets from
  301.       Geneva when the mouse is clicked will have the number of clicks set to
  302.       0.
  303.  
  304.     Popup menus created with menu_popup() can now have submenus. Also, put a
  305.       check in to prevent selecting a disabled submenu starter.  (STFAX)
  306.  
  307.     Fixed a bug in the assignment of automatic keyboard equivalents. Now, exit
  308.       buttons are always scanned first, as they should be.
  309.  
  310.     wind_get( WF_OWNER ) now correctly reports the handles of the next and
  311.       previous windows in the stack.
  312.  
  313.     The width of the MOVER bar in a window with a SMALLER gadget is now
  314.       correct.
  315.  
  316.     An object with the extended type X_HELP is no longer considered for an
  317.       automatic keyboard equivalent.
  318.  
  319.     Programs which incorrectly assume that their own application ID is always
  320.       0 will work correctly if using appl_write() to send a message to
  321.       themselves, even in multitasking mode (assuming there is no
  322.       single-tasking application in memory, since it would have ID 0 and
  323.       therefore get the message; the best solution for this problem is simply
  324.       to run the offending program in single-tasking mode at all times).
  325.       (STDCAT)
  326.  
  327.     appl_getinfo(0) and (1) now return the point size (rather than the pixel
  328.       height) of the fonts. Modes (11) through (14) are now also supported.
  329.  
  330.     Also in the item selector: when it is first called, the number of items
  331.       and bytes in the current directory are now always displayed.
  332.  
  333.     If a program changes the clipping array of Geneva's VDI handle, this will
  334.       no longer cause redraws to fail unexpectedly later on.  (some very bad
  335.       programming in TWRITE3).
  336.  
  337.     It is now possible to change the size and position of a window which has
  338.       been created but not opened, by using wind_set(WF_CURRXYWH).  This just
  339.       makes it easier to use windowed dialogs.
  340.  
  341.     Having the Limit window handles option on for a program which uses
  342.       Geneva's dialogs within windows (like TASKMAN) will work properly.
  343.  
  344.     Made a few changes which allow running a program within another program by
  345.       way of Pexec() to work better. (SBPRO,1ST_WORD,QWK)
  346.  
  347.     The version reported in the Gnva cookie really is correct now.
  348.  
  349.     Window colors are now set for a window whose tree is redefined with
  350.       x_wind_tree().
  351.  
  352.     If a program (incorrectly) uses evnt_button() with a mask of 1 and a state
  353.       of 2, Geneva will no longer lock up. (DATMAN) The state is now always
  354.       internally AND'ed with the mask.
  355.  
  356.     Fixed a bug which would sometimes cause a crash when a program tried to
  357.       open a new VDI workstation and failed. (WORKS)
  358.  
  359.   Programming additions:
  360.   ---------------------
  361.  
  362.     wind_get() modes X_WF_HSPLIT (0x1700) & X_WF_VSPLIT (0x1800)
  363.  
  364.       The manual does not document the parameters returned by this call, and
  365.       it differs from what is passed in the equivalent wind_set().
  366.  
  367.       wi_gw1: Split bar position
  368.       wi_gw2: Size, in pixels, of the upper (or left) window region
  369.       wi_gw3: Size of the lower (or right) window region
  370.  
  371.     evnt_mesag() return X_WM_OBJECT (0xE900)
  372.  
  373.       This message type is returned to an application when it uses wind_set()
  374.       mode X_WF_OBJHAND to affect the manner in which window gadgets are
  375.       handled.
  376.  
  377.       If an application receives this message, it is because the object tree
  378.       handler routine instructed Geneva not to process the mouse click on a
  379.       window gadget as a normal event. Instead, a special message is returned
  380.       to the application:
  381.  
  382.         Word 0: 0xE900
  383.         Word 1: Application ID
  384.         Word 2: 0
  385.         Word 3: Handle of the window containing the object
  386.         Word 4: Object tree index of the object which was clicked
  387.  
  388.       Note that in order for Geneva to determine that the mouse has been
  389.       clicked on an object in a window's tree structure, it must be of type
  390.       EXIT or TOUCHEXIT.  Geneva's default window gadgets already have these
  391.       attributes set correctly.
  392.  
  393.       See also: wind_set() mode X_WF_OBJHAND.
  394.  
  395.     wind_get()/wind_set() mode X_WF_OBJHAND (0x1F00)
  396.  
  397.       When an application wants to intercept some or all of the button events
  398.       that would otherwise be interpreted as Geneva to mean that a window
  399.       gadget has been clicked on, this wind_set() mode can be used to provide
  400.       Geneva with the address of a routine which instructs Geneva to either
  401.       ignore the event, or to process it as normal. This allows the programmer
  402.       to redefine the operation of window gadgets, and to define his own
  403.       actions for new gadgets which have been added with the x_wind_tree()
  404.       function.
  405.  
  406.       The routine is passed the handle of the window containing the object and
  407.       the index of the object within the window's object tree. If the user
  408.       routine returns a 0, then Geneva will generate an X_WM_OBJECT message
  409.       and send it to the application. If the routine returns a 1, then Geneva
  410.       will process the action as a normal event and act accordingly.
  411.  
  412.       IMPORTANT: The application's object handler routine must not use any AES
  413.       functions.
  414.  
  415.       The following example declares an object handler which allows the action
  416.       of the vertical scroll bar to be redefined:
  417.  
  418.         /* change this to "int cdecl objhand..." for Pure C */
  419.         int objhand( int handle, int obj )
  420.         {  /* handle parameter is not used */
  421.           if( obj==WGVSMLSL ) return 0;   /* this is the vertical slider */
  422.           return 1;                       /* otherwise, process as normal */
  423.         }
  424.  
  425.         main()
  426.         {
  427.           int handle, message[8];
  428.  
  429.           handle = wind_create( NAME|MOVER|VSLIDE|UPARROW|DNARROW,
  430.               50, 50, 150, 150 );
  431.           if( handle > 0 )
  432.           {
  433.             wind_set( handle, X_WF_OBJHAND, &objhand );
  434.             wind_open( handle, 50, 50, 150, 150 );
  435.           }
  436.  
  437.           ...
  438.  
  439.           evnt_mesag( message );
  440.           switch( message[0] )
  441.           {
  442.             case X_WM_OBJECT:
  443.               if( message[3]==handle && message[4]==WGVSMLSL )
  444.                  /* do something new with the slider */
  445.           }
  446.         }
  447.  
  448.       If wind_set( X_WF_OBJHAND ) is passed a NULL pointer, instead of a
  449.       pointer to a function, object handling is discontinued for that window.
  450.  
  451.       Note that in order for Geneva to determine that the mouse has been
  452.       clicked on an object in a window's tree structure, it must be of type
  453.       EXIT or TOUCHEXIT.  Geneva's default window gadgets already have these
  454.       attributes set correctly.
  455.  
  456.       wind_get() can also be used to get a pointer to the current object
  457.       handler routine. A NULL pointer means that there is no object handler
  458.       defined.
  459.  
  460.     wind_get()/wind_set() mode X_WF_DIALEDIT (0x2000)
  461.  
  462.       When a windowed dialog has been defined with wind_set() mode
  463.       X_WF_DIALOG, these two options can be used to get or set the index of
  464.       the object which currently has the edit cursor. This can be helpful when
  465.       an application changes the contents of a text field while the dialog is
  466.       still displayed, or when it needs to hide the object that currently has
  467.       the edit cursor.
  468.  
  469.       wind_get( X_WF_DIALEDIT ) will return the index of the object which
  470.       currently has the edit cursor in the "wi_gw1" parameter, and the
  471.       position of the edit cursor within the object's text in the "wi_gw2"
  472.       parameter.
  473.  
  474.       wind_set( X_WF_DIALEDIT ) changes the object ("wi_sw1") and the edit
  475.       index ("wi_sw2"). If the object is 0, then the edit cursor will simply
  476.       be turned off; otherwise it will be moved to the new object. If the
  477.       index is 0, the cursor will be positioned before the leftmost character
  478.       in the field; if it is a number > 0, it will be further to the right. If
  479.       the index is -1, then the cursor will be automatically moved to the
  480.       rightmost position.
  481.  
  482.     New extended OBJECT types X_USRDEFPRE (90) and X_USRDEFPOST (91)
  483.  
  484.       It is sometimes desirable to change the appearence of an object
  485.       slightly, but using a G_USERDEF object would necessitate putting a lot
  486.       of extra code into the user routine, since a G_USERDEF object cannot
  487.       have any text, fill, or border. They have to be drawn by the user
  488.       routine, or not at all.
  489.  
  490.       Geneva provides two new extended object types which allow an object to
  491.       be modified or have its appearence altered, while still having the same
  492.       opportunity to be drawn like a normal object.
  493.  
  494.       If bits 12-15 of an object's ob_state are 9
  495.       ((ob_state&X_MAGMASK)==X_MAGIC) and the high byte of the ob_type is
  496.       either 90 (X_USRDEFPRE) or 91 (X_USRDEFPOST), then the ob_spec of the
  497.       object is assumed to contain a pointer to a USERBLK structure. This is
  498.       much like a normal G_USERDEF object, except that the ub_parm member of
  499.       the USERBLK structure must contain the value which would have been in
  500.       ob_spec if the object was not a G_USERDEF.
  501.  
  502.       Since this may sound a little confusing, the following example can be
  503.       used. It defines a G_BOXCHAR object which has its character increased by
  504.       1 every time the object is drawn:
  505.  
  506.         /* contains the code which increments the character and
  507.            the old ob_spec value */
  508.         USERBLK user;
  509.         /* start with a G_BOXCHAR object, with the character '1',
  510.            black border of thickness of 2, black text, patterned */
  511.         OBJECT ob = { -1, -1, -1, G_BOXCHAR, 0, 0,
  512.             ((long)'1'<<24)|(2L<<16)|(1<<12)|(1<<8)|(2<<4)|1,
  513.             50, 50, 25, 25 };
  514.  
  515.         int cdecl inc_char( PARMBLK *p )
  516.         {
  517.           char c;
  518.  
  519.           /* extract the character, which is in the MSB of the
  520.              ub_parm element of "user" */
  521.           c = ((user.ub_parm>>24) & 0xFF) + 1;
  522.           /* now put it back */
  523.           user.ub_code = (c<<24L) | (user.ub_parm & 0xFFFFFFL);
  524.           /* return the current state */
  525.           return p->pb_currstate;
  526.         }
  527.  
  528.         void draw_it(void)
  529.         {
  530.           objc_draw( &ob, 0, 0, 50, 50, 25, 25 );   /* draw */
  531.           Bconin(2);                   /* wait for keypress */
  532.         }
  533.  
  534.         main()
  535.         {
  536.           /* start by drawing the object normally */
  537.           draw_it();
  538.           /* now, set up the USERBLK */
  539.           user.ub_code = &inc_char;     /* function */
  540.           user.ub_parm = ob.ob_spec;    /* old ob_spec of object */
  541.           ob.ob_type |= X_USRDEFPRE<<8  /* extended ob_type */
  542.           ob.ob_state |= X_MAGIC;       /* set magic number */
  543.           ob.ob_spec.userblk = &user;   /* set ob_spec */
  544.           /* now, draw it a few times and watch the number go up */
  545.           draw_it();  draw_it();  draw_it();  draw_it();
  546.         }
  547.  
  548.         An X_USRDEFPRE function is called before the object is drawn.  In
  549.         contrast, an X_USRDEFPOST function is called after the object's
  550.         contents have been drawn, but before any ob_state effects are
  551.         processed.
  552.  
  553.