1 /**********************************************************************
2 
3 Audacity: A Digital Audio Editor
4 
5 TimeTrackControls.h
6 
7 Paul Licameli split from TrackPanel.cpp
8 
9 **********************************************************************/
10 
11 #ifndef __AUDACITY_TIME_TRACK_CONTROLS__
12 #define __AUDACITY_TIME_TRACK_CONTROLS__
13 
14 #include "../../ui/CommonTrackControls.h" // to inherit
15 
16 class TimeTrackControls final : public CommonTrackControls
17 {
18    TimeTrackControls(const TimeTrackControls&) = delete;
19    TimeTrackControls &operator=(const TimeTrackControls&) = delete;
20 
21 public:
22    explicit
TimeTrackControls(std::shared_ptr<Track> pTrack)23    TimeTrackControls( std::shared_ptr<Track> pTrack )
24       : CommonTrackControls( pTrack ) {}
25    ~TimeTrackControls();
26 
27    std::vector<UIHandlePtr> HitTest
28       (const TrackPanelMouseState &state,
29        const AudacityProject *pProject) override;
30 
31    PopupMenuTable *GetMenuExtension(Track *pTrack) override;
32 
33    static const int kRangeMin {10};
34    static const int kRangeMax {1000};
35 };
36 
37 #include "../../../widgets/PopupMenuTable.h"
38 
39 class TimeTrackMenuTable : public PopupMenuTable
40 {
TimeTrackMenuTable()41    TimeTrackMenuTable()
42       : PopupMenuTable{ "TimeTrack" }
43    {}
44 
45    DECLARE_POPUP_MENU(TimeTrackMenuTable);
46 
47 public:
48    static TimeTrackMenuTable &Instance();
49 
50 protected:
51    void InitUserData(void *pUserData) override;
52 
53 private:
54    CommonTrackControls::InitMenuData *mpData{};
55 
56    void OnSetTimeTrackRange(wxCommandEvent & /*event*/);
57    void OnTimeTrackLin(wxCommandEvent & /*event*/);
58    void OnTimeTrackLog(wxCommandEvent & /*event*/);
59    void OnTimeTrackLogInt(wxCommandEvent & /*event*/);
60 };
61 
62 #endif
63