packages icon
 * Copyright 1993 GROUPE BULL
 * Permission to use, copy, modify, and distribute this software and its
 * documentation for any purpose and without fee is hereby granted, provided
 * that the above copyright notice appear in all copies and that both that
 * copyright notice and this permission notice appear in supporting
 * documentation, and that the name of GROUPE BULL not be used in advertising
 * or publicity pertaining to distribution of the software without specific,
 * written prior permission.  GROUPE BULL makes no representations about the
 * suitability of this software for any purpose.  It is provided "as is"
 * without express or implied warranty.
 * GROUPE BULL disclaims all warranties with regard to this software,
 * including all implied warranties of merchantability and fitness,
 * in no event shall GROUPE BULL be liable for any special,
 * indirect or consequential damages or any damages
 * whatsoever resulting from loss of use, data or profits,
 * whether in an action of contract, negligence or other tortious
 * action, arising out of or in connection with the use 
 * or performance of this software.

An inset object is a formatted data, displayed in an application window
by another application (as it is done under MS-Windows using the OLE-2 
Typically, when you want to include a spreadsheet in a text edited with 
a word processor , you can do this by two ways:

- copying the image from the spreadsheet editor into the text editor, this 
  is done by including the bitmap representation of the spreadsheet. I you
  modify the spreadsheet in the spreadsheet editor, you must do again the 

- creating an inset and asking to a spreadsheet editor to display the data. 
The inset method requires a multitasking, (to run at the same time the text 
editor and the spreadsheet editor) and a communication mechanism between 
these two applications. This way allow to edit and modify the insetted data
"in place" (e.g. through the text editor, under control of the spreadsheet 

This library is intended to provide some "inset" facilities based
on the X toolkit. It is only a prototype which will be extended in
the future in order to handle a more powerfull inset protocol.

Right now, this is a very very small step towards a global inset protocol,
but I'd like to find people interrested in this subject to discuss on it
in the news or by mail, that's why I make this announce.

The INSET mechanism is divided as two parts: 

- An INSET CLIENT is an application that wants to display datas of an
external format, so it creates an INSET AREA and asks for a server able
to display its king of data.

- An INSET SERVER is another application which waits for inset clients.
When a new client is created, the inset server uses the INSET AREA of
the client to display the data.

The communication layer, which is very basic,  allows synchronous calls
between two applications and uses only properties so that we can communicate
between different architectures (I tried between Ultrix and Sun). This layer
should be rewritten using a more powerfull communication system...

The protocol is handled by two widgets (Inset and InsetShell).
These widgets support the Intrinsic geometry managment protocol from 
the client to the server (but not yet from the server to the client).

    (see the servers/xpm.c and clients/aw.c files)
    - client side:
    Create an Inset widget just as you would do for a button or a label, 
    giving some resources about the "insetted" data.
    - server side:
    When a client is created, a user callback is called, so that you can 
    create any widget hierarchy starting from an InsetShell (intead of you
    standard ApplicationShell). The whole communication is supported by 
    the two widgets, so that you can write your server application 
    exactly like a standard Xt application.


For any comments, ideas, suggestions, please use email,

Jean Michel LEON  - BULL Research France -- Koala Project
Email :

       |            Office              |
| Mail |  Inria Sophia Antipolis        |
|      |  BP 93                         |
|      |  06902 SOPHIA ANTIPOLIS Cedex  |
|      |  FRANCE                        |
|Phone |                   |