----------------------------------------------------------------------

HP ELOQUENCE A.06.10 - patch 9808190

----------------------------------------------------------------------

This patch provides an enhanced version of the HP Eloquence GUI
components for the Windows platform (Windows 16 and 32 bit).
The DLGSRV(32) and RUNSRV(32) have been enhanced concerning
performance and functionality.

This patch is compatible with all versions of HP Eloquence A.06
and will be integrated in a subsequent release.


DLGSRV(32) Enhancements:
------------------------

Platforms: Windows 16 and 32 bit

* DLGSRV(32) now uses the ISA Dialog Manager A.03.08d runtime library.

* The network performance has been significantly improved by using an
  asynchronous receive mechanism and by reducing the number of screen
  updates caused by DLG SET calls.

* To center a dialog on the screen, DLG SET .x and .y using negative
  coordinates now can be used and works compatible with ASCII DLG.

* DLG GET .focus always returned 0 due to a synchronization problem
  with the ISA Dialog Manager runtime. This problem has been solved,
  DLG GET .focus now works as expected, even if the addressed object
  is currently invisible or insensitive.

* DLG SET .focus did not work if the addressed object or one of its
  parents were invisible. This was caused by an incapability of the
  ISA Dialog Manager runtime. Now it works as expected.

* DLG SET .focus did not work if the addressed object was not
  sensitive. This was caused by an incapability of the ISA Dialog
  Manager runtime. Now it works as implemented in ASCII DLG: The next
  sensitive object gets focused automatically.

* The performance of the DLG SET listbox.add and .insert statements
  have been significantly improved.

* DLG SET listbox.cy did not work due to an internal problem in the
  DLGSRV(32). This has been solved and now works as expected.

* DLG SET listbox.file and edittext.file formerly failed with error
  651 if the file contained carriage-return codes. Now such files
  load correctly.

* The listbox.topitem attribute now works. Formerly, it has been
  ignored due to a problem in the attribute mapping code.

* The poptext object is now fully supported as a compatible replace-
  ment for any listbox.

  To use the poptext object, minor changes are necessary concerning
  the defaults dialog files (defaults.eq, eqdef.mod, eqbind.mod,
  eqbind.if). These changes will be integrated into future HP
  Eloquence releases:

  a) In defaults.eq, the default settings for the poptext object must
     be extended:

     default poptext
     {
       .visible true;
       .font NormalFont;
       .width 40;
       .posraster true;
       .sizeraster true;
       integer EqRule := 0;
       integer EqActiveline := 0;
       .function EqListBoxCB;
       .bgc ColWin;
       .fgc ColBlack;
     }

  b) The same must be done in eqdef.mod:

     export default poptext
     {
       .visible true;
       .font NormalFont;
       .width 40;
       .posraster true;
       .sizeraster true;
       integer EqRule := 0;
       integer EqActiveline := 0;
       .function EqListBoxCB;
       .bgc ColWin;
       .fgc ColBlack;
     }

  c) In defaults.eq and eqdef.mod, a select rule for the poptext
     object must be provided:

     // poptext: selected line has changed

     on POPTEXT select {
        this.EqActiveline := this.activeitem;
        if( this.EqRule ) then
           EqExitEventLoop( this, this.EqRule );
        endif
     }

  d) In defaults.eq, the 'select' trigger must be added to the
     definition of the EqListBoxCB function:

     function callback EqListBoxCB() for select, dbselect;

  e) The same must be done in eqbind.mod:

     export function callback EqListBoxCB() for select, dbselect;

  e) Also, the eqbind.if interface file must be changed accordingly:

     function callback EqListBoxCB() for select, dbselect;

* A POPUP BOX without a title failed to accept any keyboard input.
  This was caused by an internal problem in the DLGSRV(32) message
  filter. Now it works as expected.

* POPUP BOX will now be correctly centered unless you specify the x/y
  coordinates in the POPUP BOX statement (horizontal centering is
  applied if x=0, vertical centering is applied if y=0, if the
  coordinates are omitted in the POPUP BOX statement both coordinates
  are treated as 0).

  Normally, POPUP BOX will be centered to the most recent DLG DO
  window. If this is not available or invisible, POPUP BOX will be
  centered to the screen.

  You can also use the genuine position found in the defaults dialog
  file (where the EqPopup object is defined). The genuine x coordinate
  will be used if x<0, the genuine y coordinate will be used if y<0.
  Thus, the statement 'POPUP BOX -1,-1,...' will use the genuine
  position.

  The POPUP BOX now supports automatic position saving and restoring.
  This enables you to specify a x/y position for the box, either by
  specifying .xleft and .ytop in the EqPopup object definition or
  with DLG SET EqPopup.x/.y. If you afterwards execute the statement
  'POPUP BOX -1,-1,...', the box will always appear at the specified
  position, no matter if the user moves it on the screen.

  In order to enable this, minor changes are necessary concerning
  the defaults dialog files (defaults.eq, eqbind.mod, eqbind.if,
  eqpopup.mod). These changes will be integrated into future HP
  Eloquence releases (the lines you should insert are marked with
  '>>>'):

  a) Insert the following line into defaults.eq after the definition
     of the EqCallBack function:

     function boolean EqCallBack( string, object, integer );
 >>> function void EqRestorePopup();

  b) Insert the following line into eqbind.mod after the definition
     of the EqCallBack function:

     export function boolean EqCallBack( string, object, integer );
 >>> export function void EqRestorePopup();

  c) Insert the following lines into eqbind.if after the reference
     to the EqCallBack function:

     function boolean EqCallBack(string input, object input, ...
 >>>
 >>> function void EqRestorePopup();

  d) Insert the following line into defaults.eq and eqpopup.mod
     where the 'on EqPopup.EqPB1 select, key EqKbCR' rule is defined:

     on EqPopup.EqPB1 select, key EqKbCR {
        EqPopup.visible := false;
        updatescreen();
 >>>    EqRestorePopup();
        EqExitEventLoop( this, 1 );
     }

     Do the same with the EqPB2 ... EqPB5 rules.

* On the Windows platform, a POPUP BOX now always stays on top of
  all windows on the screen.

* The .do attribute did not work correctly if there has been another
  dialog visible. This attribute has been introduced with HP Eloquence
  A.05.02 in order to realize "Cancel" dialogs (dialogs which are
  active outside a DLG DO statement), These dialogs can be used e.g.
  to give the user the choice to interrupt a lengthy operation.

  With HP Eloquence, a sample program is included named "CANCEL.PROG"
  (in the share/example directory) which demonstates the usage of
  the .do attribute.

  The Cancel dialog is contained in the "cancel.idm" file, which must
  be slightly changed in order to work correctly even if another
  dialog is visible. The line containing '.dialogbox false' must be
  deleted (it is marked with '>>>'):

     window CancelDlg
     {
       ...
 >>>   .dialogbox false;   <<< delete this line

* DLGSRV(32) should now accept all relevant Dialog Manager native
  attributes (for example 'edittext!editable'). In former releases,
  the DLGSRV(32) internal list of native attributes was not complete.

  When requesting a native attribute which delivers an object
  identifier, e.g. DLG GET "Object!parent", the corresponding object
  path should be delivered. This did not work correctly in former
  releases and has been fixed now.


RUNSRV(32) Enhancements:
------------------------

Platforms: Windows 16 and 32 bit

* The DDE communications facility has been enhanced. It now allows
  to specify the DDE acknowledge timeout which is necessary if you
  want to perform lengthy DDE transactions (for example, a dialog box).
  In such a case, the default timeout of 10 seconds will expire
  before the transaction can be completed, resulting in an failure
  code returned to the HP Eloquence program.

  To set the DDE acknowledge timeout, apply the following statement:

  CALL DLL Run("RunSrv", hostname$, "DDE .TIMEOUT 30000", Errn, Msg$)

  The "DDE .TIMEOUT 30000" specifies a 30000 milliseconds (30 seconds)
  timeout interval. A timeout value of -1 will disable the timeout
  detection, causing the RUNSRV(32) to wait infinitely for the
  transaction to complete.

  If you omit the timeout value ("DDE .TIMEOUT") the DDE acknowledge
  timeout will be reset to its default of 10 seconds.

  Due to a 16 bit Windows limitation, the maximum timeout value for the
  16 bit RUNSRV is 65534 milliseconds. If you need a longer timeout
  interval, the only choice you have is a value of -1 (infinite).
  This limitation does not apply to the 32 bit RUNSRV32.

  Please note that the default DDE acknowledge timeout (10 seconds)
  will normally be sufficient. The timeout should only be modified
  temporarily and restored to the default after the specific
  transaction has finished. For example:

  ! Set DDE acknowledge timeout to 60 seconds
  CALL DLL Run("RunSrv", hostname$, "DDE .TIMEOUT 60000", Errn, Msg$)
  ! Perform lengthy transaction
   ...
  ! Reset DDE acknowledge timeout to default
  CALL DLL Run("RunSrv", hostname$, "DDE .TIMEOUT", Errn, Msg$)


Installation:
-------------

16 bit Windows:

Unpack the RUNSRV.EXE and DLGSRV.EXE from the pe680819.zip archive
to your ELOQ installation directory. The location of this directory
depends on your previous installation and is normally C:\ELOQ.

Files:

   PE680819.TXT
   RUNSRV.EXE
   DLGSRV.EXE

32 bit Windows:

Unpack the RUNSRV32.EXE and DLGSRV32.EXE from the PE61-9808190-win32.zip
archive to the bin subdirectory of your HP Eloquence installation.
The location of this directory depends on your previous installation and
is normally C:\Program Files\Hewlett-Packard\HP Eloquence\bin.

Files:

   PE61-9808190-README.TXT
   RUNSRV32.EXE
   DLGSRV32.EXE