2010-01-23 19:44:49 +00:00
|
|
|
/**********************************************************************
|
|
|
|
|
|
|
|
Audacity: A Digital Audio Editor
|
|
|
|
|
|
|
|
SelectionBar.h
|
|
|
|
|
|
|
|
Dominic Mazzoni
|
|
|
|
|
|
|
|
**********************************************************************/
|
|
|
|
|
|
|
|
#ifndef __AUDACITY_SELECTION_BAR__
|
|
|
|
#define __AUDACITY_SELECTION_BAR__
|
|
|
|
|
|
|
|
#include <wx/defs.h>
|
|
|
|
|
|
|
|
#include "ToolBar.h"
|
|
|
|
|
2017-05-31 18:47:45 +00:00
|
|
|
// Column for
|
|
|
|
// Project rate
|
|
|
|
// Snap To
|
|
|
|
// Option Button
|
|
|
|
// Vertical Line
|
|
|
|
// Selection fields
|
|
|
|
// Vertical Line
|
|
|
|
// Cursor position
|
|
|
|
|
2020-02-06 09:37:57 +00:00
|
|
|
#ifdef TIME_IN_SELECT_TOOLBAR
|
2017-05-31 18:47:45 +00:00
|
|
|
#define SIZER_COLS 7
|
2020-02-06 09:37:57 +00:00
|
|
|
#else
|
|
|
|
#define SIZER_COLS 5
|
|
|
|
#endif
|
|
|
|
|
2017-05-26 21:43:58 +00:00
|
|
|
|
2013-11-01 17:56:56 +00:00
|
|
|
class wxChoice;
|
2010-01-23 19:44:49 +00:00
|
|
|
class wxComboBox;
|
|
|
|
class wxCommandEvent;
|
|
|
|
class wxDC;
|
|
|
|
class wxSizeEvent;
|
2017-05-22 13:10:56 +00:00
|
|
|
class wxStaticText;
|
2010-01-23 19:44:49 +00:00
|
|
|
|
2019-05-24 19:48:36 +00:00
|
|
|
class AudacityProject;
|
2014-10-18 14:19:38 +00:00
|
|
|
class SelectionBarListener;
|
2014-11-08 15:18:43 +00:00
|
|
|
class NumericTextCtrl;
|
2010-01-23 19:44:49 +00:00
|
|
|
|
2020-09-28 12:50:18 +00:00
|
|
|
class AUDACITY_DLL_API SelectionBar final : public ToolBar {
|
2010-01-23 19:44:49 +00:00
|
|
|
|
|
|
|
public:
|
2019-06-12 23:21:54 +00:00
|
|
|
SelectionBar( AudacityProject &project );
|
2010-01-23 19:44:49 +00:00
|
|
|
virtual ~SelectionBar();
|
|
|
|
|
2019-05-24 19:48:36 +00:00
|
|
|
static SelectionBar &Get( AudacityProject &project );
|
|
|
|
static const SelectionBar &Get( const AudacityProject &project );
|
|
|
|
|
2017-10-01 17:28:04 +00:00
|
|
|
void Create(wxWindow *parent) override;
|
2010-01-23 19:44:49 +00:00
|
|
|
|
2016-02-24 06:06:47 +00:00
|
|
|
void Populate() override;
|
|
|
|
void Repaint(wxDC * WXUNUSED(dc)) override {};
|
|
|
|
void EnableDisableButtons() override {};
|
|
|
|
void UpdatePrefs() override;
|
2010-01-23 19:44:49 +00:00
|
|
|
|
|
|
|
void SetTimes(double start, double end, double audio);
|
2013-11-01 14:13:39 +00:00
|
|
|
void SetSnapTo(int);
|
2019-02-28 18:16:09 +00:00
|
|
|
void SetSelectionFormat(const NumericFormatSymbol & format);
|
2010-01-23 19:44:49 +00:00
|
|
|
void SetRate(double rate);
|
|
|
|
void SetListener(SelectionBarListener *l);
|
2016-06-21 04:15:37 +00:00
|
|
|
void RegenerateTooltips() override;
|
2010-01-23 19:44:49 +00:00
|
|
|
|
|
|
|
private:
|
2020-05-22 18:46:50 +00:00
|
|
|
auStaticText * AddTitle( const TranslatableString & Title,
|
2017-05-22 12:30:54 +00:00
|
|
|
wxSizer * pSizer );
|
2019-12-18 01:55:20 +00:00
|
|
|
NumericTextCtrl * AddTime( const TranslatableString &Name, int id, wxSizer * pSizer );
|
2017-06-01 15:48:28 +00:00
|
|
|
void AddVLine( wxSizer * pSizer );
|
2010-01-23 19:44:49 +00:00
|
|
|
|
2017-05-22 12:30:54 +00:00
|
|
|
void SetSelectionMode(int mode);
|
|
|
|
void ShowHideControls(int mode);
|
|
|
|
void SetDrivers( int driver1, int driver2 );
|
2010-01-23 19:44:49 +00:00
|
|
|
void ValuesToControls();
|
|
|
|
void OnUpdate(wxCommandEvent &evt);
|
2017-05-22 12:30:54 +00:00
|
|
|
void OnChangedTime(wxCommandEvent &evt);
|
2017-05-26 21:43:58 +00:00
|
|
|
|
2010-01-23 19:44:49 +00:00
|
|
|
void OnRate(wxCommandEvent & event);
|
|
|
|
void OnSnapTo(wxCommandEvent & event);
|
2017-05-31 18:47:45 +00:00
|
|
|
void OnChoice(wxCommandEvent & event);
|
2010-01-23 19:44:49 +00:00
|
|
|
void OnFocus(wxFocusEvent &event);
|
|
|
|
void OnCaptureKey(wxCommandEvent &event);
|
|
|
|
void OnSize(wxSizeEvent &evt);
|
2019-06-12 21:35:09 +00:00
|
|
|
void OnIdle( wxIdleEvent &evt );
|
2010-01-23 19:44:49 +00:00
|
|
|
|
2017-05-22 12:30:54 +00:00
|
|
|
void ModifySelection(int newDriver, bool done = false);
|
2010-01-23 19:44:49 +00:00
|
|
|
void UpdateRates();
|
2017-05-24 18:26:59 +00:00
|
|
|
void SelectionModeUpdated();
|
2010-01-23 19:44:49 +00:00
|
|
|
|
|
|
|
SelectionBarListener * mListener;
|
|
|
|
double mRate;
|
2017-05-22 12:30:54 +00:00
|
|
|
double mStart, mEnd, mLength, mCenter, mAudio;
|
2017-05-09 11:37:55 +00:00
|
|
|
|
2017-05-22 12:30:54 +00:00
|
|
|
// These two numbers say which two controls
|
|
|
|
// drive the other two.
|
|
|
|
int mDrive1;
|
|
|
|
int mDrive2;
|
|
|
|
|
2019-07-31 18:51:17 +00:00
|
|
|
int mSelectionMode{ 0 };
|
|
|
|
int mLastSelectionMode{ 0 };
|
2017-05-22 12:30:54 +00:00
|
|
|
|
|
|
|
NumericTextCtrl *mStartTime;
|
|
|
|
NumericTextCtrl *mCenterTime;
|
|
|
|
NumericTextCtrl *mLengthTime;
|
|
|
|
NumericTextCtrl *mEndTime;
|
2014-11-08 15:18:43 +00:00
|
|
|
NumericTextCtrl *mAudioTime;
|
2018-04-14 21:20:08 +00:00
|
|
|
wxChoice *mChoice;
|
|
|
|
wxStaticText *mProxy;
|
|
|
|
wxComboBox *mRateBox;
|
|
|
|
wxChoice *mSnapTo;
|
|
|
|
wxWindow *mRateText;
|
2017-05-22 12:30:54 +00:00
|
|
|
|
2021-02-17 04:18:23 +00:00
|
|
|
wxString mLastValidText;
|
|
|
|
|
2010-01-23 19:44:49 +00:00
|
|
|
public:
|
|
|
|
|
2016-09-18 14:26:29 +00:00
|
|
|
DECLARE_CLASS(SelectionBar)
|
|
|
|
DECLARE_EVENT_TABLE()
|
2010-01-23 19:44:49 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|