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:
parent
f6f8f2e3cf
commit
1dfbe5974e
@ -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)
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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();
|
||||
}
|
||||
|
@ -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;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user