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

314 Commits

Author SHA1 Message Date
Paul Licameli
cfbffe6d54 Bug 2228: crash closing, only Linux, gcc, opt, wxWidgets 3.0...
... Not the most satisfactory fix, but in fact no dangling pointers will
happen with the code we have now, because the relevant windows are all destroyed
only at the end of AudacityProject's lifetime, including the non-modal windows
(macros, history, lyrics, mixer board, plot spectrum, and contrast) which
are hidden and shown again, not destroyed and recreated, when dismissed and
reopened.

To do:  figure out how to make wxWeakRef work on that combination without
crashing.
2019-10-17 17:07:37 -04:00
Paul Licameli
1e4812f470 GetProjectPanel analogous to GetProjectFrame breaks dependencies...
... in places that need the TrackPanel but only to invoke common wxWindow
methods on it.

This eliminates direct use of TrackPanel by Scrubbing and ProjectWindow
2019-07-03 13:53:07 -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
490544cfd4 Lower EVT_TRACK_PANEL_TIMER into Project...
... so there are fewer dependencies on TrackPanel.

This frees ASlider, Ruler, and ViewInfo from cycles
2019-06-10 21:56:46 -04:00
Henric Jungheim
7d38ef8ed5 Declare GetProjectFrame() as AUDACITY_DLL_API.
The mod-null project uses it so it is presumable intended to be part of the
external API.
2019-06-08 12:13:14 -07:00
Henric Jungheim
acadd4b7fb Fix comment typo. 2019-06-08 12:07:25 -07:00
Paul Licameli
63b93fd2d1 Play region and its lock are stored together in ViewInfo 2019-06-03 01:43:27 -04:00
Paul Licameli
4f940c855d New files for ProjectWindow 2019-06-03 01:43:26 -04:00
Paul Licameli
4abc71c6b4 Do the separation of classes ProjectWindow and AudacityProject 2019-06-03 01:43:23 -04:00
Paul Licameli
3fc961f74a New files for ProjectFileIO 2019-06-03 01:24:01 -04:00
Paul Licameli
7b8bfd1d02 New attached structure ProjectFileIO handles load and save 2019-06-03 01:21:15 -04:00
Paul Licameli
fee5582826 New files for ProjectManager 2019-06-03 01:21:12 -04:00
Paul Licameli
0d1d8d20c6 Move management of saved window size into ProjectManager...
... So that class AllProjects does not use ProjectWindow
2019-06-03 01:18:12 -04:00
Paul Licameli
4274d44ab7 New attached structure ProjectManager handles project lifetime...
... that is, a factory function, open, close, import, undo/redo/rollback.

Also the callbacks from AudioIO, which need to invoke undo history push when
recording stops.

It is meant as a high-level class using several of the other things attached
to the project, while AudacityProject will be a low level class acting mostly
as just the container of the attached structures.
2019-06-03 01:18:12 -04:00
Paul Licameli
e5cf2165d1 New files for ProjectAudioIO 2019-06-03 01:18:08 -04:00
Paul Licameli
1f4202c878 New attached structure ProjectAudioIO handles tokens and meters 2019-06-03 01:15:47 -04:00
Paul Licameli
05efeeb5bd New files for ProjectSettings 2019-06-03 01:13:13 -04:00
Paul Licameli
dd10e00a2d New attached structure ProjectSettings stores rate, snap-to, et al. 2019-06-02 14:42:00 -04:00
Paul Licameli
327845b0ee Remove unneeded things from Project.h 2019-06-02 14:41:47 -04:00
Paul Licameli
96ad9c9b00 Remove a disabled EXPERIMENTAL and associated code...
... which referred to other functions that no longer exist
2019-06-02 13:27:56 -04:00
Paul Licameli
b25d3ad344 Limit access to global array of open projects & simplify iterations 2019-05-30 01:55:25 -04:00
Paul Licameli
82663892dc Accessors to get the project window...
... as a preparation for splitting up class AudacityProject.

Use ProjectWindow as an alias for AudacityProject, and fetch it from the
project with a static member function, where certain of its services are used;
pretending they are not the same class.

Use global accessor functions to get wxFrame from the project where only
wxFrame's member functions are needed, so there will be less dependency on
ProjectWindow when it becomes a distinct class.
2019-05-28 23:18:13 -04:00
Paul Licameli
02afcbca8c Redo TP_UpdateStatusMessage...
... Rename it as SetStatus; make it part of AudacityProject not
TrackPanelListener; and use a roundabout event signalling to cause the timer
restart.

Because SetStatus will be one of very few things left in AudacityProject, but
the timer handling will be part of another class decoupled from it.

And TrackPanelListener won't really be needed: TrackPanel will not need to
pretend it doesn't know what an AudacityProject is.
2019-05-28 19:36:47 -04:00
Paul Licameli
ae18f2f220 Construction of default play options moved out of AudacityProject 2019-05-28 19:33:21 -04:00
Paul Licameli
3416b5bad6 Toolbars accessed by static Get() functions, not through AudacityProject 2019-05-24 16:08:29 -04:00
Paul Licameli
7bb71257ed static AdornedRulerPanel::Get()...
... not member functions of AudacityProject
2019-05-24 15:48:16 -04:00
Paul Licameli
d1ad8f55e0 static TrackPanel::Get()...
... not member functions of AudacityProject
2019-05-24 15:46:30 -04:00
Paul Licameli
00117897bc Decouple class AudacityProject from some attached frames...
... use registered factories instead, so class AudacityProject needn't know
the other classes.

This frees 9 .cpp files, related to various non-modal dialogs, to higher
levels out of the big strongly connected component, as determined by
scripts/graph.pl!

But in reality there is still link dependency on them that the script does not
detect.  The remaining dependency is via the declarations of ViewMenu,
EffectMenu, etc. in Menus.cpp.

That could be broken with a registration system for menus.
2019-05-24 15:46:28 -04:00
Paul Licameli
f83a866276 Project::GetStatusBar is unnecessary (base class has it already) 2019-05-24 15:42:11 -04:00
Paul Licameli
8eb39cd606 Fix #include directives 2019-05-24 12:23:57 -04:00
Paul Licameli
52abbcdc4b static ::Get functions for overlays on TrackPanel...
... not member functions of AudacityProject.

AdornedRulerPanel is not (yet) made similarly independent of its overlay
code.

Two .cpp files implementing overlays escape dependency cycles to higher levels.
2019-05-23 16:35:06 -04:00
Paul Licameli
004997cec1 static BackgroundCell::Get()...
... not member functions of AudacityProject.

This frees BackgroundCell.cpp from dependency cycles
2019-05-23 16:35:05 -04:00
Paul Licameli
0923bc19a9 static MenuManager::Get()...
... not member functions of AudacityProject
2019-05-23 16:34:47 -04:00
Paul Licameli
2f0a76ed10 static Scrubber::Get()...
... not member functions of AudacityProject
2019-05-23 16:01:10 -04:00
Paul Licameli
15dd230ee1 static ToolManager::Get()...
... not member functions of AudacityProject
2019-05-23 15:24:28 -04:00
Paul Licameli
68e25f3b7d static SelectionState::Get()...
... not member functions of AudacityProject
2019-05-23 14:11:05 -04:00
Paul Licameli
c1c0030013 static Tags::Get...
... not member functions of AudacityProject
2019-05-23 14:08:09 -04:00
Paul Licameli
116ff70756 static TrackFactory::Get()...
... not member functions of AudacityProject
2019-05-23 13:55:14 -04:00
Paul Licameli
4ba4d0978b static CommandManager::Get()...
... not member functions of AudacityProject
2019-05-23 13:17:29 -04:00
Paul Licameli
805af452a4 static DirManager::Get()...
... not member functions of AudacityProject

This puts DirManager.cpp and four others back into the big strongly connected
component of link dependencies.  They will break out again when Project.cpp
becomes a low-level file.
2019-05-23 13:10:19 -04:00
Paul Licameli
72b7c776a8 static UndoManager::Get()...
... not member functions of AudacityProject
2019-05-23 12:58:47 -04:00
Paul Licameli
b5a57682b6 static ViewInfo::Get() and ZoomInfo::Get()...
... not member functions of AudacityProject
2019-05-23 12:58:47 -04:00
Paul Licameli
14ab93a01f static TrackList::Get()...
... not member function of AudacityProject
2019-05-23 12:58:47 -04:00
Paul Licameli
af039f19ff Generalize means for decoupled code to add data to core structures...
... Generalizing what was first done at 280e8d9 for certain menu command
handlers.

Allow core data structures to host data attached by other code, on which it
need have no compilation or link dependencies.
2019-05-21 10:08:56 -04:00
Paul Licameli
62899a32f4 All things with an UpdatePrefs() message listen for an event...
... Still to do, improve the handling of updates of only subsets of the prefs
2019-05-20 21:38:13 -04:00
Paul Licameli
dccb716f39 enum PlayMode tells whether there's cut preview; out of Project.h 2019-05-20 21:38:12 -04:00
Paul Licameli
0bd9bb3b90 Some steps of ResetProjectToEmpty into a new function 2019-05-20 21:38:11 -04:00
Paul Licameli
582b0ee40c Repeated code moved into new AudacityProject::CloseLock() 2019-05-20 21:38:11 -04:00
Paul Licameli
b3257c56da Remove AudacityProject::ExportFromTimerRecording 2019-05-20 21:38:10 -04:00
Paul Licameli
9c75ebe7f7 TrackPanel subscribes directly to ODManager for events...
... cutting middleman AudacityProject out
2019-05-20 21:38:10 -04:00