!Notify version 1.0
written by Adam Curtin 1993 (adam@ifeng.demon.co.uk)

Notify allows immediate communication between Econet stations.

Versions of the NetFiler pre-RISC OS 3 had a "Notify" menu item which
allowed you to send a short message to another station. The message appeared
in an error box on the remote station, which blocked the whole machine until
OK was clicked or Escape or return pressed. If you were in the middle of
typing when a message arrived, the incoming notice box could eat a return
and disappear before you'd had a chance to read it. It was all a bit naff.

In RISC OS 3, the "Notify" item was quietly removed from the NetFiler menu
to be replaced with ... nothing.

There are, however, hooks in the wimp to enable third parties to write
their own much more friendly inter-station communications utilities, and
that's what !Notify is.

It sports a number of wacky features:

  * Takes up no space on the desktop or icon bar, yet it's just a hot-key
    press away when you need it.

  * Pops its window open and to the front when a message arrives,
    ensuring you don't miss anything.

  * Optionally beeps announcing an incoming message in case eg the screen is
    blanked.

  * Accommodates *much* longer messages than the NetFiler notify, with
    each message presented on a single line in a horizontally-scrolling
    window.

  * Allows selection of the message destination from a menu of user names
    rather than net/station numbers. The menu is regenerated each time it is
    displayed to ensure it remains up-to-date. Your own login name is
    greyed out.

  * Optionally sets the destination station to match the sender of the last
    message to allow easy reply and prevent embarrassment!

  * Maintains a log of both incoming and outgoing messages, annotated with
    the source/destination station number (for incoming/outgoing messages)
    and distinguished by colour, making it easy to follow conversations and
    refer back to who said what. The latest message is highlighted in yet
    another colour.

  * scrolls the window to the bottom when a new message arrives, in case
    you're scrolled up the log somewhere.

  * Allows earlier incoming or outgoing messages to be recalled and edited
    for resubmission.

  * Log can be cleared in case it contains incriminating statements

  * Any other station's Notify log can be remotely cleared in case they
    contain incriminating statements!

+------------------------+
| How to use !Notify ... |
+------------------------+

But first: You need Econet of course, and you also need to be logged on. The
program runs even without these, but it's not terribly useful!
If you're really desperate to play with it, you can send messages to station
0.0 - the outgoing message appears in the log but is not sent out.

After starting the program, the only indication that it's running is an
entry in the task manager's "Application tasks" list, but the program is
running, and you are able to receive messages from other stations.

To send a message, first open the window using Ctrl-Tab. This *almost*
always works, but a couple of applications consume Ctrl-Tab themselves. If
one of these applications owns the caret, give the caret to another window.

With the window open, click in the writable field right of the "Station:"
label and type the destination network and station number, eg "0.42" If you
omit the network number it defaults to 0. Alternatively, click menu over the
message composition field and choose a user by name from the list.

Then get the caret in the "Message:" box and type. To send the message,
simply press return. The message box clears ready for the next message,
and the outgoing message is added to the bottom of the log.

To recall an earlier message, simply find it in the log and click on it.
This copies it down to the message field exactly as if you'd typed it in.
Alternatively, with the caret in the message field you can use the up and
down cursor keys to cycle through the entries.

+----------------------+
| The !Notify menu ... |
+----------------------+

Clear ... clears the log. Alternatively, double-click in the log window.
Beep  ... Enables/disables the incoming message beep.
Reply ... Enable/disables the automatic setting of the Station: field when a
          message arrives
Quit  ... Guess.

Beep and Reply are both initially set. They can be turned off using
command-line options, either in the !Notify.!RunImage file, or when starting
!Notify eg from a !Boot file.

The options are "-b" to turn the beep off and "-r" to turn reply address
generation off, eg:

  (in the !Run file)

  Run <Notify$Dir>.!RunImage -r %*0

  (in a !Boot file)

  Filer_Run SCSI::Eidos.$.Adam.Apps.!Notify -t

+-----------------------+
| Clearing a remote log |
+-----------------------+

Send a message consisting of the single character "`" will clear the log in
the receiving station. There's no way of disabling this on the receiving
end as I feel you should be able to insist that your comments are deleted.
This makes it open to abuse but the novelty of clearing someone else's log
soon wears off and does no real harm.

On the other hand, an early version of !Notify allowed any command to be
sent and remotely executed. This had some amusing uses, eg tidying the
pinboard or setting the backdrop to an annoying sprite; some mischievous
uses eg turning the ARM3 cache off or starting a dozen copies of !Paint; and
some destructive uses ... you could easily wipe an entire hard disk,
format a floppy or run a machine-crashing application.

After successfully amusing and irritating some colleagues :-) the thought of
releasing a program with such potential for evil was just too much. This
version has all such code removed.
