mirror of
https://github.com/cookiengineer/audacity
synced 2025-07-30 15:39:27 +02:00
Apply Leland's Read Only Numeric Text Control to Change Speed effect.
This commit is contained in:
parent
f6f8f2e3cf
commit
1dfbe5974e
@ -315,7 +315,6 @@ enum {
|
|||||||
ID_SLIDER_PERCENTCHANGE,
|
ID_SLIDER_PERCENTCHANGE,
|
||||||
ID_CHOICE_FROMVINYL,
|
ID_CHOICE_FROMVINYL,
|
||||||
ID_CHOICE_TOVINYL,
|
ID_CHOICE_TOVINYL,
|
||||||
ID_TIMECTRL_FROMLENGTH,
|
|
||||||
ID_TIMECTRL_TOLENGTH
|
ID_TIMECTRL_TOLENGTH
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -329,7 +328,6 @@ BEGIN_EVENT_TABLE(ChangeSpeedDialog, EffectDialog)
|
|||||||
EVT_CHOICE(ID_CHOICE_FROMVINYL, ChangeSpeedDialog::OnChoice_Vinyl)
|
EVT_CHOICE(ID_CHOICE_FROMVINYL, ChangeSpeedDialog::OnChoice_Vinyl)
|
||||||
EVT_CHOICE(ID_CHOICE_TOVINYL, ChangeSpeedDialog::OnChoice_Vinyl)
|
EVT_CHOICE(ID_CHOICE_TOVINYL, ChangeSpeedDialog::OnChoice_Vinyl)
|
||||||
EVT_TEXT(ID_TIMECTRL_TOLENGTH, ChangeSpeedDialog::OnTimeCtrl_ToLength)
|
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_COMMAND(ID_TIMECTRL_TOLENGTH, EVT_TIMETEXTCTRL_UPDATED, ChangeSpeedDialog::OnTimeCtrlUpdate)
|
||||||
|
|
||||||
EVT_BUTTON(ID_EFFECT_PREVIEW, ChangeSpeedDialog::OnPreview)
|
EVT_BUTTON(ID_EFFECT_PREVIEW, ChangeSpeedDialog::OnPreview)
|
||||||
@ -422,18 +420,18 @@ void ChangeSpeedDialog::PopulateOrExchange(ShuttleGui & S)
|
|||||||
|
|
||||||
mpFromLengthCtrl = new
|
mpFromLengthCtrl = new
|
||||||
NumericTextCtrl(NumericConverter::TIME, this,
|
NumericTextCtrl(NumericConverter::TIME, this,
|
||||||
ID_TIMECTRL_FROMLENGTH,
|
wxID_ANY,
|
||||||
mFormat,
|
mFormat,
|
||||||
mFromLength,
|
mFromLength,
|
||||||
mEffect->mProjectRate);
|
mEffect->mProjectRate);
|
||||||
|
|
||||||
mpFromLengthCtrl->SetName(_("from"));
|
mpFromLengthCtrl->SetName(_("from"));
|
||||||
S.AddWindow(mpFromLengthCtrl);
|
S.AddWindow(mpFromLengthCtrl, wxALIGN_LEFT);
|
||||||
#if wxUSE_TOOLTIPS
|
#if wxUSE_TOOLTIPS
|
||||||
wxString tip(_("Current length of selection."));
|
wxString tip(_("Current length of selection."));
|
||||||
mpFromLengthCtrl->SetToolTip(tip);
|
mpFromLengthCtrl->SetToolTip(tip);
|
||||||
#endif
|
#endif
|
||||||
mpFromLengthCtrl->EnableMenu(false);
|
mpFromLengthCtrl->SetReadOnly(true);
|
||||||
|
|
||||||
|
|
||||||
S.AddPrompt(_("New Length") + wxString(wxT(":")));
|
S.AddPrompt(_("New Length") + wxString(wxT(":")));
|
||||||
@ -446,7 +444,7 @@ void ChangeSpeedDialog::PopulateOrExchange(ShuttleGui & S)
|
|||||||
mEffect->mProjectRate);
|
mEffect->mProjectRate);
|
||||||
|
|
||||||
mpToLengthCtrl->SetName(_("to"));
|
mpToLengthCtrl->SetName(_("to"));
|
||||||
S.AddWindow(mpToLengthCtrl);
|
S.AddWindow(mpToLengthCtrl, wxALIGN_LEFT);
|
||||||
mpToLengthCtrl->EnableMenu();
|
mpToLengthCtrl->EnableMenu();
|
||||||
}
|
}
|
||||||
S.EndMultiColumn();
|
S.EndMultiColumn();
|
||||||
@ -588,12 +586,6 @@ void ChangeSpeedDialog::OnChoice_Vinyl(wxCommandEvent & WXUNUSED(event))
|
|||||||
mbLoopDetect = false;
|
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))
|
void ChangeSpeedDialog::OnTimeCtrl_ToLength(wxCommandEvent & WXUNUSED(event))
|
||||||
{
|
{
|
||||||
if (mbLoopDetect)
|
if (mbLoopDetect)
|
||||||
|
@ -99,7 +99,6 @@ class ChangeSpeedDialog : public EffectDialog
|
|||||||
void OnText_Multiplier(wxCommandEvent & event);
|
void OnText_Multiplier(wxCommandEvent & event);
|
||||||
void OnSlider_PercentChange(wxCommandEvent & event);
|
void OnSlider_PercentChange(wxCommandEvent & event);
|
||||||
void OnChoice_Vinyl(wxCommandEvent & event);
|
void OnChoice_Vinyl(wxCommandEvent & event);
|
||||||
void OnTimeCtrl_FromLength(wxCommandEvent & event);
|
|
||||||
void OnTimeCtrl_ToLength(wxCommandEvent & event);
|
void OnTimeCtrl_ToLength(wxCommandEvent & event);
|
||||||
void OnTimeCtrlUpdate(wxCommandEvent & event);
|
void OnTimeCtrlUpdate(wxCommandEvent & event);
|
||||||
|
|
||||||
|
@ -1130,6 +1130,7 @@ NumericTextCtrl::NumericTextCtrl(NumericConverter::Type type,
|
|||||||
mDigitBoxW = 10;
|
mDigitBoxW = 10;
|
||||||
mDigitBoxH = 16;
|
mDigitBoxH = 16;
|
||||||
|
|
||||||
|
mReadOnly = false;
|
||||||
mMenuEnabled = true;
|
mMenuEnabled = true;
|
||||||
mButtonWidth = 9;
|
mButtonWidth = 9;
|
||||||
|
|
||||||
@ -1213,6 +1214,11 @@ void NumericTextCtrl::SetValue(double newValue)
|
|||||||
ControlsToValue();
|
ControlsToValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NumericTextCtrl::SetReadOnly(bool readOnly)
|
||||||
|
{
|
||||||
|
mReadOnly = readOnly;
|
||||||
|
}
|
||||||
|
|
||||||
void NumericTextCtrl::EnableMenu(bool enable)
|
void NumericTextCtrl::EnableMenu(bool enable)
|
||||||
{
|
{
|
||||||
#if wxUSE_TOOLTIPS
|
#if wxUSE_TOOLTIPS
|
||||||
@ -1499,7 +1505,7 @@ void NumericTextCtrl::OnMouse(wxMouseEvent &event)
|
|||||||
wxContextMenuEvent e;
|
wxContextMenuEvent e;
|
||||||
OnContext(e);
|
OnContext(e);
|
||||||
}
|
}
|
||||||
else if( event.m_wheelRotation != 0 ) {
|
else if(!mReadOnly && event.m_wheelRotation != 0 ) {
|
||||||
double steps = event.m_wheelRotation /
|
double steps = event.m_wheelRotation /
|
||||||
(event.m_wheelDelta > 0 ? (double)event.m_wheelDelta : 120.0) +
|
(event.m_wheelDelta > 0 ? (double)event.m_wheelDelta : 120.0) +
|
||||||
mScrollRemainder;
|
mScrollRemainder;
|
||||||
@ -1594,7 +1600,7 @@ void NumericTextCtrl::OnKeyDown(wxKeyEvent &event)
|
|||||||
// Convert numeric keypad entries.
|
// Convert numeric keypad entries.
|
||||||
if ((keyCode >= WXK_NUMPAD0) && (keyCode <= WXK_NUMPAD9)) keyCode -= WXK_NUMPAD0 - '0';
|
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;
|
int digitPosition = mDigits[mFocusedDigit].pos;
|
||||||
if (mValueString[digitPosition] == wxChar('-')) {
|
if (mValueString[digitPosition] == wxChar('-')) {
|
||||||
mValue = 0;
|
mValue = 0;
|
||||||
@ -1609,7 +1615,7 @@ void NumericTextCtrl::OnKeyDown(wxKeyEvent &event)
|
|||||||
Updated();
|
Updated();
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (keyCode == WXK_BACK) {
|
else if (!mReadOnly && keyCode == WXK_BACK) {
|
||||||
// Moves left, replaces that char with '0', stays there...
|
// Moves left, replaces that char with '0', stays there...
|
||||||
mFocusedDigit--;
|
mFocusedDigit--;
|
||||||
mFocusedDigit += mDigits.GetCount();
|
mFocusedDigit += mDigits.GetCount();
|
||||||
@ -1645,12 +1651,12 @@ void NumericTextCtrl::OnKeyDown(wxKeyEvent &event)
|
|||||||
Refresh();
|
Refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (keyCode == WXK_UP) {
|
else if (!mReadOnly && keyCode == WXK_UP) {
|
||||||
Adjust(1, 1);
|
Adjust(1, 1);
|
||||||
Updated();
|
Updated();
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (keyCode == WXK_DOWN) {
|
else if (!mReadOnly && keyCode == WXK_DOWN) {
|
||||||
Adjust(1, -1);
|
Adjust(1, -1);
|
||||||
Updated();
|
Updated();
|
||||||
}
|
}
|
||||||
|
@ -144,6 +144,7 @@ class NumericTextCtrl: public wxControl, public NumericConverter
|
|||||||
|
|
||||||
void SetFieldFocus(int digit);
|
void SetFieldFocus(int digit);
|
||||||
|
|
||||||
|
void SetReadOnly(bool readOnly = true);
|
||||||
void EnableMenu(bool enable = true);
|
void EnableMenu(bool enable = true);
|
||||||
|
|
||||||
int GetFocusedField() { return mLastField; }
|
int GetFocusedField() { return mLastField; }
|
||||||
@ -172,6 +173,7 @@ private:
|
|||||||
private:
|
private:
|
||||||
|
|
||||||
bool mMenuEnabled;
|
bool mMenuEnabled;
|
||||||
|
bool mReadOnly;
|
||||||
|
|
||||||
wxBitmap *mBackgroundBitmap;
|
wxBitmap *mBackgroundBitmap;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user