I refactored the code into AudacityApp with a new timer. This is provisional pending discussion - if it is decided that it should go somewhere else I will move it.
At bottom of http://bugzilla.audacityteam.org/show_bug.cgi?id=137#c17:
> I noticed that although when we open the same project a second time with File >
> Open or File > Recent Files we show an error "is already open in another
> window", there is no block on executing the .aup from your file manager and
> opening as many copies of the project as you like. I had not done that when
> Audacity moved the files around in error the first time, but can we block this
> anyway?
This is a different bug from Bug 137, repeatable, and I think lower priority. But I went ahead and fixed it with this commit.
Also fixed previously unnoted bug where AudacityApp::MRUOpen() returned true when it actually failed to open the file. Also removed AudacityApp::OnMRUProject() cruft.
Unfortunately, it still creates a new, empty project window on Win Explorer open whereas Open and Recent Files commands do not. I think that constitutes a new, separate P5 bug.
Overall, this is another aspect of what I was talking about in http://bugzilla.audacityteam.org/show_bug.cgi?id=322#c26. Opening files vs projects got conflated for convenience, but this code is hacked in some regards, rather than being a good design, and that's why this type of bug shows up.
Commit Benjamin's latest patch (with slight rewordings so that if SRC_MAX_RATIO changes again, we don't have to rewrite this message.
Fix looks correct (although partial) to me and USE_LIBSAMPLERATE is off by default anyway.
* Add missing colons to controls text in generators (outside the translatable string, so as to not break translations)
* Also right-justify "Duration" in Chirp and Tone to match other controls.
* TODOs added to possibly move colons back into the translatable string after 2.0 (per Vaughan's suggestion).
In addition, while changing from mode to mode, the Quality dropdown no longer resets to a default value and it remembers how you had them set from session to session.
"ZOBS" (obsolete) tag and adds a "TDRC" tag at the end of the
list of tags using the first 4 characters of the "TYER" tag.
Since we write both the "TDRC" and "TYER" tags, the "TDRC" tag
will always be encountered first in the list. We want use it
since the converted "TYER" tag may have been truncated.
Refer to bugzilla for discussion, but, to summarize, this removes any writing of ID3V1 tags. ID3V1 tags will still be imported, but they will be written as ID3V2 tags.