Changes in AudacityProject::SaveAs() warning dialogs, per 'Save Project warning' discussion on audacity-quality, plus some further changes of my own.
Similar changes for 'Save Compressed Project'.
Added Cancel button to both warnings, so user can opt out immediately, rather than have to wait another dialog.
Added wxMessageBox's best 'warning' icon to our WarningDialog constructor, so it shows in title bar. It's low-rez (32x32), but all that's available with wxWidgets 2.8.12. Easy to remove if too ugly.
Must more extensive review of saving state
Try this one David. I reviewed all actions in Menus.cpp and have added state
saving where it seemed to be missing. I had no idea it would be so many (22).
And that was only reviewing Menus.cpp. I believe that will get them all since
all keyboard actions are tied to a menu or command action and they all go
through Menus.cpp. (I still have a few to review in TrackPanel.cpp though)
This is part 2...
Improve performance of selection via Selection bar
This provides a similar type of speed up when selecting with the keyboard via
the Selection toolbar.
This is part 1...
Provides some relief to the selection "hang"
This patch adds the ability for the keyboard based commands (like cursor left,
extend selection right, etc.) to know when the key has been released.
When the patch is applied the current state is saved only when the key is
released and not every time it repeats.
Here's an example of the difference it makes.
This video show the selection "hang", but also watch the CPU usage. All I'm
doing is pressing SHIFT+RIGHT ARROW.
http://youtu.be/tdMntDwGSkM
This one is the same thing bug with the patch applied. Notice that the
selection "hang" no longer occurs and look at the CPU usage!
http://youtu.be/EpXNsQ4Cky0
Make Snap To project specific
This makes the Snap To setting in the selection bar project specific. Changing
it will no longer affect other open projects.
The state is saved to audacity.cfg when the checkbox is changed. This means
that the next project window to open will start with the new value. (As it
should be).
This is an older one...originally from 2011. Bug says it all, but basically it allows logging
to begin immediately upon startup for all platforms. And it has multithreading protection, so
it should now be safe to log from the non-GUI threads.
One tricky aspect was that until GetActiveProject() is ready to return non-NULL, ControlToolBar::RegenerateToolsTooltips() cannot get the project's CommandManager, so cannot get the shortcuts. Changed ControlToolBar::RegenerateToolsTooltips() to be public and now call it late in wAudacityProject(). When called before the project is completely instantiated, in the rewritten ControlToolBar::RegenerateToolsTooltips(), it just sets the tooltips to the names without the keys, pretty much as now -- but I don't think users will ever see that because of the subsequent call.
Anyway, did it in a more programmatic way than the previous code, which reduces string literals duplication.
Btw, I changed the start value for the ID_PLAY_BUTTON because the former value of 0 causes FindWindow() to return the toolbar rather than the button -- wxWidgets bug.
Also got rid of some cruft and applied a few WXUNUSED.