1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-06-26 17:18:41 +02:00

123 Commits

Author SHA1 Message Date
James Crook
cd06f86619 Remove spaces before question marks (scootergrisen)
Requested by translation team.
2018-03-24 11:01:29 +00:00
James Crook
4617b0b1a8 Change wording: Now "Manage Plug-ins" and "Manage Macros" for those two dialogs. 2018-03-05 20:10:01 +00:00
Paul Licameli
8b68864ddb Fix another compilation warning 2018-03-05 14:22:23 -05:00
Paul Licameli
6cd877efed Fix complier warnings about returning reference to a temporary 2018-03-05 05:16:33 -05:00
James Crook
8cd5d7f4fe Tools menu and EffectTypeTool
- Also add a 'Nyquist Prompt' to the Tools Menu.
- Currently it is the same as the Effects Nyquist Prompt.
- Chains moved into the Tools prompt.
2018-03-03 12:57:32 +00:00
James Crook
8ebf502cd6 Cleaner class hierarchy 2018-02-24 14:20:24 -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
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 4628d6afa7a553a242f00ee8c1be0e72c5692052
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
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
af279072b5 Correct recent comments...
... compatiblity of plug-in settings is the real problem, not the plug-in
registry.
2018-01-16 12:28:21 -05:00
Paul Licameli
4628d6afa7 Remap effect type from "Audacity" to "Built-in", carefully...
... doing that only for the user-visible string, seen in the Manage>About menu
of the effect dialog and in the sorted or grouped Effect/Generate/Analyze
menus.

But don't for the string used internally and written into pluginregistry.cfg,
so that compatibility of that file is preserved.

See also commits cafbff9ff82520ff7d4344570385752869c6d230 and
c6bbe4c3dae8a52bb4b7a3c720af97bc3bd69769
2018-01-16 11:11:36 -05:00
Paul Licameli
bfbc218a5b comments 2018-01-09 14:57:54 -05:00
Paul Licameli
cb403954fa Use std::[tr1::]unordered_(set|map), not the wxWidgets container macros 2018-01-08 18:22:51 -05:00
Paul Licameli
8a074770e8 IdentInterface::GetDescription() returns a translated string...
... See commit 3b90538b84411f6b08e10682406984e5f499fd74 which removed the
only use of the untranslated strings.

Also follows better i18n guidelines for composing the VSTEffect description.
2018-01-07 21:16:26 -05:00
Paul Licameli
c6bbe4c3da Fix subtle error revealed by the previous commit ...
... A "translated" effect family string, plus "/Enable",  was used as a
registry key for lookup!  It is wrong to key on a translation.

But in fact exhaustive search for "/Enable" shows that the only such strings
for which a written (by EffectsPrefs) registry value could be found were

AudioUnit
Ladspa
LV2
Nyquist
VAMP
VST

And none of these was actually a msgid in audacity.pot.  So nothing bad can
really have happened in other locale settings.
2018-01-05 18:39:43 -05:00
Paul Licameli
cafbff9ff8 Separate plugin accessors for translated and unstranslated strings...
... because I want to make a type distinction later.

Replace calls to GetXXX() without argument, with GetTranslatedXXX() --
this reveals a subtle error, see next commit.
2018-01-05 18:30:35 -05:00
Paul Licameli
91b0e82c11 PluginDescriptor versions are in fact untranslated; make that clear...
... though the version (like the description) really wasn't yet used for
anything but to write and read again from the registry, still keep writing it.

Because it is appropriate to write untranslated strings to the registry, and
perhaps the values in old registries really will find a future use.
2018-01-05 18:24:22 -05:00
Paul Licameli
3b90538b84 Remove description from PluginDescriptor...
... it was simply written to registry and read again, serving no other
purpose.

But still write a blank to registry for backwards compatibility of the .cfg
file.

This makes it irrelevant whether the value of IdentInterface::GetDescription()
ought to be localized (registry values should probably not be).

Therefore IdentInterface::GetDescription can return localized, and it's all
right that the return be computed (as in VST effects), rather than
an unlocalized msgid that we rely on as an internal identifier.
2018-01-05 18:24:10 -05:00
Paul Licameli
c66eae1a46 Fix uses of wxPLURAL and update audacity.pot ...
so that
(1) we really get msgid_plural entries in the .pot
(2) i18n-comments get extracted too (needs workaround of xgettext bug)
2018-01-05 00:35:04 -05:00
Paul Licameli
0df94faad8 The message is not in fact a format 2018-01-03 16:55:46 -05:00
Paul Licameli
50d6e75185 null checks -- fix Linux crash in drag-dropping files onto app icon? 2018-01-03 15:35:49 -05:00
Paul Licameli
191945c8f7 Make enablement of plug-in after drag-and-drop persistent 2018-01-03 03:26:31 -05:00
Paul Licameli
7fd78183d2 Remove needless uses of wxString::c_str() in wxString::Format...
... and similar wx "variadics," which all treat wxString smartly enough that
you don't need this.

Don't need c_str either to convert wxString to const wxChar * because
wxString has a conversion operator that does the same.
2018-01-01 20:34:33 -05:00
Paul Licameli
ccb4bbac33 Translate "Message" as default title of message box...
... This required a sweeping change of all calls to wxMessageBox!  But it seems
safe to me, despite the great number of touched files.
2018-01-01 17:50:02 -05:00
Paul Licameli
3c9cdac778 Drag-and-drop checks file extensions first for plug-in candidates...
... Avoids big delays in drag-and-drop importation caused by
765ca0c8136134a1d65bfad0ea39682a83d3d984
2018-01-01 10:29:26 -05:00
Paul Licameli
2e8a73bab1 Fix Windows build 2017-12-31 20:04:35 -05:00
Paul Licameli
2c2db0fe09 Implement drag-and-drop of Nyquist, LADSPA, VST plug-ins...
... I'm not sure how to make it work for AudioUnits, LV2, or Vamp, for which
the API for identifying a plug-in doesn't map straightforwardly to a file name.
2017-12-31 18:09:41 -05:00
Paul Licameli
8cfb8d2400 Change ModuleInterface for support of drag-and-drop of plug-in files 2017-12-31 18:09:36 -05:00
Paul Licameli
0f8bd45a7c ModuleInterface::RegisterPlugin can report an error message 2017-12-27 15:19:36 -05:00
Paul Licameli
5f298accbd Translated effect name and description in many places in Effect.cpp...
... including titles of dialogs,
messages,
About sub-menu of the Manage button,
long-form names of Undo items (in history view),
message for why command is not allowed when there is no selection

Also one place in Effect Rack code but it's commented out
2017-09-10 19:21:35 -04:00
Paul Licameli
34f8e79623 Bug1590: Mac skips plugin cfg entries for .ny's of other versions...
... This conservative fix depends on where you put the executable bundle.

Assuing the executable is in /Applications, and the other Audacity version
(past or future) is there too (either bundled as for 2.1.3 and later, or
in a folder as for 2.1.2 and previous):

The .ny files that are part of the other version's shipment are ignored, and
therefore the Effects menu avoids duplicates.

But the .cfg file is not rewritten to eliminate them, in case you want to
switch back to the other version.  If that other version is 2.1.3 or earlier,
sorry but you will see duplicates.
2017-07-25 23:25:33 -04:00
Steve Daulton
9816cc8c7b Reinstate FileNames::PlugInDir() for Linux
Reverting its removal in commit 1dd6b848c28.
Path added to Nyquist *SYSTEM-DIR* PLUG-IN property.
2017-06-04 18:01:49 +01:00
Steve Daulton
1dd6b848c2 Enable Help button for Nyquist effects 2017-05-20 14:49:07 +01:00
Paul Licameli
692a033968 Remove naked new[] in: various 2017-03-17 17:52:47 -04:00
Paul Licameli
aa0d55ac83 Use enum class ProgressResult, don't interconvert with int or bool 2017-03-17 17:52:24 -04:00
Paul Licameli
5036583549 Fewer inclusions of AudacityApp.h 2017-03-17 17:52:24 -04:00
James Crook
e4260e9581 Bug 1587 - Mac: Ghost duplicate Nyquist effects after upgrade
Fix removes ghost Nyquist effects from the effects menu and generators from generate menu.
2017-02-05 20:27:56 +00:00
James Crook
28b3461bb2 Change Mac search paths to be in-app 2016-12-12 18:00:53 +00:00
Paul Licameli
49e699b1df Remove overloads for sampleCount from ConfigInterface...
... The value was always cast to int anyway when writing, and it was used
only for one value in VST effect, which did not need 64 bits
2016-08-21 09:11:44 -04:00
Paul Licameli
942c62b6f6 Remove some naked new amd delete in: various 2016-08-08 07:51:24 -04:00
Paul Licameli
84c0337aba Fix TAB key navigation on Mac for all dialogs (not only for panels) 2016-07-10 17:12:27 -04:00
Paul Licameli
db137ddf76 wxWindow takes ownership of its wxAccessible, so we can use safenew. 2016-05-06 21:03:37 -04:00
Paul Licameli
6b954dc0f4 Fix mac build 2016-04-11 07:42:51 -04:00
Paul Licameli
f00144e9a5 Sweep for filename copying: various 2016-04-10 22:26:28 -04:00