Audacity  2.2.2
Public Member Functions | Private Member Functions | Private Attributes | List of all members
EffectUIHost Class Referencefinal

#include <Effect.h>

Inheritance diagram for EffectUIHost:
wxDialogWrapper EffectUIHostInterface wxTabTraversalWrapper< wxDialog >

Public Member Functions

 EffectUIHost (wxWindow *parent, Effect *effect, EffectUIClientInterface *client)
 
 EffectUIHost (wxWindow *parent, AudacityCommand *command, EffectUIClientInterface *client)
 
virtual ~EffectUIHost ()
 
bool TransferDataToWindow () override
 
bool TransferDataFromWindow () override
 
int ShowModal () override
 
bool Initialize ()
 
- Public Member Functions inherited from wxDialogWrapper
 wxDialogWrapper ()
 
 wxDialogWrapper (wxWindow *parent, wxWindowID id, const wxString &title, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxDEFAULT_DIALOG_STYLE, const wxString &name=_("Dialog"))
 
bool Create (wxWindow *parent, wxWindowID id, const wxString &title, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxDEFAULT_DIALOG_STYLE, const wxString &name=_("Dialog"))
 
- Public Member Functions inherited from wxTabTraversalWrapper< wxDialog >
 wxTabTraversalWrapper (Args &&...args)
 
- Public Member Functions inherited from EffectUIHostInterface
virtual ~EffectUIHostInterface ()
 

Private Member Functions

void OnInitDialog (wxInitDialogEvent &evt)
 
void OnErase (wxEraseEvent &evt)
 
void OnPaint (wxPaintEvent &evt)
 
void OnClose (wxCloseEvent &evt)
 
void OnApply (wxCommandEvent &evt)
 
void DoCancel ()
 
void OnCancel (wxCommandEvent &evt)
 
void OnHelp (wxCommandEvent &evt)
 
void OnDebug (wxCommandEvent &evt)
 
void OnMenu (wxCommandEvent &evt)
 
void OnEnable (wxCommandEvent &evt)
 
void OnPlay (wxCommandEvent &evt)
 
void OnRewind (wxCommandEvent &evt)
 
void OnFFwd (wxCommandEvent &evt)
 
void OnPlayback (wxCommandEvent &evt)
 
void OnCapture (wxCommandEvent &evt)
 
void OnUserPreset (wxCommandEvent &evt)
 
void OnFactoryPreset (wxCommandEvent &evt)
 
void OnDeletePreset (wxCommandEvent &evt)
 
void OnSaveAs (wxCommandEvent &evt)
 
void OnImport (wxCommandEvent &evt)
 
void OnExport (wxCommandEvent &evt)
 
void OnOptions (wxCommandEvent &evt)
 
void OnDefaults (wxCommandEvent &evt)
 
void UpdateControls ()
 
wxBitmap CreateBitmap (const char *const xpm[], bool up, bool pusher)
 
void LoadUserPresets ()
 
void InitializeRealtime ()
 
void CleanupRealtime ()
 
void Resume ()
 

Private Attributes

AudacityProjectmProject
 
wxWindow * mParent
 
EffectmEffect
 
AudacityCommandmCommand
 
EffectUIClientInterfacemClient
 
wxArrayString mUserPresets
 
bool mInitialized
 
bool mSupportsRealtime
 
bool mIsGUI
 
bool mIsBatch
 
wxButton * mApplyBtn
 
wxButton * mCloseBtn
 
wxButton * mMenuBtn
 
wxButton * mPlayBtn
 
wxButton * mRewindBtn
 
wxButton * mFFwdBtn
 
wxCheckBox * mEnableCb
 
wxButton * mEnableToggleBtn
 
wxButton * mPlayToggleBtn
 
wxBitmap mPlayBM
 
wxBitmap mPlayDisabledBM
 
wxBitmap mStopBM
 
wxBitmap mStopDisabledBM
 
bool mEnabled
 
bool mDisableTransport
 
bool mPlaying
 
bool mCapturing
 
SelectedRegion mRegion
 
double mPlayPos
 
bool mDismissed {}
 
bool mNeedsResume {}
 

Detailed Description

Definition at line 590 of file Effect.h.

Constructor & Destructor Documentation

EffectUIHost::EffectUIHost ( wxWindow *  parent,
Effect effect,
EffectUIClientInterface client 
)

Definition at line 2830 of file Effect.cpp.

References GetActiveProject(), and Effect::mClient.

2833 : wxDialogWrapper(parent, wxID_ANY, effect->GetTranslatedName(),
2834  wxDefaultPosition, wxDefaultSize,
2835  wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER | wxMINIMIZE_BOX | wxMAXIMIZE_BOX)
2836 {
2837 #if defined(__WXMAC__)
2838  // Make sure the effect window actually floats above the main window
2839  [[((NSView *)GetHandle()) window] setLevel:NSFloatingWindowLevel];
2840 #endif
2841 
2842  SetName( effect->GetTranslatedName() );
2843  SetExtraStyle(GetExtraStyle() | wxWS_EX_VALIDATE_RECURSIVELY);
2844 
2845  mParent = parent;
2846  mEffect = effect;
2847  mCommand = NULL;
2848  mClient = client;
2849 
2851 
2852  mInitialized = false;
2853  mSupportsRealtime = false;
2854 
2855  mDisableTransport = false;
2856 
2857  mEnabled = true;
2858 
2859  mPlayPos = 0.0;
2860  mClient->SetHostUI(this);
2861 }
AudacityCommand * mCommand
Definition: Effect.h:648
double mPlayPos
Definition: Effect.h:680
EffectUIClientInterface * mClient
Definition: Effect.h:649
wxWindow * mParent
Definition: Effect.h:646
AudacityProject * mProject
Definition: Effect.h:645
bool mSupportsRealtime
Definition: Effect.h:653
const wxString & GetTranslatedName()
bool mInitialized
Definition: Effect.h:652
bool mDisableTransport
Definition: Effect.h:675
AUDACITY_DLL_API AudacityProject * GetActiveProject()
Definition: Project.cpp:308
Effect * mEffect
Definition: Effect.h:647
bool mEnabled
Definition: Effect.h:673
virtual void SetHostUI(EffectUIHostInterface *host)=0
EffectUIHost::EffectUIHost ( wxWindow *  parent,
AudacityCommand command,
EffectUIClientInterface client 
)

Definition at line 2863 of file Effect.cpp.

References GetActiveProject(), mClient, mCommand, mDisableTransport, mEffect, mEnabled, mInitialized, mParent, mPlayPos, mProject, mSupportsRealtime, and EffectUIClientInterface::SetHostUI().

2866 : wxDialogWrapper(parent, wxID_ANY, _("Some Command") /*command->GetTranslatedName()*/,
2867  wxDefaultPosition, wxDefaultSize,
2868  wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER | wxMINIMIZE_BOX | wxMAXIMIZE_BOX)
2869 {
2870 #if defined(__WXMAC__)
2871  // Make sure the effect window actually floats above the main window
2872  [[((NSView *)GetHandle()) window] setLevel:NSFloatingWindowLevel];
2873 #endif
2874 
2875  //SetName( command->GetTranslatedName() );
2876  SetExtraStyle(wxWS_EX_VALIDATE_RECURSIVELY);
2877 
2878  mParent = parent;
2879  mEffect = NULL;
2880  mCommand = command;
2881  mClient = client;
2882 
2884 
2885  mInitialized = false;
2886  mSupportsRealtime = false;
2887 
2888  mDisableTransport = false;
2889 
2890  mEnabled = true;
2891 
2892  mPlayPos = 0.0;
2893  mClient->SetHostUI(this);
2894 }
AudacityCommand * mCommand
Definition: Effect.h:648
double mPlayPos
Definition: Effect.h:680
EffectUIClientInterface * mClient
Definition: Effect.h:649
wxWindow * mParent
Definition: Effect.h:646
AudacityProject * mProject
Definition: Effect.h:645
bool mSupportsRealtime
Definition: Effect.h:653
_("Move Track &Down")+wxT("\t")+(GetActiveProject() -> GetCommandManager() ->GetKeyFromName(wxT("TrackMoveDown")).Raw()), OnMoveTrack) POPUP_MENU_ITEM(OnMoveTopID, _("Move Track to &Top")+wxT("\t")+(GetActiveProject() ->GetCommandManager() ->GetKeyFromName(wxT("TrackMoveTop")).Raw()), OnMoveTrack) POPUP_MENU_ITEM(OnMoveBottomID, _("Move Track to &Bottom")+wxT("\t")+(GetActiveProject() ->GetCommandManager() ->GetKeyFromName(wxT("TrackMoveBottom")).Raw()), OnMoveTrack)#define SET_TRACK_NAME_PLUGIN_SYMBOLclass SetTrackNameCommand:public AudacityCommand
bool mInitialized
Definition: Effect.h:652
bool mDisableTransport
Definition: Effect.h:675
AUDACITY_DLL_API AudacityProject * GetActiveProject()
Definition: Project.cpp:308
Effect * mEffect
Definition: Effect.h:647
bool mEnabled
Definition: Effect.h:673
virtual void SetHostUI(EffectUIHostInterface *host)=0
EffectUIHost::~EffectUIHost ( )
virtual

Definition at line 2899 of file Effect.cpp.

References CleanupRealtime(), EffectUIClientInterface::CloseUI(), mClient, mNeedsResume, and Resume().

2900 {
2901  CleanupRealtime();
2902 
2903  if (mClient)
2904  {
2905  if (mNeedsResume)
2906  Resume();
2907 
2908  mClient->CloseUI();
2909  mClient = NULL;
2910  }
2911 }
EffectUIClientInterface * mClient
Definition: Effect.h:649
bool mNeedsResume
Definition: Effect.h:683
void CleanupRealtime()
Definition: Effect.cpp:3889
void Resume()
Definition: Effect.cpp:3430
virtual bool CloseUI()=0

Member Function Documentation

void EffectUIHost::CleanupRealtime ( )
private

Definition at line 3889 of file Effect.cpp.

References EffectManager::Get(), mEffect, mInitialized, mSupportsRealtime, and EffectManager::RealtimeRemoveEffect().

Referenced by OnClose(), and ~EffectUIHost().

3890 {
3892  {
3894 
3895  mInitialized = false;
3896  }
3897 }
bool mSupportsRealtime
Definition: Effect.h:653
void RealtimeRemoveEffect(Effect *effect)
static EffectManager & Get()
bool mInitialized
Definition: Effect.h:652
Effect * mEffect
Definition: Effect.h:647
wxBitmap EffectUIHost::CreateBitmap ( const char *const  xpm[],
bool  up,
bool  pusher 
)
private

Definition at line 3745 of file Effect.cpp.

Referenced by Initialize().

3746 {
3747  wxMemoryDC dc;
3748  wxBitmap pic(xpm);
3749 
3750  wxBitmap mod(pic.GetWidth() + 6, pic.GetHeight() + 6);
3751  dc.SelectObject(mod);
3752 
3753 #if !defined(__WXMAC__)
3754 
3755 #if defined(__WXGTK__)
3756  wxColour newColour = wxSystemSettings::GetColour(wxSYS_COLOUR_BACKGROUND);
3757 #elif defined(__WXMSW__)
3758  wxColour newColour = wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE);
3759 #endif
3760 
3761  dc.SetBackground(wxBrush(newColour));
3762  dc.Clear();
3763 #endif
3764 
3765  int offset = 3;
3766  if (pusher)
3767  {
3768  if (!up)
3769  {
3770  offset += 1;
3771  }
3772  }
3773 
3774  dc.DrawBitmap(pic, offset, offset, true);
3775 
3776  dc.SelectObject(wxNullBitmap);
3777 
3778  return mod;
3779 }
void EffectUIHost::DoCancel ( )
private

Definition at line 3301 of file Effect.cpp.

References mDismissed, mEffect, and Effect::mUIResultID.

Referenced by OnCancel(), and OnClose().

3302 {
3303  if (!mDismissed) {
3304  if( mEffect )
3305  mEffect->mUIResultID = wxID_CANCEL;
3306 
3307  if (IsModal())
3308  EndModal(false);
3309  else
3310  Hide();
3311 
3312  mDismissed = true;
3313  }
3314 }
bool mDismissed
Definition: Effect.h:682
Effect * mEffect
Definition: Effect.h:647
int mUIResultID
Definition: Effect.h:473
bool EffectUIHost::Initialize ( )

Definition at line 2968 of file Effect.cpp.

References _(), CreateBitmap(), CreateStdButtonSizer(), eApplyButton, eCloseButton, eDebugButton, EffectTypeAnalyze, EffectTypeTool, eHelpButton, gAudioIO, AudioIO::GetNumCaptureChannels(), Effect::GetType(), Effect::HelpPage(), InitializeRealtime(), AudioIO::IsAvailable(), AudacityCommand::IsBatchProcessing(), Effect::IsBatchProcessing(), EffectUIClientInterface::IsGraphicalUI(), AudioIO::IsStreamActive(), kEnableID, kFFwdID, kMenuID, kPlayID, kRewindID, LoadUserPresets(), Effect::ManualPage(), mApplyBtn, mCapturing, mClient, mCloseBtn, mCommand, mDisableTransport, mEffect, mEnableCb, mEnabled, mFFwdBtn, mIsBatch, mIsGUI, mMenuBtn, mParent, mPlayBM, mPlayBtn, mPlayDisabledBM, mPlaying, mPlayToggleBtn, mProject, mRewindBtn, mStopBM, mStopDisabledBM, mSupportsRealtime, Effect::mUIDebug, EffectUIClientInterface::PopulateUI(), safenew, EffectPanel::SetAccept(), Effect::SupportsRealtime(), and UpdateControls().

2969 {
2970  EffectPanel *w = safenew EffectPanel(this);
2971  {
2972  auto vs = std::make_unique<wxBoxSizer>(wxVERTICAL);
2973  {
2974  auto hs = std::make_unique<wxBoxSizer>(wxHORIZONTAL);
2975 
2976  // Try to give the window a sensible default/minimum size
2977  w->SetMinSize(wxSize(wxMax(600, mParent->GetSize().GetWidth() * 2 / 3),
2978  mParent->GetSize().GetHeight() / 2));
2979 
2981  mPlaying = gAudioIO->IsStreamActive(); // not exactly right, but will suffice
2983 
2984  if (!mClient->PopulateUI(w))
2985  {
2986  return false;
2987  }
2988 
2989  hs->Add(w, 1, wxEXPAND);
2990  vs->Add(hs.release(), 1, wxEXPAND);
2991  }
2992 
2993  wxPanel *buttonPanel = safenew wxPanelWrapper(this, wxID_ANY);
2994  wxPanel *const bar = safenew wxPanelWrapper(buttonPanel, wxID_ANY);
2995 
2996  // This fools NVDA into not saying "Panel" when the dialog gets focus
2997  bar->SetName(wxT("\a"));
2998  bar->SetLabel(wxT("\a"));
2999 
3000  {
3001  auto bs = std::make_unique<wxBoxSizer>(wxHORIZONTAL);
3002 
3007 
3008  wxBitmapButton *bb;
3009 
3010  int margin = 0;
3011 
3012 #if defined(__WXMAC__)
3013  margin = 3; // I'm sure it's needed because of the order things are created...
3014 #endif
3015 
3016  if (!mIsGUI)
3017  {
3018  wxASSERT(bar); // To justify safenew
3019  mMenuBtn = safenew wxButton(bar, kMenuID, _("&Manage"));
3020  bs->Add(mMenuBtn, 0, wxALIGN_CENTER | wxTOP | wxBOTTOM, margin);
3021  }
3022  else
3023  {
3024  wxASSERT(bar); // To justify safenew
3025  mMenuBtn = safenew wxBitmapButton(bar, kMenuID, CreateBitmap(effect_menu_xpm, true, false));
3026 #if defined(__WXMAC__)
3027  mMenuBtn->SetName(_("&Manage"));
3028 #else
3029  mMenuBtn->SetLabel(_("&Manage"));
3030 #endif
3031  bs->Add(mMenuBtn);
3032  }
3033  mMenuBtn->SetToolTip(_("Manage presets and options"));
3034 
3035  bs->Add(5, 5);
3036 
3037  if (!mIsBatch)
3038  {
3039  if (!mIsGUI)
3040  {
3041  if (mSupportsRealtime)
3042  {
3043  wxASSERT(bar); // To justify safenew
3044  mPlayToggleBtn = safenew wxButton(bar, kPlayID, _("Start &Playback"));
3045  mPlayToggleBtn->SetToolTip(_("Start and stop playback"));
3046  bs->Add(mPlayToggleBtn, 0, wxALIGN_CENTER | wxTOP | wxBOTTOM, margin);
3047  }
3048  else if (mEffect &&
3049  (mEffect->GetType() != EffectTypeAnalyze) &&
3051  )
3052  {
3053  wxASSERT(bar); // To justify safenew
3054  mPlayToggleBtn = safenew wxButton(bar, kPlayID, _("&Preview"));
3055  mPlayToggleBtn->SetToolTip(_("Preview effect"));
3056  bs->Add(mPlayToggleBtn, 0, wxALIGN_CENTER | wxTOP | wxBOTTOM, margin);
3057  }
3058  }
3059  else
3060  {
3061  mPlayBM = CreateBitmap(effect_play_xpm, true, false);
3062  mPlayDisabledBM = CreateBitmap(effect_play_disabled_xpm, true, false);
3063  mStopBM = CreateBitmap(effect_stop_xpm, true, false);
3064  mStopDisabledBM = CreateBitmap(effect_stop_disabled_xpm, true, false);
3065  wxASSERT(bar); // To justify safenew
3066  bb = safenew wxBitmapButton(bar, kPlayID, mPlayBM);
3067  bb->SetBitmapDisabled(mPlayDisabledBM);
3068  mPlayBtn = bb;
3069  bs->Add(mPlayBtn);
3070  if (!mSupportsRealtime)
3071  {
3072  mPlayBtn->SetToolTip(_("Preview effect"));
3073 #if defined(__WXMAC__)
3074  mPlayBtn->SetName(_("Preview effect"));
3075 #else
3076  mPlayBtn->SetLabel(_("&Preview effect"));
3077 #endif
3078  }
3079  }
3080 
3081  if (mSupportsRealtime)
3082  {
3083  if (!mIsGUI)
3084  {
3085  wxASSERT(bar); // To justify safenew
3086  mRewindBtn = safenew wxButton(bar, kRewindID, _("Skip &Backward"));
3087  bs->Add(mRewindBtn, 0, wxALIGN_CENTER | wxTOP | wxBOTTOM, margin);
3088  }
3089  else
3090  {
3091  wxASSERT(bar); // To justify safenew
3092  bb = safenew wxBitmapButton(bar, kRewindID, CreateBitmap(effect_rewind_xpm, true, true));
3093  bb->SetBitmapDisabled(CreateBitmap(effect_rewind_disabled_xpm, true, true));
3094  mRewindBtn = bb;
3095 #if defined(__WXMAC__)
3096  mRewindBtn->SetName(_("Skip &Backward"));
3097 #else
3098  mRewindBtn->SetLabel(_("Skip &Backward"));
3099 #endif
3100  bs->Add(mRewindBtn);
3101  }
3102  mRewindBtn->SetToolTip(_("Skip backward"));
3103 
3104  if (!mIsGUI)
3105  {
3106  wxASSERT(bar); // To justify safenew
3107  mFFwdBtn = safenew wxButton(bar, kFFwdID, _("Skip &Forward"));
3108  bs->Add(mFFwdBtn, 0, wxALIGN_CENTER | wxTOP | wxBOTTOM, margin);
3109  }
3110  else
3111  {
3112  wxASSERT(bar); // To justify safenew
3113  bb = safenew wxBitmapButton(bar, kFFwdID, CreateBitmap(effect_ffwd_xpm, true, true));
3114  bb->SetBitmapDisabled(CreateBitmap(effect_ffwd_disabled_xpm, true, true));
3115  mFFwdBtn = bb;
3116 #if defined(__WXMAC__)
3117  mFFwdBtn->SetName(_("Skip &Forward"));
3118 #else
3119  mFFwdBtn->SetLabel(_("Skip &Forward"));
3120 #endif
3121  bs->Add(mFFwdBtn);
3122  }
3123  mFFwdBtn->SetToolTip(_("Skip forward"));
3124 
3125  bs->Add(5, 5);
3126 
3127  mEnableCb = safenew wxCheckBox(bar, kEnableID, _("&Enable"));
3128  mEnableCb->SetValue(mEnabled);
3129  mEnableCb->SetName(_("Enable"));
3130  bs->Add(mEnableCb, 0, wxALIGN_CENTER | wxTOP | wxBOTTOM, margin);
3131  }
3132  }
3133 
3134  bar->SetSizerAndFit(bs.release());
3135  }
3136 
3137  long buttons;
3138  if ( mEffect && mEffect->ManualPage().IsEmpty() && mEffect->HelpPage().IsEmpty()) {
3139  buttons = eApplyButton + eCloseButton;
3140  this->SetAcceleratorTable(wxNullAcceleratorTable);
3141  }
3142  else {
3143  buttons = eApplyButton + eCloseButton + eHelpButton;
3144  wxAcceleratorEntry entries[1];
3145 #if defined(__WXMAC__)
3146  // Is there a standard shortcut on Mac?
3147 #else
3148  entries[0].Set(wxACCEL_NORMAL, (int) WXK_F1, wxID_HELP);
3149 #endif
3150  wxAcceleratorTable accel(1, entries);
3151  this->SetAcceleratorTable(accel);
3152  }
3153 
3154  if (mEffect && mEffect->mUIDebug) {
3155  buttons += eDebugButton;
3156  }
3157 
3158  buttonPanel->SetSizer(CreateStdButtonSizer(buttonPanel, buttons, bar).release());
3159  vs->Add(buttonPanel, 0, wxEXPAND);
3160 
3161  SetSizer(vs.release());
3162  }
3163 
3164  Layout();
3165  Fit();
3166  Center();
3167 
3168  mApplyBtn = (wxButton *) FindWindow(wxID_APPLY);
3169  mCloseBtn = (wxButton *) FindWindow(wxID_CANCEL);
3170 
3171  UpdateControls();
3172 
3173  w->SetAccept(!mIsGUI);
3174  (!mIsGUI ? w : FindWindow(wxID_APPLY))->SetFocus();
3175 
3176  LoadUserPresets();
3177 
3179 
3180  SetMinSize(GetSize());
3181  return true;
3182 }
std::unique_ptr< wxSizer > CreateStdButtonSizer(wxWindow *parent, long buttons, wxWindow *extra)
AudacityCommand * mCommand
Definition: Effect.h:648
virtual bool IsGraphicalUI()=0
virtual bool PopulateUI(wxWindow *parent)=0
wxBitmap CreateBitmap(const char *const xpm[], bool up, bool pusher)
Definition: Effect.cpp:3745
static const int kMenuID
Definition: Effect.cpp:81
void UpdateControls()
Definition: Effect.cpp:3781
void InitializeRealtime()
Definition: Effect.cpp:3871
wxButton * mPlayToggleBtn
Definition: Effect.h:666
wxButton * mCloseBtn
Definition: Effect.h:658
bool IsStreamActive()
Returns true if the audio i/o is running at all, but not during cleanup.
Definition: AudioIO.cpp:2890
EffectUIClientInterface * mClient
Definition: Effect.h:649
wxBitmap mPlayDisabledBM
Definition: Effect.h:669
bool mPlaying
Definition: Effect.h:676
bool IsAvailable(AudacityProject *projecT)
Function to automatically set an acceptable volume.
Definition: AudioIO.cpp:2516
virtual bool IsBatchProcessing()
wxWindow * mParent
Definition: Effect.h:646
static const int kPlayID
Definition: Effect.cpp:83
wxButton * mRewindBtn
Definition: Effect.h:661
unsigned GetNumCaptureChannels() const
Definition: AudioIO.h:399
virtual wxString ManualPage()
Definition: Effect.cpp:1127
wxButton * mApplyBtn
Definition: Effect.h:657
AudacityProject * mProject
Definition: Effect.h:645
static const int kFFwdID
Definition: Effect.cpp:85
bool mSupportsRealtime
Definition: Effect.h:653
#define safenew
Definition: Audacity.h:230
bool mIsBatch
Definition: Effect.h:655
wxBitmap mStopBM
Definition: Effect.h:670
static const int kRewindID
Definition: Effect.cpp:84
EffectType GetType() override
Definition: Effect.cpp:148
wxButton * mMenuBtn
Definition: Effect.h:659
void LoadUserPresets()
Definition: Effect.cpp:3859
bool mCapturing
Definition: Effect.h:677
void SetAccept(bool accept)
Definition: Effect.cpp:2789
_("Move Track &Down")+wxT("\t")+(GetActiveProject() -> GetCommandManager() ->GetKeyFromName(wxT("TrackMoveDown")).Raw()), OnMoveTrack) POPUP_MENU_ITEM(OnMoveTopID, _("Move Track to &Top")+wxT("\t")+(GetActiveProject() ->GetCommandManager() ->GetKeyFromName(wxT("TrackMoveTop")).Raw()), OnMoveTrack) POPUP_MENU_ITEM(OnMoveBottomID, _("Move Track to &Bottom")+wxT("\t")+(GetActiveProject() ->GetCommandManager() ->GetKeyFromName(wxT("TrackMoveBottom")).Raw()), OnMoveTrack)#define SET_TRACK_NAME_PLUGIN_SYMBOLclass SetTrackNameCommand:public AudacityCommand
AudioIO * gAudioIO
Definition: AudioIO.cpp:482
bool mUIDebug
Definition: Effect.h:518
static const int kEnableID
Definition: Effect.cpp:82
wxButton * mFFwdBtn
Definition: Effect.h:662
bool mDisableTransport
Definition: Effect.h:675
wxButton * mPlayBtn
Definition: Effect.h:660
bool mIsGUI
Definition: Effect.h:654
bool SupportsRealtime() override
Definition: Effect.cpp:250
wxBitmap mPlayBM
Definition: Effect.h:668
virtual bool IsBatchProcessing()
Definition: Effect.cpp:1137
Effect * mEffect
Definition: Effect.h:647
wxBitmap mStopDisabledBM
Definition: Effect.h:671
bool mEnabled
Definition: Effect.h:673
wxCheckBox * mEnableCb
Definition: Effect.h:663
virtual wxString HelpPage()
Definition: Effect.cpp:1132
void EffectUIHost::InitializeRealtime ( )
private

Definition at line 3871 of file Effect.cpp.

References EffectManager::Get(), mEffect, mInitialized, mSupportsRealtime, OnCapture(), OnPlayback(), and EffectManager::RealtimeAddEffect().

Referenced by Initialize().

3872 {
3874  {
3876 
3877  wxTheApp->Bind(EVT_AUDIOIO_PLAYBACK,
3879  this);
3880 
3881  wxTheApp->Bind(EVT_AUDIOIO_CAPTURE,
3883  this);
3884 
3885  mInitialized = true;
3886  }
3887 }
void OnCapture(wxCommandEvent &evt)
Definition: Effect.cpp:3581
bool mSupportsRealtime
Definition: Effect.h:653
void OnPlayback(wxCommandEvent &evt)
Definition: Effect.cpp:3551
static EffectManager & Get()
bool mInitialized
Definition: Effect.h:652
void RealtimeAddEffect(Effect *effect)
Effect * mEffect
Definition: Effect.h:647
void EffectUIHost::LoadUserPresets ( )
private

Definition at line 3859 of file Effect.cpp.

References Effect::GetPrivateConfigSubgroups(), Effect::GetUserPresetsGroup(), mEffect, and mUserPresets.

Referenced by Initialize(), OnDeletePreset(), OnImport(), OnMenu(), and OnSaveAs().

3860 {
3861  mUserPresets.Clear();
3862 
3863  if( mEffect )
3865 
3866  mUserPresets.Sort();
3867 
3868  return;
3869 }
wxString GetUserPresetsGroup(const wxString &name) override
Definition: Effect.cpp:790
wxArrayString mUserPresets
Definition: Effect.h:651
bool GetPrivateConfigSubgroups(const wxString &group, wxArrayString &subgroups) override
Definition: Effect.cpp:892
Effect * mEffect
Definition: Effect.h:647
void EffectUIHost::OnApply ( wxCommandEvent &  evt)
private

Definition at line 3235 of file Effect.cpp.

References AlwaysEnabledFlag, AudacityCommand::Apply(), Effect::Apply(), EffectTypeGenerate, AudacityCommand::GetAutomationParameters(), Effect::GetCurrentSettingsGroup(), IdentInterface::GetTranslatedName(), Effect::GetType(), SelectedRegion::isPoint(), mApplyBtn, mClient, mCommand, mDismissed, mEffect, mIsBatch, mProject, Effect::mUIResultID, AudacityProject::mViewInfo, params, AudacityProject::ReportIfActionNotAllowed(), Effect::SaveUserPreset(), ViewInfo::selectedRegion, TimeSelectedFlag, EffectUIClientInterface::ValidateUI(), and WaveTracksSelectedFlag.

Referenced by OnDebug().

3236 {
3237  // On wxGTK (wx2.8.12), the default action is still executed even if
3238  // the button is disabled. This appears to affect all wxDialogs, not
3239  // just our Effects dialogs. So, this is a only temporary workaround
3240  // for legacy effects that disable the OK button. Hopefully this has
3241  // been corrected in wx3.
3242  if (!FindWindow(wxID_APPLY)->IsEnabled())
3243  {
3244  return;
3245  }
3246 
3247  // Honor the "select all if none" preference...a little hackish, but whatcha gonna do...
3249  {
3250  auto flags = AlwaysEnabledFlag;
3251  bool allowed = mProject->ReportIfActionNotAllowed(
3253  flags,
3256  if (!allowed)
3257  return;
3258  }
3259 
3260  if (!mClient->ValidateUI())
3261  {
3262  return;
3263  }
3264 
3265  // This will take care of calling TransferDataFromWindow() for an effect.
3267  {
3268  return;
3269  }
3270  // This will take care of calling TransferDataFromWindow() for a command.
3271  if (mCommand ){
3272  wxString params;
3273  mCommand->GetAutomationParameters( params );
3274  }
3275 
3276  if( mEffect )
3277  mEffect->mUIResultID = evt.GetId();
3278 
3279  if (IsModal())
3280  {
3281  mDismissed = true;
3282 
3283  EndModal(true);
3284 
3285  Close();
3286 
3287  return;
3288  }
3289 
3290  // Progress dialog no longer yields, so this "shouldn't" be necessary (yet to be proven
3291  // for sure), but it is a nice visual cue that something is going on.
3292  mApplyBtn->Disable();
3293  auto cleanup = finally( [&] { mApplyBtn->Enable(); } );
3294 
3295  if( mEffect )
3296  mEffect->Apply();
3297  if( mCommand )
3298  mCommand->Apply();
3299 }
AudacityCommand * mCommand
Definition: Effect.h:648
bool SaveUserPreset(const wxString &name) override
Definition: Effect.cpp:600
bool isPoint() const
bool ReportIfActionNotAllowed(const wxString &Name, CommandFlag &flags, CommandFlag flagsRqd, CommandFlag mask)
Definition: Project.cpp:2295
SelectedRegion selectedRegion
Definition: ViewInfo.h:160
wxString GetCurrentSettingsGroup() override
Definition: Effect.cpp:801
EffectUIClientInterface * mClient
Definition: Effect.h:649
bool mDismissed
Definition: Effect.h:682
wxButton * mApplyBtn
Definition: Effect.h:657
AudacityProject * mProject
Definition: Effect.h:645
virtual bool GetAutomationParameters(wxString &parms)
bool mIsBatch
Definition: Effect.h:655
EffectType GetType() override
Definition: Effect.cpp:148
ViewInfo mViewInfo
Definition: Project.h:558
virtual bool Apply(const CommandContext &WXUNUSED(context))
virtual bool ValidateUI()=0
const wxString & GetTranslatedName()
bool Apply() override
Definition: Effect.cpp:761
Effect * mEffect
Definition: Effect.h:647
EffectDistortion::Params params
Definition: Distortion.cpp:95
int mUIResultID
Definition: Effect.h:473
void EffectUIHost::OnCancel ( wxCommandEvent &  evt)
private

Definition at line 3316 of file Effect.cpp.

References DoCancel().

3317 {
3318  DoCancel();
3319  Close();
3320 }
void DoCancel()
Definition: Effect.cpp:3301
void EffectUIHost::OnCapture ( wxCommandEvent &  evt)
private

Definition at line 3581 of file Effect.cpp.

References mCapturing, mDisableTransport, mProject, and UpdateControls().

Referenced by InitializeRealtime().

3582 {
3583  evt.Skip();
3584 
3585  if (evt.GetInt() != 0)
3586  {
3587  if (evt.GetEventObject() != mProject)
3588  {
3589  mDisableTransport = true;
3590  }
3591  else
3592  {
3593  mCapturing = true;
3594  }
3595  }
3596  else
3597  {
3598  mDisableTransport = false;
3599  mCapturing = false;
3600  }
3601 
3602  UpdateControls();
3603 }
void UpdateControls()
Definition: Effect.cpp:3781
AudacityProject * mProject
Definition: Effect.h:645
bool mCapturing
Definition: Effect.h:677
bool mDisableTransport
Definition: Effect.h:675
void EffectUIHost::OnClose ( wxCloseEvent &  evt)
private

Definition at line 3219 of file Effect.cpp.

References CleanupRealtime(), EffectUIClientInterface::CloseUI(), DoCancel(), mClient, mNeedsResume, and Resume().

3220 {
3221  DoCancel();
3222 
3223  CleanupRealtime();
3224 
3225  Hide();
3226 
3227  if (mNeedsResume)
3228  Resume();
3229  mClient->CloseUI();
3230  mClient = NULL;
3231 
3232  Destroy();
3233 }
EffectUIClientInterface * mClient
Definition: Effect.h:649
void DoCancel()
Definition: Effect.cpp:3301
bool mNeedsResume
Definition: Effect.h:683
void CleanupRealtime()
Definition: Effect.cpp:3889
void Resume()
Definition: Effect.cpp:3430
virtual bool CloseUI()=0
void EffectUIHost::OnDebug ( wxCommandEvent &  evt)
private

Definition at line 3336 of file Effect.cpp.

References mEffect, Effect::mUIResultID, and OnApply().

3337 {
3338  OnApply(evt);
3339  if( mEffect )
3340  mEffect->mUIResultID = evt.GetId();
3341 }
void OnApply(wxCommandEvent &evt)
Definition: Effect.cpp:3235
Effect * mEffect
Definition: Effect.h:647
int mUIResultID
Definition: Effect.h:473
void EffectUIHost::OnDefaults ( wxCommandEvent &  evt)
private

Definition at line 3738 of file Effect.cpp.

References Effect::LoadFactoryDefaults(), and mEffect.

3739 {
3741 
3742  return;
3743 }
bool LoadFactoryDefaults() override
Definition: Effect.cpp:636
Effect * mEffect
Definition: Effect.h:647
void EffectUIHost::OnDeletePreset ( wxCommandEvent &  evt)
private

Definition at line 3621 of file Effect.cpp.

References _(), AudacityMessageBox(), Effect::GetUserPresetsGroup(), kDeletePresetID, LoadUserPresets(), mEffect, mUserPresets, and Effect::RemovePrivateConfigSubgroup().

3622 {
3623  wxString preset = mUserPresets[evt.GetId() - kDeletePresetID];
3624 
3625  int res = AudacityMessageBox(wxString::Format(_("Are you sure you want to delete \"%s\"?"), preset),
3626  _("Delete Preset"),
3627  wxICON_QUESTION | wxYES_NO);
3628  if (res == wxYES)
3629  {
3631  }
3632 
3633  LoadUserPresets();
3634 
3635  return;
3636 }
wxString GetUserPresetsGroup(const wxString &name) override
Definition: Effect.cpp:790
wxArrayString mUserPresets
Definition: Effect.h:651
static const int kDeletePresetID
Definition: Effect.cpp:89
bool RemovePrivateConfigSubgroup(const wxString &group) override
Definition: Effect.cpp:947
int AudacityMessageBox(const wxString &message, const wxString &caption=AudacityMessageBoxCaptionStr(), long style=wxOK|wxCENTRE, wxWindow *parent=NULL, int x=wxDefaultCoord, int y=wxDefaultCoord)
Definition: ErrorDialog.h:92
void LoadUserPresets()
Definition: Effect.cpp:3859
_("Move Track &Down")+wxT("\t")+(GetActiveProject() -> GetCommandManager() ->GetKeyFromName(wxT("TrackMoveDown")).Raw()), OnMoveTrack) POPUP_MENU_ITEM(OnMoveTopID, _("Move Track to &Top")+wxT("\t")+(GetActiveProject() ->GetCommandManager() ->GetKeyFromName(wxT("TrackMoveTop")).Raw()), OnMoveTrack) POPUP_MENU_ITEM(OnMoveBottomID, _("Move Track to &Bottom")+wxT("\t")+(GetActiveProject() ->GetCommandManager() ->GetKeyFromName(wxT("TrackMoveBottom")).Raw()), OnMoveTrack)#define SET_TRACK_NAME_PLUGIN_SYMBOLclass SetTrackNameCommand:public AudacityCommand
Effect * mEffect
Definition: Effect.h:647
void EffectUIHost::OnEnable ( wxCommandEvent &  evt)
private

Definition at line 3445 of file Effect.cpp.

References mEffect, mEnableCb, mEnabled, mNeedsResume, Effect::RealtimeSuspend(), Resume(), and UpdateControls().

3446 {
3447  mEnabled = mEnableCb->GetValue();
3448 
3449  if (mEnabled) {
3450  Resume();
3451  mNeedsResume = false;
3452  }
3453  else
3454  {
3456  mNeedsResume = true;
3457  }
3458 
3459  UpdateControls();
3460 }
void UpdateControls()
Definition: Effect.cpp:3781
bool RealtimeSuspend() override
Definition: Effect.cpp:437
bool mNeedsResume
Definition: Effect.h:683
Effect * mEffect
Definition: Effect.h:647
bool mEnabled
Definition: Effect.h:673
wxCheckBox * mEnableCb
Definition: Effect.h:663
void Resume()
Definition: Effect.cpp:3430
void EffectUIHost::OnErase ( wxEraseEvent &  evt)
private

Definition at line 3207 of file Effect.cpp.

3208 {
3209  // Ignore it
3210 }
void EffectUIHost::OnExport ( wxCommandEvent &  evt)
private

Definition at line 3722 of file Effect.cpp.

References EffectUIClientInterface::ExportPresets(), and mClient.

3723 {
3724  // may throw
3725  // exceptions are handled in AudacityApp::OnExceptionInMainLoop
3727 
3728  return;
3729 }
EffectUIClientInterface * mClient
Definition: Effect.h:649
virtual void ExportPresets()=0
void EffectUIHost::OnFactoryPreset ( wxCommandEvent &  evt)
private

Definition at line 3614 of file Effect.cpp.

References kFactoryPresetsID, Effect::LoadFactoryPreset(), and mEffect.

3615 {
3617 
3618  return;
3619 }
static const int kFactoryPresetsID
Definition: Effect.cpp:90
bool LoadFactoryPreset(int id) override
Definition: Effect.cpp:626
Effect * mEffect
Definition: Effect.h:647
void EffectUIHost::OnFFwd ( wxCommandEvent &  evt)
private

Definition at line 3529 of file Effect.cpp.

References gAudioIO, AudioIO::GetStreamTime(), gPrefs, mPlaying, mPlayPos, mRegion, AudioIO::SeekStream(), SelectedRegion::t0(), and SelectedRegion::t1().

3530 {
3531  if (mPlaying)
3532  {
3533  double seek;
3534  gPrefs->Read(wxT("/AudioIO/SeekShortPeriod"), &seek, 1.0);
3535 
3536  double pos = gAudioIO->GetStreamTime();
3537  if (mRegion.t0() < mRegion.t1() && pos + seek > mRegion.t1())
3538  {
3539  seek = mRegion.t1() - pos;
3540  }
3541 
3542  gAudioIO->SeekStream(seek);
3543  }
3544  else
3545  {
3546  // It allows to play past end of selection...probably useless
3547  mPlayPos = mRegion.t1();
3548  }
3549 }
AudacityPrefs * gPrefs
Definition: Prefs.cpp:73
double t0() const
double GetStreamTime()
During playback, the (unwarped) track time most recently played.
Definition: AudioIO.cpp:2960
double mPlayPos
Definition: Effect.h:680
bool mPlaying
Definition: Effect.h:676
SelectedRegion mRegion
Definition: Effect.h:679
double t1() const
AudioIO * gAudioIO
Definition: AudioIO.cpp:482
void SeekStream(double seconds)
Move the playback / recording position of the current stream by the specified amount from where it is...
Definition: AudioIO.h:209
void EffectUIHost::OnHelp ( wxCommandEvent &  evt)
private

Definition at line 3322 of file Effect.cpp.

References Effect::GetFamilyId(), Effect::HelpPage(), Effect::ManualPage(), mEffect, NYQUISTEFFECTS_FAMILY, and HelpSystem::ShowHelp().

3323 {
3324  if (mEffect && mEffect->GetFamilyId() == NYQUISTEFFECTS_FAMILY && (mEffect->ManualPage().IsEmpty())) {
3325  // Old ShowHelp required when there is no on-line manual.
3326  // Always use default web browser to allow full-featured HTML pages.
3327  HelpSystem::ShowHelp(FindWindow(wxID_HELP), mEffect->HelpPage(), wxEmptyString, true, true);
3328  }
3329  else if( mEffect )
3330  {
3331  // otherwise use the NEW ShowHelp
3332  HelpSystem::ShowHelp(FindWindow(wxID_HELP), mEffect->ManualPage(), true);
3333  }
3334 }
IdentInterfaceSymbol GetFamilyId() override
Definition: Effect.cpp:208
virtual wxString ManualPage()
Definition: Effect.cpp:1127
static void ShowHelp(wxWindow *parent, const wxString &localFileName, const wxString &remoteURL, bool bModal=false, bool alwaysDefaultBrowser=false)
Definition: HelpSystem.cpp:194
#define NYQUISTEFFECTS_FAMILY
Definition: Nyquist.h:35
Effect * mEffect
Definition: Effect.h:647
virtual wxString HelpPage()
Definition: Effect.cpp:1132
void EffectUIHost::OnImport ( wxCommandEvent &  evt)
private

Definition at line 3713 of file Effect.cpp.

References EffectUIClientInterface::ImportPresets(), LoadUserPresets(), and mClient.

3714 {
3716 
3717  LoadUserPresets();
3718 
3719  return;
3720 }
EffectUIClientInterface * mClient
Definition: Effect.h:649
virtual void ImportPresets()=0
void LoadUserPresets()
Definition: Effect.cpp:3859
void EffectUIHost::OnInitDialog ( wxInitDialogEvent &  evt)
private

Definition at line 3184 of file Effect.cpp.

3185 {
3186  // Do default handling
3187  wxDialogWrapper::OnInitDialog(evt);
3188 
3189 #if wxCHECK_VERSION(3, 0, 0)
3190 //#warning "check to see if this still needed in wx3"
3191 #endif
3192 
3193  // Pure hackage coming down the pike...
3194  //
3195  // I have no idea why, but if a wxTextCtrl is the first control in the
3196  // panel, then its contents will not be automatically selected when the
3197  // dialog is displayed.
3198  //
3199  // So, we do the selection manually.
3200  wxTextCtrl *focused = wxDynamicCast(FindFocus(), wxTextCtrl);
3201  if (focused)
3202  {
3203  focused->SelectAll();
3204  }
3205 }
void EffectUIHost::OnMenu ( wxCommandEvent &  evt)
private

Definition at line 3343 of file Effect.cpp.

References _(), EffectUIClientInterface::CanExportPresets(), Effect::GetDescription(), Effect::GetFactoryPresets(), Effect::GetFamilyId(), IdentInterface::GetTranslatedName(), Effect::GetVendor(), Effect::GetVersion(), EffectUIClientInterface::HasOptions(), kDefaultsID, kDeletePresetDummyID, kDeletePresetID, kDummyID, kExportID, kFactoryPresetsID, kImportID, kMenuID, kOptionsID, kSaveAsID, kUserPresetsDummyID, kUserPresetsID, label, LoadUserPresets(), mClient, mEffect, mUserPresets, and IdentInterfaceSymbol::Translation().

3344 {
3345  wxMenu menu;
3346  if( !mEffect )
3347  return;
3348 
3349  LoadUserPresets();
3350 
3351  if (mUserPresets.GetCount() == 0)
3352  {
3353  menu.Append(kUserPresetsDummyID, _("User Presets"))->Enable(false);
3354  }
3355  else
3356  {
3357  auto sub = std::make_unique<wxMenu>();
3358  for (size_t i = 0, cnt = mUserPresets.GetCount(); i < cnt; i++)
3359  {
3360  sub->Append(kUserPresetsID + i, mUserPresets[i]);
3361  }
3362  menu.Append(0, _("User Presets"), sub.release());
3363  }
3364 
3365  menu.Append(kSaveAsID, _("Save Preset..."));
3366 
3367  if (mUserPresets.GetCount() == 0)
3368  {
3369  menu.Append(kDeletePresetDummyID, _("Delete Preset"))->Enable(false);
3370  }
3371  else
3372  {
3373  auto sub = std::make_unique<wxMenu>();
3374  for (size_t i = 0, cnt = mUserPresets.GetCount(); i < cnt; i++)
3375  {
3376  sub->Append(kDeletePresetID + i, mUserPresets[i]);
3377  }
3378  menu.Append(0, _("Delete Preset"), sub.release());
3379  }
3380 
3381  menu.AppendSeparator();
3382 
3383  wxArrayString factory = mEffect->GetFactoryPresets();
3384 
3385  {
3386  auto sub = std::make_unique<wxMenu>();
3387  sub->Append(kDefaultsID, _("Defaults"));
3388  if (factory.GetCount() > 0)
3389  {
3390  sub->AppendSeparator();
3391  for (size_t i = 0, cnt = factory.GetCount(); i < cnt; i++)
3392  {
3393  wxString label = factory[i];
3394  if (label.IsEmpty())
3395  {
3396  label = _("None");
3397  }
3398 
3399  sub->Append(kFactoryPresetsID + i, label);
3400  }
3401  }
3402  menu.Append(0, _("Factory Presets"), sub.release());
3403  }
3404 
3405  menu.AppendSeparator();
3406  menu.Append(kImportID, _("Import..."))->Enable(mClient->CanExportPresets());
3407  menu.Append(kExportID, _("Export..."))->Enable(mClient->CanExportPresets());
3408  menu.AppendSeparator();
3409  menu.Append(kOptionsID, _("Options..."))->Enable(mClient->HasOptions());
3410  menu.AppendSeparator();
3411 
3412  {
3413  auto sub = std::make_unique<wxMenu>();
3414 
3415  sub->Append(kDummyID, wxString::Format(_("Type: %s"),
3416  ::wxGetTranslation( mEffect->GetFamilyId().Translation() )));
3417  sub->Append(kDummyID, wxString::Format(_("Name: %s"), mEffect->GetTranslatedName()));
3418  sub->Append(kDummyID, wxString::Format(_("Version: %s"), mEffect->GetVersion()));
3419  sub->Append(kDummyID, wxString::Format(_("Vendor: %s"), mEffect->GetVendor().Translation()));
3420  sub->Append(kDummyID, wxString::Format(_("Description: %s"), mEffect->GetDescription()));
3421 
3422  menu.Append(0, _("About"), sub.release());
3423  }
3424 
3425  wxWindow *btn = FindWindow(kMenuID);
3426  wxRect r = btn->GetRect();
3427  btn->PopupMenu(&menu, r.GetLeft(), r.GetBottom());
3428 }
IdentInterfaceSymbol GetFamilyId() override
Definition: Effect.cpp:208
wxArrayString mUserPresets
Definition: Effect.h:651
static const int kMenuID
Definition: Effect.cpp:81
static const int kDeletePresetID
Definition: Effect.cpp:89
virtual bool HasOptions()=0
EffectUIClientInterface * mClient
Definition: Effect.h:649
virtual bool CanExportPresets()=0
wxString label
Definition: Tags.cpp:727
static const int kUserPresetsID
Definition: Effect.cpp:88
wxString GetDescription() override
Definition: Effect.cpp:198
const wxString & Translation() const
static const int kUserPresetsDummyID
Definition: Effect.cpp:79
static const int kDummyID
Definition: Effect.cpp:73
static const int kDeletePresetDummyID
Definition: Effect.cpp:80
wxString GetVersion() override
Definition: Effect.cpp:188
wxArrayString GetFactoryPresets() override
Definition: Effect.cpp:616
static const int kExportID
Definition: Effect.cpp:76
static const int kImportID
Definition: Effect.cpp:75
void LoadUserPresets()
Definition: Effect.cpp:3859
static const int kDefaultsID
Definition: Effect.cpp:77
static const int kFactoryPresetsID
Definition: Effect.cpp:90
const wxString & GetTranslatedName()
IdentInterfaceSymbol GetVendor() override
Definition: Effect.cpp:178
_("Move Track &Down")+wxT("\t")+(GetActiveProject() -> GetCommandManager() ->GetKeyFromName(wxT("TrackMoveDown")).Raw()), OnMoveTrack) POPUP_MENU_ITEM(OnMoveTopID, _("Move Track to &Top")+wxT("\t")+(GetActiveProject() ->GetCommandManager() ->GetKeyFromName(wxT("TrackMoveTop")).Raw()), OnMoveTrack) POPUP_MENU_ITEM(OnMoveBottomID, _("Move Track to &Bottom")+wxT("\t")+(GetActiveProject() ->GetCommandManager() ->GetKeyFromName(wxT("TrackMoveBottom")).Raw()), OnMoveTrack)#define SET_TRACK_NAME_PLUGIN_SYMBOLclass SetTrackNameCommand:public AudacityCommand
static const int kSaveAsID
Definition: Effect.cpp:74
static const int kOptionsID
Definition: Effect.cpp:78
Effect * mEffect
Definition: Effect.h:647
void EffectUIHost::OnOptions ( wxCommandEvent &  evt)
private

Definition at line 3731 of file Effect.cpp.

References mClient, and EffectUIClientInterface::ShowOptions().

3732 {
3733  mClient->ShowOptions();
3734 
3735  return;
3736 }
EffectUIClientInterface * mClient
Definition: Effect.h:649
virtual void ShowOptions()=0
void EffectUIHost::OnPaint ( wxPaintEvent &  evt)
private

Definition at line 3212 of file Effect.cpp.

3213 {
3214  wxPaintDC dc(this);
3215 
3216  dc.Clear();
3217 }
void EffectUIHost::OnPlay ( wxCommandEvent &  evt)
private

Definition at line 3462 of file Effect.cpp.

References gAudioIO, AudacityProject::GetControlToolBar(), AudacityProject::GetDefaultPlayOptions(), AudacityProject::GetPlayRegion(), AudioIO::GetStreamTime(), AudacityProject::IsPlayRegionLocked(), mClient, mEffect, mPlaying, mPlayPos, mProject, mRegion, mSupportsRealtime, AudacityProject::mViewInfo, normalPlay, ControlToolBar::PlayPlayRegion(), Effect::Preview(), ViewInfo::selectedRegion, SelectedRegion::setTimes(), ControlToolBar::StopPlaying(), SelectedRegion::t0(), SelectedRegion::t1(), Effect::TransferDataFromWindow(), and EffectUIClientInterface::ValidateUI().

3463 {
3464  if (!mSupportsRealtime)
3465  {
3467  {
3468  return;
3469  }
3470 
3471  mEffect->Preview(false);
3472 
3473  return;
3474  }
3475 
3476  if (mPlaying)
3477  {
3480  }
3481  else
3482  {
3484  {
3485  double t0, t1;
3486  mProject->GetPlayRegion(&t0, &t1);
3487  mRegion.setTimes(t0, t1);
3488  mPlayPos = mRegion.t0();
3489  }
3490  else if (mProject->mViewInfo.selectedRegion.t0() != mRegion.t0() ||
3492  {
3494  mPlayPos = mRegion.t0();
3495  }
3496 
3497  if (mPlayPos > mRegion.t1())
3498  {
3499  mPlayPos = mRegion.t1();
3500  }
3501 
3505  }
3506 }
AudioIOStartStreamOptions GetDefaultPlayOptions()
Definition: Project.cpp:1298
double t0() const
virtual bool TransferDataFromWindow()
Definition: Effect.cpp:1881
SelectedRegion selectedRegion
Definition: ViewInfo.h:160
double GetStreamTime()
During playback, the (unwarped) track time most recently played.
Definition: AudioIO.cpp:2960
double mPlayPos
Definition: Effect.h:680
EffectUIClientInterface * mClient
Definition: Effect.h:649
bool mPlaying
Definition: Effect.h:676
SelectedRegion mRegion
Definition: Effect.h:679
void StopPlaying(bool stopStream=true)
AudacityProject * mProject
Definition: Effect.h:645
bool mSupportsRealtime
Definition: Effect.h:653
double t1() const
void Preview() override
Definition: Effect.cpp:771
Defines a selected portion of a project.
ViewInfo mViewInfo
Definition: Project.h:558
virtual bool ValidateUI()=0
bool setTimes(double t0, double t1)
AudioIO * gAudioIO
Definition: AudioIO.cpp:482
int PlayPlayRegion(const SelectedRegion &selectedRegion, const AudioIOStartStreamOptions &options, PlayMode playMode, PlayAppearance appearance=PlayAppearance::Straight, bool backwards=false, bool playWhiteSpace=false)
ControlToolBar * GetControlToolBar()
Definition: Project.cpp:5003
void GetPlayRegion(double *playRegionStart, double *playRegionEnd)
Definition: Project.cpp:5448
bool IsPlayRegionLocked()
Definition: Project.h:213
Effect * mEffect
Definition: Effect.h:647
void EffectUIHost::OnPlayback ( wxCommandEvent &  evt)
private

Definition at line 3551 of file Effect.cpp.

References mDisableTransport, mPlaying, mPlayPos, mProject, mRegion, AudacityProject::mViewInfo, ViewInfo::selectedRegion, SelectedRegion::t0(), and UpdateControls().

Referenced by InitializeRealtime().

3552 {
3553  evt.Skip();
3554 
3555  if (evt.GetInt() != 0)
3556  {
3557  if (evt.GetEventObject() != mProject)
3558  {
3559  mDisableTransport = true;
3560  }
3561  else
3562  {
3563  mPlaying = true;
3564  }
3565  }
3566  else
3567  {
3568  mDisableTransport = false;
3569  mPlaying = false;
3570  }
3571 
3572  if (mPlaying)
3573  {
3575  mPlayPos = mRegion.t0();
3576  }
3577 
3578  UpdateControls();
3579 }
double t0() const
void UpdateControls()
Definition: Effect.cpp:3781
SelectedRegion selectedRegion
Definition: ViewInfo.h:160
double mPlayPos
Definition: Effect.h:680
bool mPlaying
Definition: Effect.h:676
SelectedRegion mRegion
Definition: Effect.h:679
AudacityProject * mProject
Definition: Effect.h:645
ViewInfo mViewInfo
Definition: Project.h:558
bool mDisableTransport
Definition: Effect.h:675
void EffectUIHost::OnRewind ( wxCommandEvent &  evt)
private

Definition at line 3508 of file Effect.cpp.

References gAudioIO, AudioIO::GetStreamTime(), gPrefs, mPlaying, mPlayPos, mRegion, AudioIO::SeekStream(), and SelectedRegion::t0().

3509 {
3510  if (mPlaying)
3511  {
3512  double seek;
3513  gPrefs->Read(wxT("/AudioIO/SeekShortPeriod"), &seek, 1.0);
3514 
3515  double pos = gAudioIO->GetStreamTime();
3516  if (pos - seek < mRegion.t0())
3517  {
3518  seek = pos - mRegion.t0();
3519  }
3520 
3521  gAudioIO->SeekStream(-seek);
3522  }
3523  else
3524  {
3525  mPlayPos = mRegion.t0();
3526  }
3527 }
AudacityPrefs * gPrefs
Definition: Prefs.cpp:73
double t0() const
double GetStreamTime()
During playback, the (unwarped) track time most recently played.
Definition: AudioIO.cpp:2960
double mPlayPos
Definition: Effect.h:680
bool mPlaying
Definition: Effect.h:676
SelectedRegion mRegion
Definition: Effect.h:679
AudioIO * gAudioIO
Definition: AudioIO.cpp:482
void SeekStream(double seconds)
Move the playback / recording position of the current stream by the specified amount from where it is...
Definition: AudioIO.h:209
void EffectUIHost::OnSaveAs ( wxCommandEvent &  evt)
private

Definition at line 3638 of file Effect.cpp.

References _(), ShuttleGui::AddStandardButtons(), ShuttleGuiBase::AddTextBox(), eIsCreating, ShuttleGuiBase::EndHorizontalLay(), ShuttleGuiBase::EndPanel(), ShuttleGuiBase::EndVerticalLay(), Effect::GetUserPresetsGroup(), LoadUserPresets(), mEffect, mUserPresets, name, Effect::SaveUserPreset(), ShuttleGuiBase::SetBorder(), ShuttleGuiBase::StartHorizontalLay(), ShuttleGuiBase::StartPanel(), and ShuttleGuiBase::StartVerticalLay().

3639 {
3640  wxTextCtrl *text;
3641  wxString name;
3642  wxDialogWrapper dlg(this, wxID_ANY, wxString(_("Save Preset")));
3643 
3644  ShuttleGui S(&dlg, eIsCreating);
3645 
3646  S.StartPanel();
3647  {
3648  S.StartVerticalLay(1);
3649  {
3650  S.StartHorizontalLay(wxALIGN_LEFT, 0);
3651  {
3652  text = S.AddTextBox(_("Preset name:"), name, 30);
3653  }
3654  S.EndHorizontalLay();
3655  S.SetBorder(10);
3656  S.AddStandardButtons();
3657  }
3658  S.EndVerticalLay();
3659  }
3660  S.EndPanel();
3661 
3662  dlg.SetSize(dlg.GetSizer()->GetMinSize());
3663  dlg.Center();
3664 
3665  while (true)
3666  {
3667  int rc = dlg.ShowModal();
3668 
3669  if (rc != wxID_OK)
3670  {
3671  break;
3672  }
3673 
3674  name = text->GetValue();
3675  if (name.IsEmpty())
3676  {
3677  AudacityMessageDialog md(this,
3678  _("You must specify a name"),
3679  _("Save Preset"));
3680  md.Center();
3681  md.ShowModal();
3682  continue;
3683  }
3684 
3685  if (mUserPresets.Index(name) != wxNOT_FOUND)
3686  {
3687  AudacityMessageDialog md(this,
3688  _("Preset already exists.\n\nReplace?"),
3689  _("Save Preset"),
3690  wxYES_NO | wxCANCEL | wxICON_EXCLAMATION);
3691  md.Center();
3692  int choice = md.ShowModal();
3693  if (choice == wxID_CANCEL)
3694  {
3695  break;
3696  }
3697 
3698  if (choice == wxID_NO)
3699  {
3700  continue;
3701  }
3702  }
3703 
3705  LoadUserPresets();
3706 
3707  break;
3708  }
3709 
3710  return;
3711 }
wxString GetUserPresetsGroup(const wxString &name) override
Definition: Effect.cpp:790
wxArrayString mUserPresets
Definition: Effect.h:651
bool SaveUserPreset(const wxString &name) override
Definition: Effect.cpp:600
Derived from ShuttleGuiBase, an Audacity specific class for shuttling data to and from GUI...
Definition: ShuttleGui.h:409
Wrap wxMessageDialog so that caption IS translatable.
Definition: ErrorDialog.h:129
void LoadUserPresets()
Definition: Effect.cpp:3859
_("Move Track &Down")+wxT("\t")+(GetActiveProject() -> GetCommandManager() ->GetKeyFromName(wxT("TrackMoveDown")).Raw()), OnMoveTrack) POPUP_MENU_ITEM(OnMoveTopID, _("Move Track to &Top")+wxT("\t")+(GetActiveProject() ->GetCommandManager() ->GetKeyFromName(wxT("TrackMoveTop")).Raw()), OnMoveTrack) POPUP_MENU_ITEM(OnMoveBottomID, _("Move Track to &Bottom")+wxT("\t")+(GetActiveProject() ->GetCommandManager() ->GetKeyFromName(wxT("TrackMoveBottom")).Raw()), OnMoveTrack)#define SET_TRACK_NAME_PLUGIN_SYMBOLclass SetTrackNameCommand:public AudacityCommand
const wxChar * name
Definition: Distortion.cpp:94
Effect * mEffect
Definition: Effect.h:647
void EffectUIHost::OnUserPreset ( wxCommandEvent &  evt)
private

Definition at line 3605 of file Effect.cpp.

References Effect::GetUserPresetsGroup(), kUserPresetsID, Effect::LoadUserPreset(), mEffect, and mUserPresets.

3606 {
3607  int preset = evt.GetId() - kUserPresetsID;
3608 
3610 
3611  return;
3612 }
wxString GetUserPresetsGroup(const wxString &name) override
Definition: Effect.cpp:790
wxArrayString mUserPresets
Definition: Effect.h:651
static const int kUserPresetsID
Definition: Effect.cpp:88
bool LoadUserPreset(const wxString &name) override
Definition: Effect.cpp:584
Effect * mEffect
Definition: Effect.h:647
void EffectUIHost::Resume ( )
private

Definition at line 3430 of file Effect.cpp.

References mClient, mEffect, mEnableCb, mEnabled, Effect::RealtimeResume(), and EffectUIClientInterface::ValidateUI().

Referenced by OnClose(), OnEnable(), and ~EffectUIHost().

3431 {
3432  if (!mClient->ValidateUI()) {
3433  // If we're previewing we should still be able to stop playback
3434  // so don't disable transport buttons.
3435  // mEffect->EnableApply(false); // currently this would also disable transport buttons.
3436  // The preferred behaviour is currently undecided, so for now
3437  // just disallow enabling until settings are valid.
3438  mEnabled = false;
3439  mEnableCb->SetValue(mEnabled);
3440  return;
3441  }
3443 }
EffectUIClientInterface * mClient
Definition: Effect.h:649
virtual bool ValidateUI()=0
bool RealtimeResume() override
Definition: Effect.cpp:459
Effect * mEffect
Definition: Effect.h:647
bool mEnabled
Definition: Effect.h:673
wxCheckBox * mEnableCb
Definition: Effect.h:663
int EffectUIHost::ShowModal ( )
override

Definition at line 2939 of file Effect.cpp.

References mApplyBtn, mCloseBtn, and safenew.

2940 {
2941 #if defined(__WXMSW__)
2942  // Swap the Close and Apply buttons
2943  wxSizer *sz = mApplyBtn->GetContainingSizer();
2944  wxASSERT(mApplyBtn->GetParent()); // To justify safenew
2945  wxButton *apply = safenew wxButton(mApplyBtn->GetParent(), wxID_APPLY);
2946  sz->Replace(mCloseBtn, apply);
2947  sz->Replace(mApplyBtn, mCloseBtn);
2948  sz->Layout();
2949  mApplyBtn->Destroy();
2950  mApplyBtn = apply;
2951  mApplyBtn->SetDefault();
2952  mApplyBtn->SetLabel(wxGetStockLabel(wxID_OK, 0));
2953  mCloseBtn->SetLabel(wxGetStockLabel(wxID_CANCEL, 0));
2954 #else
2955  mApplyBtn->SetLabel(wxGetStockLabel(wxID_OK));
2956  mCloseBtn->SetLabel(wxGetStockLabel(wxID_CANCEL));
2957 #endif
2958 
2959  Layout();
2960 
2961  return wxDialogWrapper::ShowModal();
2962 }
wxButton * mCloseBtn
Definition: Effect.h:658
wxButton * mApplyBtn
Definition: Effect.h:657
#define safenew
Definition: Audacity.h:230
bool EffectUIHost::TransferDataFromWindow ( )
override

Definition at line 2926 of file Effect.cpp.

References mCommand, mEffect, AudacityCommand::TransferDataFromWindow(), and Effect::TransferDataFromWindow().

2927 {
2928  if( mEffect)
2929  return mEffect->TransferDataFromWindow();
2930  if( mCommand)
2931  return mCommand->TransferDataFromWindow();
2932  return false;
2933 }
AudacityCommand * mCommand
Definition: Effect.h:648
virtual bool TransferDataFromWindow()
Definition: Effect.cpp:1881
virtual bool TransferDataFromWindow()
Effect * mEffect
Definition: Effect.h:647
bool EffectUIHost::TransferDataToWindow ( )
override

Definition at line 2917 of file Effect.cpp.

References mCommand, mEffect, AudacityCommand::TransferDataToWindow(), and Effect::TransferDataToWindow().

2918 {
2919  if( mEffect )
2920  return mEffect->TransferDataToWindow();
2921  if( mCommand )
2922  return mCommand->TransferDataToWindow();
2923  return false;
2924 }
AudacityCommand * mCommand
Definition: Effect.h:648
virtual bool TransferDataToWindow()
Definition: Effect.cpp:1876
virtual bool TransferDataToWindow()
Effect * mEffect
Definition: Effect.h:647
void EffectUIHost::UpdateControls ( )
private

Definition at line 3781 of file Effect.cpp.

References _(), EffectTypeAnalyze, EffectTypeTool, Effect::GetType(), mApplyBtn, mCapturing, mCloseBtn, mDisableTransport, mEffect, mEnableCb, mFFwdBtn, mIsBatch, mIsGUI, mPlayBM, mPlayBtn, mPlayDisabledBM, mPlaying, mPlayToggleBtn, mRewindBtn, mStopBM, mStopDisabledBM, and mSupportsRealtime.

Referenced by Initialize(), OnCapture(), OnEnable(), and OnPlayback().

3782 {
3783  if (mIsBatch)
3784  {
3785  return;
3786  }
3787 
3789  {
3790  // Don't allow focus to get trapped
3791  wxWindow *focus = FindFocus();
3792  if (focus == mRewindBtn || focus == mFFwdBtn || focus == mPlayBtn || focus == mEnableCb)
3793  {
3794  mCloseBtn->SetFocus();
3795  }
3796  }
3797 
3798  mApplyBtn->Enable(!mCapturing);
3800  {
3802  }
3803 
3804  if (mSupportsRealtime)
3805  {
3806  mRewindBtn->Enable(!(mCapturing || mDisableTransport));
3807  mFFwdBtn->Enable(!(mCapturing || mDisableTransport));
3808  mEnableCb->Enable(!(mCapturing || mDisableTransport));
3809 
3810  wxBitmapButton *bb;
3811 
3812  if (mPlaying)
3813  {
3814  if (!mIsGUI)
3815  {
3816  /* i18n-hint: The access key "&P" should be the same in
3817  "Stop &Playback" and "Start &Playback" */
3818  mPlayToggleBtn->SetLabel(_("Stop &Playback"));
3819  mPlayToggleBtn->Refresh();
3820  }
3821  else
3822  {
3823  bb = (wxBitmapButton *) mPlayBtn;
3824  bb->SetBitmapLabel(mStopBM);
3825  bb->SetBitmapDisabled(mStopDisabledBM);
3826  bb->SetToolTip(_("Stop"));
3827 #if defined(__WXMAC__)
3828  bb->SetName(_("Stop &Playback"));
3829 #else
3830  bb->SetLabel(_("Stop &Playback"));
3831 #endif
3832  }
3833  }
3834  else
3835  {
3836  if (!mIsGUI)
3837  {
3838  /* i18n-hint: The access key "&P" should be the same in
3839  "Stop &Playback" and "Start &Playback" */
3840  mPlayToggleBtn->SetLabel(_("Start &Playback"));
3841  mPlayToggleBtn->Refresh();
3842  }
3843  else
3844  {
3845  bb = (wxBitmapButton *) mPlayBtn;
3846  bb->SetBitmapLabel(mPlayBM);
3847  bb->SetBitmapDisabled(mPlayDisabledBM);
3848  bb->SetToolTip(_("Play"));
3849 #if defined(__WXMAC__)
3850  bb->SetName(_("Start &Playback"));
3851 #else
3852  bb->SetLabel(_("Start &Playback"));
3853 #endif
3854  }
3855  }
3856  }
3857 }
wxButton * mPlayToggleBtn
Definition: Effect.h:666
wxButton * mCloseBtn
Definition: Effect.h:658
wxBitmap mPlayDisabledBM
Definition: Effect.h:669
bool mPlaying
Definition: Effect.h:676
wxButton * mRewindBtn
Definition: Effect.h:661
wxButton * mApplyBtn
Definition: Effect.h:657
bool mSupportsRealtime
Definition: Effect.h:653
bool mIsBatch
Definition: Effect.h:655
wxBitmap mStopBM
Definition: Effect.h:670
EffectType GetType() override
Definition: Effect.cpp:148
bool mCapturing
Definition: Effect.h:677
_("Move Track &Down")+wxT("\t")+(GetActiveProject() -> GetCommandManager() ->GetKeyFromName(wxT("TrackMoveDown")).Raw()), OnMoveTrack) POPUP_MENU_ITEM(OnMoveTopID, _("Move Track to &Top")+wxT("\t")+(GetActiveProject() ->GetCommandManager() ->GetKeyFromName(wxT("TrackMoveTop")).Raw()), OnMoveTrack) POPUP_MENU_ITEM(OnMoveBottomID, _("Move Track to &Bottom")+wxT("\t")+(GetActiveProject() ->GetCommandManager() ->GetKeyFromName(wxT("TrackMoveBottom")).Raw()), OnMoveTrack)#define SET_TRACK_NAME_PLUGIN_SYMBOLclass SetTrackNameCommand:public AudacityCommand
wxButton * mFFwdBtn
Definition: Effect.h:662
bool mDisableTransport
Definition: Effect.h:675
wxButton * mPlayBtn
Definition: Effect.h:660
bool mIsGUI
Definition: Effect.h:654
wxBitmap mPlayBM
Definition: Effect.h:668
Effect * mEffect
Definition: Effect.h:647
wxBitmap mStopDisabledBM
Definition: Effect.h:671
wxCheckBox * mEnableCb
Definition: Effect.h:663

Member Data Documentation

wxButton* EffectUIHost::mApplyBtn
private

Definition at line 657 of file Effect.h.

Referenced by Initialize(), OnApply(), ShowModal(), and UpdateControls().

bool EffectUIHost::mCapturing
private

Definition at line 677 of file Effect.h.

Referenced by Initialize(), OnCapture(), and UpdateControls().

EffectUIClientInterface* EffectUIHost::mClient
private
wxButton* EffectUIHost::mCloseBtn
private

Definition at line 658 of file Effect.h.

Referenced by Initialize(), ShowModal(), and UpdateControls().

AudacityCommand* EffectUIHost::mCommand
private
bool EffectUIHost::mDisableTransport
private

Definition at line 675 of file Effect.h.

Referenced by EffectUIHost(), Initialize(), OnCapture(), OnPlayback(), and UpdateControls().

bool EffectUIHost::mDismissed {}
private

Definition at line 682 of file Effect.h.

Referenced by DoCancel(), and OnApply().

Effect* EffectUIHost::mEffect
private
wxCheckBox* EffectUIHost::mEnableCb
private

Definition at line 663 of file Effect.h.

Referenced by Initialize(), OnEnable(), Resume(), and UpdateControls().

bool EffectUIHost::mEnabled
private

Definition at line 673 of file Effect.h.

Referenced by EffectUIHost(), Initialize(), OnEnable(), and Resume().

wxButton* EffectUIHost::mEnableToggleBtn
private

Definition at line 665 of file Effect.h.

wxButton* EffectUIHost::mFFwdBtn
private

Definition at line 662 of file Effect.h.

Referenced by Initialize(), and UpdateControls().

bool EffectUIHost::mInitialized
private

Definition at line 652 of file Effect.h.

Referenced by CleanupRealtime(), EffectUIHost(), and InitializeRealtime().

bool EffectUIHost::mIsBatch
private

Definition at line 655 of file Effect.h.

Referenced by Initialize(), OnApply(), and UpdateControls().

bool EffectUIHost::mIsGUI
private

Definition at line 654 of file Effect.h.

Referenced by Initialize(), and UpdateControls().

wxButton* EffectUIHost::mMenuBtn
private

Definition at line 659 of file Effect.h.

Referenced by Initialize().

bool EffectUIHost::mNeedsResume {}
private

Definition at line 683 of file Effect.h.

Referenced by OnClose(), OnEnable(), and ~EffectUIHost().

wxWindow* EffectUIHost::mParent
private

Definition at line 646 of file Effect.h.

Referenced by EffectUIHost(), and Initialize().

wxBitmap EffectUIHost::mPlayBM
private

Definition at line 668 of file Effect.h.

Referenced by Initialize(), and UpdateControls().

wxButton* EffectUIHost::mPlayBtn
private

Definition at line 660 of file Effect.h.

Referenced by Initialize(), and UpdateControls().

wxBitmap EffectUIHost::mPlayDisabledBM
private

Definition at line 669 of file Effect.h.

Referenced by Initialize(), and UpdateControls().

bool EffectUIHost::mPlaying
private

Definition at line 676 of file Effect.h.

Referenced by Initialize(), OnFFwd(), OnPlay(), OnPlayback(), OnRewind(), and UpdateControls().

double EffectUIHost::mPlayPos
private

Definition at line 680 of file Effect.h.

Referenced by EffectUIHost(), OnFFwd(), OnPlay(), OnPlayback(), and OnRewind().

wxButton* EffectUIHost::mPlayToggleBtn
private

Definition at line 666 of file Effect.h.

Referenced by Initialize(), and UpdateControls().

AudacityProject* EffectUIHost::mProject
private

Definition at line 645 of file Effect.h.

Referenced by EffectUIHost(), Initialize(), OnApply(), OnCapture(), OnPlay(), and OnPlayback().

SelectedRegion EffectUIHost::mRegion
private

Definition at line 679 of file Effect.h.

Referenced by OnFFwd(), OnPlay(), OnPlayback(), and OnRewind().

wxButton* EffectUIHost::mRewindBtn
private

Definition at line 661 of file Effect.h.

Referenced by Initialize(), and UpdateControls().

wxBitmap EffectUIHost::mStopBM
private

Definition at line 670 of file Effect.h.

Referenced by Initialize(), and UpdateControls().

wxBitmap EffectUIHost::mStopDisabledBM
private

Definition at line 671 of file Effect.h.

Referenced by Initialize(), and UpdateControls().

bool EffectUIHost::mSupportsRealtime
private
wxArrayString EffectUIHost::mUserPresets
private

Definition at line 651 of file Effect.h.

Referenced by LoadUserPresets(), OnDeletePreset(), OnMenu(), OnSaveAs(), and OnUserPreset().


The documentation for this class was generated from the following files: