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

751 Commits

Author SHA1 Message Date
James Crook
29b0e31ee6 Bug 2120 - Spectral Selection Toolbar can be truncated when undocked 2019-07-28 13:08:34 +01:00
Paul Licameli
582f662404 Bug2172: ruler pin button background should update for theme change...
... It stopped doing so at 1c1aca5

Because the recreating of the ruler's button now happened earlier than for
the several toolbars, not later, but there was a side-effect on the theme
that the toolbar updates did, that the ruler relied on, namely the updating
of button background images.

Now ruler also invokes that step.

(But wouldn't it be better to do that update in just one place?  I am not
sure what that place should be.  ThemeBase::LoadPreferredTheme?)
2019-07-23 02:07:00 -04:00
Paul Licameli
7e1c469d7f Remove some unnecessary #include directives 2019-07-09 12:45:50 -04:00
Paul Licameli
9b98f4be0c ScrubbingToolBar consumes less idle time 2019-07-07 12:20:59 -04:00
Paul Licameli
ce31e2f35e Selection toolbars use a little less idle time after commit f0ae4c3 2019-07-05 14:01:57 -04:00
Paul Licameli
8c59f66583 ScrubbingToolBar eats less idle time after commit 192530d 2019-07-05 13:30:11 -04:00
Paul Licameli
eb4eba6325 AdornedRulerPanel updates its play region in idle time...
... Eliminating TP_DisplaySelection and making ProjectWindow independent of
AdornedRulerPanel
2019-07-03 23:38:33 -04:00
Paul Licameli
500ccb60b3 Free ControlToolBar from cycles. That's all the toolbars now! 2019-07-03 21:38:06 -04:00
Paul Licameli
ca8740b510 StopIfPaused is now a member function of ProjectAudioManager 2019-07-03 17:00:08 -04:00
Paul Licameli
c8c76cf294 Cut and paste functions into ProjectAudioManager.cpp 2019-07-03 16:52:19 -04:00
Paul Licameli
13c2e4de0f Move members from ControlToolBar into class ProjectAudioManager...
... and ControlToolBar is included in fewer places
2019-07-03 16:52:16 -04:00
Paul Licameli
977b46cda2 Move CanStopAudioStream into ProjectAudioManager 2019-07-03 16:34:47 -04:00
Paul Licameli
68999934e0 ProjectAudioManager doesn't use ProjectWindow, which doesn't use...
ControlToolBar, after we make a system to register functions that calculate
necessary minimum widths for status bar fields.

Also let Scrubbing.cpp register its own strings.

Also be sure to size the status field sufficiently for "Playing at Speed".
2019-07-02 21:01:54 -04:00
Paul Licameli
9f61b67965 Manage some more status bar changes with ProjectStatus 2019-07-02 21:01:34 -04:00
Paul Licameli
e2362bc25a Move project status string management to new attached object class 2019-07-02 21:01:34 -04:00
Paul Licameli
2a06b10884 Make objects attached to AudacityProject non-copyable...
... except for Tags; also some uses of final and explicit

This caught a mistake in Scrubbing.cpp
2019-07-02 19:51:24 -04:00
Paul Licameli
34e9cb6171 Start and stop record or playback scrolling in idle time 2019-07-01 22:51:20 -04:00
Paul Licameli
2a87ea77cf Momentary Stop push-down happens in yield to the idle time handler...
... So that ControlToolBar::StopPlaying now does nothing directly to the
buttons, and can be moved to another place with no dependency on ControlToolBar
2019-07-01 22:51:15 -04:00
Paul Licameli
5ab3986261 Pop up the Stop button in idle time...
... This also causes a momentary push-down of the stop button, which happens
in ControlToolBar::StopPlaying, really to be visible, as was apparently the
intent.

For instance, when playing, then clicking in the quick-play ruler to restart
the play elsewhere.
2019-07-01 22:51:13 -04:00
Paul Licameli
830f772625 Update Play button appearance in idle time...
... so most calls to ControlToolBar::SetPlay are removed.  One remains in
TransportMenus, which will not be problematic for untangling dependencies,
and one remains where the toolbar remakes its own buttons.

But the routines that start and stop the streams, importantly, don't use it.
2019-07-01 21:25:50 -04:00
Paul Licameli
cac04e9fb8 Do not use ControlToolBar's Record button as a state variable 2019-07-01 19:48:52 -04:00
Paul Licameli
923128731d Do not store pause state in ControlToolBar...
... Move that into ProjectAudioManager instead, and update the button, only to
reflect it, in idle time.

However, AudioIO also has its mPaused member variable, and it is not obvious
that it was always kept the same as the button state.  No attempt was made
here to identify and fix any bugs, but only to preserve behavior.
2019-07-01 19:48:52 -04:00
Paul Licameli
8b549ea07f Another overload of ControlToolBar::OnRecord taking bool...
... so that it's called directly where needed without the roundabout of
SetInt in an event, and there is no checking of the state of a button first
2019-07-01 19:48:52 -04:00
Paul Licameli
7d504ba015 ControlToolBar uses idle events to update status message for itself 2019-07-01 19:48:51 -04:00
Paul Licameli
ce7773b7ab And so, ControlToolBar.cpp does not need AdornedRulerPanel.h 2019-07-01 19:44:54 -04:00
Paul Licameli
e815949535 This call to redraw overlays when play starts isn't needed...
See commit aeece118e8950d2aeee60ef4e1b2a2ee752129cd which changed it from
the original call intended to hide the quick-play indicator in case that is
how the play starts; but other things in that commit were sufficient to
guarantee that
2019-07-01 19:37:55 -04:00
Paul Licameli
192530d8a5 Free ScrubbingToolBar from cycles...
... by having it update itself in idle time, not needing a push from Scrubber

Shrinking that remnant of the big strongly connected component to 6
2019-07-01 08:43:27 -04:00
Paul Licameli
748c8d63d8 Bug2145: crash ctrl-clicking on play-at-speed button...
... Problem began at commit 46bf5a82fcb20a5ade26c456fec8519172b7bc1d
2019-06-30 20:46:03 -04:00
Paul Licameli
ed5c92450d CommitRecording out of ControlToolBar 2019-06-24 12:43:08 -04:00
Paul Licameli
a6e2ca0aa8 Move some enums into new files WaveTrackViewConstants.* ...
... freeing TracksPrefs from the second largest s.c.c. which is now only 20
2019-06-22 21:46:32 -04:00
Paul Licameli
3797a5227a Minimized state moved into TrackView 2019-06-18 16:01:06 -04:00
Paul Licameli
e1908ab8e2 ToolManager does not depend on ProjectWindow 2019-06-16 01:24:29 -04:00
Paul Licameli
0b897c81b0 ToolManager.cpp does not depend on Meter 2019-06-16 01:24:29 -04:00
Paul Licameli
b84f5b66f0 CommandManager.cpp does not depend on EffectManager...
... some code lifted into BatchCommands.cpp to realize this.

It also doesn't depend on PluginManager, but that is not important for breaking
cycles.
2019-06-16 01:24:29 -04:00
Paul Licameli
c0adb35839 Command flag functions out of Menus.cpp, reducing its dependencies...
... Mostly into CommonCommandFlags.cpp, but some elsewhere, to avoid giving
that new file problematic dependencies on LabelTrack, ControlToolBar, and
EffectManager.

Note that CutCopyAvailableFlag is critically ordered, for message purposes,
only with AudioIONotAvailableFlag, the only flag with a message that it combines
with in menu item definitions.

The dependency on LabelTrack.cpp might not be a bad one later, if the track and
its view can be separated, and that would allow CutCopyAvailableFlag to be
put with the others.  But much other work on LabelTrack must happen first.
2019-06-16 01:21:05 -04:00
Paul Licameli
94d9593df8 3rd arg of TryToMakeActionAllows always == 2nd; eliminate it 2019-06-14 10:12:45 -04:00
Paul Licameli
ca5259712c HandleCommandEntry's 3rd parameter was two-valued, make it bool...
... false when it was NoFlagsSpecified, true when it was AlwaysEnabledFlag
2019-06-14 10:12:45 -04:00
Paul Licameli
705b4b28e7 Register a predicate with each CommandFlag bit 2019-06-14 00:31:15 -04:00
Paul Licameli
352380d58f Scrubbing.cpp does not depend on TranscriptionToolBar...
... Freeing the latter from cycles, and also VoiceKey.

As with ToolsToolBar, use low-level ProjectSettings as the chalkboard for
sending a message.
2019-06-14 00:27:31 -04:00
Paul Licameli
2f18c624f8 ToolsToolBar.cpp is free from cycles...
... Use ProjectSettings instead to communicate just an integer to the rest of
the program.
2019-06-13 10:13:09 -04:00
Paul Licameli
f0ae4c3858 ProjectWindow does not depend on selection toolbars...
... Freeing SelectionBar and SpectralSelectionBar from cycles.

Also fixing a minor problem:  if two projects are open, and one is playing or
recording, and you switch windows -- then the audio time in the selection bar
of the other project could be updated.
2019-06-12 21:02:11 -04:00
Paul Licameli
c6f24d864b Construct all toolbars with back-reference to the project...
... and eliminate many uses of GetActiveProject
2019-06-12 20:52:36 -04:00
Paul Licameli
5751ddba4f ControlToolBar.cpp doesn't depend directly on TranscriptionToolBar...
... TranscriptionToolBar updates its own button, doesn't need a push from the
ControlToolBar
2019-06-12 20:49:21 -04:00
Paul Licameli
f179de7a82 Fix #include 2019-06-12 19:56:19 -04:00
Paul Licameli
e6d7a72a73 Registration of toolbar factory functions...
... reduces direct dependencies of ToolManager.cpp.

This frees four files from cycles:
DeviceToolBar
EditToolBar
MeterToolBar
MixerToolBar

Leaving 66 files still in the big s.c.c.
2019-06-12 16:01:53 -04:00
Paul Licameli
291bd7258f Track.cpp does not depend directly on its subclasses 2019-06-12 11:14:19 -04:00
Paul Licameli
98960c4fc3 Track.cpp does not depend directly on AudioIO 2019-06-12 11:14:19 -04:00
Paul Licameli
ef8c100cee MenuManager holds a back-reference to project; simplifies calls 2019-06-12 11:08:50 -04:00
Paul Licameli
b7386c2db1 Use idle events to update TrackPanel cursor...
... As when recording starts or stops, or the Tools button has changed, or
scrolling has changed the results of hit-test.

This reduces TrackPanel's intrusions into other code, including ProjectHistory.

Also for AdornedRulerPanel, which shares the base class CellularPanel
2019-06-12 11:05:55 -04:00
Paul Licameli
d69a76dc6f ProjectSettings.cpp does not depend on Snap, is free of cycles 2019-06-10 21:56:46 -04:00