Preamble
--------

An Entity is a generic object.
An Entity has a name and an optional description.

An EntityGroup is a collection of zero or more Entity objects.
An EntityGroup has a name, and an optional description.
An EntityGroup is also an Entity.

An Alias is a specialised Entity, having a body and a macro key.
A Trigger is a specialised Entity, having a compiled trigger text, raw 
  trigger text, trigger type and body.

Users should be able to delete individual Entities or all Entities within 
an EntityGroup, including that EntityGroup.

Users should be able to export single Entities, EntityGroups, or groups of 
Entities including Entities contained in separate EntityGroups.

Users should be able to import single Entities, EntityGroups or groups of 
Entities including Entities contained in separate EntityGroups.


Importation of Entities
-----------------------

The user should be able to specify a file or URL containing the 
descriptions of the Entities to be imported.

Papaya should present the user with the list of the Entities to be 
imported and ask the user if they want to import each one, and to allow 
the user to select the EntityGroup this Entity should be imported into.  
Where an Entity is imported as part of an EntityGroup the default 
selection should be set to that EntityGroup and the user allowed to change 
it if they wish.  The user should be able to create a new EntityGroup 
during this process.

Exportation of Entities
-----------------------

The user should be prompted for a file to export the Entities to.

Papaya should present the user with a list of the Entities and 
EntityGroups available (probably in a tree) and allow the user to select 
the Entities and EntityGroup he wishes to export.

Example
-------

  - Combat Aliases and Triggers
    . "flee" flee -> flee,flee,flee,flee,flee,flee
    . "disarmed" You have been disarmed! -> get all, wear all, disarm
  - Social Aliases and Triggers
    . "greet" .* the level .* has signed on. -> chat hello $1.
    . "grat" .* has reached level .*. -> chat Grats $1!
    . "lazy greet" hiall -> chat Hello all.  How is everyone today?
  - Spellcasting Aliases
    . "magic missile" mm -> cast 'magic missile' $1
    . "enhanced stre" enh -> cast 'enhanced strength'

The user exports "Combat Aliases and Triggers" and "magic missile".

The receiving user is presented with a list like:

Import  Name				Group

 [ ]   "flee"	   		 	"Combat Aliases and Triggers V"
 [ ]   "disarmed"                    	"Combat Aliases and Triggers V"
 [ ]   "magic missile"               	"Spellcasting Aliases        V"

  [Create New Group]

The user may click on the entity to see the details of that entity (or 
these may be displayed in the table space permitting), and they may choose 
which EntityGroup the Entity should be placed in, from a drop down list 
with the displayed default.

Editing Entities
----------------

Editing entities is done much the same as aliases and triggers are edited, 
with the exception of how they are listed in the "Aliases" and "Triggers" 
dialogs.  There will be only one dialog, with the Entities and 
EntityGroups placed in a tree.

The creation of a new Entity will require that it is placed in an 
EntityGroup.  There will be one default EntityGroup that Entities are 
placed in if the user does not specify a particular EntityGroup.

Each sub-class of an Entity (Alias, Trigger) will implement its own dialog 
for the editing and creation of a new instance of that Entity.  These 
dialogs will be almost identical to the existing Alias and Trigger editing 
dialogs.
