... miscellaneous direct uses of ZoomInfo::zoom to test and set zoom level.
This includes all the remaining assignments to it.
But moving TrackInfo::PositionToTime and TrackInfo::TimeToPosition into
ZoomInfo and using them is needed to eliminate many more uses.
Also #if'd out the unused AudacityProject::OnZoomToggle().
wx3 on OSX has changed how the mouse wheel delta is calculated. Prior
to wx3, it was simply set to 1 so the wheel rotaion value was simply
increments of one.
With wx3, higher resolution devices (like touchpads) are supported so
the value for wheel rotation can be a fraction of the delta, so it is
possible to pass a zero value to the NumericConverter::Adjust() method.
Therefore, the method just returns in this case.
Since I ran out of time, I put OSX back to the way it was in
2.1.0...forced locale to en_US. Heck, I'm not sure there is
a "real" fix anyway.
At least, the problem languages appear to be happy now, even
when using the validators.
This removes the TrackInfo's slider "cache".
Originally, the cache would build to the maximum number of tracks you
had created in an Audacity session. So, if you created 128 tracks
and then reduced that to 1, you'd still have 256 sliders, 1 gain and
1 pan per track.
But, the only real thing the cache did was prevent continuous allocations
of sliders since the allocated sliders position and values wer still
being updated nearly with ever interaction since they were redrawn each
time.
In April 2010, the slider cache was changed to reduce its size by
creating a sort of ring buffer based on how many tracks were displayed
and how many tracks were in the project (I guess). Unfortunately, it
didn't really handle large number of tracks and this bug was born.
While trying to find the proper fix for this, I realized that the
cache really wasn't saving anything. Maybe a little when dragging
the thumb, but during normal track redraws and interaction, it really
didn't serve a purpose, other than use additional memory.
So, I've removed the cache and have allocated a single gain and a
single pan slider. As before, their position and value are changed
as needed when drawn and manipulated.
When it is enabled, the project can scroll up to one-half of a screenful
beyond time zero or the maximum track time. I was careful to disable selection
of negative times.
This is motivated by the smooth scrolling scrub. It behaves more sensibly at
the extremes. It can still keep the play indicator centered.
Also removed an unused member of ViewInfo.
Discovered a sizing problem when working on the effect registration
dialog and then found that others had mentioned a similar sizing
issue with the TimerRecordingDialog.
Since we don't actually change the locale when we change languages,
we can't use whatever is defined in the locale for the decimal and
thousands separator.
This is because standard library functions are used to format and
parse numbers and since these library functions use whatever is
set for the current locale, we can use comma for the fraction
separator or the period for the thousands separator.
When the dialog yielded, it opened up a window that allowed events
to flow to other parts of the app that shouldn't be receiving them
while the action is in progress. This could cause odd behavior
or crashes.
I've removed the yields and hopefully the darn thing will still
work right.
This brings the builtin, LV2, and VAMP effects inline with the
Audio Units, LADSPA, and VST effects. All effects now share
a common UI.
This gives all effects (though not implemented for all):
User and factory preset capability
Preset import/export capability
Shared or private configuration options
Builtin effects can now be migrated to RTP, depending on algorithm.
LV2 effects now support graphical interfaces if the plugin supplies one.
Nyquist prompt enhanced to provide some features of the Nyquist Workbench.
It may not look like it, but this was a LOT of work, so trust me, there
WILL be problems and everything effect related should be suspect. Keep
a sharp eye (or two) open.