diff --git a/images/Effect.h b/images/Effect.h index 1713f8f22..790cc33f1 100644 --- a/images/Effect.h +++ b/images/Effect.h @@ -1,98 +1,7 @@ -/* XPM */ -static const char * effect_enable_xpm[] = { -"16 16 71 1", -" c #FFFFFF", -". c #C8E5C9", -"+ c #8FCA92", -"@ c #61B565", -"# c #41A646", -"$ c #E6F3E6", -"% c #90CB93", -"& c #3FA443", -"* c #35A03A", -"= c #7EC281", -"- c #36A03B", -"; c #39A23E", -"> c #37A13C", -", c #61B564", -"' c #96CD99", -") c #6BBA6F", -"! c #3CA341", -"~ c #3AA23F", -"{ c #6EBB72", -"] c #D3EAD5", -"^ c #FAFCFA", -"/ c #C4E3C5", -"( c #4EAC52", -"_ c #38A13D", -": c #3DA442", -"< c #67B76A", -"[ c #D5EBD5", -"} c #FDFEFD", -"| c #FAFDFB", -"1 c #ADD8AE", -"2 c #42A647", -"3 c #3EA442", -"4 c #70BC74", -"5 c #A3D4A6", -"6 c #84C486", -"7 c #49A94D", -"8 c #53AE56", -"9 c #C1E2C2", -"0 c #FAFDFA", -"a c #FBFDFB", -"b c #CAE6CC", -"c c #5BB260", -"d c #4DAB51", -"e c #BCE0BE", -"f c #F9FCFA", -"g c #EFF7EF", -"h c #B1DAB2", -"i c #A9D7AB", -"j c #F5FAF6", -"k c #FCFEFC", -"l c #D5EBD6", -"m c #63B566", -"n c #85C688", -"o c #E9F5EA", -"p c #FEFEFE", -"q c #F8FCF8", -"r c #F4FAF4", -"s c #FEFFFE", -"t c #E9F4E9", -"u c #7DC280", -"v c #8CC98F", -"w c #E8F4E9", -"x c #F6FBF6", -"y c #A1D3A3", -"z c #81C384", -"A c #D6ECD7", -"B c #E2F2E3", -"C c #A4D4A6", -"D c #4AAA4F", -"E c #54AE58", -"F c #5EB463", -" .+@##@+. ", -" $%&******&%$ ", -" $=**********=$ ", -" %********-;-*% ", -".&*******>,')!&.", -"+*******~{]^/(*+", -"@**_:_*><[}|12*@", -"#*34567890abc-*#", -"#*defghijklm-**#", -"@*&nopqrstu_***@", -"+**2vwssxy:****+", -".&**3zABCD****&.", -" %***!EF2*****% ", -" $=****-*****=$ ", -" $%&******&%$ ", -" .+@##@+. "}; - /* XPM */ static const char * effect_disable_xpm[] = { "16 16 51 1", -" c #FFFFFF", +" c None", ". c #F3D3D3", "+ c #E19393", "@ c #D25C5C", @@ -160,6 +69,97 @@ static const char * effect_disable_xpm[] = { " $%&&&&&&&&%$ ", " .+@####@+. "}; +/* XPM */ +static const char * effect_enable_xpm[] = { +"16 16 71 1", +" c None", +". c #C8E5C9", +"+ c #8FCA92", +"@ c #61B565", +"# c #41A646", +"$ c #E6F3E6", +"% c #90CB93", +"& c #3FA443", +"* c #35A03A", +"= c #7EC281", +"- c #36A03B", +"; c #39A23E", +"> c #37A13C", +", c #61B564", +"' c #96CD99", +") c #6BBA6F", +"! c #3CA341", +"~ c #3AA23F", +"{ c #6EBB72", +"] c #D3EAD5", +"^ c #FAFCFA", +"/ c #C4E3C5", +"( c #4EAC52", +"_ c #38A13D", +": c #3DA442", +"< c #67B76A", +"[ c #D5EBD5", +"} c #FDFEFD", +"| c #FAFDFB", +"1 c #ADD8AE", +"2 c #42A647", +"3 c #3EA442", +"4 c #70BC74", +"5 c #A3D4A6", +"6 c #84C486", +"7 c #49A94D", +"8 c #53AE56", +"9 c #C1E2C2", +"0 c #FAFDFA", +"a c #FBFDFB", +"b c #CAE6CC", +"c c #5BB260", +"d c #4DAB51", +"e c #BCE0BE", +"f c #F9FCFA", +"g c #EFF7EF", +"h c #B1DAB2", +"i c #A9D7AB", +"j c #F5FAF6", +"k c #FCFEFC", +"l c #D5EBD6", +"m c #63B566", +"n c #85C688", +"o c #E9F5EA", +"p c #FFFFFF", +"q c #F8FCF8", +"r c #F4FAF4", +"s c #FEFFFE", +"t c #E9F4E9", +"u c #7DC280", +"v c #8CC98F", +"w c #E8F4E9", +"x c #F6FBF6", +"y c #A1D3A3", +"z c #81C384", +"A c #D6ECD7", +"B c #E2F2E3", +"C c #A4D4A6", +"D c #4AAA4F", +"E c #54AE58", +"F c #5EB463", +" .+@##@+. ", +" $%&******&%$ ", +" $=**********=$ ", +" %********-;-*% ", +".&*******>,')!&.", +"+*******~{]^/(*+", +"@**_:_*><[}|12*@", +"#*34567890abc-*#", +"#*defghijklm-**#", +"@*&nopqrstu_***@", +"+**2vwssxy:****+", +".&**3zABCD****&.", +" %***!EF2*****% ", +" $=****-*****=$ ", +" $%&******&%$ ", +" .+@##@+. "}; + /* XPM */ static const char * effect_menu_xpm[] = { "16 16 2 1", @@ -523,90 +523,10 @@ static const char * effect_ffwd_xpm[] = { " MN MN ", " "}; -/* XPM */ -static const char * effect_enable_disabled_xpm[] = { -"16 16 60 1", -" c #FFFFFF", -". c #D6D6D6", -"+ c #ACACAC", -"@ c #8B8B8B", -"# c #737373", -"$ c #ECECEC", -"% c #ADADAD", -"& c #717171", -"* c #6A6A6A", -"= c #A0A0A0", -"- c #6B6B6B", -"; c #6D6D6D", -"> c #6C6C6C", -", c #B1B1B1", -"' c #929292", -") c #6F6F6F", -"! c #6E6E6E", -"~ c #949494", -"{ c #DEDEDE", -"] c #FBFBFB", -"^ c #D3D3D3", -"/ c #7D7D7D", -"( c #707070", -"_ c #8F8F8F", -": c #E0E0E0", -"< c #FDFDFD", -"[ c #C2C2C2", -"} c #747474", -"| c #969696", -"1 c #BBBBBB", -"2 c #A4A4A4", -"3 c #797979", -"4 c #808080", -"5 c #D1D1D1", -"6 c #FCFCFC", -"7 c #D8D8D8", -"8 c #868686", -"9 c #7C7C7C", -"0 c #CECECE", -"a c #FAFAFA", -"b c #F3F3F3", -"c c #C5C5C5", -"d c #C0C0C0", -"e c #F7F7F7", -"f c #8C8C8C", -"g c #A5A5A5", -"h c #EFEFEF", -"i c #FEFEFE", -"j c #EEEEEE", -"k c #9F9F9F", -"l c #AAAAAA", -"m c #F8F8F8", -"n c #BABABA", -"o c #A2A2A2", -"p c #E1E1E1", -"q c #EAEAEA", -"r c #BCBCBC", -"s c #7A7A7A", -"t c #818181", -"u c #898989", -" .+@##@+. ", -" $%&******&%$ ", -" $=**********=$ ", -" %********-;-*% ", -".&*******>@,')&.", -"+*******!~{]^/*+", -"@**>(>*>_:<][}*@", -"#*&|12345]678-*#", -"#*90abcde<:f-**#", -"@*&ghiaeijk>***@", -"+**}ljiimn(****+", -".&**&opqrs****&.", -" %***)tu}*****% ", -" $=****-*****=$ ", -" $%&******&%$ ", -" .+@##@+. "}; - /* XPM */ static const char * effect_disable_disabled_xpm[] = { "16 16 46 1", -" c #FFFFFF", +" c None", ". c #E3E3E3", "+ c #BABABA", "@ c #979797", @@ -669,6 +589,87 @@ static const char * effect_disable_disabled_xpm[] = { " $%&&&&&&&&%$ ", " .+@####@+. "}; +/* XPM */ +static const char * effect_enable_disabled_xpm[] = { +"16 16 61 1", +" c None", +". c #D6D6D6", +"+ c #ACACAC", +"@ c #8B8B8B", +"# c #737373", +"$ c #ECECEC", +"% c #ADADAD", +"& c #717171", +"* c #6A6A6A", +"= c #A0A0A0", +"- c #6B6B6B", +"; c #6D6D6D", +"> c #6C6C6C", +", c #B1B1B1", +"' c #929292", +") c #6F6F6F", +"! c #6E6E6E", +"~ c #949494", +"{ c #DEDEDE", +"] c #FBFBFB", +"^ c #D3D3D3", +"/ c #7D7D7D", +"( c #707070", +"_ c #8F8F8F", +": c #E0E0E0", +"< c #FDFDFD", +"[ c #C2C2C2", +"} c #747474", +"| c #969696", +"1 c #BBBBBB", +"2 c #A4A4A4", +"3 c #797979", +"4 c #808080", +"5 c #D1D1D1", +"6 c #FCFCFC", +"7 c #D8D8D8", +"8 c #868686", +"9 c #7C7C7C", +"0 c #CECECE", +"a c #FAFAFA", +"b c #F3F3F3", +"c c #C5C5C5", +"d c #C0C0C0", +"e c #F7F7F7", +"f c #8C8C8C", +"g c #A5A5A5", +"h c #EFEFEF", +"i c #FFFFFF", +"j c #FEFEFE", +"k c #EEEEEE", +"l c #9F9F9F", +"m c #AAAAAA", +"n c #F8F8F8", +"o c #BABABA", +"p c #A2A2A2", +"q c #E1E1E1", +"r c #EAEAEA", +"s c #BCBCBC", +"t c #7A7A7A", +"u c #818181", +"v c #898989", +" .+@##@+. ", +" $%&******&%$ ", +" $=**********=$ ", +" %********-;-*% ", +".&*******>@,')&.", +"+*******!~{]^/*+", +"@**>(>*>_:<][}*@", +"#*&|12345]678-*#", +"#*90abcde<:f-**#", +"@*&ghiaejkl>***@", +"+**}mkjjno(****+", +".&**&pqrst****&.", +" %***)uv}*****% ", +" $=****-*****=$ ", +" $%&******&%$ ", +" .+@##@+. "}; + /* XPM */ static const char * effect_play_disabled_xpm[] = { "16 16 48 1", diff --git a/src/AudioIO.cpp b/src/AudioIO.cpp index 58bd9564c..a7094c2d9 100644 --- a/src/AudioIO.cpp +++ b/src/AudioIO.cpp @@ -558,6 +558,10 @@ AudioIO::AudioIO() mUpdateMeters = false; mUpdatingMeters = false; + mOwningProject = NULL; + mInputMeter = NULL; + mOutputMeter = NULL; + PaError err = Pa_Initialize(); if (err != paNoError) { @@ -1621,6 +1625,11 @@ bool AudioIO::StartPortMidiStream() } #endif +bool AudioIO::IsAvailable(AudacityProject *project) +{ + return mOwningProject == NULL || mOwningProject == project; +} + void AudioIO::SetCaptureMeter(AudacityProject *project, Meter *meter) { if (!mOwningProject || mOwningProject == project) diff --git a/src/AudioIO.h b/src/AudioIO.h index b8d825ee9..6d5bd8db8 100644 --- a/src/AudioIO.h +++ b/src/AudioIO.h @@ -323,6 +323,7 @@ class AUDACITY_DLL_API AudioIO { double AILAGetLastDecisionTime(); #endif + bool IsAvailable(AudacityProject *projecT); void SetCaptureMeter(AudacityProject *project, Meter *meter); void SetPlaybackMeter(AudacityProject *project, Meter *meter); diff --git a/src/effects/Effect.cpp b/src/effects/Effect.cpp index 10da5ea5e..6647b92df 100644 --- a/src/effects/Effect.cpp +++ b/src/effects/Effect.cpp @@ -2149,6 +2149,7 @@ bool EffectUIHost::Initialize() w->SetScrollRate(0, 20); + mDisableTransport = !gAudioIO->IsAvailable(mProject); mPlaying = gAudioIO->IsStreamActive(); // not exactly right, but will suffice mCapturing = gAudioIO->IsStreamActive() && gAudioIO->GetNumCaptureChannels() > 0; @@ -2234,7 +2235,6 @@ bool EffectUIHost::Initialize() bb = new wxBitmapButton(bar, kPlayID, mPlayBM); bb->SetBitmapDisabled(mPlayDisabledBM); mPlayBtn = bb; - mPlayBtn->SetToolTip(_("Start and stop playback")); bs->Add(mPlayBtn); } @@ -2299,6 +2299,11 @@ bool EffectUIHost::Initialize() return false; } + if (mDisableTransport) + { + mEffect->RealtimeSuspend(); + } + EffectManager::Get().RealtimeAddEffect(mEffect); wxTheApp->Connect(EVT_AUDIOIO_PLAYBACK, @@ -2844,10 +2849,11 @@ void EffectUIHost::UpdateControls() bb = (wxBitmapButton *) mPlayBtn; bb->SetBitmapLabel(mStopBM); bb->SetBitmapDisabled(mStopDisabledBM); + bb->SetToolTip(_("Stop")); #if defined(__WXMAC__) - mPlayBtn->SetName(_("Stop &Playback")); + bb->SetName(_("Stop &Playback")); #else - mPlayBtn->SetLabel(_("Stop &Playback")); + bb->SetLabel(_("Stop &Playback")); #endif } } @@ -2865,10 +2871,11 @@ void EffectUIHost::UpdateControls() bb = (wxBitmapButton *) mPlayBtn; bb->SetBitmapLabel(mPlayBM); bb->SetBitmapDisabled(mPlayDisabledBM); + bb->SetToolTip(_("Play")); #if defined(__WXMAC__) - mPlayBtn->SetName(_("Start &Playback")); + bb->SetName(_("Start &Playback")); #else - mPlayBtn->SetLabel(_("Start &Playback")); + bb->SetLabel(_("Start &Playback")); #endif } } @@ -2887,10 +2894,11 @@ void EffectUIHost::UpdateControls() bb = (wxBitmapButton *) mEnableBtn; bb->SetBitmapLabel(mEnableBM); bb->SetBitmapDisabled(mEnableDisabledBM); + bb->SetToolTip(_("Enable")); #if defined(__WXMAC__) - mEnableBtn->SetName(_("Enable &Effect")); + bb->SetName(_("Enable &Effect")); #else - mEnableBtn->SetLabel(_("Enable &Effect")); + bb->SetLabel(_("Enable &Effect")); #endif } } @@ -2908,10 +2916,11 @@ void EffectUIHost::UpdateControls() bb = (wxBitmapButton *) mEnableBtn; bb->SetBitmapLabel(mDisableBM); bb->SetBitmapDisabled(mDisableDisabledBM); + bb->SetToolTip(_("Disable")); #if defined(__WXMAC__) - mEnableBtn->SetName(_("Disable &Effect")); + bb->SetName(_("Disable &Effect")); #else - mEnableBtn->SetLabel(_("Disable &Effect")); + bb->SetLabel(_("Disable &Effect")); #endif } }