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