1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-12-20 07:31:19 +01:00
Commit Graph

5745 Commits

Author SHA1 Message Date
James Crook
a2eb8cdae3 Support Spectral Selection and Spectrogram mode in Automation. 2018-02-24 14:20:27 -05:00
James Crook
3c5468a1c8 Add buttons. Help and Cancel. 2018-02-24 14:20:27 -05:00
James Crook
f7fe295651 Make Message command into an AudacityCommand. 2018-02-24 14:20:27 -05:00
James Crook
edf90d6e2c Add envelope commands
- Added SetEnvelope (which can also delete/clear an envelope.)
- Added GetInfo: Type=Envelope
2018-02-24 14:20:27 -05:00
James Crook
5d36890cb0 Shorter command names. General tidying.
-More commands now have shorter names for parameters.
-New scripts for generating images.
-Several old-style commands retired.
2018-02-24 14:20:26 -05:00
James Crook
29c96f5470 Add ability to set the selected label. 2018-02-24 14:20:26 -05:00
James Crook
26e1a33369 More screenshot options. 2018-02-24 14:20:26 -05:00
James Crook
5e2371c636 Use a-lists for Lispy output.
- Also bump long strings onto a new line in JSON and LISP formats.
2018-02-24 14:20:26 -05:00
James Crook
510f68e9ad Fix \n shenanigans in command output. 2018-02-24 14:20:26 -05:00
James Crook
65c160212e Script the images for Tracks page of manual.
- There's a problem with stem plot preference.  It isn't reloading properly from batch but is from menu.
2018-02-24 14:20:26 -05:00
James Crook
24e8bbc623 Scripts in Piped-Work
- New docimages script for the tracks.
- Added new option in screenshots to capture ruler as well as track.
- Typo fix (focussed)
2018-02-24 14:20:26 -05:00
James Crook
1f605ccfc8 Fix ScreenshotCommand
- Show Status immediately (Flush), don't wait for window to be closed.
- Correct strings with _ in them.
- Remove unhelpful 'Received Script Command' message.
2018-02-24 14:20:25 -05:00
James Crook
85c36fe7fe Implement selection from ends of tracks. 2018-02-24 14:20:25 -05:00
James Crook
99e18a8896 Implement ReloadPreferences for SetPreferences Command. 2018-02-24 14:20:25 -05:00
James Crook
1551a5a073 Include tips in command list. 2018-02-24 14:20:25 -05:00
James Crook
5c2f35d96f Fix Automation listing
- Now correctly shows optional fields
- Now includes the zero-parameter commands.
- Fetches the Short-Names for menu commands.
2018-02-24 14:20:25 -05:00
James Crook
78fbb6e21f Fix GetInfo: Commands (Automated type matching matched 'the wrong thing'). 2018-02-24 14:20:25 -05:00
James Crook
1d9477a455 SetClip, SetLabel, SetProject added
- SetTrack also updated with more options.
2018-02-24 14:20:24 -05:00
James Crook
2180379a18 Optional parameters now working. 2018-02-24 14:20:24 -05:00
James Crook
c02a29e261 Compilation on Mac
Changes found/recommended by Paul.
2018-02-24 14:20:24 -05:00
James Crook
8ebf502cd6 Cleaner class hierarchy 2018-02-24 14:20:24 -05:00
James Crook
b1b1a362ed Doxygen, Clips and Labels
- Classes renamed and better doxygenated
- GetInfo: Type=Clips added
- GetInfo: Type=Labels added.
2018-02-24 14:20:24 -05:00
James Crook
ca5dac59ff Support: JSON, Lispy or Other formats 2018-02-24 14:20:23 -05:00
James Crook
c0c5cc6337 Structured output for CommandContext 2018-02-24 14:20:23 -05:00
James Crook
b83b862b3f OldStyleCommandType - It's on the way out.
This renaming makes it clearer which code is still using Dan Horgan's Command system.
2018-02-24 14:20:23 -05:00
James Crook
2f6fc0a1e5 Long message target
This allows interactive display of the results of new commands that generate
lots of text.
2018-02-24 14:20:23 -05:00
James Crook
e29699086e More Menus Items, Better prompting Dialogs. 2018-02-24 14:20:23 -05:00
James Crook
1c988b4e3a Automation: AudacityCommand
This is a squash of 50 commits.

This merges the capabilities of BatchCommands and Effects using a new
AudacityCommand class.  AudacityCommand provides one function to specify the
parameters, and then we leverage that one function in automation, whether by chains,
mod-script-pipe or (future) Nyquist.

- Now have AudacityCommand which is using the same mechanism as Effect
- Has configurable parameters
- Has data-entry GUI (built using shuttle GUI)
- Registers with PluginManager.
- Menu commands now provided in chains, and to python batch.
   - Tested with Zoom Toggle.

- ShuttleParams now can set, get, set defaults, validate and specify
the parameters.
- Bugfix: Don't overwrite values with defaults first time out.
- Add DefineParams function for all built-in effects.
- Extend CommandContext to carry output channels for results.

We abuse EffectsManager.  It handles both Effects and
AudacityCommands now.  In time an Effect should become a special case of
AudacityCommand and we'll split and rename the EffectManager class.

- Don't use 'default' as a parameter name.
- Massive renaming for CommandDefinitionInterface
- EffectIdentInterface becomes EffectDefinitionInterface
- EffectAutomationParameters becomes CommandAutomationParameters
- PluginType is now a bit field.

This way we can search for related types at the same time.

- Most old batch commands made into AudacityCommands.
The ones that weren't are for a reason.  They are used by mod-script-pipe
to carry commands and responses across from a non-GUI thread to the GUI
thread.

- Major tidy up of ScreenshotCommand
- Reworking of SelectCommand
- GetPreferenceCommand and SetPreferenceCommand
- GetTrackInfo and SetTrackInfo
- GetInfoCommand
- Help, Open, Save, Import and Export commands.
- Removed obsolete commands ExecMenu, GetProjectInfo and SetProjectInfo
  which are now better handled by other commands.

- JSONify "GetInfo: Commands" output, i.e. commas in the right places.

- General work on better Doxygen.
    - Lyrics -> LyricsPanel
    - Meter -> MeterPanel
- Updated Linux makefile.
- Scripting commands added into Extra menu.
- Distinct names for previously duplicated find-clipping parameters.
- Fixed longstanding error with erroneous status field number which
  previously caused an ASSERT in debug.
- Sensible formatting of numbers in Chains, 0.1 not 0.1000000000137
2018-02-24 14:20:22 -05:00
Steve Daulton
b7b01d48e0 Replace 2.2.2 'Easter Egg' with place-holder 2018-02-24 16:05:41 +00:00
Paul Licameli
bab8ea8393 Thanks for nothing, MSVC std::list<T>::iterator implementation...
... I worked around the unhelpful helps that made gratuitous runtime errors,
in debug builds but not in release.
2018-02-23 14:58:12 -05:00
Paul Licameli
e094dcbaf2 Fix unbalanced #pragma warning since commit 080dd34 2018-02-22 21:01:20 -05:00
David Bailes
a1c03d0f7d Bug 1786: duplicate shortcuts can be created
Problem: When [gui/shortcuts]fulldefaults is true, then you can't clear the shortcut of a command which is only in the full set.
In bool KeyConfigPrefs::Commit(), for a command only in the full set, dkey = "", so if the key is set to "", there will be no entry in NewKeys for this.

In CommandListEntry *CommandManager::NewIdentifier, if [gui/shortcuts]fulldefaults is true, then for all commands the key is initially set to the default. For the shortcut that should have been cleared, there is no entry in NewKeys to override this, so it is in fact not cleared.

Fix: In bool KeyConfigPrefs::Commit(), when [gui/shortcuts]fulldefaults is true, use the full set of defaults to find the default key.
2018-02-22 18:36:39 +00:00
Paul Licameli
2a08a3cc07 Fix windows build...
Defaulted move constructors and assignments introduced at 080dd34 are not
essential but might give a bit more efficiency in std::vector on non-Windows.

Previous compilation fix was incorrect!  Excpliticly defined move assignments
should not have had no-effect bodies!
2018-02-22 12:32:53 -05:00
James Crook
636e137ee8 Merge pull request #257 from Polynomial-C/no_midi
Fix --without-midi build
2018-02-22 17:26:56 +00:00
James Crook
2ece1acae9 Fix build
These changes needed to build on MSVC 2013.
2018-02-22 17:19:14 +00:00
Paul Licameli
d77daa027e OnShowEffectsRack follows the unused argument convention 2018-02-22 00:17:30 -05:00
Paul Licameli
de568fc111 Avoid some needless repaints of AButton 2018-02-21 21:43:04 -05:00
Paul Licameli
44bf938948 indentation 2018-02-21 21:43:04 -05:00
Paul Licameli
942175f27b Comments which IdentInterface functions return persistent values 2018-02-21 21:43:03 -05:00
Paul Licameli
575070e9ae Remove PluginDescriptor::GetTranslatedEffectFamily...
... and instead look it up by ID, and find the effect's family name

Simplifying what was done at 4628d6afa7
2018-02-21 21:43:02 -05:00
Paul Licameli
79a9f3f599 Simplify sorting of effects 2018-02-21 21:43:02 -05:00
Paul Licameli
097764d94c Distinguish Effect Family Id from Effect Family Name...
... and the distinction makes a difference only for built-in effects.

"Id" is meant to persist in pluginregistry.cfg, and is constrained by how
previous versions of Audacity were written.

"Name" is not persistent, so we have the liberty to change it, as done here
for the built-ins.
2018-02-21 21:43:01 -05:00
Paul Licameli
3b32d39b54 Remove wxArrays of pointers 2018-02-21 19:33:32 -05:00
Paul Licameli
8be1e8fdad Remove wxArray(Int|Long|Double) except where wxWidgets fns need it 2018-02-21 19:33:31 -05:00
Paul Licameli
080dd34e61 Get rid of wx object arrays, use std::vector 2018-02-21 19:33:27 -05:00
Paul Licameli
2fbe04eda0 Replace more Connect with Bind; needed redeclaration of custom events 2018-02-21 19:30:40 -05:00
Paul Licameli
e6e8e3251c Rewrite more Connect() with Bind(), which were type incorrect...
... though harmlessly so.  They called to nonstatic member functions of classes
with improper this pointers; though the functions did not use this.

Bind events to nonmember funtions instead.  Sometimes just to empty lambdas to
consume the event and ignore it, blocking other handlers.
2018-02-21 19:28:12 -05:00
Paul Licameli
2f3604bdea Rewrite many calls to Connect() with Bind()...
... it's the more modern way, and does better type checking, without the
dubious casts of pointers-to-member-functions.
2018-02-21 19:28:11 -05:00
Paul Licameli
bf5228267a Calls to Disconnect or Unbind in destructors are not needed, if...
... it's either the source of the connection that is being destroyed, or other
object (such as an ancestor window) transitively owning it and so causing it to
be destroyed too;

or, the sink is being destroyed, and that sink is a wxEvtHandler (which is
always so for Disconnect, though not for Unbind in case Bind was passed a
member function of a non-wxEvtHandler).

wxWidgets takes care of erasing the connection in such cases.

This removes most calls to Disconnect and Unbind.  Many destructors shrank to
nothing.

Notably, in case of popup menu handling, the call to Disconnect is not removable
because the object being destroyed is neither the source nor the sink.
2018-02-21 19:28:06 -05:00
Paul Licameli
12983e1685 Use wxWeakRef to avoid dangling pointer 2018-02-21 19:25:04 -05:00