mirror of
https://github.com/cookiengineer/audacity
synced 2025-10-21 22:12:58 +02:00
Move display type from WaveTrack to WaveTrackView
This commit is contained in:
@@ -15,6 +15,7 @@ Paul Licameli split from WaveTrackView.cpp
|
||||
|
||||
#include "SpectrumVRulerControls.h"
|
||||
#include "WaveTrackView.h"
|
||||
#include "WaveTrackViewConstants.h"
|
||||
|
||||
#include "../../../../AColor.h"
|
||||
#include "../../../../Prefs.h"
|
||||
|
@@ -16,7 +16,7 @@ Paul Licameli split from TrackPanel.cpp
|
||||
#include "../../ui/PlayableTrackButtonHandles.h"
|
||||
#include "WaveTrackSliderHandles.h"
|
||||
|
||||
#include "../../../ui/TrackView.h"
|
||||
#include "WaveTrackView.h"
|
||||
#include "../../../../AudioIOBase.h"
|
||||
#include "../../../../CellularPanel.h"
|
||||
#include "../../../../Menus.h"
|
||||
@@ -599,7 +599,7 @@ void WaveTrackMenuTable::InitMenu(Menu *pMenu, void *pUserData)
|
||||
|
||||
std::vector<int> checkedIds;
|
||||
|
||||
const int display = pTrack->GetDisplay();
|
||||
const auto display = WaveTrackView::Get( *pTrack ).GetDisplay();
|
||||
checkedIds.push_back(
|
||||
display == WaveTrackViewConstants::Waveform
|
||||
? (pTrack->GetWaveformSettings().isLinear()
|
||||
@@ -702,7 +702,9 @@ BEGIN_POPUP_MENU(WaveTrackMenuTable)
|
||||
#endif
|
||||
|
||||
WaveTrack *const pTrack = static_cast<WaveTrack*>(mpTrack);
|
||||
if( pTrack && pTrack->GetDisplay() != WaveTrackViewConstants::Spectrum ){
|
||||
if( pTrack &&
|
||||
WaveTrackView::Get( *pTrack ).GetDisplay()
|
||||
!= WaveTrackViewConstants::Spectrum ){
|
||||
POPUP_MENU_SEPARATOR()
|
||||
POPUP_MENU_SUB_MENU(OnWaveColorID, _("&Wave Color"), WaveColorMenuTable)
|
||||
}
|
||||
@@ -723,7 +725,7 @@ void WaveTrackMenuTable::OnSetDisplay(wxCommandEvent & event)
|
||||
const auto pTrack = static_cast<WaveTrack*>(mpData->pTrack);
|
||||
|
||||
bool linear = false;
|
||||
WaveTrack::WaveTrackDisplay id;
|
||||
WaveTrackView::WaveTrackDisplay id;
|
||||
switch (idInt) {
|
||||
default:
|
||||
case OnWaveformID:
|
||||
@@ -734,14 +736,15 @@ void WaveTrackMenuTable::OnSetDisplay(wxCommandEvent & event)
|
||||
id = Spectrum; break;
|
||||
}
|
||||
|
||||
const bool wrongType = pTrack->GetDisplay() != id;
|
||||
const bool wrongType = WaveTrackView::Get( *pTrack ).GetDisplay() != id;
|
||||
const bool wrongScale =
|
||||
(id == Waveform &&
|
||||
pTrack->GetWaveformSettings().isLinear() != linear);
|
||||
if (wrongType || wrongScale) {
|
||||
for (auto channel : TrackList::Channels(pTrack)) {
|
||||
channel->SetLastScaleType();
|
||||
channel->SetDisplay(WaveTrack::WaveTrackDisplay(id));
|
||||
WaveTrackView::Get( *channel )
|
||||
.SetDisplay(WaveTrackView::WaveTrackDisplay(id));
|
||||
if (wrongScale)
|
||||
channel->GetIndependentWaveformSettings().scaleType = linear
|
||||
? WaveformSettings::stLinear
|
||||
@@ -876,8 +879,8 @@ void WaveTrackMenuTable::OnMergeStereo(wxCommandEvent &)
|
||||
|
||||
// Set NEW track heights and minimized state
|
||||
auto
|
||||
&view = TrackView::Get( *pTrack ),
|
||||
&partnerView = TrackView::Get( *partner );
|
||||
&view = WaveTrackView::Get( *pTrack ),
|
||||
&partnerView = WaveTrackView::Get( *partner );
|
||||
view.SetMinimized(false);
|
||||
partnerView.SetMinimized(false);
|
||||
int AverageHeight = (view.GetHeight() + partnerView.GetHeight()) / 2;
|
||||
@@ -886,6 +889,8 @@ void WaveTrackMenuTable::OnMergeStereo(wxCommandEvent &)
|
||||
view.SetMinimized(bBothMinimizedp);
|
||||
partnerView.SetMinimized(bBothMinimizedp);
|
||||
|
||||
partnerView.SetDisplay( view.GetDisplay() );
|
||||
|
||||
//On Demand - join the queues together.
|
||||
if (ODManager::IsInstanceCreated())
|
||||
if (!ODManager::Instance()
|
||||
|
@@ -22,6 +22,8 @@ Paul Licameli split from TrackPanel.cpp
|
||||
#include "../../../../TrackPanelMouseEvent.h"
|
||||
#include "../../../../ViewInfo.h"
|
||||
#include "../../../../prefs/SpectrogramSettings.h"
|
||||
#include "../../../../prefs/WaveformSettings.h"
|
||||
#include "../../../../prefs/TracksPrefs.h"
|
||||
|
||||
#include "../../../ui/TimeShiftHandle.h"
|
||||
|
||||
@@ -39,12 +41,34 @@ WaveTrackView::WaveTrackView( const std::shared_ptr<Track> &pTrack )
|
||||
: CommonTrackView{ pTrack }
|
||||
{
|
||||
WaveTrackSubViews::BuildAll();
|
||||
|
||||
mDisplay = TracksPrefs::ViewModeChoice();
|
||||
|
||||
// Force creation always:
|
||||
WaveformSettings &settings = static_cast< WaveTrack* >( pTrack.get() )
|
||||
->GetIndependentWaveformSettings();
|
||||
|
||||
if (mDisplay == WaveTrackViewConstants::obsoleteWaveformDBDisplay) {
|
||||
mDisplay = WaveTrackViewConstants::Waveform;
|
||||
settings.scaleType = WaveformSettings::stLogarithmic;
|
||||
}
|
||||
}
|
||||
|
||||
WaveTrackView::~WaveTrackView()
|
||||
{
|
||||
}
|
||||
|
||||
void WaveTrackView::CopyTo( Track &track ) const
|
||||
{
|
||||
TrackView::CopyTo( track );
|
||||
auto &other = TrackView::Get( track );
|
||||
|
||||
if ( const auto pOther = dynamic_cast< WaveTrackView* >( &other ) ) {
|
||||
// only one field is important to preserve in undo/redo history
|
||||
pOther->mDisplay = mDisplay;
|
||||
}
|
||||
}
|
||||
|
||||
std::vector<UIHandlePtr> WaveTrackView::DetailedHitTest
|
||||
(const TrackPanelMouseState &st,
|
||||
const AudacityProject *pProject, int currentTool, bool bMultiTool)
|
||||
@@ -87,8 +111,7 @@ WaveTrackView::DoDetailedHitTest
|
||||
|
||||
auto WaveTrackView::GetSubViews( const wxRect &rect ) -> Refinement
|
||||
{
|
||||
auto wt = static_cast<WaveTrack*>( FindTrack().get() );
|
||||
auto display = wt->GetDisplay();
|
||||
auto display = mDisplay;
|
||||
std::shared_ptr<TrackView> pSubView;
|
||||
WaveTrackSubViews::ForEach( [&,display]( WaveTrackSubView &subView ){
|
||||
if ( subView.SubViewType() == display )
|
||||
|
@@ -44,6 +44,9 @@ public:
|
||||
WaveTrackView( const std::shared_ptr<Track> &pTrack );
|
||||
~WaveTrackView() override;
|
||||
|
||||
// Preserve some view state too for undo/redo purposes
|
||||
void CopyTo( Track &track ) const override;
|
||||
|
||||
std::shared_ptr<TrackVRulerControls> DoGetVRulerControls() override;
|
||||
|
||||
// CommonTrackView implementation
|
||||
@@ -58,6 +61,11 @@ public:
|
||||
const std::shared_ptr<WaveTrack> &wt,
|
||||
CommonTrackView &view);
|
||||
|
||||
using WaveTrackDisplay = WaveTrackViewConstants::Display;
|
||||
|
||||
WaveTrackDisplay GetDisplay() const { return mDisplay; }
|
||||
void SetDisplay(WaveTrackDisplay display) { mDisplay = display; }
|
||||
|
||||
private:
|
||||
// TrackPanelDrawable implementation
|
||||
void Draw(
|
||||
@@ -74,6 +82,8 @@ private:
|
||||
|
||||
protected:
|
||||
void DoSetMinimized( bool minimized ) override;
|
||||
|
||||
WaveTrackDisplay mDisplay;
|
||||
};
|
||||
|
||||
// Helper for drawing routines
|
||||
|
@@ -15,6 +15,7 @@ Paul Licameli split from WaveTrackView.cpp
|
||||
|
||||
#include "WaveformVRulerControls.h"
|
||||
#include "WaveTrackView.h"
|
||||
#include "WaveTrackViewConstants.h"
|
||||
|
||||
#include "CutlineHandle.h"
|
||||
#include "SampleHandle.h"
|
||||
|
Reference in New Issue
Block a user