1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-07-29 06:59:27 +02:00

Apply Leland's Read Only Numeric Text Control to Change Speed effect.

This commit is contained in:
stevethefiddle@gmail.com 2014-11-23 22:54:24 +00:00
parent f6f8f2e3cf
commit 1dfbe5974e
4 changed files with 17 additions and 18 deletions

View File

@ -315,7 +315,6 @@ enum {
ID_SLIDER_PERCENTCHANGE,
ID_CHOICE_FROMVINYL,
ID_CHOICE_TOVINYL,
ID_TIMECTRL_FROMLENGTH,
ID_TIMECTRL_TOLENGTH
};
@ -329,7 +328,6 @@ BEGIN_EVENT_TABLE(ChangeSpeedDialog, EffectDialog)
EVT_CHOICE(ID_CHOICE_FROMVINYL, ChangeSpeedDialog::OnChoice_Vinyl)
EVT_CHOICE(ID_CHOICE_TOVINYL, ChangeSpeedDialog::OnChoice_Vinyl)
EVT_TEXT(ID_TIMECTRL_TOLENGTH, ChangeSpeedDialog::OnTimeCtrl_ToLength)
EVT_TEXT(ID_TIMECTRL_FROMLENGTH, ChangeSpeedDialog::OnTimeCtrl_FromLength)
EVT_COMMAND(ID_TIMECTRL_TOLENGTH, EVT_TIMETEXTCTRL_UPDATED, ChangeSpeedDialog::OnTimeCtrlUpdate)
EVT_BUTTON(ID_EFFECT_PREVIEW, ChangeSpeedDialog::OnPreview)
@ -422,18 +420,18 @@ void ChangeSpeedDialog::PopulateOrExchange(ShuttleGui & S)
mpFromLengthCtrl = new
NumericTextCtrl(NumericConverter::TIME, this,
ID_TIMECTRL_FROMLENGTH,
wxID_ANY,
mFormat,
mFromLength,
mEffect->mProjectRate);
mpFromLengthCtrl->SetName(_("from"));
S.AddWindow(mpFromLengthCtrl);
S.AddWindow(mpFromLengthCtrl, wxALIGN_LEFT);
#if wxUSE_TOOLTIPS
wxString tip(_("Current length of selection."));
mpFromLengthCtrl->SetToolTip(tip);
#endif
mpFromLengthCtrl->EnableMenu(false);
mpFromLengthCtrl->SetReadOnly(true);
S.AddPrompt(_("New Length") + wxString(wxT(":")));
@ -446,7 +444,7 @@ void ChangeSpeedDialog::PopulateOrExchange(ShuttleGui & S)
mEffect->mProjectRate);
mpToLengthCtrl->SetName(_("to"));
S.AddWindow(mpToLengthCtrl);
S.AddWindow(mpToLengthCtrl, wxALIGN_LEFT);
mpToLengthCtrl->EnableMenu();
}
S.EndMultiColumn();
@ -588,12 +586,6 @@ void ChangeSpeedDialog::OnChoice_Vinyl(wxCommandEvent & WXUNUSED(event))
mbLoopDetect = false;
}
void ChangeSpeedDialog::OnTimeCtrl_FromLength(wxCommandEvent & WXUNUSED(event))
{
// Don't allow user input to change FromLength.
mpFromLengthCtrl->SetValue(mFromLength);
}
void ChangeSpeedDialog::OnTimeCtrl_ToLength(wxCommandEvent & WXUNUSED(event))
{
if (mbLoopDetect)

View File

@ -99,7 +99,6 @@ class ChangeSpeedDialog : public EffectDialog
void OnText_Multiplier(wxCommandEvent & event);
void OnSlider_PercentChange(wxCommandEvent & event);
void OnChoice_Vinyl(wxCommandEvent & event);
void OnTimeCtrl_FromLength(wxCommandEvent & event);
void OnTimeCtrl_ToLength(wxCommandEvent & event);
void OnTimeCtrlUpdate(wxCommandEvent & event);

View File

@ -1130,6 +1130,7 @@ NumericTextCtrl::NumericTextCtrl(NumericConverter::Type type,
mDigitBoxW = 10;
mDigitBoxH = 16;
mReadOnly = false;
mMenuEnabled = true;
mButtonWidth = 9;
@ -1213,6 +1214,11 @@ void NumericTextCtrl::SetValue(double newValue)
ControlsToValue();
}
void NumericTextCtrl::SetReadOnly(bool readOnly)
{
mReadOnly = readOnly;
}
void NumericTextCtrl::EnableMenu(bool enable)
{
#if wxUSE_TOOLTIPS
@ -1499,7 +1505,7 @@ void NumericTextCtrl::OnMouse(wxMouseEvent &event)
wxContextMenuEvent e;
OnContext(e);
}
else if( event.m_wheelRotation != 0 ) {
else if(!mReadOnly && event.m_wheelRotation != 0 ) {
double steps = event.m_wheelRotation /
(event.m_wheelDelta > 0 ? (double)event.m_wheelDelta : 120.0) +
mScrollRemainder;
@ -1594,7 +1600,7 @@ void NumericTextCtrl::OnKeyDown(wxKeyEvent &event)
// Convert numeric keypad entries.
if ((keyCode >= WXK_NUMPAD0) && (keyCode <= WXK_NUMPAD9)) keyCode -= WXK_NUMPAD0 - '0';
if (keyCode >= '0' && keyCode <= '9') {
if (!mReadOnly && (keyCode >= '0' && keyCode <= '9')) {
int digitPosition = mDigits[mFocusedDigit].pos;
if (mValueString[digitPosition] == wxChar('-')) {
mValue = 0;
@ -1609,7 +1615,7 @@ void NumericTextCtrl::OnKeyDown(wxKeyEvent &event)
Updated();
}
else if (keyCode == WXK_BACK) {
else if (!mReadOnly && keyCode == WXK_BACK) {
// Moves left, replaces that char with '0', stays there...
mFocusedDigit--;
mFocusedDigit += mDigits.GetCount();
@ -1645,12 +1651,12 @@ void NumericTextCtrl::OnKeyDown(wxKeyEvent &event)
Refresh();
}
else if (keyCode == WXK_UP) {
else if (!mReadOnly && keyCode == WXK_UP) {
Adjust(1, 1);
Updated();
}
else if (keyCode == WXK_DOWN) {
else if (!mReadOnly && keyCode == WXK_DOWN) {
Adjust(1, -1);
Updated();
}

View File

@ -144,6 +144,7 @@ class NumericTextCtrl: public wxControl, public NumericConverter
void SetFieldFocus(int digit);
void SetReadOnly(bool readOnly = true);
void EnableMenu(bool enable = true);
int GetFocusedField() { return mLastField; }
@ -172,6 +173,7 @@ private:
private:
bool mMenuEnabled;
bool mReadOnly;
wxBitmap *mBackgroundBitmap;