... and some parts of drawing too (snap lines and zoom boxes)
Many new source files
No UI changes intended, except:
small changes in drawing zoom boxes (hide narrow enough boxes)
update display of selection as you drag the selected label (not just at
mouse up)
status bar preview messages for clicks on cutlines or clip boundaries
ESC key is implemented for all drags -- including now those which would
make new Undo items if they completed -- and in all cases, "should"
restore the state of the project as it was at button-down, though some
details are not yet right for restoring the set of selected tracks
A TrackPanelCell abstract class dispatches keystroke and mousewheel events;
subclasses for vertical rulers, track control panels, and tracks provide
overrides.
TrackPanelCell also has a hit test routine that returns a status message,
a preview cursor, and an object that inherits from abstract class UIHandle.
UIHandle in turn implements policies for click, drag, release, ESC key,
drawing of extra decorations during drag, and cursor and status message changes
during drag.
There are eighteen (immediate) subclasses of UIHandle, for:
Note track channel buttons
Other pushbuttons (close, menu, mute, solo, minimize)
Sliders (pan, gain, velocity)
Note track stretch
Selections (new, extended with Shift, spectral)
Envelope editing
Sample editing
Zoom tool
Time shift
Wave track vertical ruler clicks and drags
Note track vertical ruler clicks and drags
Clicking a cutline or clip boundary
Dragging or stretching a label
Clicking a label box and selecting text within it
Other clicks on Label track
Resizing a track or channels of a stereo track
Clicking TCP to select and dragging to rearrange tracks
Click on the empty area, to deselect all tracks
A few of these have effects at button-down; others not until button up, and
such have ESC key implemented.
Perhaps it would be better that all clicking actions are consistently delayed
until button up?
...no actions reimplemented to them yet.
Later commits will move special cases one at a time from TrackPanel, preserving
all click and drag capabilities at each step. With a few exceptions, but those
lost abilities are restored in yet later commits. (Ctrl+Click on the Label
track being one.)
... ALWAYS exclude margins from the reported rectangles! All three cases.
This fixes minor discrepancies between display and interaction in other hit
tests, such as for spectral selection, draw tool, and envelope.
The smudgy gray outline of a stop watch in the track control panel has now been replaced by a more distinct version, that has transparency and so the colour for the TCP shows through.
... There is some duplication with the older draw functions, but these are
soon to be removed.
The draw functions may even be called without a TrackPanel or Track object,
displaying default values.
This ability is not yet used.