1 /**********************************************************************
2 
3 Audacity: A Digital Audio Editor
4 
5 ProjectSelectionManager.cpp
6 
7 Paul Licameli split from ProjectManager.cpp
8 
9 **********************************************************************/
10 
11 #ifndef __AUDACITY_PROJECT_SELECTION_MANAGER__
12 #define __AUDACITY_PROJECT_SELECTION_MANAGER__
13 
14 #include "ClientData.h" // to inherit
15 #include "toolbars/SelectionBarListener.h" // to inherit
16 #include "toolbars/SpectralSelectionBarListener.h" // to inherit
17 #include "ComponentInterfaceSymbol.h"
18 
19 class AudacityProject;
20 
21 class AUDACITY_DLL_API ProjectSelectionManager final
22    : public ClientData::Base
23    , public SelectionBarListener
24    , public SpectralSelectionBarListener
25    , public TimeToolBarListener
26 {
27 public:
28    static ProjectSelectionManager &Get( AudacityProject &project );
29    static const ProjectSelectionManager &Get( const AudacityProject &project );
30 
31    explicit ProjectSelectionManager( AudacityProject &project );
32    ProjectSelectionManager( const ProjectSelectionManager & ) PROHIBITED;
33    ProjectSelectionManager &operator=(
34       const ProjectSelectionManager & ) PROHIBITED;
35    ~ProjectSelectionManager() override;
36 
37    // SelectionBarListener callback methods
38    double AS_GetRate() override;
39    void AS_SetRate(double rate) override;
40    int AS_GetSnapTo() override;
41    void AS_SetSnapTo(int snap) override;
42    const NumericFormatSymbol & AS_GetSelectionFormat() override;
43    void AS_SetSelectionFormat(const NumericFormatSymbol & format) override;
44    const NumericFormatSymbol & TT_GetAudioTimeFormat() override;
45    void TT_SetAudioTimeFormat(const NumericFormatSymbol & format) override;
46    void AS_ModifySelection(double &start, double &end, bool done) override;
47 
48    // SpectralSelectionBarListener callback methods
49    double SSBL_GetRate() const override;
50    const NumericFormatSymbol & SSBL_GetFrequencySelectionFormatName() override;
51    void SSBL_SetFrequencySelectionFormatName(
52       const NumericFormatSymbol & formatName) override;
53    const NumericFormatSymbol & SSBL_GetBandwidthSelectionFormatName() override;
54    void SSBL_SetBandwidthSelectionFormatName(
55       const NumericFormatSymbol & formatName) override;
56    void SSBL_ModifySpectralSelection(
57       double &bottom, double &top, bool done) override;
58 
59 private:
60    bool SnapSelection();
61 
62    AudacityProject &mProject;
63 };
64 
65 #endif
66