... The null, script-pipe, and Nyquist workbench modules all build fully.
Just two missing symbols building Audacity, I don't yet know why:
ld: warning: directory not found for option '-L/Users/paullicameli/GitHub/audacity/mac/build/Release'
ld: warning: ignoring file /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/System/Library/Frameworks//QuickTime.framework/QuickTime, file was built for i386 which is not the architecture being linked (x86_64): /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/System/Library/Frameworks//QuickTime.framework/QuickTime
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_ModalDialogDelegate", referenced from:
objc-class-ref in FileDialogPrivate.o
"_objc_readClassPair", referenced from:
__ARCLite__load() in libarclite_macosx.a(arclite.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
... to include architecture, so the 64 bit build doesn't destroy the 32, thus
the results are found in:
/usr/local/i386/lib
/usr/local/x86_64/lib
whereas before all was in /usr/local/lib.
Change the XCode project too, to look for includes and libraries in the new
places.
... This quiets warnings from:
lib-src/FileDialog/mac/FileDialogPrivate.mm
lib-src/portaudio-v19/src/hostapi/coreaudio/pa_mac_core.c
lib-src/portaudio-v19/src/hostapi/coreaudio/pa_mac_core_utilities.c
lib-src/portmixer/src/px_mac_coreaudio.c
It's not good to ignore these deprecations forever, but this reduces the noise
from a complete rebuild, making other warnings more conspicious by their
fewness.
Tidy translation code in init.lsp
Include rms.ny in Makefile.am
Add rms.ny to Linux package
Update Makefiles with: autoreconf --force --no-recursive
Add rms.ny to mac build
Add rms.ny to Windows build
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
- AutomationCommands replaces GetAllMenuCommands, and can provide
information about menus, buttons and toolbars to a script.
- BatchCommands can now return textual results to a script.
- There's a new GUID for mod-script-pipe and it is included in the .sln.
See original attempt at commit 7ec5fd79df
This eliminates the need for a resource file at run-time.
locale/LanguageNames.txt is intended as a "source file" that is infrequently
changed as the set of supported languages changes.
The intermediate step, of appropriately copying that file into the C++ source
code in src/Languages.cpp, was done by hand.
In XCode, I set locale/LanguagesNames.txt and src/Languages.cpp to be
interpreted as Western encoding, and then the copy-paste was easy in the
editor.
The resulting C++ source code file now has string literals that are not 7-bit
ASCII.
... That is, put a little shell script in the application bundle, and invoke
it (in Release, though not Debug where it interferes with Xcode debugging)
See commit 07661c186f
The shell nulls the environment variable DYLD_LIBRARY_PATH and then executes
the main program.
This is needed because changes to DYLD_LIBRARY_PATH during the main program's
run fail to affect the loading of dynamic libraries afterward.
We need null in DYLD_LIBRARY_PATH to make absolute paths to libraries take
priority.
More info:
Documentation of workings of the macOS dynamic loader
https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/DynamicLibraries/100-Articles/DynamicLibraryUsageGuidelines.html
The same problem and solution is discussed here
https://stackoverflow.com/questions/6713692/problems-with-using-setenv-and-then-making-the-dlopen-call
It is claimed there that Firefox did the same trick with a shell, which I do
not observe in my version, but GIMP 2.8.16 does this, as I can see by examining
package contents
Also note the mention in this commit's comments (where the script was removed
because bug543's fix left it unused), that the script also used to
interfere with signing. I hope that there will be a way around that.
98186b9317
... What commit 776e4dfdab was supposed to do,
but the setting was changed in the expat library only, not Audacity.
This should prevent foolish mistakes like that fixed in the previous commit!
... an inline function in a header was declared to return bool, but returned
nothing. Now its type is void.
This function's undefined return value was not used anywhere.
...no actions reimplemented to them yet.
Later commits will move special cases one at a time from TrackPanel, preserving
all click and drag capabilities at each step. With a few exceptions, but those
lost abilities are restored in yet later commits. (Ctrl+Click on the Label
track being one.)
AudacityException is an abstract base class for exceptions generated by
Audacity.
GuardedCall wraps any function (usually a lambda) in an appropriate catch
block.
It can also accept a second function that defines a catch block action, which
can rethrow or return a value for the GuardedCall.
It can also accept a third function, that defines another, delayed action that
executes in the main thread at idle time if the second function intercepts an
AudacityException and completes without rethrow.
Defaults for the second function simply return void or false. Default for the
third function invokes a virtual method of AudacityException, which for
subclass MessageBoxException, displays a message box.
- For ALPHA builds we do a check version with the Welcome screen (if welcome screen is enabled).
- A 'Check Online' in the About box provides a new route to check version
- Check Version now passes CommitId and Build Date/Time to identify a version.
To actually close the bug we need the javascript on the server page to put up informative messages.
... At startup, spawn a copy process in main() and crash it at once. The
child process continues. (The fix was ineffective when the parent continued
and the child crashed.)
Re-activiation of the application is also needed or else the windows are
hidden behind other applications.
Another sleep when closing a project, to fix occurrences of the bug caused by
closing of a project window without saving changes.
Works by un-full-screening before closing. Patching wxWidgets was needed to
make that work correctly after full-screening by clicking on the green circle
in the title bar, but that fix is not needed for full screen after command+/
... many details will need further work, but basic navigation among
pushbuttons with control-alt-arrows and presses with control-alt-space will
work.
Shift-ctrl-alt-down on track panel works to navigate among individual tracks,
and shift-ctrl-alt-up to escape back to the higher level.
... Busy-waiting will happen on Mac when modal dialogs are open, and a LADSPA,
VST, or AudioUnits effect is also open with "fancy" interface.
Busy-waiting will not happen for modal dialogs at other times.
Enh1444 is to make pinch and spread gestures work.
Bug1435 is to bring focus rings back for types of controls that lost them in
version 2.1.2. This importantly includes pushbuttons and choice controls
(drop-down menus). Less importantly, date picker (as in the Timer Record
dialog) and Listbox (as in the dialog to choose label font).
There is one more type of control that lost focus rings, and is not fixed:
List controls (distinct from list boxes), such as in the Manage Curves dialog
that opens from Equalization.
... This poor imitation of the standard Mac Window menu only includes
Minimize and Zoom.
But this may be adequate for the complaints in Bug1198, when the yellow title
bar button is hidden and unreachable.
In addition, the Xcode project can now build against the 10.6
or 10.7 SDKs. All that is needed is to change the SDK version
and the other settings will change automatically.