Readme.txt file for ENFIN Version 4.1 for OS/2
November 14, 1994

This file contains important information you need to know before you use 
ENFIN for OS/2 Version 4.1. Please refer to this information and the 
documentation before calling your local Customer Support Hotline.


The rest of this document contains the following sections:

  *  Important Information
  *  Known Problems
  *  New Features in ENFIN For OS/2 Version 4.1
  *  Add-on Product Information
  *  Available Services from Easel Corporation


====================================================================
IMPORTANT INFORMATION
====================================================================

*	Operating System Requirements
    ENFIN for OS/2 Version 4.1 requires that you run OS/2 Version 2.1
    or higher.

*	Note for New Users
    ENFIN includes a tool, the Apprentice, that teaches you some of the 
    basic ENFIN operations. To start it: 

      1. At the ENFIN Workplace Desktop, press mouse button 2.
         The system displays the ENFIN pop-up menu.
      2. From the pop-up menu, select Apprentice.
 
*	Designer
    Resizing form items in OS/2 now works the same way it works in Windows. 
    To resize a form item in OS/2, drag on a resize handle until the item
    is the size that you want.
    
    When you select multiple form items in the Designer, the selection head 
    is red and the other selected items are blue. This color scheme is 
    consistent with the color scheme used by the Alignment Toolbar.

    To change the selection head to a new item in the group, click on the 
    new designated selection head with mouse button 2.

    The following keyboard commands are available in the Designer:

      Shift+PageUp    Decreases the height of the selected items by 1 pixel.
      Ctrl+PageUp     Decreases the height of the selected items by the 
   	              number of pixels in one square of the grid.
      Shift+PageDown  Increases the height of the selected items by 1 pixel.
      Ctrl+PageDown   Increases the height of the selected items by the
  	              number of pixels in one square of the grid.

      Shift+Home      Decreases the width of the selected items by 1 pixel.
      Ctrl+Home	      Decreases the width of the selected items by the 
                      number of pixels in one square of the grid.
      Shift+End	      Increases the width of the selected items by 1 pixel.
      Ctrl+End	      Increases the width of the selected items by the 
                      number of pixels in one square of the grid.
				
*	Loading Icons for the Designer's New Item Value Set
    In previous versions of ENFIN, the system loaded icons for the 
    Designer's New Item value set when ENFIN started. As of ENFIN Version 
    4.1, the first time you display the New Item dialog box, the system:

      *  Loads the New Item icons.
      *  Registers them as system icons.

    The first time you open the New Item dialog box in each session, there
    may be a short delay. You will not experience this delay the second and
    subsequent times that you open the New Item dialog box.

    If your application relies on preregistered icons with names #Form...,  
    include the following code in your application in order to load the 
    icons: 

      Designer visibleFormItemClasses do: [ :each | each icon. ].

*	Mnemonics for Static Text Boxes and Topic Boxes 

    You can define a mnemonic (a visual indicator of an accelerator) for 
    static text boxes and topic boxes. One use of such a mnemonic is to 
    allow the user to set focus via the keyboard to an item that the static
    text box or topic box labels. For an example of this functionality, see 
    the Load Class dialog box.

    To define a mnemonic for a static text box or a topic box:

      1.  In the Designer, double-click on the static text box or topic box
          to display the Form Static Text Options dialog box or the Form 
          Topic Box Options dialog box.

      2.  In the Text entry field, type the text that should appear on the 
          item. Type a tilde (~) in front of the accelerator character. For
	  example, to define the accelerator Alt+D for the text item, 
          Directory, type the following:
	    ~Directory

      3.  Press the OK button. The system displays the text with the 
          accelerator underlined. In this example, the system underlines the 
          D in Directory.
 
    To define the accelerator associated with the mnemonic, select 
    Form >> Accelerator keys from the Designer menu. You can read more about
    assigning accelerator keys in Using ENFIN Tools.

*	Class Browser
    In the Class Browser, if the Class (methods/variables) radio button is 
    selected and you double-click on a class variable name in the variable 
    list, ENFIN displays the Inspector for the variable you selected.

*	Printing and the OutputDevice class (OS/2 only)
    This section concerns the OutputDevice class.

    The methods availableFontFaces and availableSizesFor: return the
    printer-specific font names. In previous versions of ENFIN, these 
    methods returned the screen fonts. 

    You can still use the screen fonts, but they may be synthesized if they 
    are not available on the printer. Synthesizing a font can be a slow 
    process, because the system either sends the whole font description to 
    the printer, or worse, draws the text using pixel information.

    The availableFontFaces method returns a list of complete font names, 
    including font families and font variations. ENFIN tries to map a 
    specified attribute (for example, bold or italic) and font name to an 
    existing font variation for the printer. You may force the printer to 
    select a specific variation by explicitly specifying the full font name. 
    Compare these two examples:

      stream printText: ('This is an example' asTextDefaultOptions:
	{ { #FontFace #'Helvetica Bold'} {#PointSize 8}}) at: 10 @ 10.

      stream printText: ('This is an example' asTextDefaultOptions:
	{ { #FontFace #Helvetica} {#PointSize 8} #Bold}) at: 10 @ 10.

    The availableSizesFor: fontName method returns an array. When fontName 
    specifies an outline (scalable) font, the first element is 0 for a 
    printer device.

    In previous versions of ENFIN for OS/2, printing to a designated printer 
    by associating a GraphicStream with a particular OutputDevice had 
    printed to the default printer and had ignored the printer specified in 
    the getNamed: method. This has been corrected to use the specified 
    printer.

    Printing under OS/2 to a designated device works by selecting a print 
    queue and a printer device. The combined selection determines how the 
    printing is done. Because ENFIN has no API to select a queue for a 
    PrinterDevice, ENFIN uses the default queue for a particular printer 
    when printing.

    In addition, the availablePrinters method no longer limits the number of
    printer devices it can list.

*	String>>indexOf: nil and String>>indexOf: '' " empty string "
    In previous versions, the indexOf: method in class String returned 1 
    when the parameter was nil or an empty string. In ENFIN Version 4.1, 
    indexOf: now correctly returns 0 for these parameters. If your 
    application depends on a return value of 1, change your code to reflect
    the new return value.

*	Decimal>>unary -
    In previous versions, this method actually negated the receiver. Other 
    unary minus methods in the Magnitude classes returned a copy of the 
    receiver and negated it but did not actually change the receiver. Unary 
    minus for the Decimal class is now consistent with unary minus in the 
    Magnitude classes: it does not change the receiver. The release notes 
    for this method incorrectly state that unary minus for the Decimal class 
    does change the receiver.

*	File class
    The File class provides methods for accessing files on an operating 
    system-independent level. To create an instance of a File, use the 
    following method:

      File name: fileName.

    Some of the other File methods are:

      File>>exists	         Checks for the existence of a file.
      File>>isReadonly	         Checks whether a file is read-only.
      File>>isDirectory	         Checks whether the filename points to a 
                                 directory rather than to a regular file.
      File>>openAndLockForWrite	 Locks a file and prevents other 
                                 applications from writing to it.
      File>>closeAndUnlock	 Unlocks a previously locked file.
		
    For additional methods, refer to the reference text in the Class 
    Browser.

* 	Icon>>loadFile: fileName and Bitmap>>loadFile: fileName methods
    The loadFile: methods in classes Icon and Bitmap search for the file 
    named in the parameter. If the fileName parameter specifies a relative
    path and the file is not found relative to the current directory, then
    loadFile searches for the file relative to the ExecutablePath directory 
    (the directory where ENFIN was installed). If you want loadFile to fail
    in this situation instead of searching ExecutablePath, use the private 
    versions of the two methods.


====================================================================
KNOWN PROBLEMS
====================================================================

*	Problem with empty notebooks on OS/2 3.0
    On OS/2 Version 3.0, if a notebook with no pages has focus and the user
    presses the Tab key or the Enter key, an ENFIN crash results. To work 
    around this problem, ensure that each notebook has at least one page.


====================================================================
NEW FEATURES IN ENFIN FOR OS/2 VERSION 4.1
====================================================================

This section lists the new features for ENFIN Version 4.1. For more 
information about each change, please see the release notes.

The following tools are new in ENFIN Version 4.1:
  *  Text Editor, a full-featured ASCII text editor, which you can use to 
     edit code, and which you can use as a form item to include it in your
     application.
  *  String Finder, a tool that allows you to search multiple files for text.
  *  Small Program Generator, a tool that allows you to create an 
     application image that is as small as possible.

The following tools have undergone significant changes in ENFIN Version 4.1:
  *  Designer, now includes an Event Editor, a Method Editor based on the 
     Text Editor, new form items, an Alignment Toolbar, and the ability to 
     create reusable interfaces and interface components.
  *  Workspace, now based on the Text Editor, includes a toolbar, a pop-up 
     menu, and a status line.

ENFIN Version 4.1 includes the following communications changes:
  *  ENFIN now includes networking via TCP/IP.
  *  ENFIN now supports Named Pipes on OS/2.

ENFIN Version 4.1 includes the following database support changes:
  *  ENFIN for OS/2 now supports Sybase Open Client Version 4.6.
  *  ENFIN for OS/2 now supports dBase. The interface is the same as for 
     the Windows version of ENFIN.

ENFIN Version 4.1 also includes exception handling primitives.


====================================================================
ADD-ON PRODUCT INFORMATION
====================================================================

*	TCP/IP Support
    The Peer Option now includes TCP/IP support.

*	Named Pipes Support
    The Peer Option now includes Named Pipes support.


====================================================================
AVAILABLE SERVICES FROM EASEL CORPORATION
====================================================================

*	Customer Support Hotline
    If you have questions after reviewing this file, we encourage you to 
    call the appropriate Customer Support Hotline for your location. If you 
    are in the United States or Canada, you can reach the Hotline at 
    (617) 221-2400, from 9:00 AM to 8:00 PM Monday through Thursday and 
    between 9:00 AM and 5:30 PM on Fridays, Eastern Standard Time. 

    If you are outside the United States and Canada, call the technical 
    support organization of your local Easel Corporation subsidiary or 
    affiliate. For information on your local support organization, see the 
    ENFIN 4.1 Help Icon under the section for Object Studio Customer 
    Services, International Representatives. 

*	Training
    Easel Corporation offers a proven training program to help you build 
    successful object-oriented applications with Object Studio. The 
    Object Studio courses are:
 
      *  Introduction to ENFIN and Smalltalk (4 days)
      *  Object-Oriented Analysis and Design (3 days)
      *  Developing SQL Applications with ENFIN (2 days)
      *  ENFIN and EHLLAPI (1 day)
      *  Introduction to Synchronicity (2 days)

    You can request course descriptions, a training schedule, a registration 
    package, and onsite class information. If you are in the United States 
    or Canada, call a Training Representative at (617) 221-2400. If you are 
    outside the United States and Canada, contact your local support 
    organization.

*	Consulting Services
    Our team of experienced consultants is ready to help you meet the 
    challenges of implementing object-oriented client/server technology. Our 
    consultants will guide you through object-oriented analysis and design, 
    implementation, testing, and performance tuning. We provide a variety of 
    services, including: 

      *  Strategic guidance
      *  Project leadership
      *  Mentoring and skills transfer
      *  Tools and methodologies
      *  Experienced application development resources

    For further information about services available in the United States or 
    Canada, call a Consulting Services Representative at (617) 221-2400. The 
    services available outside of the U.S. and Canada may vary. Contact your 
    local Easel Corporation representative for further information. 

*	EaselFax
    You can use our automated FAX support system, EaselFax, which contains 
    technical documents for beginners and advanced users, as well as 
    information on our training services. In the United States or Canada, 
    call EaselFax at (617) 221-2495 and a voice menu will guide you through 
    the system. After you make the appropriate selections, the information 
    that you request will be faxed to you automatically. Order a catalog 
    first for a list of the available documents. If you are outside the 
    United States and Canada, contact your local support organization for an
    up-to-date listing of available documents. 

*	Easel Exchange
    If you have access to a modem, you may contact Easel Exchange, our 
    CompuServe electronic bulletin board system, by entering GO EASEL at any 
    CompuServe prompt. Through the Easel Exchange, you can direct questions 
    to Easel staff and ENFIN developers from other companies, or download 
    information and sample code from our library of technical information. 
    Contact your local Customer Support Hotline or EaselFax for information
    on how to join our Forum. 

