Vedeu Cursors
Each interface defined in Vedeu will have a separate cursor named, conveniently after the interface itself.
- The cursor can moved left, right, up or down via events; whether visible or not.
- The cursor can be shown or hidden (independently of the interface).
- The cursor may not be drawn on the border of the interface if a border is defined and visible for any side of the interface.
- The cursor may not be drawn outside of the geometry of the interface, even if a border is not defined or is invisible for the interface.
- The cursor may not be drawn outside of the boundary of the visible terminal.
- The position of the cursor is remembered for each interface.
- The cursor determines that which is shown in the interface via its offset (this allows content to be larger than the interface size and therefore 'scrolling').
- The cursor can be refreshed independently of the interface meaning the content of the interface can change position if needed.
Cursor Events
Note: 'name' is a Symbol unless mentioned otherwise, and can be substituted for 'Vedeu.focus' to use the interface currently in focus.
:\_cursor_origin\_
This event moves the cursor to the interface origin; the top left corner of the named interface.
Vedeu.trigger(:_cursor_origin_, name)
Vedeu.trigger(:_cursor_reset_, name)
:\_cursor_position\_
To ascertain the position of a cursor in a named interface, use the following event (substituting 'name' for the interface name):
Vedeu.trigger(:_cursor_position_, name)
If you want to know where the cursor is without knowing the interface name, you can check which interface is in focus:
Vedeu.trigger(:_cursor_position_, Vedeu.focus)
:\_cursor_reposition\_
Moves the cursor to a relative position inside the interface.
Vedeu.trigger(:_cursor_reposition_, name, y, x)
Cursor Movement Events
Adjusts the position of the named cursor or view in the direction specified. If 'name' is unknown, using 'Vedeu.focus' will use the interface currently in focus.
:\_cursor_left\_
Vedeu.trigger(:_cursor_left_, name)
Vedeu.trigger(:_cursor_left_, Vedeu.focus)
:\_cursor_down\_
Vedeu.trigger(:_cursor_down_, name)
Vedeu.trigger(:_cursor_down_, Vedeu.focus)
:\_cursor_up\_
Vedeu.trigger(:_cursor_up_, name)
Vedeu.trigger(:_cursor_up_, Vedeu.focus)
:\_cursor_right\_
Vedeu.trigger(:_cursor_right_, name)
Vedeu.trigger(:_cursor_right_, Vedeu.focus)