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

336 Commits

Author SHA1 Message Date
Paul Licameli
548192fcf3 Remove redundant #include-s from .h files...
Redundant, because transitively implied.  But don't do this for inclusions of
Audacity.h or Experimental.h.
2019-05-16 14:58:34 -04:00
Paul Licameli
56f51d8176 Revert "Remove redundant #include-s from .h files..."
This reverts commit b7fe62d17067b4441530dd36b25052cea3ad44b5.
2019-05-16 14:33:55 -04:00
Paul Licameli
b7fe62d170 Remove redundant #include-s from .h files...
Redundant, because transitively implied.  But don't do this for inclusions of
Audacity.h or Experimental.h.
2019-05-16 14:15:05 -04:00
Paul Licameli
8f55d55869 Remove two call-through functions to TrackPanel from AudacityProject 2019-04-26 14:05:57 -04:00
Paul Licameli
2b32884596 Remove some unnecessary toolbar related declarations, fix comments 2019-04-23 17:02:04 -04:00
Paul Licameli
4714d72b3f Can't remove remaining wx headers from other headers, comment that 2019-03-31 01:41:16 -04:00
Paul Licameli
2e05d2d884 Remove wx/{radiobut,ownerdrw,menuitem,menu,listbox}.h from *.h 2019-03-30 12:15:53 -04:00
Paul Licameli
a915a510bd include <wx/setup.h> in all files where wxUSE* macros are used...
... even if it's redundant; improving on what was done at b47e2f9
2019-03-23 14:56:02 -04:00
Paul Licameli
adcb93512c Include Audacity.h in all files that test config USE_ macros...
... except Experimental.h, but see preceding commit.

This is especially important in the header files.

Be sure there are no quiet changes of meaning when a header file is included
in a different context, not having seen Audacity.h.  Rather include Audacity.h
even if redundantly.

Also, in some header files, move more inside the include-guard #ifdef-#endif
pair.
2019-03-22 12:36:54 -04:00
James Crook
4ff7d7875a Add 'Select Track' Button.
This is a first take at this new feature.  I'm expecting we'll want to refine it.
https://wiki.audacityteam.org/wiki/Proposal_Select_Track_button_in_TCP has the feature proposal.
2019-03-21 19:43:36 +00:00
Paul Licameli
02db402b54 Bug2064: ESC key should abort drags in time ruler on Linux...
... Reimplement the ESC key handling in TrackPanel and time ruler on all
operating systems so that it does not rely on the focused window, but instead
uses the application-wide event filter.

This includes reversion of 9491605cfc8a7d60117365884fd494996b5ebbaf
2019-03-18 12:43:14 -04:00
Paul Licameli
b47e2f91e2 Make header dependencies for wxUSE_ACCESSIBILITY explicit 2019-03-18 12:14:16 -04:00
Paul Licameli
906e55f047 Experimental.h in all .h or .cpp files that directly use EXPERIMENTALs...
... except Audacity.h; and in no others.

Do so even if Experimental.h gets multiply included, as in both the .h and
.cpp files.

This makes it easier to do a text scan to be sure there are no unintended quiet
changes of meaning because of omission of Experimental.h when the flag is
an enabled one.

Also move inclusions of Experimental.h earlier.

Also don't require Experimental.h to be preceded by Audacity.h to define
EXPERIMENTAL_MIDI_OUT correctly.
2019-03-17 22:54:00 -04:00
Paul Licameli
15777834e0 Remove calls to TrackPanel::FindTrackRect for finding control area 2019-03-17 15:23:51 -04:00
Paul Licameli
3dba70120c CommandManager, MenuManager don't use Lyrics.h, MixerBoard.h ...
... instead define new base classes in src/commands that those other
windows can inherit.  The classes have nothing but a virtual destructor.  This
lets CommandManager use dynamic_cast to detect the special windows.

See commits cbfde23 and 68e4bf6 which added the #include directives
2019-03-16 13:10:59 -04:00
Paul Licameli
01329876c5 Remove unnecessary #include 2018-11-05 07:42:21 -05:00
Paul Licameli
c4994ae9c2 kTrackInfoWidth was misleadingly named...
... keep the name, but change the value to be what it really says:
the proper width of the track control panel, agreeing with the hit-test
area, NOT including the left margin

And change places where the constant was used, adding the margin back again.
2018-11-04 18:23:29 -05:00
Paul Licameli
38005054f4 Make TrackInfo a namespace, not a class...
... Its functions take a pointer to TrackPanel when necessary, just to do the
reparenting of the global slider instances
2018-11-04 10:51:00 -05:00
Paul Licameli
55774fbb29 When drawing, treat track plus separator BELOW as the natural grouping...
... and treat the top margin of the first track specially.
2018-11-02 23:16:05 -04:00
Paul Licameli
a2e392433a Paint left and right margins of the whole TrackPanel first 2018-11-02 22:38:11 -04:00
Paul Licameli
e70b240338 The ruler and sash draw functions treat their own backgrounds 2018-11-02 21:10:30 -04:00
Paul Licameli
951e7d27da The vruler and sash draw functions treat their own left boundaries 2018-11-02 21:07:48 -04:00
Paul Licameli
0f17b309bc Fuse the two sash-drawing functions, pass a rectangle not a track...
... and be consistent about substituting the track before finding Y and height
2018-11-02 21:07:45 -04:00
Paul Licameli
e31669f555 comment out unused function 2018-11-02 16:51:07 -04:00
Paul Licameli
c1b729822c Remove unused arguments of some drawing functions 2018-11-02 16:51:07 -04:00
Paul Licameli
39fc20c5ee TrackPanelCellIterator is no longer needed 2018-11-01 18:25:02 -04:00
Paul Licameli
01551913f0 nonvirtual reimplementation of CellularPanel::FindRect using nodes 2018-11-01 18:25:02 -04:00
Paul Licameli
cfa7afcb24 nonvirtual reimplementation of CellularPanel::FindCell using nodes 2018-11-01 18:25:02 -04:00
Paul Licameli
128ba93ae7 Implement TrackPanel::Root() 2018-11-01 18:25:01 -04:00
Paul Licameli
4fe97acbc9 Define CellularPanel::Root 2018-11-01 17:37:22 -04:00
James Crook
76166135d4 Fix many MSVC compiler warnings. 2018-10-29 13:19:33 +00:00
Paul Licameli
2741d58880 TrackList emits more events for certain changes of state of tracks...
... Also rewrote some of the existing event handling so all events from
TrackList are of the same, custom event class, and distinguishing addition
from resizing events, though this distinction is not yet used
2018-10-27 11:31:42 -04:00
Paul Licameli
a68184f81d Remove GetLink(ed) in track panel drawing and refresh 2018-10-01 13:42:30 -04:00
Paul Licameli
b94e8fec96 Remove VisibleTrackIterator 2018-10-01 11:20:52 -04:00
Paul Licameli
a5c50a112a more const in drawing functions 2018-09-13 13:53:58 -04:00
Paul Licameli
22f85f244b Bug1917: TrackPanel should keep focus after click or drag...
... though ruler won't, and if you start to drag in TrackPanel but abort it
with the ESC key, that too returns focus
2018-08-07 10:42:38 -04:00
Paul Licameli
f6609e5ffb Move class CellularPanel into its own files 2018-08-05 14:02:55 -04:00
Paul Licameli
7f84e71324 Context menu handling is also in CellularPanel 2018-08-05 14:02:55 -04:00
Paul Licameli
c08c17eafa Add a method to find the rectangle of a given cell...
... Cells are not responsible to remember that; the cells' container determines
that.
2018-08-05 14:02:55 -04:00
Paul Licameli
062066eb79 Split base class CellularPanel out of TrackPanel...
... To be reused with the Ruler too.

The new base class does all the handling of hit tests on cells and managing
of UIHandles, and keyboard events and focus.

It has no knowledge of tracks -- that all resides in overriding functions in
TrackPanel.

Still to do, of course, is reorganizing drawing with callbacks to the cell
objects.
2018-08-05 14:02:52 -04:00
Paul Licameli
98514194a4 ProcessUIHandleResult takes pointers to TrackPanelCell 2018-08-05 13:28:34 -04:00
Paul Licameli
7395e5acbd Remove pTrack from FoundCell; new function hides some casting 2018-08-04 15:35:36 -04:00
Paul Licameli
79067e43f0 ProcessUIHandleResult is a member function of TrackPanel 2018-08-04 15:35:36 -04:00
David Bailes
a13e7191c4 Add an option to use a dialog to enter the name of a new label
Motivation:
1. The text boxes in the label track are not fully accessible for users of screen readers, and I don't think that they can be made to be fully accessible using the accessibility API used by wxWidgets. When such an edit box becomes the focus, this is not announced, and for NVDA users typed characters are not echoed.

2. Provides a work around for bugs 1778 (cannot type diacritics into text label), and 1804 (Windows: Labels do not accept IME (Chinese/Japanese) input).

Fix: Provide an option for a dialog for entering the name. The text box in the dialog is accessible for screen readers. On windows the text box receives wm_keydown and wm_char messages and so is a work around for bug 1804. Being a standard text box, it will presumably be a work around for bug 1778.

1. There is a new option in track behaviors: "Use dialog for the name of new label", which is off by default.

2. When using the commands "Add label at selection" and "Add label at playback position", when the dialog closes, focus is returned to the track which was the focus before the dialog opened. I think this is more convenient for users of screen readers.
2018-05-11 10:23:48 +01: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
e094dcbaf2 Fix unbalanced #pragma warning since commit 080dd34 2018-02-22 21:01:20 -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
5407079c62 Remove EXPERIMENTAL_OUTPUT_DISPLAY...
... Maybe a good feature idea, but the implementation pollutes the code in
too many places.

It's a special case of the more general idea of many-to-one associations
between screen rectangles and track objects.  More generalized ways to
accommodate that should be sought.
2018-01-12 12:08:09 -05:00
James Crook
27d2b7c51b Add AutomationCommands class
- 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.
2018-01-06 19:27:45 +00:00