                           API - Application Interface

BASICS

GoldED offers two message-based application interfaces: ARexx and API.  The  API
interface may be used by third party applications to register with GoldED: after
having registered by sending the API command to GoldED's ARexx  port  they  will
recieve  notify  messages from GoldED. Depending on these messages they can take
approbiate actions (e.g. close their windows  if  GED  is  about  to  close  its
screen,  indicating  this  by sending API_ACTION_HIDE messages to all registered
clients). ARexx usually is used to control a program. The API interface is  used
by GoldED to control the clients.

HOW TO RUN CLIENTS

Clients are launched as programs by GoldED during startup or after usage of  the
API  requester.  The name of GoldED's port is passed as HOST=... argument to the
client. The client is expected to  register  with  GoldED  by  sending  the  API
command  to  this  port,  thus  requesting  notify classes (clients may select a
subset of the available notifys) and providing GoldED with a message port for to
send  notifies  to. The first command sent to the client's port after the client
did register with GoldED will be  API_ACTION_INTRODUCE  (API_CLASS_ROOT  event).
The  client is expected to return a short description of its abilities. The next
command recieved by the client usally is API_ACTION_SHOW (in case the client did
request  API_CLASS_SCREEN  events):  this  is GoldED's request to open a window.
Notifes include a variety of  informations  about  the  editor's  current  state
including  text  of  current  line,  window  dimensions and screen name. Several
example API clients are shipped wiuth GoldED; please have a look at  the  source
codec to understand the basic meachanisms.

RESTRICTIONS

After a client has registered with GoldED it has to be able  to  answer  notifys
immediately  until  the  API_ACTION_DIE command is recieved. It may not exit. It
may not Wait() for signals  unless  the  API  signals  are  included.  To  avoid
deadlock problems, you may not wait for completion of ARexx requests sent to GED
using WaitPort() (thus ignoring incoming API messages).
