16#include "../../../../RefreshCode.h"
17#include "../../../../TrackInfo.h"
18#include "../../../../TrackPanel.h"
19#include "../../../../TrackPanelAx.h"
24(
SliderFn sliderFn,
const wxRect &rect,
const std::shared_ptr<Track> &pTrack )
34 return std::static_pointer_cast<WaveTrack>(
mpTrack.lock());
54 channel->SetGain(newValue);
76 value = pTrack->GetGain();
85 return XO(
"%s: %s").Format(
XO(
"Gain"), val);
89(std::weak_ptr<GainSliderHandle> &holder,
90 const wxMouseState &state,
const wxRect &rect,
91 const std::shared_ptr<Track> &pTrack)
93 if (!state.ButtonIsDown(wxMOUSE_BTN_LEFT))
100 if (sliderRect.Contains(state.m_x, state.m_y)) {
106 (sliderRect,
static_cast<WaveTrack*
>( pTrack ),
true,
110 std::make_shared<GainSliderHandle>( sliderFn, sliderRect2, pTrack );
122(
SliderFn sliderFn,
const wxRect &rect,
const std::shared_ptr<Track> &pTrack )
132 return std::static_pointer_cast<WaveTrack>(
mpTrack.lock());
153 channel->SetPan(newValue);
175 value = pTrack->GetPan();
186 const auto v = 100.0f * fabsf(value);
189 val =
XO(
"%.0f%% Left").Format(v);
192 val =
XO(
"%.0f%% Right").Format(v);
196 return XO(
"%s: %s").Format(
XO(
"Pan"), val);
200(std::weak_ptr<PanSliderHandle> &holder,
201 const wxMouseState &state,
const wxRect &rect,
202 const std::shared_ptr<Track> &pTrack)
204 if (!state.ButtonIsDown(wxMOUSE_BTN_LEFT))
211 if (sliderRect.Contains(state.m_x, state.m_y)) {
215 (sliderRect,
static_cast<WaveTrack*
>( pTrack ),
true,
218 auto result = std::make_shared<PanSliderHandle>(
219 sliderFn, sliderRect, pTrack );
std::shared_ptr< UIHandle > UIHandlePtr
std::shared_ptr< Subclass > AssignUIHandlePtr(std::weak_ptr< Subclass > &holder, const std::shared_ptr< Subclass > &pNew)
The top-level handle to an Audacity project. It serves as a source of events that other objects can b...
virtual ~GainSliderHandle()
static UIHandlePtr HitTest(std::weak_ptr< GainSliderHandle > &holder, const wxMouseState &state, const wxRect &rect, const std::shared_ptr< Track > &pTrack)
float GetValue() override
Result SetValue(AudacityProject *pProject, float newValue) override
TranslatableString Tip(const wxMouseState &state, AudacityProject &) const override
Result CommitChanges(const wxMouseEvent &event, AudacityProject *pProject) override
GainSliderHandle(const GainSliderHandle &)=delete
std::shared_ptr< WaveTrack > GetWaveTrack() const
std::shared_ptr< WaveTrack > GetWaveTrack() const
PanSliderHandle(const PanSliderHandle &)=delete
float GetValue() override
Result CommitChanges(const wxMouseEvent &event, AudacityProject *pProject) override
TranslatableString Tip(const wxMouseState &state, AudacityProject &) const override
Result SetValue(AudacityProject *pProject, float newValue) override
static UIHandlePtr HitTest(std::weak_ptr< PanSliderHandle > &holder, const wxMouseState &state, const wxRect &rect, const std::shared_ptr< Track > &pTrack)
virtual ~PanSliderHandle()
void PushState(const TranslatableString &desc, const TranslatableString &shortDesc)
static ProjectHistory & Get(AudacityProject &project)
LWSlider *(*)(AudacityProject *, const wxRect &, Track *) SliderFn
std::weak_ptr< Track > mpTrack
Abstract base class for an object holding data associated with points on a time axis.
static auto Channels(TrackType *pTrack) -> TrackIterRange< TrackType >
static TrackPanel & Get(AudacityProject &project)
Holds a msgid for the translation catalog; may also bind format arguments.
static void GetGainRect(const wxPoint &topLeft, wxRect &dest)
static void GetPanRect(const wxPoint &topLeft, wxRect &dest)
static LWSlider * PanSlider(CellularPanel &panel, const WaveTrack &wt)
static LWSlider * GainSlider(CellularPanel &panel, const WaveTrack &wt)
A Track that contains audio waveform data.
Namespace containing an enum 'what to do on a refresh?'.
AUDACITY_DLL_API bool HideTopItem(const wxRect &rect, const wxRect &subRect, int allowance=0)