mirror of
https://github.com/cookiengineer/audacity
synced 2025-08-02 08:59:28 +02:00
TrackPanel still draws Gain and Pan, but no longer handles clicks on them...
... also implemented ESC key for those drags
This commit is contained in:
parent
5ee73f944d
commit
a569476e79
@ -1229,6 +1229,7 @@
|
||||
5E73964A1DAFD91D00BA0A4D /* CutlineHandle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E7396481DAFD91D00BA0A4D /* CutlineHandle.cpp */; };
|
||||
5E73964D1DAFD95B00BA0A4D /* ButtonHandle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E73964B1DAFD95B00BA0A4D /* ButtonHandle.cpp */; };
|
||||
5E7396501DAFD98400BA0A4D /* SliderHandle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E73964E1DAFD98400BA0A4D /* SliderHandle.cpp */; };
|
||||
5E7396561DAFDA0000BA0A4D /* WaveTrackSliderHandles.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E7396541DAFDA0000BA0A4D /* WaveTrackSliderHandles.cpp */; };
|
||||
5E74D2E31CC4429700D88B0B /* EditCursorOverlay.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E74D2DD1CC4429700D88B0B /* EditCursorOverlay.cpp */; };
|
||||
5E74D2E41CC4429700D88B0B /* PlayIndicatorOverlay.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E74D2DF1CC4429700D88B0B /* PlayIndicatorOverlay.cpp */; };
|
||||
5E74D2E51CC4429700D88B0B /* Scrubbing.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E74D2E11CC4429700D88B0B /* Scrubbing.cpp */; };
|
||||
@ -3058,6 +3059,8 @@
|
||||
5E73964C1DAFD95B00BA0A4D /* ButtonHandle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ButtonHandle.h; sourceTree = "<group>"; };
|
||||
5E73964E1DAFD98400BA0A4D /* SliderHandle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SliderHandle.cpp; sourceTree = "<group>"; };
|
||||
5E73964F1DAFD98400BA0A4D /* SliderHandle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SliderHandle.h; sourceTree = "<group>"; };
|
||||
5E7396541DAFDA0000BA0A4D /* WaveTrackSliderHandles.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WaveTrackSliderHandles.cpp; sourceTree = "<group>"; };
|
||||
5E7396551DAFDA0000BA0A4D /* WaveTrackSliderHandles.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WaveTrackSliderHandles.h; sourceTree = "<group>"; };
|
||||
5E74D2D91CC4427B00D88B0B /* TrackPanelCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TrackPanelCell.h; sourceTree = "<group>"; };
|
||||
5E74D2DA1CC4427B00D88B0B /* TrackPanelCellIterator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TrackPanelCellIterator.h; sourceTree = "<group>"; };
|
||||
5E74D2DD1CC4429700D88B0B /* EditCursorOverlay.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EditCursorOverlay.cpp; sourceTree = "<group>"; };
|
||||
@ -5826,11 +5829,13 @@
|
||||
5E7396481DAFD91D00BA0A4D /* CutlineHandle.cpp */,
|
||||
5E000A1F1EC7B5D500E8FD93 /* SampleHandle.cpp */,
|
||||
5EA018231EC7B226001F2996 /* WaveTrackControls.cpp */,
|
||||
5E7396541DAFDA0000BA0A4D /* WaveTrackSliderHandles.cpp */,
|
||||
5EA018251EC7B226001F2996 /* WaveTrackUI.cpp */,
|
||||
5EA018261EC7B226001F2996 /* WaveTrackVRulerControls.cpp */,
|
||||
5E7396491DAFD91D00BA0A4D /* CutlineHandle.h */,
|
||||
5E000A201EC7B5D500E8FD93 /* SampleHandle.h */,
|
||||
5EA018241EC7B226001F2996 /* WaveTrackControls.h */,
|
||||
5E7396551DAFDA0000BA0A4D /* WaveTrackSliderHandles.h */,
|
||||
5EA018271EC7B226001F2996 /* WaveTrackVRulerControls.h */,
|
||||
);
|
||||
path = ui;
|
||||
@ -7749,6 +7754,7 @@
|
||||
28501EAA0CEED0670029ABAA /* LoadVamp.cpp in Sources */,
|
||||
5ED1D0AD1CDE55BD00471E3C /* Overlay.cpp in Sources */,
|
||||
28501EAB0CEED0680029ABAA /* VampEffect.cpp in Sources */,
|
||||
5E7396561DAFDA0000BA0A4D /* WaveTrackSliderHandles.cpp in Sources */,
|
||||
288052C20DEA73F500671EA4 /* NonGuiThread.cpp in Sources */,
|
||||
28530C4C0DF2105200555C94 /* HtmlWindow.cpp in Sources */,
|
||||
28530C4D0DF2105200555C94 /* ProgressDialog.cpp in Sources */,
|
||||
|
@ -567,6 +567,8 @@ audacity_SOURCES = \
|
||||
tracks/playabletrack/wavetrack/ui/SampleHandle.h \
|
||||
tracks/playabletrack/wavetrack/ui/WaveTrackControls.cpp \
|
||||
tracks/playabletrack/wavetrack/ui/WaveTrackControls.h \
|
||||
tracks/playabletrack/wavetrack/ui/WaveTrackSliderHandles.cpp \
|
||||
tracks/playabletrack/wavetrack/ui/WaveTrackSliderHandles.h \
|
||||
tracks/playabletrack/wavetrack/ui/WaveTrackVRulerControls.cpp \
|
||||
tracks/playabletrack/wavetrack/ui/WaveTrackVRulerControls.h \
|
||||
tracks/playabletrack/wavetrack/ui/WaveTrackUI.cpp \
|
||||
|
@ -1147,8 +1147,6 @@ void TrackPanel::HandleInterruptedDrag()
|
||||
IsClosing,
|
||||
IsAdjustingLabel,
|
||||
IsRearranging,
|
||||
IsGainSliding,
|
||||
IsPanSliding,
|
||||
IsStretching,
|
||||
IsVelocitySliding
|
||||
*/
|
||||
@ -3576,77 +3574,6 @@ void TrackPanel::HandleMinimizing(wxMouseEvent & event)
|
||||
}
|
||||
}
|
||||
|
||||
void TrackPanel::HandleSliders(wxMouseEvent &event, bool pan)
|
||||
{
|
||||
LWSlider *slider;
|
||||
#ifdef EXPERIMENTAL_OUTPUT_DISPLAY
|
||||
bool panZero = false;
|
||||
#endif
|
||||
wxASSERT(mCapturedTrack->GetKind() == Track::Wave);
|
||||
|
||||
// On the Mac, we'll lose track capture if the slider dialog
|
||||
// is displayed, but it doesn't hurt to do this for all plats.
|
||||
WaveTrack *capturedTrack = (WaveTrack *) mCapturedTrack;
|
||||
|
||||
auto rect = FindTrackRect( capturedTrack, true );
|
||||
if (pan) {
|
||||
wxRect sliderRect;
|
||||
TrackInfo::GetPanRect(rect.GetTopLeft(), sliderRect);
|
||||
slider = mTrackInfo.PanSlider(sliderRect, capturedTrack, true, this);
|
||||
}
|
||||
else {
|
||||
wxRect sliderRect;
|
||||
TrackInfo::GetGainRect(rect.GetTopLeft(), sliderRect);
|
||||
slider = mTrackInfo.GainSlider(sliderRect, capturedTrack, true, this);
|
||||
}
|
||||
|
||||
slider->OnMouseEvent(event);
|
||||
|
||||
//If we have a double-click, do this...
|
||||
if (event.LeftDClick())
|
||||
mMouseCapture = IsUncaptured;
|
||||
|
||||
float newValue = slider->Get();
|
||||
MixerBoard* pMixerBoard = this->GetMixerBoard(); // Update mixer board, too.
|
||||
|
||||
// Assume linked track is wave or null
|
||||
const auto link = static_cast<WaveTrack *>(capturedTrack->GetLink());
|
||||
|
||||
if (pan) {
|
||||
#ifdef EXPERIMENTAL_OUTPUT_DISPLAY
|
||||
panZero = capturedTrack->SetPan(newValue);
|
||||
#else
|
||||
capturedTrack->SetPan(newValue);
|
||||
#endif
|
||||
if (link)
|
||||
link->SetPan(newValue);
|
||||
|
||||
#ifdef EXPERIMENTAL_OUTPUT_DISPLAY
|
||||
if(panZero) MakeParentRedrawScrollbars();
|
||||
#endif
|
||||
|
||||
if (pMixerBoard)
|
||||
pMixerBoard->UpdatePan(capturedTrack);
|
||||
}
|
||||
else {
|
||||
capturedTrack->SetGain(newValue);
|
||||
if (link)
|
||||
link->SetGain(newValue);
|
||||
|
||||
if (pMixerBoard)
|
||||
pMixerBoard->UpdateGain(capturedTrack);
|
||||
}
|
||||
|
||||
RefreshTrack(capturedTrack);
|
||||
|
||||
if (event.ButtonUp()) {
|
||||
MakeParentPushState(pan ? _("Moved pan slider") : _("Moved gain slider"),
|
||||
pan ? _("Pan") : _("Gain"),
|
||||
UndoPush::CONSOLIDATE);
|
||||
SetCapturedTrack( NULL );
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef EXPERIMENTAL_MIDI_OUT
|
||||
void TrackPanel::HandleVelocitySlider(wxMouseEvent &event)
|
||||
{
|
||||
@ -3950,14 +3877,6 @@ void TrackPanel::HandleLabelClick(wxMouseEvent & event)
|
||||
if (isleft && MinimizeFunc(t, rect, event.m_x, event.m_y))
|
||||
return;
|
||||
|
||||
if (isleft && t->GetKind() == Track::Wave)
|
||||
{
|
||||
if (GainFunc(t, rect, event, event.m_x, event.m_y))
|
||||
return;
|
||||
|
||||
if (PanFunc(t, rect, event, event.m_x, event.m_y))
|
||||
return;
|
||||
}
|
||||
#ifdef USE_MIDI
|
||||
// DM: If it's a NoteTrack, it has special controls
|
||||
else if (t->GetKind() == Track::Note)
|
||||
@ -4076,40 +3995,6 @@ void TrackPanel::CalculateRearrangingThresholds(wxMouseEvent & event)
|
||||
mMoveDownThreshold = INT_MAX;
|
||||
}
|
||||
|
||||
bool TrackPanel::GainFunc(Track * t, wxRect rect, wxMouseEvent &event,
|
||||
int x, int y)
|
||||
{
|
||||
wxRect sliderRect;
|
||||
mTrackInfo.GetGainRect(rect.GetTopLeft(), sliderRect);
|
||||
if ( TrackInfo::HideTopItem( rect, sliderRect, kTrackInfoSliderAllowance ) )
|
||||
return false;
|
||||
if (!sliderRect.Contains(x, y))
|
||||
return false;
|
||||
|
||||
SetCapturedTrack( t, IsGainSliding);
|
||||
mCapturedRect = rect;
|
||||
HandleSliders(event, false);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TrackPanel::PanFunc(Track * t, wxRect rect, wxMouseEvent &event,
|
||||
int x, int y)
|
||||
{
|
||||
wxRect sliderRect;
|
||||
mTrackInfo.GetPanRect(rect.GetTopLeft(), sliderRect);
|
||||
if ( TrackInfo::HideTopItem( rect, sliderRect, kTrackInfoSliderAllowance ) )
|
||||
return false;
|
||||
if (!sliderRect.Contains(x, y))
|
||||
return false;
|
||||
|
||||
SetCapturedTrack( t, IsPanSliding);
|
||||
mCapturedRect = rect;
|
||||
HandleSliders(event, true);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
#ifdef EXPERIMENTAL_MIDI_OUT
|
||||
bool TrackPanel::VelocityFunc(Track * t, wxRect rect, wxMouseEvent &event,
|
||||
int x, int y)
|
||||
@ -4969,13 +4854,6 @@ try
|
||||
|
||||
if (event.Leaving())
|
||||
{
|
||||
|
||||
// PRL: was this test really needed? It interfered with my refactoring
|
||||
// that tried to eliminate those enum values.
|
||||
// I think it was never true, that mouse capture was pan or gain sliding,
|
||||
// but no mouse button was down.
|
||||
// if (mMouseCapture != IsPanSliding && mMouseCapture != IsGainSliding)
|
||||
|
||||
auto buttons =
|
||||
// Bug 1325: button state in Leaving events is unreliable on Mac.
|
||||
// Poll the global state instead.
|
||||
@ -5058,12 +4936,6 @@ try
|
||||
case IsRearranging:
|
||||
HandleRearrange(event);
|
||||
break;
|
||||
case IsGainSliding:
|
||||
HandleSliders(event, false);
|
||||
break;
|
||||
case IsPanSliding:
|
||||
HandleSliders(event, true);
|
||||
break;
|
||||
#ifdef EXPERIMENTAL_MIDI_OUT
|
||||
case IsVelocitySliding:
|
||||
HandleVelocitySlider(event);
|
||||
|
@ -494,7 +494,6 @@ protected:
|
||||
virtual void HandleClosing(wxMouseEvent & event);
|
||||
virtual void HandlePopping(wxMouseEvent & event);
|
||||
virtual void HandleMinimizing(wxMouseEvent & event);
|
||||
virtual void HandleSliders(wxMouseEvent &event, bool pan);
|
||||
#ifdef EXPERIMENTAL_MIDI_OUT
|
||||
virtual void HandleVelocitySlider(wxMouseEvent &event);
|
||||
#endif
|
||||
@ -507,10 +506,6 @@ protected:
|
||||
virtual bool PopupFunc(Track * t, wxRect rect, int x, int y);
|
||||
|
||||
virtual bool MinimizeFunc(Track *t, wxRect rect, int x, int f);
|
||||
virtual bool GainFunc(Track * t, wxRect rect, wxMouseEvent &event,
|
||||
int x, int y);
|
||||
virtual bool PanFunc(Track * t, wxRect rect, wxMouseEvent &event,
|
||||
int x, int y);
|
||||
#ifdef EXPERIMENTAL_MIDI_OUT
|
||||
virtual bool VelocityFunc(Track * t, wxRect rect, wxMouseEvent &event,
|
||||
int x, int y);
|
||||
@ -806,8 +801,6 @@ public:
|
||||
IsRearranging,
|
||||
IsMuting,
|
||||
IsSoloing,
|
||||
IsGainSliding,
|
||||
IsPanSliding,
|
||||
IsMinimizing,
|
||||
IsPopping,
|
||||
#ifdef EXPERIMENTAL_MIDI_OUT
|
||||
|
@ -11,6 +11,7 @@ Paul Licameli split from TrackPanel.cpp
|
||||
#include "../../../../Audacity.h"
|
||||
#include "WaveTrackControls.h"
|
||||
#include "../../ui/PlayableTrackButtonHandles.h"
|
||||
#include "WaveTrackSliderHandles.h"
|
||||
|
||||
#include "../../../../HitTestResult.h"
|
||||
#include "../../../../Track.h"
|
||||
@ -51,6 +52,14 @@ HitTestResult WaveTrackControls::HitTest
|
||||
(result = SoloButtonHandle::HitTest
|
||||
(event, rect, pProject, track)).handle)
|
||||
return result;
|
||||
|
||||
if (NULL != (result =
|
||||
GainSliderHandle::HitTest(event, rect, pProject, mpTrack)).handle)
|
||||
return result;
|
||||
|
||||
if (NULL != (result =
|
||||
PanSliderHandle::HitTest(event, rect, pProject, mpTrack)).handle)
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
|
190
src/tracks/playabletrack/wavetrack/ui/WaveTrackSliderHandles.cpp
Normal file
190
src/tracks/playabletrack/wavetrack/ui/WaveTrackSliderHandles.cpp
Normal file
@ -0,0 +1,190 @@
|
||||
#include "WaveTrackSliderHandles.h"
|
||||
|
||||
/**********************************************************************
|
||||
|
||||
Audacity: A Digital Audio Editor
|
||||
|
||||
WaveTrackSliderHandles.cpp
|
||||
|
||||
Paul Licameli split from TrackPanel.cpp
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
#include "../../../../Audacity.h"
|
||||
#include "WaveTrackSliderHandles.h"
|
||||
|
||||
#include "../../../../HitTestResult.h"
|
||||
#include "../../../../MixerBoard.h"
|
||||
#include "../../../../Project.h"
|
||||
#include "../../../../RefreshCode.h"
|
||||
#include "../../../../TrackPanel.h"
|
||||
#include "../../../../UndoManager.h"
|
||||
#include "../../../../WaveTrack.h"
|
||||
|
||||
GainSliderHandle::GainSliderHandle()
|
||||
: SliderHandle()
|
||||
{
|
||||
}
|
||||
|
||||
GainSliderHandle::~GainSliderHandle()
|
||||
{
|
||||
}
|
||||
|
||||
GainSliderHandle &GainSliderHandle::Instance()
|
||||
{
|
||||
static GainSliderHandle instance;
|
||||
return instance;
|
||||
}
|
||||
|
||||
WaveTrack *GainSliderHandle::GetTrack()
|
||||
{
|
||||
return static_cast<WaveTrack*>(mpTrack);
|
||||
}
|
||||
|
||||
float GainSliderHandle::GetValue()
|
||||
{
|
||||
return static_cast<WaveTrack*>(mpTrack)->GetGain();
|
||||
}
|
||||
|
||||
UIHandle::Result GainSliderHandle::SetValue
|
||||
(AudacityProject *pProject, float newValue)
|
||||
{
|
||||
GetTrack()->SetGain(newValue);
|
||||
|
||||
// Assume linked track is wave or null
|
||||
const auto link = static_cast<WaveTrack*>(mpTrack->GetLink());
|
||||
if (link)
|
||||
link->SetGain(newValue);
|
||||
|
||||
MixerBoard *const pMixerBoard = pProject->GetMixerBoard();
|
||||
if (pMixerBoard)
|
||||
pMixerBoard->UpdateGain(GetTrack());
|
||||
|
||||
return RefreshCode::RefreshNone;
|
||||
}
|
||||
|
||||
UIHandle::Result GainSliderHandle::CommitChanges
|
||||
(const wxMouseEvent &, AudacityProject *pProject)
|
||||
{
|
||||
pProject->PushState(_("Moved gain slider"), _("Gain"), UndoPush::CONSOLIDATE);
|
||||
return RefreshCode::RefreshCell;
|
||||
}
|
||||
|
||||
HitTestResult GainSliderHandle::HitTest
|
||||
(const wxMouseEvent &event, const wxRect &rect,
|
||||
const AudacityProject *pProject, Track *pTrack)
|
||||
{
|
||||
if (!event.Button(wxMOUSE_BTN_LEFT))
|
||||
return {};
|
||||
|
||||
wxRect sliderRect;
|
||||
TrackInfo::GetGainRect(rect.GetTopLeft(), sliderRect);
|
||||
if ( TrackInfo::HideTopItem( rect, sliderRect, kTrackInfoSliderAllowance ) )
|
||||
return {};
|
||||
if (sliderRect.Contains(event.m_x, event.m_y)) {
|
||||
WaveTrack *const wavetrack = static_cast<WaveTrack*>(pTrack);
|
||||
wxRect sliderRect;
|
||||
TrackInfo::GetGainRect(rect.GetTopLeft(), sliderRect);
|
||||
auto slider = TrackInfo::GainSlider
|
||||
(sliderRect, wavetrack, true,
|
||||
const_cast<TrackPanel*>(pProject->GetTrackPanel()));
|
||||
Instance().mpSlider = slider;
|
||||
Instance().mpTrack = wavetrack;
|
||||
return {
|
||||
HitPreview(),
|
||||
&Instance()
|
||||
};
|
||||
}
|
||||
else
|
||||
return {};
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
PanSliderHandle::PanSliderHandle()
|
||||
: SliderHandle()
|
||||
{
|
||||
}
|
||||
|
||||
PanSliderHandle::~PanSliderHandle()
|
||||
{
|
||||
}
|
||||
|
||||
PanSliderHandle &PanSliderHandle::Instance()
|
||||
{
|
||||
static PanSliderHandle instance;
|
||||
return instance;
|
||||
}
|
||||
|
||||
WaveTrack *PanSliderHandle::GetTrack()
|
||||
{
|
||||
return static_cast<WaveTrack*>(mpTrack);
|
||||
}
|
||||
|
||||
float PanSliderHandle::GetValue()
|
||||
{
|
||||
return GetTrack()->GetPan();
|
||||
}
|
||||
|
||||
UIHandle::Result PanSliderHandle::SetValue(AudacityProject *pProject, float newValue)
|
||||
{
|
||||
#ifdef EXPERIMENTAL_OUTPUT_DISPLAY
|
||||
bool panZero = false;
|
||||
panZero = static_cast<WaveTrack*>(mpTrack)->SetPan(newValue);
|
||||
#else
|
||||
mpTrack->SetPan(newValue);
|
||||
#endif
|
||||
|
||||
// Assume linked track is wave or null
|
||||
const auto link = static_cast<WaveTrack*>(mpTrack->GetLink());
|
||||
if (link)
|
||||
link->SetPan(newValue);
|
||||
|
||||
MixerBoard *const pMixerBoard = pProject->GetMixerBoard();
|
||||
if (pMixerBoard)
|
||||
pMixerBoard->UpdatePan(GetTrack());
|
||||
|
||||
using namespace RefreshCode;
|
||||
Result result = RefreshNone;
|
||||
|
||||
#ifdef EXPERIMENTAL_OUTPUT_DISPLAY
|
||||
if(panZero)
|
||||
result |= FixScrollbars;
|
||||
#endif
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
UIHandle::Result PanSliderHandle::CommitChanges
|
||||
(const wxMouseEvent &, AudacityProject *pProject)
|
||||
{
|
||||
pProject->PushState(_("Moved pan slider"), _("Pan"), UndoPush::CONSOLIDATE);
|
||||
return RefreshCode::RefreshCell;
|
||||
}
|
||||
|
||||
HitTestResult PanSliderHandle::HitTest
|
||||
(const wxMouseEvent &event, const wxRect &rect,
|
||||
const AudacityProject *pProject, Track *pTrack)
|
||||
{
|
||||
if (!event.Button(wxMOUSE_BTN_LEFT))
|
||||
return {};
|
||||
|
||||
wxRect sliderRect;
|
||||
TrackInfo::GetPanRect(rect.GetTopLeft(), sliderRect);
|
||||
if ( TrackInfo::HideTopItem( rect, sliderRect, kTrackInfoSliderAllowance ) )
|
||||
return {};
|
||||
if (sliderRect.Contains(event.m_x, event.m_y)) {
|
||||
WaveTrack *const wavetrack = static_cast<WaveTrack*>(pTrack);
|
||||
auto slider = TrackInfo::PanSlider
|
||||
(sliderRect, wavetrack, true,
|
||||
const_cast<TrackPanel*>(pProject->GetTrackPanel()));
|
||||
Instance().mpSlider = slider;
|
||||
Instance().mpTrack = wavetrack;
|
||||
return {
|
||||
HitPreview(),
|
||||
&Instance()
|
||||
};
|
||||
}
|
||||
else
|
||||
return {};
|
||||
}
|
@ -0,0 +1,73 @@
|
||||
/**********************************************************************
|
||||
|
||||
Audacity: A Digital Audio Editor
|
||||
|
||||
WavelTrackSliderHandles.h
|
||||
|
||||
Paul Licameli split from TrackPanel.cpp
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
#ifndef __AUDACITY_WAVE_TRACK_SLIDER_HANDLES__
|
||||
#define __AUDACITY_WAVE_TRACK_SLIDER_HANDLES__
|
||||
|
||||
#include "../../../ui/SliderHandle.h"
|
||||
|
||||
class WaveTrack;
|
||||
|
||||
struct HitTestResult;
|
||||
|
||||
class GainSliderHandle final : public SliderHandle
|
||||
{
|
||||
GainSliderHandle(const GainSliderHandle&) = delete;
|
||||
GainSliderHandle &operator=(const GainSliderHandle&) = delete;
|
||||
|
||||
GainSliderHandle();
|
||||
virtual ~GainSliderHandle();
|
||||
static GainSliderHandle& Instance();
|
||||
|
||||
WaveTrack *GetTrack();
|
||||
|
||||
protected:
|
||||
float GetValue() override;
|
||||
Result SetValue
|
||||
(AudacityProject *pProject, float newValue) override;
|
||||
Result CommitChanges
|
||||
(const wxMouseEvent &event, AudacityProject *pProject) override;
|
||||
|
||||
bool StopsOnKeystroke () override { return true; }
|
||||
|
||||
public:
|
||||
static HitTestResult HitTest
|
||||
(const wxMouseEvent &event, const wxRect &rect,
|
||||
const AudacityProject *pProject, Track *pTrack);
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
class PanSliderHandle final : public SliderHandle
|
||||
{
|
||||
PanSliderHandle(const PanSliderHandle&) = delete;
|
||||
PanSliderHandle &operator=(const PanSliderHandle&) = delete;
|
||||
|
||||
PanSliderHandle();
|
||||
virtual ~PanSliderHandle();
|
||||
static PanSliderHandle& Instance();
|
||||
|
||||
WaveTrack *GetTrack();
|
||||
|
||||
protected:
|
||||
float GetValue() override;
|
||||
Result SetValue(AudacityProject *pProject, float newValue) override;
|
||||
Result CommitChanges
|
||||
(const wxMouseEvent &event, AudacityProject *pProject) override;
|
||||
|
||||
bool StopsOnKeystroke () override { return true; }
|
||||
|
||||
public:
|
||||
static HitTestResult HitTest
|
||||
(const wxMouseEvent &event, const wxRect &rect,
|
||||
const AudacityProject *pProject, Track *pTrack);
|
||||
};
|
||||
|
||||
#endif
|
@ -234,6 +234,7 @@
|
||||
<ClCompile Include="..\..\..\src\tracks\playabletrack\wavetrack\ui\CutlineHandle.cpp" />
|
||||
<ClCompile Include="..\..\..\src\tracks\playabletrack\wavetrack\ui\SampleHandle.cpp" />
|
||||
<ClCompile Include="..\..\..\src\tracks\playabletrack\wavetrack\ui\WaveTrackControls.cpp" />
|
||||
<ClCompile Include="..\..\..\src\tracks\playabletrack\wavetrack\ui\WaveTrackSliderHandles.cpp" />
|
||||
<ClCompile Include="..\..\..\src\tracks\playabletrack\wavetrack\ui\WaveTrackUI.cpp" />
|
||||
<ClCompile Include="..\..\..\src\tracks\playabletrack\wavetrack\ui\WaveTrackVRulerControls.cpp" />
|
||||
<ClCompile Include="..\..\..\src\tracks\timetrack\ui\TimeTrackControls.cpp" />
|
||||
@ -501,6 +502,7 @@
|
||||
<ClInclude Include="..\..\..\src\tracks\playabletrack\wavetrack\ui\CutlineHandle.h" />
|
||||
<ClInclude Include="..\..\..\src\tracks\playabletrack\wavetrack\ui\SampleHandle.h" />
|
||||
<ClInclude Include="..\..\..\src\tracks\playabletrack\wavetrack\ui\WaveTrackControls.h" />
|
||||
<ClInclude Include="..\..\..\src\tracks\playabletrack\wavetrack\ui\WaveTrackSliderHandles.h" />
|
||||
<ClInclude Include="..\..\..\src\tracks\playabletrack\wavetrack\ui\WaveTrackVRulerControls.h" />
|
||||
<ClInclude Include="..\..\..\src\tracks\ui\CommonTrackPanelCell.h" />
|
||||
<ClInclude Include="..\..\..\src\tracks\labeltrack\ui\LabelTrackControls.h" />
|
||||
|
@ -1016,6 +1016,9 @@
|
||||
<ClCompile Include="..\..\..\src\tracks\playabletrack\ui\PlayableTrackButtonHandles.cpp">
|
||||
<Filter>src\tracks\playabletrack\ui</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\src\tracks\playabletrack\wavetrack\ui\WaveTrackSliderHandles.cpp">
|
||||
<Filter>src\tracks\playabletrack\wavetrack\ui</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\..\..\src\AboutDialog.h">
|
||||
@ -2023,6 +2026,9 @@
|
||||
<ClInclude Include="..\..\..\src\tracks\playabletrack\ui\PlayableTrackButtonHandles.h">
|
||||
<Filter>src\tracks\playabletrack\ui</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\src\tracks\playabletrack\wavetrack\ui\WaveTrackSliderHandles.h">
|
||||
<Filter>src\tracks\playabletrack\wavetrack\ui</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Image Include="..\..\audacity.ico">
|
||||
|
Loading…
x
Reference in New Issue
Block a user