Commit Graph

475 Commits

Author SHA1 Message Date
Leland Lucius c04ed76b6b AUP3: Fixes a couple of reported issues
Add the missing "File -> Save Project -> Backup Project..." menu item

Allows "File -> Save Project -> Save Project" to save unmodified
projects.
2020-07-03 14:38:57 -05:00
Paul Licameli 127696879d
Unitary changes (#599)
* Define SampleBlockFactory replacing static members of SampleBlock...

... This will become an abstract base class

* Sequence and WaveTrack only store SampleBlockFactory not Project...

... This adds a dependency from Track to SampleBlock which temporarily enlarges
a cycle in the dependency graph

* Register a global factory of SampleBlockFactory...

... so that later we can make an abstract SampleBlockFactory, separate from the
concrete implementation in terms of sqlite, and inject the dependency at startup
avoiding static dependency

* New concrete classes SqliteSampleBlock, SqliteSampleBlockFactory...

... separated from abstract base classes and put into a new source file,
breaking dependency cycles, and perhaps allowing easy reimplementation for other
databases in the future.

Note that the new file is a header-less plug-in!  Nothing depends on it.  It
uses static initialization to influence the program's behavior.

* Compile dependency on sqlite3.h limited to just two .cpp files...

... these are ProjectFileIO.cpp and SqliteSampleBlock.cpp.

But there is still close cooperation of ProjectFileIO and SqliteSampleBlock.cpp.
This suggests that these files ought to be merged, and perhaps ProjectFileIO
also needs to be split into abstract and concrete classes, and there should be
another injection of a factory function at startup.  That will make the choice
of database implementation even more modular.

Also removed one unnecessary inclusion of ProjectFileIO.h

* Fix crashes cutting and pasting cross-project...

... in case the source project is closed before the paste happens.

This caused destruction of the ProjectFileIO object and a closing of the sqlite
database with the sample data in it, leaving dangling references in the
SqliteSampleBlock objects.

The fix is that the SqliteSampleBlockFactory object holds a shared_ptr to the
ProjectFileIO object.  So the clipboard may own WaveTracks, which own WaveClips,
which own Sequences, which own SqliteSampleBlockFactories, which keep the
ProjectFileIO and the database connection alive until the clipboard is cleared.

The consequence of the fix is delayed closing of the entire database associated
with the source project.

If the source project is reopened before the clipboard is cleared, will there
be correct concurrent access to the same persistent store?  My preliminary
trials suggest this is so (reopening a saved project, deleting from it, closing
it again -- the clipboard contents are still unchanged and available).
2020-07-02 18:11:38 -05:00
Paul Licameli b4ce083185 Prevent possible dangling pointers to Project from Clipboard 2020-07-01 18:38:45 -04:00
Leland Lucius d39590cf41 AUP3: First round of updates
!!! THERE WILL NO DOUBT BE BUGS !!!

This is a big one and there's still several things to
complete. Just want to get this in the wild to start
receiving feedback.

One big thing right now is that it will NOT load pre-aup3
files.  An importer is on the way for that.
2020-07-01 02:30:18 -05:00
Leland Lucius cbf1bb558e AUP3: Removes OD code related to project file handling
This removes all of the OnDemand code embedded throughout
    the main codebase. Individual files related specifically
    to OD have been left in place, but removed from the build.
2020-07-01 01:14:05 -05:00
Paul Licameli da93757401 Remove ImportRaw.h from other headers 2020-06-13 12:19:38 -04:00
David Bailes ce07da936c Bug 1549: Retrieve Region does not ensure it is visible 2020-06-10 12:43:28 +01:00
Paul Licameli 1bce7c1979 Disambiguate "Silence" 2020-06-06 15:14:42 -04:00
James Crook 6f20ca2403 Fix ResetConfiguration Device Toolbar Size
The device toolbar was coming out too short after a 'ResetConfiguration'.
The upgrade detection process was messing with it.  The fix is to
remember what version we are on.
2020-06-05 21:10:38 +01:00
James Crook fb8214afc9 Reset session data directory on a Reset Configuration. 2020-06-03 13:28:47 +01:00
David Bailes 8e6c5c0027 Tools menu: fix duplicate access key 2020-06-03 08:20:37 +01:00
James Crook 3a537540cc Move ResetConfiguration from Help to Tools menu.
Requested by Peter, and I agreed.
2020-06-02 18:01:18 +01:00
James Crook bc621158b8 Update OnResetConfig
Now it resets the toolbars, and fixes three common 'stuck-in-a-mode' issues.

Paul wrote: "I would move that function [OnResetToolBars(context)] into ToolManager.cpp so it can be called from ToolBarMenus.cpp and HelpMenus.cpp, with neither of those two dependent on the other."
2020-05-31 12:22:08 +01:00
James Crook 0417b2bf41 Bug 2348 - Residual. Don't select new tracks. 2020-05-30 11:54:21 +01:00
James Crook d6f8410d56 Bug 2408 part 2.
Only modify label tracks with sync lock, when they are also part of the sync lock group.  This corrects a problem where edits in a wave track culd affect later label tracks that were not in its group.
2020-05-29 22:37:49 +01:00
James Crook 6b1b9cc088 Bug 2408 - A region label gets split on inserting audio when Sync-lock is turned on 2020-05-29 22:27:04 +01:00
James Crook 6d49228d65 Bug 2439 - Mix and Render to New Track selects left channel of new stereo track 2020-05-29 21:13:37 +01:00
David Bailes ef98e5d25f Help menu: add missing access key 2020-05-29 08:31:50 +01:00
Paul Licameli 9dfa8f205c Rewrite QuickFix button (Dark Audacity) without SetClientData...
... Instead, it's easier to capture data in a lambda and use Bind.

Eliminates client data, casting, and use of the fields of the event object.
2020-05-27 10:32:32 -04:00
James Crook 62c4e10a16 Comment about resetting toolbars in OnResetConfig 2020-05-27 12:16:20 +01:00
Paul Licameli 66c5b76573 Simplify public interface of FileHistory 2020-05-26 10:47:47 -04:00
Paul Licameli 3313b33050 Move helper structure definitions out of CommandManager.h...
... and remove an indirection in handling one of them
2020-05-26 09:49:22 -04:00
James Crook f5afb28f54 Bug 363 - (Part I) Provide a Reset Preferences command inside Audacity
This is the beginning of a configuration reset mechanism within Audacity.
2020-05-25 17:39:33 +01:00
Paul Licameli 1ef29b7a51 Don't encode command options as part of accelerator string...
... also restore the intended meaning of "allowDup" (for debugging checks only),
which had never been properly implemented because the label, not the
accelerator, was scanned for it; see commit f2f7568
2020-05-23 22:41:35 -04:00
Leland Lucius 1efb10cf78 Exclude Window menu if build with wx313
I'm not sure exactly when the Window menu started working again,
but when built with wx313, the system provides the Window menu
just fine on all OSX versions from 10.7 - 10.15.
2020-05-23 21:10:38 -05:00
Paul Licameli db690d94f7 Remove 27 various macro _ ...
... and supply a few missing translations in Dependencies.cpp

And substitute-don't-concatenate in a few places in Internat.cpp
2020-05-23 08:07:24 -04:00
Paul Licameli 2527bdecaf Add and correct various comments 2020-05-23 06:00:56 -04:00
Paul Licameli 1689050c9c Remove duplication of enum definition 2020-05-23 05:37:15 -04:00
Paul Licameli 9c196860db Rewrite sort comparisons for plugin menus...
... Don't concatenate strings just to compare.  Just do easy tuple comparisons.

Results might be different in case one plugin's symbol name, vendor, or family
is a prefix of the other one's.
2020-05-22 20:45:07 -04:00
Paul Licameli 4d09705a73 Change XO to XXO in many more places, with no effects at all...
... because the two macros have the same expansion, and are both checked for
in the --keyword arguments passed to msgfmt by locale/update_po_files.sh.

This commit makes ONLY such changes, and comments in Internat.h.  It is big
but quite harmless.

The intention is to introduce a type distinction in a later release, by defining
XXO differently.  XXO is used where & characters in strings (for hotkeys of menu
items or control prompts) are permitted, XO where not.
2020-05-22 13:07:50 -04:00
Paul Licameli d8a096ba03 Correct placement of i18n-hint comments for plurals, no dummies needed 2020-05-22 12:48:49 -04:00
Paul Licameli f8a070dde7 Rename macro wxPLURAL as XP (brief, and eliminates mention of "wx") 2020-05-22 12:48:49 -04:00
Paul Licameli 2e3c072fd5 Bug1119: Windows menu on Mac should list all project names...
... Reimplemented without making dependency cycles.

Project and ProjectFileManager publish events for change of active project or
change of a project title.

WindowMenus.cpp can listen for those events, so that it can update the menu
appropriately.  So it's all done nonintrusively in the rest of the code.
2020-05-22 10:09:47 -04:00
Paul Licameli ecb65f8c2b Bug2436: Cross-project paste should duplicate block files...
... to avoid data loss!

Bug caused by commit c2feee6
2020-05-18 10:57:23 -04:00
James Crook 075fb54bbb Bug 2128 - Residual: One update to error messages was missed. 2020-04-25 10:01:47 +01:00
Paul Licameli eb92fc07bf
Bug1119 residuals... (#496)
... Fix assertion violations when language isn't English
2020-04-21 13:21:05 -05:00
James Crook 018a8681ef Revert changes for Bug 1119 made by Paul.
These changes were made too close to release and are considered too dangerous for 2.4.0.
We will use the changes Leland provided.  We can review these proposed changes by Paul after 2.4.0 is released.
2020-04-21 17:45:16 +01:00
Paul Licameli c3d0d0370b Bug1119: Windows menu on Mac should list all project names...
... Reimplemented without making dependency cycles.

Project and ProjectFileManager publish events for change of active project or
change of a project title.

WindowMenus.cpp can listen for those events, so that it can update the menu
appropriately.  So it's all done nonintrusively in the rest of the code.
2020-04-21 12:36:43 -04:00
Paul Licameli 3348e2fecd Revert fix for bug 1119, which made bad dependency cycles
This reverts commit 4475dee373.
This reverts commit 18cbc2e574.
2020-04-21 12:28:39 -04:00
James Crook ef659ed822 Bug 2128 - (Residual) Better error messages for mismatched rates. 2020-04-20 20:45:42 +01:00
SteveDaulton 70b7487820 Bug 2128 fix
Fixes incorrect recording speed when Track rate not matched to Project Rate.
Fix by binarywisdom. Pull request 423.
2020-04-20 18:54:25 +01:00
Leland Lucius 4475dee373 Forgot to add new file 2020-04-18 02:05:16 -05:00
Leland Lucius 18cbc2e574 Bug 1119 - Mac: Window menu's list of open windows not available 2020-04-18 01:49:17 -05:00
Leland Lucius b68c417d8e Bug 2382 - Timer record: if a labels are present recording starts at last label position - not cursor position 2020-04-14 12:28:03 -05:00
Yuri Chornoivan d1ada5f08c Fix minor typos 2020-04-11 10:06:24 +01:00
Paul Licameli 61abb87a77 Reviewed all i18n-hint comments...
... Moved many misplaced ones, which msgfmt would not have extracted into
audacity.pot.

Duplicated some of them, to appear with related but distinct msgids.

Added a few new comments.

Deleted one that was no longer needed in ProjectManager.cpp.
2020-04-05 09:00:00 -04:00
David Bailes d35150911a Extra menu: remove duplicate access keys 2020-03-26 09:40:02 +00:00
Paul Licameli c2feee6cea Bug2346: Complete fix...
... without making undesirable dependency cycles.

Eliminate calls to NewWaveTrack in effects, but in Edit>Copy too, which was
not mentioned in the bug report.  (Copying a track, deselecting all, and pasting
preserved CLIP colors, but not the TRACK color setting which applies to newly
generated clips.)

Instead, always use the new function WaveTrack::EmptyCopy from the track to be
later replaced, getting color information.

NewWaveTrack is still used in benchmark test, import, the Track menu
commands that make new tracks, recording to new tracks, and generators without
a selection, where there is no track to copy from.

Also when deserializing tracks from the .aup file, in which case the saved
color is later retrieved from the file.

Also, in mix-and-render, where other logic decides whether to copy colors
afterward.

See commit a9658e6ef7
2020-03-10 22:32:23 -04:00
Paul Licameli 06b2831d9b Some compilation fixes for EXPERIMENTAL_DA 2020-03-10 16:37:19 -04:00
David Bailes 72e24b82d2 Mute/Unmute selected tracks: change names of commands
Commands for muting and unmuting the selected tracks were added in commit 6d30936.
This commit:
1. Removes the word selected, as the user would already assume this to be the case, and the other commands in the Tracks menu which act on the selected tracks do not include the word selected.

2. Fix the duplicate access keys.
2020-03-10 08:41:54 +00:00
James Crook 91bf05d18c Clearer code for OnPlayStop
The function naming is unfortunate as it is not clear that this
is a toggle between Play and Stop.  Added comments, renaming,
and split a function, and removed a little duplication.
2020-03-09 11:12:41 +00:00
Robert Hänggi 194855b738 Fix some Indentation 2020-03-09 10:14:35 +00:00
Robert Hänggi 2d46db2c5f Implement 2347 and 2348, Loop Play with next/previous Label
2347: Loop Play starts now at cursor position even if no time selection present
2348: Mode is preserved when using Next/Previous Label during Loop Play
2020-03-09 10:14:35 +00:00
James Crook 9056eed946 Permit track muting/unmuting from menu whilst playing.
This makes these commands/menu-items more useful.
The track mute buttons operate during playing, so so should the menu version.
2020-03-07 22:59:34 +00:00
Lukas Werling 6d30936d68 Add commands for muting/unmuting selected tracks
There was no convenient way of muting or unmuting some, but not all
tracks. With the new commands, it is possible to quickly select a subset
of all tracks via Shift+click and then mute or unmute them.
2020-03-07 22:49:52 +00:00
James Crook c60ec1a6e1 Bug 2235 - Timer Record does not shut down Computer if Automatic Save Project is not selected 2020-03-06 20:16:43 +00:00
James Crook a0578f71c3 Bug 2218 - Rendering a single track unnecessarily strips it of its properties 2020-03-02 20:11:39 +00:00
Paul Licameli 72ece7d9bf Bug2314: Zoom in should work during playback...
...bug began at 52ff705b0d

Fixing this in a way that does not make a dependency cycle between ProjectWindow
and TrackPanel
2020-02-25 09:36:26 -05:00
Paul Licameli dfee1b1116 Fix sorting and grouping of effects by publisher 2020-02-20 15:32:49 -05:00
Paul Licameli 5501ac0fc2 Move defs of menu items for changing tools, to be with the toolbar 2020-02-14 14:55:39 -05:00
Paul Licameli d0a99d5ae5 Each toolbar registers its menu item 2020-02-14 14:51:11 -05:00
James Crook a09885e995 Fix Big Time TimerToolBar, Stage II
- Naming (Time Toolbar, not TimerToolBar Toolbar)
- Default time format hhmmss
- Lower dock
- Enabled by default
- Sensible min and max font size
- Sensible min and initial width
- Omit Audio Time from Selection Toolbar
2020-02-06 09:40:30 +00:00
Paul Licameli 446ee8ef6e Separate subclass ToolbarMenuVisitor from MenuVisitor 2020-02-04 12:15:24 -05:00
Paul Licameli db224895b0 Bug2302: Don't make separators at bottoms of menus on Win & Linux...
... Fix it by demoting the logic for separators from the menu tree diagnostic
into the common MenuVisitor class, then reusing that.
2020-02-04 00:41:31 -05:00
Paul Licameli 675f59b21f Alternative Windows build fix, should fix the run too 2020-02-02 09:08:47 -05:00
Paul Licameli 79a4c519c0 Fix Windows build 2020-02-02 08:27:51 -05:00
Paul Licameli eb86a1eab7 Fix assertion in OnFullScreen command 2020-02-01 13:00:02 -05:00
Paul Licameli 7f4d61257a Command manager stores checkmark predicates...
... and we use them to simplify (the misnamed) MenuManager::ModifyToolbarMenus.

It looked wrong that statically constructed menu descriptions should ever hold
constant boolean checkmark values, rather than functions to re-eveluate the
checkmark state as needed.
2020-02-01 12:53:55 -05:00
Paul Licameli 4d43967add Restore commit c1d129ec98 2020-01-31 23:51:12 -05:00
Paul Licameli 2c25a37994 Revert to a465ce0046 2020-01-31 22:34:25 -05:00
Paul Licameli 1061c98b9f ViewMenus not link dependent on ToolbarMenus 2020-01-31 21:22:47 -05:00
Paul Licameli ffe101f9a2 TransportMenus not link dependent on SelectMenus or Scrubbing 2020-01-31 21:22:47 -05:00
Paul Licameli 09356f7fe7 EditMenus not link dependent on LabelMenus 2020-01-31 21:22:47 -05:00
Paul Licameli 02c5557054 Remove link dependencies on ClipMenus.cpp, register its menu items 2020-01-31 21:22:47 -05:00
Paul Licameli 6225043ff3 ExtraMenus.cpp not link dependent on external sub-menu definitions...
... They use the registry
2020-01-31 21:22:44 -05:00
Paul Licameli de08d9ff86 Menus.cpp no longer link dependent on top level menu definitions...
... They all use the registry.

(This link dependency was not shown in diagrams generated by scripts/graph.pl,
because it was not reflected in Menus.h but was done using extern declarations
within Menus.cpp.  That was a cheat, but it let all the other dependencies
be exposed in the graph and mitigated first.)
2020-01-31 21:12:36 -05:00
Paul Licameli d9d3f95570 Several nonmodal top level window tools register their menu items...
... removing link dependencies on them from src/menus, so they are now suitable
for moving out into modules.

They are:
Mixer Board
Karaoke (also called Lyrics)
History
Contrast
Plot Spectrum

Their header files are now no longer included anywhere but in their own
implementation files!
2020-01-31 21:12:36 -05:00
Paul Licameli a465ce0046 Naming of many menu sections, so they can be attachment sites 2020-01-31 21:12:36 -05:00
Paul Licameli 6b551d10c5 Fix indentations 2020-01-30 12:14:22 -05:00
Paul Licameli a84da3dee1 Remove Separator items from menu descriptions; use Section(...) 2020-01-30 12:12:48 -05:00
Paul Licameli c7fac7ae09 Use class MenuSection in visitors 2020-01-30 11:50:48 -05:00
Paul Licameli 9639ba84f4 Reimplement commit 512c27d, fixing menus & shortcut keys on Windows 2020-01-29 13:39:19 -05:00
Paul Licameli ff2d20f335 Fix identifier string for new experimental command 2020-01-29 12:23:43 -05:00
Paul Licameli ef41b8f2ee Fix static initialization order problem for more ReservedCommandFlags 2020-01-29 11:24:25 -05:00
Paul Licameli 873d067e74 CommonCommandFlags does not depend on LabelTrack 2020-01-28 17:49:28 -05:00
Paul Licameli 9093364b8c Fix other problems since commit f6e5696...
... Problem with static initialization order of ReservedCommandFlags, caused
wrong enablement of menu items (at least on Mac), such as Plot Spectrum or
Contrast enabled when there was no selection
2020-01-28 17:49:07 -05:00
Paul Licameli 3c9cd7925a Fix crash on Linux startup since commit f6e5696 2020-01-28 17:39:40 -05:00
Paul Licameli 103a6050a0 Registry::Visit doesn't require an AudacityProject 2020-01-26 16:22:49 -05:00
Paul Licameli 27ffd9c8fb Implement alpha-only diagnostic command to dump the menu tree...
... This demonstrates the possibility of visitation of the menu tree specifying
other actions.

This dumps the internal path identifiers of the registry -- not the user visible
names.

Note that lines don't exactly correspond with menu items, where there are
command groups such as Align, or special steps such as population of the
recent files sub-menu.

Perhaps this should be adapted as another case of the GetInfo macro command.
2020-01-25 15:10:02 -05:00
Paul Licameli 393a098b69 Store a string identifier in each menu item...
... which is not yet used for anything.

It could be used to describe textual paths for attaching plug-in menu items.

Strings are only path local, not necessarily globally unique, and may be
left empty for separators and for groups that should be transparent to
path identification.

It may also be empty for certain sub-menus, such as those that group effects
according to the changeable criteria in Preferences.
2020-01-24 18:05:56 -05:00
Paul Licameli f6e5696146 Most functions defining menus compute once and cache the result...
... Except a few where project or plugin manager state or preferences are
needed to compute the items, so evaluation is delayed, often inside lambdas

Comment "Delayed evaluation" wherever there are exceptions
2020-01-24 18:05:56 -05:00
Paul Licameli 93c2bb9322 Delay evaluation of checkmark states...
... so that more menu item descriptions can be statically constructed once only
2020-01-24 18:05:56 -05:00
Paul Licameli 512c27d422 Simplify the FN macros in src/menus/*.cpp...
... Eliminate repetitious passing of the finder function into each of the
calls to Command and CommandGroup.
2020-01-24 18:05:56 -05:00
Paul Licameli 1f283a8981 Fewer includes of WaveformSettings.h, SpectrogramSettings.h...
... See ultimate origin of some of the deleted lines at 4724c6a

Whatever change it is that needs loading by LoadPrefs -- do it instead right
after any possibility of changes to the relevant preferences, in the Commit()
functions of SpectrumPrefs and WaveforPrefs
2020-01-19 19:11:14 -05:00
Paul Licameli 2570b56176 Rename Maybe and its members more like std::optional of C++17 2020-01-19 11:38:12 -05:00
Paul Licameli 7cff170cf7 Sub-view objects report their complete type, not just an enum value 2020-01-18 20:28:53 -05:00
Paul Licameli 6eb0f3aca1 Move SpectrumAnalyst into its own files...
... It's the pure calculation common to the Plot Spectrum window and
to spectral editing

This removes some dependencies on FreqWindow
2020-01-18 13:38:19 -05:00
David Bailes 64079c3f55 Keyboard scrubbing: faster change of direction
If one of the keyboard scrubbing keys is being held down, and the other keyboard scrubbing key is pressed:
1. With current behaviour, scrubbing in the other direction only starts when the original key is released - scrubbing stops and then starts in the other direction.
2. With the new behaviour, scrubbing immediately changes direction, and does not stop when the original key is released - scrubbing does not stop and then start again.

New behaviour:
If one of the keyboard scrubbing keys is being held down,
2020-01-17 09:32:17 +00:00
Paul Licameli 314ede2137 Don't store default sample format in ProjectSettings...
... it's a global preference.
2020-01-07 18:36:34 -05:00
Paul Licameli 7532677781 Revert "Don't store default sample format in ProjectSettings..."
This reverts commit 44d9916f85.
2020-01-07 18:36:28 -05:00
Paul Licameli 44d9916f85 Don't store default sample format in ProjectSettings...
... it's a global preference.
2020-01-07 18:22:38 -05:00
Paul Licameli 54542c532f Eliminate GetActiveProject from FreqWindow.cpp 2020-01-07 16:16:18 -05:00
Paul Licameli 852c07bc58 Eliminate GetActiveProject from WaveTrack.cpp 2020-01-07 16:16:18 -05:00
Paul Licameli a93c4472f5 TrackList has back-pointer to project...
... and Track::GetOwner() is publicized, so that now you can find the
the AudacityProject, if any, that owns a given Track; this will help eliminate
some uses of GetActiveProject
2020-01-06 14:14:21 -05:00
Paul Licameli 91c45dd32a Move static EffectManager::DoEffect into new namespace 2020-01-05 16:11:55 -05:00
Paul Licameli 91536d734f Rename EffectRack.* as EffectUI 2020-01-05 16:11:54 -05:00
Paul Licameli 129c9deb99 Remove GetActiveProject from EffectRack...
... and make one EffectRack window per project
2020-01-04 16:36:55 -05:00
Paul Licameli 390d833229 Remove one more GetActiveProject in a menu command handler 2020-01-04 14:00:32 -05:00
Paul Licameli f0b75832b4 Remove uses of GetActiveProject in some dialogs 2020-01-04 13:55:34 -05:00
Paul Licameli c9a9c06bd0 Pass AudacityProject * into preference panel factories 2020-01-04 12:37:57 -05:00
Paul Licameli c39718fa1f MacroCommands remembers a reference to project...
... Eliminating several GetActiveProject calls, notably including those where
we construct a CommandContext for executing commands.
2020-01-02 13:58:49 -05:00
Paul Licameli 83f7bc6b5c Eliminate some uses of GetActiveProject...
... where there was already a project at hand
2020-01-02 13:15:14 -05:00
Paul Licameli d23569ca10 Construct Exporter with project pointer, fewer GetActiveProject calls 2020-01-02 13:13:48 -05:00
Paul Licameli ece7bd888d Eliminate GetActiveProject in TimerRecordDialog 2020-01-02 13:11:17 -05:00
Loss e787694f07 Implementation of Timer Toolbar
PRL:  Rebased onto recent master, fixed compilation and indentation, added new
files to the XCode project, added an EXPERIMENTAL flag
2019-12-31 17:42:54 -05:00
Paul Licameli 460008f59d One less place that assumes at most two channels in a track 2019-12-31 15:10:11 -05:00
Paul Licameli 8abf3b490f Move an i18n-hint comment 2019-12-31 14:39:52 -05:00
Paul Licameli 353a235708 Bug2224: Should have error message trying to cut without selection...
... I got bitten by problems of static variable initialization order
2019-12-31 12:08:07 -05:00
Paul Licameli 28e19e3e03 Bug2214: Mix and Render should insert new tracks after old tracks...
... or where the old tracks were, if replacing them

This puts the new track in the sync-lock group of the old tracks.
2019-12-30 11:13:18 -05:00
Paul Licameli aa39f9ade2 Rewrite FileNames::SelectFile using FileTypes...
... And more uniformity in the descriptions of file types used in more than
one place

Also fixes missing translations in VSTEffect.cpp
2019-12-29 15:35:04 -05:00
Paul Licameli c64b3cb31f Rewrite FileDialogWrapper using FileNames::FileTypes...
... also removing some repeated code and using the config keys /DefaultOpenType
and /LastOpenType only in Import.cpp
2019-12-29 15:35:03 -05:00
Paul Licameli 4afd93e84e XO for dummy strings and format arguments in uses of wxPLURAL 2019-12-28 23:49:18 -05:00
Paul Licameli 259359a283 Update some calls expecting TranslatableString in disabled code 2019-12-28 23:49:14 -05:00
Paul Licameli 6f80a5c08b FileExtension passed to BuildCleanFileName: no leading dot...
... consistently with the comment describing the type alias FileExtension
2019-12-27 17:44:02 -05:00
Paul Licameli d6d4ee3c29 Reviewed uses of type alias FileExtension, it belongs in more places 2019-12-27 17:40:42 -05:00
Paul Licameli 3f88df06ec Fix inconsistencies in default extension passed to SelectFile...
... It must be empty, or else one extension not including the leading dot;
then correct the string passed to FileSelector in lib-src, which should be
a filename pattern
2019-12-27 11:49:07 -05:00
David Bailes 3a453126e8 Keyboard interface for scrubbing
- There are two new commands: Scrub Backwards and Scrub Forwards.
- These commands appear on the Transport sub menu of the Extra menu.
- The commands have default shortcuts U and I, and are in the standard default set.
- After pressing one of the two keys, playback continues until the key is released. (Note that this means that the command on the  Extra > Transport menu can't actually be used for scrubbing as it executes a KeyDown immediately followed by a KeyUp, but the menu items are needed so that the current keystrokes can be seen and changed.)
- Playback starts from the cursor position, or the start of a time selection if there is one.
- The speed of playback is determined by the zoom level. If the zoom level is normal, then the playback speed is one quarter of the normal playback speed. Zooming in (Ctrl + 1), halves the playback speed, and zooming out (Ctrl + 3) doubles the playback speed. There are minimum and maximum playback speeds of one sixteenth, and four respectively.
- You can scrub to the end of the audio, even if there is an initial selection. In other words, scrubbing forwards does not automatically stop at the end of the selection.
- Normally, when one of the keys is released, the position of the cursor is set to the time when the key was released.
- If during the time one of the keys is pressed the left bracket and or right bracket keys are pressed to set the start and/or end of the selection, then when the scrubbing key is released, the change to the selection made by pressing the bracket keys is preserved - the position of the cursor is not set to the time when the key was released.

This implementation is affected by two existing bugs:
1. Bug 1954 - Clicks may occur starting/pausing play-at-speed or Scrub. (See comment 19 and attached image).
2. Bug 1956 - Windows: MME and WDS playback cursor is buffer length ahead of actual audio playing. This means that on Windows, WASAPI is preferable if scrubbing is being used for the accurate positioning of the cursor.
2019-12-26 10:04:34 +00:00
Paul Licameli 8792e08bb9 MessageForScreenReader takes TranslatableString 2019-12-23 19:22:06 -05:00
Paul Licameli 13417b6d5b ShuttleGui::AddFixedText takes TranslatableString 2019-12-23 19:02:19 -05:00
Paul Licameli acd1158e1b TranslatableString for titles, and spin control and combo prompts 2019-12-23 18:53:00 -05:00
Paul Licameli b404eb7800 TranslatableString for static text box captions 2019-12-23 18:52:37 -05:00
Paul Licameli 1944ac2040 TranslatableString for labels of ShuttleGui buttons 2019-12-23 15:35:48 -05:00
Paul Licameli 8d1dd10dee Fix bug in screen reading of clip selection, introduced at 2e3ba22 2019-12-23 15:20:06 -05:00
Paul Licameli 99c3c29158 Some compilation fixes for EXPERIMENTAL_SCOREALIGN 2019-12-21 00:34:59 -05:00
Paul Licameli 49cab86fc1 TranslatableString for tooltips and status bar messages 2019-12-20 21:54:49 -05:00
Paul Licameli 2007346551 Pass TranslatableString to help, warning, and error dialogs 2019-12-20 21:48:21 -05:00
Paul Licameli dc39f22442 AudacityMessageBox takes TranslatableString message and caption 2019-12-20 21:32:50 -05:00
Paul Licameli ae42397d64 FileNames::SelectFile takes TranslatableString for message 2019-12-20 13:40:20 -05:00
Paul Licameli 1b726f4f09 More TranslatableString in dialog wrapper classes...
... All of the dialog names, and the messages for File and directory dialog
wrappers
2019-12-20 13:40:20 -05:00
Paul Licameli e3ea93a624 Define and use function Verbatim...
... in cases of "TranslatableString" that are not really translated.

This makes it easier to scan the code for such unusual constructions of
TranslatableString, distinct from mere mentions of the TranslatableString type.
2019-12-19 22:49:23 -05:00
Paul Licameli 4eb220e7b9 TranslatableString for undo history short and long descriptions 2019-12-16 14:19:23 -05:00
Paul Licameli 503ccabdd8 TranslatableString caption & message in MessageBoxException 2019-12-16 10:58:05 -05:00
Paul Licameli 53ee9c9800 TranslatableString for titles, names, labels of wxDialogWrappers...
... Found one missed translation in CommandTargets.cpp
2019-12-16 10:58:05 -05:00
Paul Licameli 9a609fe1fe TranslatableString in ProgressDialog 2019-12-14 01:48:15 -05:00
Paul Licameli fe604cf20b Avoid assertion violation on startup that began with commit a8de4d9 2019-12-12 21:25:48 -05:00
Paul Licameli a8de4d9e50 Construct MenuItem with untranslated label, so it can be static...
... and other storage of TranslatableString instead of naked wxString, for
management of menu items, in CommandManager
2019-12-12 15:49:00 -05:00
Paul Licameli aac50ae36e EffectManager returns TranslatableString for family and vendor 2019-12-12 15:30:36 -05:00
Paul Licameli 70ec69fa3d Pass untranslated command labels to CommandManager...
... and deduce whether to exclude from macros inside NewIdentifier, simplifying
argument lists further

Also fix the localization of "..." added to names by PluginMenus.cpp
2019-12-12 15:15:59 -05:00
Paul Licameli 5cbafc6086 Clarifying name change in CommandManager & simplify PluginMenus...
... The purpose of the boolean field in command entries was to exclude certain
menu commands from being steps in macros, because they require user interaction.

Effects are never meant to be excluded, even though they normally have dialogs,
but in the context of macro execution, the parameters are supplied by other
means.
2019-12-12 15:15:59 -05:00
Paul Licameli 2e3ba2204f Rewrites of TranslatableString and reimplementation of wxPLURAL...
... including move-construction of the base string, debug string formatting,
and contexts (not fully implemented)
2019-12-11 14:55:29 -05:00