... which will make it easier to change the types of those containers to
std::vectors of other string-like classes
for wxString,
IsEmpty => empty
Clear => clear
Alloc => reserve
for wxArrayString,
Count => size
GetCount => size
IsEmpty => empty
Add => push_back
Clear => clear
Empty => clear
Sort => std::sort (only with default comparator)
SetCount => resize
Last => back
Item => operator []
Alloc => reserve
It combines the old IdentInterface with the ParamsInterface, providing an identifier and parameters (if needed).
The main purpose of the change is to make the class hierarchy (as viewed via doxygen) much easier to follow.
... This forces a better placement of state variables in the appropriate
classes.
In future perhaps, MenuManager should be splintered into several classes, one
for each of the main toolbar menus.
... A double-height bar can now insert left of two stacked single-height bars.
For instance you can un-dock the Tools toolbar from the default setup, then
drag it back, and now get the same result as you started with.
This revised fix:
- No longer attempts to drive "Default sample rate" from the selection toolbar.
- No longer drives 'Project rate' direct from prefs. It's usual it comes from the project.
- Instead 'Project rate' in the project might change if 'Default sample rate' pref is updated, but ONLY if the project has no tracks.
- When 'Project rate' in the project is updated, that is now always signaled to the selection toolbar. Previously it wasn't.
The Project Rate in the Selection Toolbar and in the Preferences dialog are now the same thing. They ALMOST were before, causing confusion, and this bug.
This means that the fancy mechanism to set 'other' rates in Preferences is moot, since the Selection Toolbar bar does not have that option. 49000 will be overridden by 48000 for example.
... This was motivated by punch and roll recording: it appears most convenient
to pin the head for recording purposes, and drag it near the right, but when
stopping and finding the splice point for the correction, it is better to
scrub unpinned.
... Bug happened only when append-recording by pressing the toolbar button, not
by using a shortcut key; and the blank track did get drawn if you moused over
it or hid and showed the window.
Turns out TrackPanel::ProcessUIHandleResult did the needed update, which was
lacking otherwise. Now TrackList::UpdatePendingTracks is called in another
place.
... All updates of position are done in DoGetRectangle(). Ruler need only
expose one function, DrawOverlays().
Don't redraw indicators twice when dragging (hiding and showing again), making
some flicker. Just do one update.
Now cut-preview and looped play revert to using the old fixed speed play-at-speed.
Unfortunately Scrubbing does not (yet) support looped play or cut-preview.
In particular, device toolbar previously could be made ridiculously small.
Also in the default configuration it takes a whole line, so we now use that space in its initial size.
Mixer Toolbar initial size was a little small. Now it matches the Transport Toolbar width.
Meter Toolbar initial size was too small.
Transcription Toolbar was a little too small. Better to start out slightly wider than previously.
Worth doing for users with wide screens, who want to use the toolbar at full screen width.
Both toolbars can now expand to a little over 2000 pixels width.
Note that the max sizes affect what is drawn. You can make the toolbars wider still, but the sliders inside them won't continue to lengthen.
I moved 'Fit()' from ToolBars into MeterToolBar, because it is a workaround for an incorrect size calculation by MeterToolBar. MeterToolBar is sized as if there is no resizer, so when there is one, the toolbar needs to be expanded (using Fit) to accommodate the resizer.
I also set the min size of MeterToolBar to 150, so that some meter will appear, even if Toolbar shrunk to the minimum.
This adds a new preference to Playback prefs, VariSpeedPlay, on by default, which makes it possible to vary the playback speed slider whilst audio is playing using play at speed. The code uses the Scrubbing playback engine.
This code is not final, but is already useful. Known issues:
1- Playback does not stop and pop-up the Play at Speed button at the end of playing the selection.
2- The scrub widget shows uselessly on the scrub ruler when in Play at Speed mode and the status bar proclaims 'Scrubbing'.
3- At low speeds the playback is clicky, with VariSpeedPlay, even if no changes to speed are being made.
If we can't fix both 1 and 2 by 2.3.0 release time, VariSpeedPlay will be made false by default.
Change the accessible name of the combo box from "Spectral selection" to "Show". It's less verbose, and brings it into line with the "Show" combo box in the Selection toolbar.
... I observed that you couldn't, with a Mac Mini connected to a monitor;
two output devices (monitor and built-in) but no input device (there is no
built in mic)