Update of /cvsroot/audacity/audacity-src/src/effects
In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv30536/effects
Modified Files:
Contrast.cpp Contrast.h
Log Message:
Reduce invasiveness of Contrast, whilst increasing functionality. See
Audacity-devel for more details.
Index: Contrast.cpp
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/effects/Contrast.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- Contrast.cpp 10 Nov 2008 20:29:00 -0000 1.4
+++ Contrast.cpp 21 Nov 2008 01:29:38 -0000 1.5
@@ -56,6 +56,8 @@
EffectContrast::EffectContrast()
{
+ bFGset = false;
+ bBGset = false;
}
EffectContrast::~EffectContrast()
@@ -65,10 +67,48 @@
bool EffectContrast::PromptUser()
{
- ContrastDialog dlog(this, mParent);
+ if( !bFGset )
+ {
+ SaveTimes(true, mT0, mT1);
+ bFGset = true;
+ if( !bBGset )
+ {
+ wxMessageDialog m(NULL, _("Foreground times selected.\nNow select
background and use Ctrl+Alt+C or menu again."), _("Contrast Tool Foreground"),
wxOK);
+ m.ShowModal();
+ }
+ }
+ else
+ {
+ if( !bBGset )
+ {
+ SaveTimes(false, mT0, mT1);
+ bBGset = true;
+ }
+ }
- dlog.CentreOnParent();
- dlog.ShowModal();
+ if( bFGset && bBGset )
+ {
+ ContrastDialog dlog(this, mParent);
+
+ // Copy parameters into dialog from effect
+ dlog.startTimeF = mStartTimeF;
+ dlog.endTimeF = mEndTimeF;
+ dlog.startTimeB = mStartTimeB;
+ dlog.endTimeB = mEndTimeB;
+
+ wxCommandEvent dummyEvt;
+ dlog.OnGetForegroundDB(dummyEvt);
+ dlog.OnGetBackgroundDB(dummyEvt);
+
+ dlog.CentreOnParent();
+ dlog.ShowModal();
+
+ // Copy parameters from dialog back into effect
+ mStartTimeF = dlog.startTimeF;
+ mEndTimeF = dlog.endTimeF;
+ mStartTimeB = dlog.startTimeB;
+ mEndTimeB = dlog.endTimeB;
+ }
return false;
}
@@ -80,14 +120,21 @@
TrackListIterator iter(mWaveTracks);
Track *t = iter.First();
if(mT0 >= mT1)
- { // do something 'reasonable' in this case
- mT0 = (mT0 - mT1)/2 - 0.25;
- mT1 = mT0 + 0.5;
+ {
+ wxMessageDialog m(NULL, _("Start time after after end time!\nPlease
enter reasonable times."), _("Error"), wxOK);
+ m.ShowModal();
+ return 1234.0;
}
if(mT0 < t->GetStartTime())
mT0 = t->GetStartTime();
if(mT1 > t->GetEndTime())
mT1 = t->GetEndTime();
+ if(mT0 >= mT1)
+ {
+ wxMessageDialog m(NULL, _("Times are not reasonable!\nPlease enter
reasonable times."), _("Error"), wxOK);
+ m.ShowModal();
+ return 1234.0;
+ }
while(t) { // this isn't quite right. What to do if more than one track
selected?
((WaveTrack *)t)->GetRMS(&rms, mT0, mT1);
t = iter.Next();
@@ -115,6 +162,21 @@
mT1 = t;
}
+void EffectContrast::SaveTimes(bool isForeground, double start, double end)
+{
+ if(isForeground)
+ {
+ mStartTimeF = start;
+ mEndTimeF = end;
+ }
+ else
+ {
+ mStartTimeB = start;
+ mEndTimeB = end;
+ }
+ return;
+}
+
bool EffectContrast::Process()
{
wxMessageBox(_("Hello.\n")); // you should never see this!
@@ -137,6 +199,8 @@
enum {
ID_BUTTON_GETFOREGROUND = 10001,
ID_BUTTON_GETBACKGROUND,
+ ID_BUTTON_USECURRENTF,
+ ID_BUTTON_USECURRENTB,
ID_BUTTON_GETURL,
ID_BACKGROUNDSTART_TEXT,
ID_BACKGROUNDEND_TEXT,
@@ -152,6 +216,8 @@
EVT_BUTTON(wxID_OK, ContrastDialog::OnOK)
EVT_BUTTON(ID_BUTTON_GETFOREGROUND, ContrastDialog::OnGetForegroundDB)
EVT_BUTTON(ID_BUTTON_GETBACKGROUND, ContrastDialog::OnGetBackgroundDB)
+ EVT_BUTTON(ID_BUTTON_USECURRENTF, ContrastDialog::OnUseSelectionF)
+ EVT_BUTTON(ID_BUTTON_USECURRENTB, ContrastDialog::OnUseSelectionB)
EVT_BUTTON(ID_BUTTON_GETURL, ContrastDialog::OnGetURL)
EVT_TEXT(ID_FOREGROUNDSTART_TEXT, ContrastDialog::OnForegroundStartText)
EVT_TEXT(ID_FOREGROUNDEND_TEXT, ContrastDialog::OnForegroundEndText)
@@ -169,17 +235,9 @@
m_pButton_GetForeground = NULL;
m_pButton_GetBackground = NULL;
- gPrefs->Read(wxT("/Contrast/startTimeF"), &startTimeF, 0.0);
- gPrefs->Read(wxT("/Contrast/endTimeF"), &endTimeF, 0.0);
- gPrefs->Read(wxT("/Contrast/startTimeB"), &startTimeB, 0.0);
- gPrefs->Read(wxT("/Contrast/endTimeB"), &endTimeB, 0.0);
+ mT0orig = m_pEffect->GetStartTime(); // keep copy of selection times
+ mT1orig = m_pEffect->GetEndTime();
- m_pEffect->SetStartTime(startTimeF);
- m_pEffect->SetEndTime(endTimeF);
- foregrounddB = m_pEffect->GetDB();
- m_pEffect->SetStartTime(startTimeB);
- m_pEffect->SetEndTime(endTimeB);
- backgrounddB = m_pEffect->GetDB();
Init();
}
@@ -188,7 +246,10 @@
m_pEffect->SetStartTime(startTimeF);
m_pEffect->SetEndTime(endTimeF);
foregrounddB = m_pEffect->GetDB();
- mForegroundRMSText->SetLabel(wxString::Format(_("%.1f dB"), foregrounddB));
+ if(foregrounddB == 1234.0) // magic number, is there a better way?
+ mForegroundRMSText->SetLabel(wxString::Format(_(" ")));
+ else
+ mForegroundRMSText->SetLabel(wxString::Format(_("%.1f dB"),
foregrounddB));
m_pButton_GetForeground->Enable(false);
m_pButton_GetForeground->SetLabel(_("Measured"));
results();
@@ -199,7 +260,10 @@
m_pEffect->SetStartTime(startTimeB);
m_pEffect->SetEndTime(endTimeB);
backgrounddB = m_pEffect->GetDB();
- mBackgroundRMSText->SetLabel(wxString::Format(_("%.1f dB"), backgrounddB));
+ if(backgrounddB == 1234.0) // magic number, is there a better way?
+ mBackgroundRMSText->SetLabel(wxString::Format(_(" ")));
+ else
+ mBackgroundRMSText->SetLabel(wxString::Format(_("%.1f dB"),
backgrounddB));
m_pButton_GetBackground->Enable(false);
m_pButton_GetBackground->SetLabel(_("Measured"));
results();
@@ -213,11 +277,6 @@
void ContrastDialog::OnOK(wxCommandEvent &event)
{
- gPrefs->Write(wxT("/Contrast/startTimeF"), startTimeF);
- gPrefs->Write(wxT("/Contrast/endTimeF"), endTimeF);
- gPrefs->Write(wxT("/Contrast/startTimeB"), startTimeB);
- gPrefs->Write(wxT("/Contrast/endTimeB"), endTimeB);
-
EndModal(0);
}
@@ -234,14 +293,15 @@
S.StartStatic( _("Parameters") );
{
- S.StartMultiColumn(5, wxEXPAND);
+ S.StartMultiColumn(6, wxEXPAND);
{
// Headings
- S.AddFixedText(wxT(" "), false);
+ S.AddFixedText(wxT(""), false); // spacer
S.AddFixedText(_("Start"), false);
S.AddFixedText(_("End"), false);
S.AddFixedText(wxT(""), false); // spacer
+ S.AddFixedText(wxT(""), false); // spacer
S.AddFixedText(_("Volume"), false);
//Foreground
@@ -265,6 +325,7 @@
S.EndMultiColumn();
m_pButton_GetForeground =
S.Id(ID_BUTTON_GETFOREGROUND).AddButton(_("Measured"));
m_pButton_GetForeground->Enable(false); // Disabled as we do the
measurement as we put up the dialog
+ m_pButton_UseCurrentF = S.Id(ID_BUTTON_USECURRENTF).AddButton(_("Use
selection"));
mForegroundRMSText=S.Id(ID_FOREGROUNDDB_TEXT).AddVariableText(wxString::Format(wxT("%.1f
dB"), foregrounddB));
//Background
@@ -288,6 +349,7 @@
S.EndMultiColumn();
m_pButton_GetBackground =
S.Id(ID_BUTTON_GETBACKGROUND).AddButton(_("Measured"));
m_pButton_GetBackground->Enable(false);
+ m_pButton_UseCurrentB = S.Id(ID_BUTTON_USECURRENTB).AddButton(_("Use
selection"));
mBackgroundRMSText=S.Id(ID_BACKGROUNDDB_TEXT).AddVariableText(wxString::Format(wxT("%.1f
dB"), backgrounddB));
}
S.EndMultiColumn();
@@ -312,12 +374,17 @@
//Information
S.StartStatic( _("Information") );
{
- S.AddFixedText(_("Before you open this tool,"));
- S.AddFixedText(_(" Ctrl+Alt+F sets the 'foreground' times."));
- S.AddFixedText(_(" Ctrl+Alt+B sets the 'background' times."));
+ S.AddFixedText(_("Before you use this tool,"));
+ S.AddFixedText(_(" Ctrl+Alt+C sets the 'foreground' times."));
+ S.AddFixedText(_(" Ctrl+Alt+C (again) sets the 'background' times and
opens the tool."));
+ S.AddFixedText(_("After you've used this tool,"));
+ S.AddFixedText(_(" Select a region then use Ctrl+Alt+C to open it."));
+ S.AddFixedText(_(" Click 'Use Selected' above to set the
fore/background times."));
+ S.AddFixedText(_(" Or enter the times manually and click 'Measure'."));
m_pButton_GetURL = S.Id(ID_BUTTON_GETURL).AddButton(_("WCAG Information
on web"));
}
S.EndStatic();
+ Fit();
}
void ContrastDialog::OnForegroundStartText(wxCommandEvent & event)
@@ -352,6 +419,40 @@
m_pButton_GetBackground->SetLabel(_("Measure"));
}
+void ContrastDialog::OnUseSelectionF(wxCommandEvent & event)
+{
+ wxString number;
+
+ startTimeF = mT0orig;
+ endTimeF = mT1orig;
+ number = wxString::Format(wxT("%.2f"), startTimeF);
+ mForegroundStartText->ChangeValue(number);
+ number = wxString::Format(wxT("%.2f"), endTimeF);
+ mForegroundEndText->ChangeValue(number);
+
+ m_pEffect->SetStartTime(startTimeB);
+ m_pEffect->SetEndTime(endTimeB);
+ OnGetForegroundDB(event);
+ results();
+}
+
+void ContrastDialog::OnUseSelectionB(wxCommandEvent & event)
+{
+ wxString number;
+
+ startTimeB = mT0orig;
+ endTimeB = mT1orig;
+ number = wxString::Format(wxT("%.2f"), startTimeB);
+ mBackgroundStartText->ChangeValue(number);
+ number = wxString::Format(wxT("%.2f"), endTimeB);
+ mBackgroundEndText->ChangeValue(number);
+
+ m_pEffect->SetStartTime(startTimeB);
+ m_pEffect->SetEndTime(endTimeB);
+ OnGetBackgroundDB(event);
+ results();
+}
+
void ContrastDialog::results()
{
if(foregrounddB - backgrounddB > 20)
Index: Contrast.h
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/effects/Contrast.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- Contrast.h 9 Nov 2008 18:39:41 -0000 1.3
+++ Contrast.h 21 Nov 2008 01:29:38 -0000 1.4
@@ -22,14 +22,14 @@
class WaveTrack;
class EffectContrast: public Effect {
-
+
public:
EffectContrast();
virtual ~EffectContrast();
virtual wxString GetEffectName() {
- return wxString(_("Contrast..."));
+ return wxString(_("Contrast...\tCtrl+Alt+C"));
}
virtual int GetEffectFlags() {
@@ -57,6 +57,7 @@
virtual bool CheckWhetherSkipEffect();
virtual bool Process();
+ void SaveTimes(bool, double, double);
private:
bool mDoBackground;
@@ -65,6 +66,12 @@
void SetStartTime(double);
double GetEndTime();
void SetEndTime(double);
+ double mStartTimeF;
+ double mEndTimeF;
+ bool bFGset;
+ double mStartTimeB;
+ double mEndTimeB;
+ bool bBGset;
friend class ContrastDialog;
};
@@ -84,21 +91,20 @@
ContrastDialog(EffectContrast * effect,
wxWindow *parent);
-// wxSizer *MakeContrastDialog(bool call_fit = true,
-// bool set_sizer = true);
-
void PopulateOrExchange(ShuttleGui & S);
-// void UpdateDisplay();
-private:
- // handlers
void OnGetForegroundDB( wxCommandEvent &event );
void OnGetBackgroundDB( wxCommandEvent &event );
+
+private:
+ // handlers
void OnGetURL(wxCommandEvent &event);
void OnForegroundStartText(wxCommandEvent & event);
void OnForegroundEndText(wxCommandEvent & event);
void OnBackgroundStartText(wxCommandEvent & event);
void OnBackgroundEndText(wxCommandEvent & event);
+ void OnUseSelectionF(wxCommandEvent & event);
+ void OnUseSelectionB(wxCommandEvent & event);
void results();
void OnOK( wxCommandEvent &event );
@@ -112,11 +118,9 @@
wxStaticText *mDiffText;
double foregrounddB;
- double startTimeF;
- double endTimeF;
double backgrounddB;
- double startTimeB;
- double endTimeB;
+ double mT0orig;
+ double mT1orig;
public:
@@ -124,8 +128,15 @@
wxButton * m_pButton_GetBackground;
wxButton * m_pButton_GetForeground;
+ wxButton * m_pButton_UseCurrentF;
+ wxButton * m_pButton_UseCurrentB;
wxButton * m_pButton_GetURL;
+ double startTimeF;
+ double endTimeF;
+ double startTimeB;
+ double endTimeB;
+
private:
DECLARE_EVENT_TABLE()
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Audacity-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/audacity-cvs