Don't allow 'Classic Filters' to be applied to mixed sample-rate tracks, as we don't support that.

Fix a typo in the name of 'Classic Filters'.
Improve consistency layout as we switch filter types.
Remove a win warning in EQ.
Improve some code readability / change styles (please don't shoot me for that!).   OK, possibly increased the inconsistency.
This commit is contained in:
martynshaw99 2014-01-09 00:13:34 +00:00
parent 4dd1aa50ad
commit 3f1ebbe3dd
3 changed files with 42 additions and 20 deletions

View File

@ -255,7 +255,7 @@ EffectEqualization::~EffectEqualization()
bool EffectEqualization::Init()
{
int selcount = 0;
double rate;
double rate = 0.0;
TrackListIterator iter(GetActiveProject()->GetTracks());
Track *t = iter.First();
while (t) {

View File

@ -126,8 +126,27 @@ EffectScienFilter::~EffectScienFilter()
bool EffectScienFilter::Init()
{
return(true);
}
int selcount = 0;
double rate = 0.0;
TrackListIterator iter(GetActiveProject()->GetTracks());
Track *t = iter.First();
while (t) {
if (t->GetSelected() && t->GetKind() == Track::Wave) {
WaveTrack *track = (WaveTrack *)t;
if (selcount==0) {
rate = track->GetRate();
}
else {
if (track->GetRate() != rate) {
wxMessageBox(_("To apply a filter, all selected tracks must have the same sample rate."));
return(false);
}
}
selcount++;
}
t = iter.Next();
}
return(true);}
bool EffectScienFilter::PromptUser()
{
@ -613,15 +632,13 @@ void ScienFilterDialog::MakeScienFilterDialog()
// -------------------------------------------------------------------
// ROW 2 and 3: Type, Order, Ripple, Subtype, Cutoff
// -------------------------------------------------------------------
szr3 = new wxFlexGridSizer (6, 0, 0);
szr3->SetHGap(2);
szr3->SetVGap(5);
szr3 = new wxFlexGridSizer (6, 5, 2); // 6 columns, 5px Vertical gap, 2px Horizontal gap
flagslabel.Border(wxLEFT, 12).Align(wxALIGN_RIGHT | wxALIGN_CENTRE_VERTICAL );
flagsunits.Align( wxALIGN_LEFT | wxALIGN_CENTRE_VERTICAL );
st = new wxStaticText(this, wxID_ANY, _("&Filter Type:"));
st->SetName(wxStripMenuCodes(st->GetLabel())); // fix for bug 577 (NVDA/Narrator screen readers do not read static text in dialogs)
szr3->Add (st, flagslabel );
szr3->Add(st, flagslabel );
mFilterTypeCtl = new wxChoice (this, ID_FILTER_TYPE);
mFilterTypeCtl->SetName(wxStripMenuCodes(st->GetLabel()));
/*i18n-hint: Butterworth is the name of the person after whom the filter type is named.*/
@ -630,7 +647,7 @@ void ScienFilterDialog::MakeScienFilterDialog()
mFilterTypeCtl->Append (_("Chebyshev Type I"));
/*i18n-hint: Chebyshev is the name of the person after whom the filter type is named.*/
mFilterTypeCtl->Append (_("Chebyshev Type II"));
szr3->Add (mFilterTypeCtl);
szr3->Add(mFilterTypeCtl);
/*i18n-hint: 'Order' means the complexity of the filter, and is a number between 1 and 10.*/
st = new wxStaticText(this, wxID_ANY, _("O&rder:"));
@ -648,7 +665,7 @@ void ScienFilterDialog::MakeScienFilterDialog()
mFilterOrderCtl->Append (wxT("8"));
mFilterOrderCtl->Append (wxT("9"));
mFilterOrderCtl->Append (wxT("10"));
szr3->Add (mFilterOrderCtl);
szr3->Add(mFilterOrderCtl);
st = new wxStaticText(this, wxID_ANY, wxT(""));
st->SetName(wxT("")); // fix for bug 577 (NVDA/Narrator screen readers do not read static text in dialogs)
@ -657,36 +674,36 @@ void ScienFilterDialog::MakeScienFilterDialog()
szrPass = new wxBoxSizer( wxHORIZONTAL );
st = new wxStaticText(this, wxID_ANY, _("Maximum &Passband Attenuation:"));
st->SetName(wxStripMenuCodes(st->GetLabel())); // fix for bug 577 (NVDA/Narrator screen readers do not read static text in dialogs)
szrPass->Add (st , flagslabel );
szrPass->Add(st, flagslabel);
wxSize Size(wxDefaultSize);
Size.SetWidth (40);
mRippleCtl = new wxTextCtrl (this, ID_RIPPLE, wxT("0.0"), wxDefaultPosition, Size);
mRippleCtl->SetName( _("Maximum passband attenuation (dB):"));
szrPass->Add (mRippleCtl, 0 );
szrPass->Add(mRippleCtl, 0 );
st = new wxStaticText(this, wxID_ANY, _("dB"));
st->SetName(st->GetLabel()); // fix for bug 577 (NVDA/Narrator screen readers do not read static text in dialogs)
szrPass->Add( st, flagsunits );
szrPass->Add(st, flagsunits);
szr3->Add(szrPass);
st = new wxStaticText(this, wxID_ANY, _("&Subtype:"));
szr3->Add(st, flagslabel );
szr3->Add(st, flagslabel);
st->SetName(wxStripMenuCodes(st->GetLabel())); // fix for bug 577 (NVDA/Narrator screen readers do not read static text in dialogs)
mFilterSubTypeCtl = new wxChoice (this, ID_FILTER_SUBTYPE);
mFilterSubTypeCtl->SetName(wxStripMenuCodes(st->GetLabel()));
mFilterSubTypeCtl->Append (_("Lowpass"));
mFilterSubTypeCtl->Append (_("Highpass"));
szr3->Add (mFilterSubTypeCtl);
szr3->Add(mFilterSubTypeCtl);
st = new wxStaticText(this, wxID_ANY, _("C&utoff:"));
st->SetName(wxStripMenuCodes(st->GetLabel())); // fix for bug 577 (NVDA/Narrator screen readers do not read static text in dialogs)
szr3->Add( st, flagslabel );
szr3->Add(st, flagslabel);
Size.SetWidth (50);
mCutoffCtl = new wxTextCtrl (this, ID_CUTOFF, wxT("0.0"), wxDefaultPosition, Size);
mCutoffCtl->SetName(_("Cutoff(Hz):"));
szr3->Add (mCutoffCtl, 0 );
szr3->Add(mCutoffCtl, 0);
st = new wxStaticText(this, wxID_ANY, _("Hz"));
st->SetName(st->GetLabel()); // fix for bug 577 (NVDA/Narrator screen readers do not read static text in dialogs)
szr3->Add(st,flagsunits);
szr3->Add(st, flagsunits);
szrStop = new wxBoxSizer( wxHORIZONTAL );
st = new wxStaticText(this, wxID_ANY, _("Minimum S&topband Attenuation:") );
@ -695,12 +712,17 @@ void ScienFilterDialog::MakeScienFilterDialog()
Size.SetWidth (40);
mStopbandRippleCtl = new wxTextCtrl (this, ID_STOPBAND_RIPPLE, wxT("0.0"), wxDefaultPosition, Size);
mStopbandRippleCtl->SetName(_("Minimum stopband attenuation (dB):"));
szrStop->Add (mStopbandRippleCtl, 0 );
szrStop->Add(mStopbandRippleCtl, 0 );
st = new wxStaticText(this, wxID_ANY, _("dB"));
st->SetName(st->GetLabel()); // fix for bug 577 (NVDA/Narrator screen readers do not read static text in dialogs)
szrStop->Add( st, flagsunits );
szrStop->Add(st, flagsunits);
szr3->Add(szrStop);
// Calculate the min size with both pass and stop-band attenuations showing, to stop them jumping around
szrPass->Show(true);
szrStop->Show(true);
szr3->SetMinSize(szr3->CalcMin());
// -------------------------------------------------------------------
// ROW 4: Subtype, Cutoff
// -------------------------------------------------------------------

View File

@ -48,7 +48,7 @@ public:
virtual ~EffectScienFilter();
virtual wxString GetEffectName() {
return wxString(_("Classic Filter..."));
return wxString(_("Classic Filters..."));
}
virtual std::set<wxString> GetEffectCategories() {