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

104 Commits

Author SHA1 Message Date
Paul Licameli
15313a27f7 Define virtual Track::PasteInto to simplfy Paste...
... Also making EditMenus not dependent on TimeTrack
2021-02-02 15:01:51 -05:00
Paul Licameli
6510b859f3 Define new virtual functions Track::GetIntervals (const and non-const) 2020-09-19 13:23:45 -04:00
Paul Licameli
4ca3e7096f
Track factory cleanup (#646)
* Don't need TrackFactory to make LabelTrack

* Don't need TrackFactory to make NoteTrack

* Don't need TrackFactory to make TimeTrack, or ZoomInfo in the factory

* Remove some forward declarations

* Rename TrackFactory as WaveTrackFactory, move it out of Track.cpp
2020-08-22 18:44:49 -05:00
Paul Licameli
1fcb77ebce
Unitary fixes (#598)
* Eliminate unneeded back-pointer to project from non-wave Tracks...

... now that DirManager is gone

* Remove unused declarations

* SampleData::mProject was not used

* Correct ProjectFileIO::GetLibraryError

* Remove unnecessary #include directives
2020-07-02 11:42:25 -05:00
Leland Lucius
d39590cf41 AUP3: First round of updates
!!! THERE WILL NO DOUBT BE BUGS !!!

This is a big one and there's still several things to
complete. Just want to get this in the wild to start
receiving feedback.

One big thing right now is that it will NOT load pre-aup3
files.  An importer is on the way for that.
2020-07-01 02:30:18 -05:00
Paul Licameli
3869a8f460 Remove allegro.h from other headers 2020-06-14 10:32:16 -04:00
Paul Licameli
a7408a7f80 Remove TimeWarper.h from other headers 2020-06-13 11:22:41 -04:00
Paul Licameli
fa4d35296e AllThemeResources.h has a .cpp & doesnt include Theme.h...
... (it used to, via MacroMagic)

This splits a cycle of 8 into 6 + 1 + 1
2020-05-28 05:50:24 -04:00
Yuri Chornoivan
d1ada5f08c Fix minor typos 2020-04-11 10:06:24 +01:00
Paul Licameli
cbe4a46af2 Bug2265: Should save and restore track heights...
... Regression happened at 3f1fd8ced0fb5fe617ad2dd7808cd1ae2ca2c0f3

The heights were written to file, but not read back again.

This fix was done carefully to avoid making dependency cycles.  We don't want
Track to depend on TrackView or TrackControls.

It's not great that LabelTrack, NoteTrack, TimeTrack, and WaveTrack now have
those dependencies, but at least they don't make cycles.

It would be better to figure out how to attach the view and controls to the
track with ClientData, then just invoke BuildAll to repopulate the view and
controls, so that they are non-null when you reach
Track::HandleCommonXMLAttribute.
2020-01-14 20:04:32 -05:00
Paul Licameli
51115903d4 Remove uses of overload of TieRadioButton taking int values...
... and migrate old preferences with EnumSetting
2019-11-27 13:37:24 -05:00
Paul Licameli
66e32ca35d Move Y position, height, and minimized state into TrackView...
... and eliminate some unnecessary calls to SubstitutePendingChangedTrack,
because the track and the substitute store Y and height in their shared
TrackView object.

Also make GetMinimizedHeight() virtual to avoid inclusion of TrackPanel.h in
TrackView.cpp.
2019-06-18 16:01:06 -04:00
Paul Licameli
79191d985d Separate Track::Clone (protected virtual) from Track::Duplicate 2019-06-18 16:01:06 -04:00
Paul Licameli
98f322d685 Move writing and reading of common Track fields into functions...
... also now writing selected state of TimeTrack as for other tracks, fixing
an omission, with no harm to forward compatibility
2019-06-18 11:36:50 -04:00
Paul Licameli
116ff70756 static TrackFactory::Get()...
... not member functions of AudacityProject
2019-05-23 13:55:14 -04:00
Paul Licameli
14ab93a01f static TrackList::Get()...
... not member function of AudacityProject
2019-05-23 12:58:47 -04:00
Paul Licameli
390af96796 Dispatch read of top-level project XML tags with a table of functions...
... which makes Project.cpp a bit less dependent on some details of other
classes

This puts Tags.cpp back into the big strongly connected component of the
dependency graph.  That will be remedied later when Project.cpp becomes a
low-level file
2019-05-20 21:38:07 -04:00
Paul Licameli
6c57948d8f Remove unnecessary #include-s from .cpp files...
... Unnecessary because transitively included.

But each .cpp file still includes its own .h file near the top to ensure
that it compiles indenendently, even if it is reincluded transitively later.
2019-05-16 17:21:00 -04:00
Pokechu22
99f4c35e18 Add support for zooming to show all notes, separate from max zoom
This is now the behavior of Zoom Reset, with Max Zoom being given the previous behavior.  Shift+Right-Click alternates between the two -- it zooms to all notes, unless it currently is zoomed to all notes in which case it performs a max zoom.

This fixes Bug 2093.  It also fixes Bug 1815, by performing the all-notes zoom when importing a track.
2019-04-15 16:52:26 +01:00
Pokechu22
88d26329bc Bug 1820: save top note for note tracks 2019-04-15 16:52:24 +01:00
Pokechu22
53823270e0 Rework note tracks to store top and bottom notes instead of pitch height
This simplifies a bunch of other work -- in particular zooming so that specific notes are visible, and keeping the same notes on screen when resizing the track.

Also included is a fix to YToIPitch to make it use mPitchHeight directly -- this solves some roundoff errors, which previously caused inaccurate results on some zoom levels.
2019-04-15 16:52:24 +01:00
Pokechu22
8e8d838a08 Refactor note track rendering/position height code into own class
This will make later refactoring easier, and also fixes some const-correctness issues
2019-04-15 16:52:23 +01:00
Paul Licameli
3760db9dff Remove wx/wxchar.h from headers 2019-03-29 15:56:54 -04:00
Paul Licameli
f45300f032 This is only comments, in files where USE_ macros are tested...
... following the comment convention used in the preceding commit.
2019-03-22 12:38:30 -04:00
Paul Licameli
173a300427 Include nothing before Audacity.h, as comments say we should...
... and remove some duplicated inclusions
2019-03-17 21:41:39 -04:00
Paul Licameli
a0aa69a248 All tracks allocated with make_shared, no more make_unique...
... so that we can use Track::SharedPointer without undefined behavior even on
tracks that don't yet belong to any TrackList.

Also fix the return type of function template TrackList::Add and remove some
casts.
2019-03-16 13:11:33 -04: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
James Crook
657159d542 Fix C4189 and C4100 Warnings
C4189 is 'Local variable initialised but not used'
C4100 is 'Unreferenced parameter'

Fixed some other warnings, e.g. about empty if, too.
2018-10-10 19:46:24 +01:00
Paul Licameli
51842fc78b Use TypeSwitch and track_cast 2018-10-01 10:58:47 -04:00
Paul Licameli
3f05063681 Split "Do" functions out of the "Set" functions for some Track settings 2018-02-21 19:20:55 -05:00
Paul Licameli
4ef8da8f16 Revert "Preliminaries to support better interaction of undo and recording"
This reverts commit 6e75ae58ac56d9c94af5a4ce97951f627808473a, reversing
changes made to 714d53e00f803643131bb775858ac930b39dd5b8.
2018-01-14 21:36:33 -05:00
Paul Licameli
8b60e7f02d Split "Do" functions out of the "Set" functions for some Track settings 2018-01-14 19:03:52 -05:00
Paul Licameli
cd06c04fa0 Use wxFprintf not fprintf and you don't need c_str 2017-12-16 11:54:18 -05:00
Paul Licameli
4a0fbf83af Bug1735 residual: paste into region starting < Note Track start...
... Note that the cases of end < start and end > start follow different paths.
2017-09-26 12:05:47 -04:00
Paul Licameli
cee28ab535 Bug1735 addendum: fix oddities pasting left of Note track offset...
... See comment http://bugzilla.audacityteam.org/show_bug.cgi?id=1735#c3
2017-09-08 11:29:21 -04:00
Paul Licameli
47552acfc3 Bug1735: crash pasting copied part of Note track starting at > 0...
... See also commit 76a9962a5e4901445ce9df290a8e623f7fb0ccec

What was done there for Cut, should have been done too for Copy.
2017-09-07 19:22:15 -04:00
Paul Licameli
76a9962a5e Bug1719: crash left-stretching one Midi track synced to another...
... Fixed by making the cutting of a Note track always have 0 offset; as is
also the case for cuttings of other types of tracks.
2017-08-17 19:08:13 -04:00
Paul Licameli
f0de38dec1 Scanned for bad naked new; found none; changed comments, used safenew 2017-07-23 09:35:01 -04:00
Paul Licameli
f725e937a4 Still better redrawing of resized Note tracks, still not perfect...
... The uses of GetPitchHeight(1) should be reexamined
2017-07-19 15:20:47 -04:00
Paul Licameli
8279adc797 Changing NoteTrack height, keep # of piano keys (roughly) constant...
This fix is imperfect, but quick and easy
2017-07-19 14:46:23 -04:00
Paul Licameli
207db5e547 Improved Note Track vertical ruler zooming...
... Make consistent zoom in and out limits for mouse picks and for scrollwheel

Make scrollwheel do in or out by a constant multiplier, analogously with wave
track

The Note track remembers a continuously varying key height, but rounds it off
whenever it draws
2017-07-19 14:28:17 -04:00
James Crook
60405eb7fe Theme Tweaks
- Highlighting of Buttons in TCP and Sliders
- No crinkly Help Icon anymore
- Invisible numbers in NoteTrack fixed
- Better visibility of label track dragger elements
- Theme rearranged more logically, and dead images culled
2017-07-19 15:27:00 +01:00
Pokechu22
62ebb2f95d Remove unused and unneeded MIDI methods and variables
The fields in AudioIO are simply unneeded (commented out, declared but never implemented, or otherwise unused).

mLastMidiPosition (in NoteTrack) looks like the vestiges of a far older attempt at MIDI playback; the field itself is completely unused though so it is safe to remove it.
2017-07-16 11:07:28 -04:00
Paul Licameli
44d6d5f427 Highlight MIDI channel buttons 2017-07-09 12:34:46 -04:00
Paul Licameli
2c1a16f593 Changed lifetime management of UIHandle objects, no singletons...
... Rather, construct them during hit tests (also capturing more state sooner
rather than at Click time, and adding some accessors for later use)

This also fixes bug 1677 by other means and avoids similar problems.

A cell may be implemented to re-use a previously hit handle object, not yet
clicked, in a later hit test, by remembering a weak pointer, but TrackPanel
holds the strong pointers that determine when the object is destroyed.

And the objects will surely be destroyed after drag-release, or ESC key.

For now they are also destroyed whenever not dragging, and hit-testing is
re-invoked; that will be changed later, so that the re-use mentioned above
becomes effective, but still they will be destroyed when the pointer moves
from one cell to another.
2017-07-09 07:23:28 -04:00
Pokechu22
b46abbec62 Keep the current note centered when holding control to zoom 2017-07-04 06:45:21 -04:00
Pokechu22
0e21143cee Implement scrolling for the note track vertical ruler
Command zooms in/out, and shift moves up and down.
2017-07-03 14:23:13 -04:00
Paul Licameli
329aa8393e Table includes draw function for Midi controls 2017-06-13 14:02:10 -04:00
Paul Licameli
f0c149b890 Default MIDI track height is enough to display velocity slider...
... It is computed from the layout table, and in fact comes to 158 pixels,
versus 150 for other tracks.
2017-06-06 22:39:30 -04:00
Paul Licameli
5395f253bf Reviewed use of Track::GetY; don't use in NoteTrack; fix off-by-1's 2017-06-04 00:15:29 -04:00