1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-07-07 16:07:44 +02:00

664 Commits

Author SHA1 Message Date
Paul Licameli
9360359e9d
Module manager (#549)
* Eliminate ModuleManagerInterface...

... It was there only to provide RegisterModule(), but that was not used
anywhere.  So simplify.

* Remove nested #include of ModuleInterface.h
2020-05-29 10:48:52 -05:00
Paul Licameli
f3d91f488e Remove extern declarations from .cpp files...
... Require the declarations to be in .h files, to be sure graph.pl detects the
dependencies.

Only one more #include was needed in Nyquist.cpp.   This doesn't reveal any
more hidden cycles.
2020-05-28 05:50:25 -04:00
Paul Licameli
4a271ba549 Move namespace Registry into new source files 2020-05-28 05:45:11 -04:00
Paul Licameli
226a80140a Add some unnecessary #include directives...
... They are not necessary to build, but the do indicate some link
dependencies to fix, that were not shown in results of scripts/graph.pl.

The link dependencies exist because the header declaring some name did not
correspond to the .cpp file that defined it.
2020-05-27 19:58:17 -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
Paul Licameli
0ef7213a2e Bug2453: Shoudln't show & accelerators in dialog text for key prefs 2020-05-25 19:57:20 -04:00
Paul Licameli
2c8c5799f6 Correct menu ordering after "Reset Configuration" command, see f5afb28 2020-05-25 14:24:14 -04:00
Paul Licameli
67ce74d5ef Some example uses of XC and XPC...
... Really needed only for "White" but harmless in the other uses.  Also more
i18n-hint comments.

There may be need to disambiguate other strings.
2020-05-24 14:55:08 -04:00
Paul Licameli
8ce72748bf CommandManager stores only stripped menu names (no & characters)...
... Keyboard preference dialog does not need to repeat the stripping
2020-05-23 22:42:21 -04: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
Paul Licameli
d373e27840 Remove some unused forward declarations and #include directives 2020-05-23 05:32:01 -04:00
Paul Licameli
7fb4652c88 Remove some unused functions and forward declarations 2020-05-23 05:16:59 -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
Leland Lucius
1ca911ed38 Convert all __WXDEBUG__ tests to use new _DEBUG symbol
This symbol is based on the NDEBUG symbol that's automatically
defined by CMake.
2020-04-25 02:36:27 -05:00
Leland Lucius
a6d0b3f902 Bug 2360 - Scripting: "Message:" command may crash when using Nyquist with Python 2020-04-16 22:14:45 -05:00
Leland Lucius
9827d4a753 Bug 2360 - Scripting: "Message:" command may crash when using Nyquist with Python 2020-04-15 10:10:00 -05:00
Paul Licameli
1fa86ee868 Fix the gap in reporting of choice preferences by GetInfo command...
... which began at commit 9b41741074553a27a837b32d25db1eed10681142

For example, /Effects/GroupBy near the end of the report.
2020-04-11 18:01:24 -04:00
Yuri Chornoivan
d1ada5f08c Fix minor typos 2020-04-11 10:06:24 +01:00
Leland Lucius
49ab4cf2fb Add the "other" missing include. 2020-04-04 05:20:24 -05:00
Leland Lucius
be749f17eb Add missing include... 2020-04-04 04:18:28 -05:00
Leland Lucius
723e9feb7f Bug 2055 - ENH: Export2 does not export by default 2020-04-04 03:58:27 -05:00
James Crook
ecba41ad2d Bug 2294 - Scripting: Crash on "Close" command 2020-03-22 11:33:50 +00:00
James Crook
301c511422 Remove unwanted ':' on names of scripting checkboxes.
The name comes after the checkbox, and looks better without the ':'.
Made an exception for "Resize:" in  SetProjectCommand.
It controls 4 subordinate settings, and those settings do come after the name.
2020-03-05 19:53:16 +00:00
Paul Licameli
0bbc974a7b Fix Windows build warning 2020-02-21 14:19:01 -05:00
James Crook
952ff1f61e Don't register the Demo command
It's only for developers.
2020-02-21 09:53:54 +00:00
David Bailes
b67c82171c Bug 2329 - Keyboard shortcuts: new or changed defaults can create duplicates
Problem:
If a new version of Audacity introduces a new default shortcut, or changes an existing one, then this may be the same shortcut as a user has previously assigned to another command. Both commands will have the same shortcut, and the shortcut will only execute one of those commands.

Fix:
Check for any such duplicates when a user opens a version of audacity using an audacity.cfg file which was created with a different version.
For each duplicate found, remove the shortcut from the command which has a new or changed default.
If duplicates where found, open a message box informing the user of the removed shortcuts.
2020-02-19 15:02:08 +00:00
James Crook
38f77e5820 Bug 2276 - Screenshot tool either fails, or may capture the wrong screenshot 2020-02-17 22:50:56 +00:00
Paul Licameli
e5540c6118 Don't crash on exit when a module attaches a menu item...
... such as Nyquist Workbench.

I don't fully understand why, but destroying the menu registry items very late,
during the destruction of static objects, causes a crash in memory deallocation,
at least on Mac.

So destroy the menu registry explicitly in application shut-down.
2020-02-17 16:08:59 -05:00
Paul Licameli
4cfbf07227 Registry passed to Visit can be const 2020-02-14 22:08:35 -05:00
Paul Licameli
d0a99d5ae5 Each toolbar registers its menu item 2020-02-14 14:51:11 -05:00
James Crook
f7c230319e Bug 2317 - Scripting: "GetInfo: Commands" omits commands without parameters 2020-02-14 13:37:13 +00:00
James Crook
371afa3ffa Scripting Help Command now supports JSON, LISP, Brief. 2020-02-10 15:55:39 +00:00
Paul Licameli
540f2c5e67 Restore separators after "Move Track to Bottom" in TCP menus 2020-02-06 17:52:45 -05:00
James Crook
f3acd4ca00 Preallocate string for aud-do
Helps marginally with speed of commands which generate long strings in many small steps.
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
a43c9a5337 Identifier not wxString in ctors of registry items 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
James Crook
0e7797935f Avoid \n immediately after '(' in LISPY output formats 2020-02-03 21:59:40 +00: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
a729dfec3b Reusable preference-populating code for other registries than Menus 2020-02-01 07:11:38 -05:00
Paul Licameli
d233cbd881 Improvements and comments in visitation and merging of registry items 2020-01-31 21:11:58 -05:00
Binary Wisdom
9bce51a60e Bug 624: Keyboard Prefs: importing XML file can cause duplicated bindings
The fix follows the agreed behavior (see emails from around October 25) . For the sake of convenience see the agreed behavior below:

_"- first, check the xml-file. If it contains illegal shortcut duplicates, refuse importing. Shortcut duplicates are LEGAL if default settings also have those operations with the matching shortcuts. A refusal to import shortcuts must happen with the message that warns the user of a failure and explains the reason.

if the xml-file looks ok, import the shortcuts. As discussed before, because different versions of Audacity might have different sets of operations with shortcuts, it is still possible to end up with illegal shortcut duplicates for a perfectly correct xml-file. This situation must be monitored. In case of any conflicts, the shortcut from the xml-file is used, and the pre-existing shortcut is wiped clean.
When telling the user the commands which have had their shortcut removed, I think it would be useful to tell the user the name of the command, the shortcut, and and name of the command which still has that shortcut."_

I didn't find a clean way to intercept the imported content before it makes its way to the shortcut preferences, so I had to jump through some hoops right in KeyConfigPrefs::OnImport().
In general, I tried to keep changes minimal.
2020-01-31 11:32:23 +00:00
Paul Licameli
56cd24a062 Rewrite insertion of menu items by null and Nyquist modules...
... using the new registration system, and without the fragile hacks making
assumptions about the positions of menus within the menu bar.
2020-01-30 15:09:30 -05:00
Paul Licameli
baada94567 Define AttachedItem registration struct for menu items 2020-01-30 15:04:08 -05:00
Paul Licameli
c5495b3300 Ordering hints for insertion of newly discovered registry items...
... Now, a first-time registered item can specify that it go at the start or end
of the nodes under its parent, or before or after some named node.

Still it might happen that multiple first-time registrations might use the same
ordering hint, and so we must still sort by component name to resolve that
collision arbitrarily.
2020-01-30 14:46:35 -05:00
Paul Licameli
564a3ac708 Define the registry merging procedure...
... before we populate the registry.

This could apply to menu items, or more generally to other registries.

A registry is a tree of items identified by path names. Various code,
that need not coordinate, can specify items to attach to the tree, and the
merging procedure collects them into a single tree that can be visited.

Pathnames imply only an unordered tree.  Some visitation ordering must be
imposed on the nodes, and can be remembered in preferences for stability between
runs, independently of accidents of the unspecified sequence of initialization
of file-scope static objects in the various plug-ins.  It can be arbitrary --
not constrained to some fixed intrinsic criterion like alphabetical order.

Merging consults the preferences, and also updates them if previously unknown
items are found and inserted.  For now, such unknowns just go to the end of
the sequence of siblings, sorted by their path component names.
2020-01-30 14:18:26 -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
d84c994088 Redefine return type of MenuTable::Items 2020-01-30 09:06:20 -05:00
Paul Licameli
9639ba84f4 Reimplement commit 512c27d, fixing menus & shortcut keys on Windows 2020-01-29 13:39:19 -05:00