... Unnecessary because transitively included.
But each .cpp file still includes its own .h file near the top to ensure
that it compiles indenendently, even if it is reincluded transitively later.
... except Audacity.h
This forces us to make each header contain all forward declarations or nested
headers that it requires, rather than depend on context.
... 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
... I don't know a good reason why they didn't before. It was ancient (2010)
behavior.
This also means that RollbackState really will properly rollback the selection
too, even when there are redo items.
This simplifies away an odd special case.
AudacityProject::Save() is now batch mode sensitive, and if in batch mode (and not overwriting) will save without prompting.
The loop for applying macros to multiple files now also clears down the project, using the new function ResetProjectToEmpty().
... Vacuous pushes should not happen yet, but may happen after the machinery
for pending track changes is added and used.
This will only detect the case of one new recording track being modified. It
will not detect it if that track is modified, but other tracks exist that are
not modified.
... Don't double-count any block files. Count each only in the latest undo
history state containing it, because you reclaim its space only by deleting
the history at least up to that state.
Block files may still be double-counted between undo history and the clipboard.
In addition, the Xcode project can now build against the 10.6
or 10.7 SDKs. All that is needed is to change the SDK version
and the other settings will change automatically.