steppable.c
-----------

   Presents a secure interface to a "steppable" widget, i e, a slider with
adjuster arrow and a writable icon. This is done with only three functions,
but it only works for programmes that use callback lists to process the
events (using (|riscos_| and |callback_|), because it works by installing
lots of event handlers in the callback list for the events that it wants,
and claiming some extra ones.

   |steppable_register| creates the steppable. It has lots of arguments,
most of which it saves in an internal struct. It also registers all the
callbacks it needs.

      |list| the callback list being used by the application
      |w| the window containing all the icons that make up the steppable
      |value| the initial value for the steppable to take
      |min| the minimum value (represented by a length-0 knob)
      |max| the maximum value (represented by a track-length knob)
      |div| the division factor to use when formatting the writable icon
      |knob| icon to use as the knob
      |track| icon to use as the track
      |up| the up-adjuster arrow icon
      |down| the down-adjuster arrow icon
      |writable| the writable icon
      |prec| the number of decimal places to use in the writable icon
      |value_changed_fn| function to call when the value changes
      |caret_moved_fn| function to call when the caret moves to this
         steppable
      |handle| value to pass to these two functions
      |v_out| pointer to the data structure created

   |steppable_deregister| deletes the steppable and frees all the resources
associated with it.

   |steppable_set_value| sets the value directly.
