Audacity 3.2.0
Public Member Functions | Private Member Functions | Private Attributes | List of all members
MacrosWindow Class Referencefinal

#include <BatchProcessDialog.h>

Inheritance diagram for MacrosWindow:
[legend]
Collaboration diagram for MacrosWindow:
[legend]

Public Member Functions

 MacrosWindow (wxWindow *parent, AudacityProject &project, bool bExpanded=true)
 Constructor. More...
 
 ~MacrosWindow ()
 
void UpdateDisplay (bool bExpanded)
 
- Public Member Functions inherited from ApplyMacroDialog
 ApplyMacroDialog (wxWindow *parent, AudacityProject &project, bool bInherited=false)
 
virtual ~ApplyMacroDialog ()
 
void Populate ()
 
void PopulateOrExchange (ShuttleGui &S)
 Defines the dialog and does data exchange with it. More...
 
virtual void OnApplyToProject (wxCommandEvent &event)
 
virtual void OnApplyToFiles (wxCommandEvent &event)
 
virtual void OnCancel (wxCommandEvent &event)
 
virtual void OnHelp (wxCommandEvent &event)
 
virtual ManualPageID GetHelpPageName ()
 
void PopulateMacros ()
 
void ApplyMacroToProject (int iMacro, bool bHasGui=true)
 
void ApplyMacroToProject (const CommandID &MacroID, bool bHasGui=true)
 
- Public Member Functions inherited from wxDialogWrapper
 wxDialogWrapper ()
 
 wxDialogWrapper (wxWindow *parent, wxWindowID id, const TranslatableString &title, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxDEFAULT_DIALOG_STYLE, const TranslatableString &name=XO("Dialog"))
 
bool Create (wxWindow *parent, wxWindowID id, const TranslatableString &title, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxDEFAULT_DIALOG_STYLE, const TranslatableString &name=XO("Dialog"))
 
void SetTitle (const TranslatableString &title)
 
void SetLabel (const TranslatableString &title)
 
void SetName (const TranslatableString &title)
 
void SetName ()
 
- Public Member Functions inherited from wxTabTraversalWrapper< wxDialog >
 wxTabTraversalWrapper (Args &&... args)
 
 wxTabTraversalWrapper (const wxTabTraversalWrapper &)=delete
 
 wxTabTraversalWrapper (wxTabTraversalWrapper &&)=delete
 
wxTabTraversalWrapperoperator= (const wxTabTraversalWrapper &)=delete
 
wxTabTraversalWrapperoperator= (wxTabTraversalWrapper &&)=delete
 
- Public Member Functions inherited from PrefsListener
 PrefsListener ()
 
virtual ~PrefsListener ()
 
virtual void UpdatePrefs ()=0
 

Private Member Functions

TranslatableString WindowTitle () const
 
void Populate ()
 Creates the dialog and its contents. More...
 
void PopulateOrExchange (ShuttleGui &S)
 Defines the dialog and does data exchange with it. More...
 
void OnApplyToProject (wxCommandEvent &event) override
 
void OnApplyToFiles (wxCommandEvent &event) override
 
void OnCancel (wxCommandEvent &event) override
 
virtual ManualPageID GetHelpPageName () override
 
void PopulateList ()
 This clears and updates the contents of mList, the commands for the current macro. More...
 
void AddItem (const CommandID &command, wxString const &params)
 Add one item into mList. More...
 
bool ChangeOK ()
 
void UpdateMenus ()
 
void ShowActiveMacro ()
 
void OnMacroSelected (wxListEvent &event)
 An item in the macros list has been selected. More...
 
void OnListSelected (wxListEvent &event)
 An item in the macros list has been selected. More...
 
void OnMacrosBeginEdit (wxListEvent &event)
 
void OnMacrosEndEdit (wxListEvent &event)
 
void OnAdd (wxCommandEvent &event)
 
void OnRemove (wxCommandEvent &event)
 
void OnRename (wxCommandEvent &event)
 
void OnRestore (wxCommandEvent &event)
 Reset a built in macro. More...
 
void OnImport (wxCommandEvent &event)
 
void OnExport (wxCommandEvent &event)
 
void OnSave (wxCommandEvent &event)
 
void OnExpand (wxCommandEvent &event)
 
void OnShrink (wxCommandEvent &event)
 
void OnSize (wxSizeEvent &event)
 The window has been resized. More...
 
void OnCommandActivated (wxListEvent &event)
 
void OnInsert (wxCommandEvent &event)
 
void OnEditCommandParams (wxCommandEvent &event)
 
void OnDelete (wxCommandEvent &event)
 
void OnUp (wxCommandEvent &event)
 
void OnDown (wxCommandEvent &event)
 
void OnOK (wxCommandEvent &event)
 Send changed values back to Prefs, and update Audacity. More...
 
void OnKeyDown (wxKeyEvent &event)
 
void FitColumns ()
 
void InsertCommandAt (int item)
 
bool SaveChanges ()
 
void UpdatePrefs () override
 

Private Attributes

AudacityProjectmProject
 
wxButton * mRemove
 
wxButton * mRename
 
wxButton * mRestore
 
wxButton * mImport
 
wxButton * mExport
 
wxButton * mEdit
 
wxButton * mSave
 
int mSelectedCommand
 
bool mChanged
 

Additional Inherited Members

- Static Public Member Functions inherited from ApplyMacroDialog
static CommandID MacroIdOfName (const wxString &MacroName)
 
- Static Public Member Functions inherited from PrefsListener
static void Broadcast (int id=0)
 Call this static function to notify all PrefsListener objects. More...
 
- Public Attributes inherited from ApplyMacroDialog
wxListCtrl * mList
 
wxListCtrl * mMacros
 
MacroCommands mMacroCommands
 
wxButton * mResize
 Provides list of available commands. More...
 
wxButton * mOK
 
wxButton * mCancel
 
wxTextCtrl * mResults
 
bool mAbort
 
bool mbExpanded
 
wxString mActiveMacro
 
wxString mMacroBeingRenamed
 
- Protected Member Functions inherited from PrefsListener
virtual void UpdateSelectedPrefs (int id)
 
- Protected Attributes inherited from ApplyMacroDialog
AudacityProjectmProject
 
const MacroCommandsCatalog mCatalog
 

Detailed Description

Definition at line 73 of file BatchProcessDialog.h.

Constructor & Destructor Documentation

◆ MacrosWindow()

MacrosWindow::MacrosWindow ( wxWindow *  parent,
AudacityProject project,
bool  bExpanded = true 
)

Constructor.

Definition at line 565 of file BatchProcessDialog.cpp.

566 :
567 ApplyMacroDialog(parent, project, true)
568 , mProject{ project }
569{
570 mbExpanded = bExpanded;
571 auto Title = WindowTitle();
572 SetLabel( Title ); // Provide visual label
573 SetName( Title ); // Provide audible label
574 SetTitle( Title );
575
576 mChanged = false;
578
579 if( mbExpanded )
580 Populate();
581 else
583}
const auto project
ApplyMacroDialog(wxWindow *parent, AudacityProject &project, bool bInherited=false)
TranslatableString WindowTitle() const
AudacityProject & mProject
void Populate()
Creates the dialog and its contents.
void SetTitle(const TranslatableString &title)
void SetLabel(const TranslatableString &title)

References ApplyMacroDialog::mbExpanded, mChanged, mSelectedCommand, ApplyMacroDialog::Populate(), Populate(), wxDialogWrapper::SetLabel(), wxDialogWrapper::SetName(), wxDialogWrapper::SetTitle(), and WindowTitle().

Here is the call graph for this function:

◆ ~MacrosWindow()

MacrosWindow::~MacrosWindow ( )

Definition at line 585 of file BatchProcessDialog.cpp.

586{
587}

Member Function Documentation

◆ AddItem()

void MacrosWindow::AddItem ( const CommandID command,
wxString const &  params 
)
private

Add one item into mList.

Definition at line 755 of file BatchProcessDialog.cpp.

756{
758 auto friendlyName = entry != mCatalog.end()
759 ? entry->name.StrippedTranslation()
760 :
761 // uh oh, using GET to expose an internal name to the user!
762 // in default of any better friendly name
763 Action.GET();
764
765 int i = mList->GetItemCount();
766
767 mList->InsertItem(i, wxString::Format(wxT(" %02i"), i + 1));
768 mList->SetItem(i, ActionColumn, friendlyName );
769 mList->SetItem(i, ParamsColumn, Params );
770}
wxT("CloseDown"))
@ ActionColumn
@ ParamsColumn
static ProjectFileIORegistry::AttributeWriterEntry entry
const MacroCommandsCatalog mCatalog
Entries::const_iterator ByCommandId(const CommandID &commandId) const
Entries::const_iterator end() const
Definition: BatchCommands.h:52
std::function< void()> Action
Definition: BasicUI.h:24

References ActionColumn, MacroCommandsCatalog::ByCommandId(), MacroCommandsCatalog::end(), entry, ApplyMacroDialog::mCatalog, ApplyMacroDialog::mList, ParamsColumn, and wxT().

Referenced by PopulateList().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ChangeOK()

bool MacrosWindow::ChangeOK ( )
private

Definition at line 829 of file BatchProcessDialog.cpp.

830{
831 if (mChanged) {
832 int id;
833
834 auto title = XO("%s changed").Format( mActiveMacro );
835 auto msg = XO("Do you want to save the changes?");
836
838 msg,
839 title,
840 wxYES_NO | wxCANCEL);
841 if (id == wxCANCEL) {
842 return false;
843 }
844
845 if (id == wxYES) {
847 return false;
848 }
849 }
850
851 mChanged = false;
852 mSave->Enable( mChanged );
853 }
854
855 return true;
856}
int AudacityMessageBox(const TranslatableString &message, const TranslatableString &caption, long style, wxWindow *parent, int x, int y)
XO("Cut/Copy/Paste")
static const auto title
int id
MacroCommands mMacroCommands
wxString WriteMacro(const wxString &macro, wxWindow *parent=nullptr)

References AudacityMessageBox(), id, ApplyMacroDialog::mActiveMacro, mChanged, ApplyMacroDialog::mMacroCommands, mSave, title, MacroCommands::WriteMacro(), and XO().

Referenced by OnAdd(), OnCancel(), OnImport(), OnMacroSelected(), and OnShrink().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FitColumns()

void MacrosWindow::FitColumns ( )
private

Definition at line 918 of file BatchProcessDialog.cpp.

919{
920
921#if defined(__WXMAC__)
922 // wxMac uses a hard coded width of 150 when wxLIST_AUTOSIZE_USEHEADER
923 // is specified, so we calculate the width ourselves. This method may
924 // work equally well on other platforms.
925 for (size_t c = 0; c < mList->GetColumnCount(); c++) {
926 wxListItem info;
927 int width;
928
929 mList->SetColumnWidth(c, wxLIST_AUTOSIZE);
930 info.Clear();
931 info.SetId(c);
932 info.SetMask(wxLIST_MASK_TEXT | wxLIST_MASK_WIDTH);
933 mList->GetColumn(c, info);
934
935 mList->GetTextExtent(info.GetText(), &width, NULL);
936 width += 2 * 4; // 2 * kItemPadding - see listctrl_mac.cpp
937 width += 16; // kIconWidth - see listctrl_mac.cpp
938
939 mList->SetColumnWidth(c, wxMax(width, mList->GetColumnWidth(c)));
940 }
941
942 // Looks strange, but it forces the horizontal scrollbar to get
943 // drawn. If not done, strange column sizing can occur if the
944 // user attempts to resize the columns.
945 mList->SetClientSize(mList->GetClientSize());
946#else
947 mList->SetColumnWidth(0, wxLIST_AUTOSIZE_USEHEADER);
948 mList->SetColumnWidth(1, wxLIST_AUTOSIZE_USEHEADER);
949 mList->SetColumnWidth(2, wxLIST_AUTOSIZE);
950#endif
951
952 int bestfit = mList->GetColumnWidth(2);
953 int clientsize = mList->GetClientSize().GetWidth();
954 int col0 = mList->GetColumnWidth(0);
955 int col1 = mList->GetColumnWidth(1);
956 bestfit = (bestfit > clientsize-col0-col1)? bestfit : clientsize-col0-col1;
957 mList->SetColumnWidth(2, bestfit);
958
959}

References ApplyMacroDialog::mList.

Referenced by OnListSelected(), OnSize(), and Populate().

Here is the caller graph for this function:

◆ GetHelpPageName()

virtual ManualPageID MacrosWindow::GetHelpPageName ( )
inlineoverrideprivatevirtual

Reimplemented from ApplyMacroDialog.

Definition at line 91 of file BatchProcessDialog.h.

91 {return
92 mbExpanded ? "Manage_Macros"
93 : "Apply_Macro";}

References ApplyMacroDialog::mbExpanded.

◆ InsertCommandAt()

void MacrosWindow::InsertCommandAt ( int  item)
private

Definition at line 1185 of file BatchProcessDialog.cpp.

1186{
1187 if (item == -1) {
1188 return;
1189 }
1190
1191 MacroCommandDialog d(this, wxID_ANY, mProject);
1192
1193 if (!d.ShowModal()) {
1194 Raise();
1195 return;
1196 }
1197 Raise();
1198
1199 if(!d.mSelectedCommand.empty())
1200 {
1201 mMacroCommands.AddToMacro(d.mSelectedCommand,
1202 d.mSelectedParameters,
1203 item);
1204 mChanged = true;
1205 mSave->Enable( mChanged );
1206
1207 mSelectedCommand = item + 1;
1208 PopulateList();
1209 }
1210
1211}
Provides a list of configurable commands for use with MacroCommands.
void AddToMacro(const CommandID &command, int before=-1)
void PopulateList()
This clears and updates the contents of mList, the commands for the current macro.

References MacroCommands::AddToMacro(), Identifier::empty(), mChanged, ApplyMacroDialog::mMacroCommands, mProject, mSave, MacroCommandDialog::mSelectedCommand, mSelectedCommand, MacroCommandDialog::mSelectedParameters, and PopulateList().

Referenced by OnEditCommandParams(), and OnInsert().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ OnAdd()

void MacrosWindow::OnAdd ( wxCommandEvent &  event)
private

Definition at line 999 of file BatchProcessDialog.cpp.

1000{
1001 // Similar to Bug 2284 we may need to save a changed macro.
1002 if (!ChangeOK()) {
1003 return;
1004 }
1005
1006 while (true) {
1008 XO("Enter name of new macro"),
1009 XO("Name of new macro"));
1010 d.SetName(d.GetTitle());
1011 wxString name;
1012
1013 if (d.ShowModal() == wxID_CANCEL) {
1014 Raise();
1015 return;
1016 }
1017 Raise();
1018
1019 name = d.GetValue().Strip(wxString::both);
1020
1021 if (name.length() == 0) {
1023 XO("Name must not be blank"),
1024 WindowTitle(),
1025 wxOK | wxICON_ERROR,
1026 this);
1027 continue;
1028 }
1029
1030 if (name.Contains(wxFILE_SEP_PATH) ||
1031 name.Contains(wxFILE_SEP_PATH_UNIX)) {
1033 /*i18n-hint: The %c will be replaced with 'forbidden characters', like '/' and '\'.*/
1034 XO("Names may not contain '%c' and '%c'")
1035 .Format(wxFILE_SEP_PATH, wxFILE_SEP_PATH_UNIX),
1036 WindowTitle(),
1037 wxOK | wxICON_ERROR,
1038 this);
1039 continue;
1040 }
1041
1043
1045
1047 UpdateMenus();
1048
1049 break;
1050 }
1051}
const TranslatableString name
Definition: Distortion.cpp:76
Wrap wxTextEntryDialog so that caption IS translatable.
Abstract base class used in importing a file.
bool AddMacro(const wxString &macro)
TranslatableString & Strip(unsigned options=MenuCodes) &

References MacroCommands::AddMacro(), AudacityMessageBox(), ChangeOK(), ApplyMacroDialog::mActiveMacro, ApplyMacroDialog::mMacroCommands, name, ApplyMacroDialog::PopulateMacros(), UpdateMenus(), WindowTitle(), and XO().

Here is the call graph for this function:

◆ OnApplyToFiles()

void MacrosWindow::OnApplyToFiles ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from ApplyMacroDialog.

Definition at line 1325 of file BatchProcessDialog.cpp.

1326{
1327 if( !SaveChanges() )
1328 return;
1330}
virtual void OnApplyToFiles(wxCommandEvent &event)

References ApplyMacroDialog::OnApplyToFiles(), and SaveChanges().

Here is the call graph for this function:

◆ OnApplyToProject()

void MacrosWindow::OnApplyToProject ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from ApplyMacroDialog.

Definition at line 1318 of file BatchProcessDialog.cpp.

1319{
1320 if( !SaveChanges() )
1321 return;
1323}
virtual void OnApplyToProject(wxCommandEvent &event)

References ApplyMacroDialog::OnApplyToProject(), and SaveChanges().

Here is the call graph for this function:

◆ OnCancel()

void MacrosWindow::OnCancel ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from ApplyMacroDialog.

Definition at line 1359 of file BatchProcessDialog.cpp.

1360{
1361 bool bWasChanged = mChanged;
1362 if (!ChangeOK()) {
1363 return;
1364 }
1365 // If we've rejected a change, we need to restore the display
1366 // of the active macro.
1367 // That's because next time we open this dialog we want to see the
1368 // unedited macro.
1369 if( bWasChanged )
1371 Hide();
1372}

References ChangeOK(), mChanged, and ShowActiveMacro().

Here is the call graph for this function:

◆ OnCommandActivated()

void MacrosWindow::OnCommandActivated ( wxListEvent &  event)
private

An item in the list has been selected. Bring up a dialog to allow its parameters to be edited.

Definition at line 1167 of file BatchProcessDialog.cpp.

1168{
1169 wxCommandEvent dummy;
1170 OnEditCommandParams( dummy );
1171}
void OnEditCommandParams(wxCommandEvent &event)

References OnEditCommandParams().

Here is the call graph for this function:

◆ OnDelete()

void MacrosWindow::OnDelete ( wxCommandEvent &  event)
private

Definition at line 1253 of file BatchProcessDialog.cpp.

1254{
1255 long item = mList->GetNextItem(-1,
1256 wxLIST_NEXT_ALL,
1257 wxLIST_STATE_SELECTED);
1258 if (item == -1 || item + 1 == mList->GetItemCount()) {
1259 return;
1260 }
1261
1263
1264 mChanged = true;
1265 mSave->Enable( mChanged );
1266
1267 if (item >= (mList->GetItemCount() - 2) && item >= 0) {
1268 item--;
1269 }
1270 mSelectedCommand = item;
1271 PopulateList();
1272}
void DeleteFromMacro(int index)

References MacroCommands::DeleteFromMacro(), mChanged, ApplyMacroDialog::mList, ApplyMacroDialog::mMacroCommands, mSave, mSelectedCommand, and PopulateList().

Here is the call graph for this function:

◆ OnDown()

void MacrosWindow::OnDown ( wxCommandEvent &  event)
private

Definition at line 1297 of file BatchProcessDialog.cpp.

1298{
1299 long item = mList->GetNextItem(-1,
1300 wxLIST_NEXT_ALL,
1301 wxLIST_STATE_SELECTED);
1302 if (item == -1 || item + 2 >= mList->GetItemCount()) {
1303 return;
1304 }
1305
1308 item + 2);
1310
1311 mChanged = true;
1312 mSave->Enable( mChanged );
1313
1314 mSelectedCommand = item + 1;
1315 PopulateList();
1316}
wxString GetParams(int index)
CommandID GetCommand(int index)

References MacroCommands::AddToMacro(), MacroCommands::DeleteFromMacro(), MacroCommands::GetCommand(), MacroCommands::GetParams(), mChanged, ApplyMacroDialog::mList, ApplyMacroDialog::mMacroCommands, mSave, mSelectedCommand, and PopulateList().

Here is the call graph for this function:

◆ OnEditCommandParams()

void MacrosWindow::OnEditCommandParams ( wxCommandEvent &  event)
private

Definition at line 1213 of file BatchProcessDialog.cpp.

1214{
1215 int item = mList->GetNextItem( -1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED );
1216
1217 // LAST command in list is END.
1218 // If nothing selected, add at END.
1219 // If END selected, add at END.
1220 // When adding at end we use InsertCommandAt, so that a new command
1221 // can be chosen.
1222 int lastItem = mList->GetItemCount()-1;
1223 if( (item<0) || (item+1) == mList->GetItemCount() )
1224 {
1225 InsertCommandAt( lastItem );
1226 return;
1227 }
1228
1229 // Just edit the parameters, and not the command.
1230 auto command = mMacroCommands.GetCommand(item);
1231 wxString params = mMacroCommands.GetParams(item);
1232 wxString oldParams = params;
1233
1234 params = MacroCommands::PromptForParamsFor(command, params, *this).Trim();
1235 Raise();
1236
1237 if (oldParams == params)
1238 return; // They did not actually make any changes..
1239
1241 mMacroCommands.AddToMacro(command,
1242 params,
1243 item);
1244
1245 mChanged = true;
1246 mSave->Enable( mChanged );
1247
1248 mSelectedCommand = item;
1249 PopulateList();
1250}
EffectDistortionSettings params
Definition: Distortion.cpp:77
static wxString PromptForParamsFor(const CommandID &command, const wxString &params, wxWindow &parent)
void InsertCommandAt(int item)

References MacroCommands::AddToMacro(), MacroCommands::DeleteFromMacro(), MacroCommands::GetCommand(), MacroCommands::GetParams(), InsertCommandAt(), mChanged, ApplyMacroDialog::mList, ApplyMacroDialog::mMacroCommands, mSave, mSelectedCommand, params, PopulateList(), and MacroCommands::PromptForParamsFor().

Referenced by OnCommandActivated().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ OnExpand()

void MacrosWindow::OnExpand ( wxCommandEvent &  event)
private

Definition at line 819 of file BatchProcessDialog.cpp.

820{ UpdateDisplay( true );}
void UpdateDisplay(bool bExpanded)

References UpdateDisplay().

Here is the call graph for this function:

◆ OnExport()

void MacrosWindow::OnExport ( wxCommandEvent &  event)
private

Definition at line 1147 of file BatchProcessDialog.cpp.

1148{
1149 long item = mMacros->GetNextItem(-1,
1150 wxLIST_NEXT_ALL,
1151 wxLIST_STATE_SELECTED);
1152 if (item == -1) {
1153 return;
1154 }
1155
1156 mMacroCommands.WriteMacro(mMacros->GetItemText(item), this);
1157}
wxListCtrl * mMacros

References ApplyMacroDialog::mMacroCommands, ApplyMacroDialog::mMacros, and MacroCommands::WriteMacro().

Here is the call graph for this function:

◆ OnImport()

void MacrosWindow::OnImport ( wxCommandEvent &  event)
private

Definition at line 1120 of file BatchProcessDialog.cpp.

1121{
1122 if (!ChangeOK()) {
1123 return;
1124 }
1125
1126 long item = mMacros->GetNextItem(-1,
1127 wxLIST_NEXT_ALL,
1128 wxLIST_STATE_SELECTED);
1129 if (item == -1) {
1130 return;
1131 }
1132
1133 wxString name = mMacros->GetItemText(item);
1134
1135 name = mMacroCommands.ReadMacro({}, this);
1136 if (name == wxEmptyString) {
1137 return;
1138 }
1139
1141
1143 UpdateMenus();
1144}
wxString ReadMacro(const wxString &macro, wxWindow *parent=nullptr)

References ChangeOK(), ApplyMacroDialog::mActiveMacro, ApplyMacroDialog::mMacroCommands, ApplyMacroDialog::mMacros, name, ApplyMacroDialog::PopulateMacros(), MacroCommands::ReadMacro(), and UpdateMenus().

Here is the call graph for this function:

◆ OnInsert()

void MacrosWindow::OnInsert ( wxCommandEvent &  event)
private

Definition at line 1174 of file BatchProcessDialog.cpp.

1175{
1176 long item = mList->GetNextItem(-1,
1177 wxLIST_NEXT_ALL,
1178 wxLIST_STATE_SELECTED);
1179 if (item == -1) {
1180 item = mList->GetItemCount()-1;
1181 }
1182 InsertCommandAt( item );
1183}

References InsertCommandAt(), and ApplyMacroDialog::mList.

Here is the call graph for this function:

◆ OnKeyDown()

void MacrosWindow::OnKeyDown ( wxKeyEvent &  event)
private

Definition at line 1375 of file BatchProcessDialog.cpp.

1376{
1377 if (event.GetKeyCode() == WXK_DELETE) {
1378 wxLogDebug(wxT("wxKeyEvent"));
1379 }
1380
1381 event.Skip();
1382}

References wxT().

Here is the call graph for this function:

◆ OnListSelected()

void MacrosWindow::OnListSelected ( wxListEvent &  event)
private

An item in the macros list has been selected.

Definition at line 892 of file BatchProcessDialog.cpp.

893{
894 const auto &command = mCatalog.ByTranslation(mList->GetItemText(event.GetIndex(), ActionColumn));
895
896 if (command != mCatalog.end())
897 {
899 PluginID ID = em.GetEffectByIdentifier(command->name.Internal());
900
901 mEdit->Enable(!ID.empty());
902 }
903
904
905 FitColumns();
906}
wxString PluginID
EffectManager is the class that handles effects and effect categories.
Definition: EffectManager.h:48
static EffectManager & Get()
const PluginID & GetEffectByIdentifier(const CommandID &strTarget)
Entries::const_iterator ByTranslation(const wxString &translation) const

References ActionColumn, MacroCommandsCatalog::ByTranslation(), MacroCommandsCatalog::end(), FitColumns(), EffectManager::Get(), EffectManager::GetEffectByIdentifier(), ApplyMacroDialog::mCatalog, mEdit, and ApplyMacroDialog::mList.

Here is the call graph for this function:

◆ OnMacrosBeginEdit()

void MacrosWindow::OnMacrosBeginEdit ( wxListEvent &  event)
private

Definition at line 962 of file BatchProcessDialog.cpp.

963{
964 int itemNo = event.GetIndex();
965
966 wxString macro = mMacros->GetItemText(itemNo);
967
968 if (mMacroCommands.IsFixed(macro)) {
969 wxBell();
970 event.Veto();
971 }
972 if( mMacroBeingRenamed.IsEmpty())
973 mMacroBeingRenamed = macro;
974}
bool IsFixed(const wxString &name)

References MacroCommands::IsFixed(), ApplyMacroDialog::mMacroBeingRenamed, ApplyMacroDialog::mMacroCommands, and ApplyMacroDialog::mMacros.

Here is the call graph for this function:

◆ OnMacroSelected()

void MacrosWindow::OnMacroSelected ( wxListEvent &  event)
private

An item in the macros list has been selected.

Definition at line 858 of file BatchProcessDialog.cpp.

859{
860 if (!ChangeOK()) {
861 event.Veto();
862 return;
863 }
864
865 int item = event.GetIndex();
866
867 mActiveMacro = mMacros->GetItemText(item);
869}

References ChangeOK(), ApplyMacroDialog::mActiveMacro, ApplyMacroDialog::mMacros, and ShowActiveMacro().

Here is the call graph for this function:

◆ OnMacrosEndEdit()

void MacrosWindow::OnMacrosEndEdit ( wxListEvent &  event)
private

Definition at line 977 of file BatchProcessDialog.cpp.

978{
979 if (event.IsEditCancelled()) {
981 return;
982 }
983
984 if( mMacroBeingRenamed.IsEmpty())
985 return;
986
987 wxString newname = event.GetLabel();
988
991 mActiveMacro = newname;
994 UpdateMenus();
995 event.Veto();
996}
bool RenameMacro(const wxString &oldmacro, const wxString &newmacro)

References ApplyMacroDialog::mActiveMacro, ApplyMacroDialog::mMacroBeingRenamed, ApplyMacroDialog::mMacroCommands, ApplyMacroDialog::PopulateMacros(), MacroCommands::RenameMacro(), and UpdateMenus().

Here is the call graph for this function:

◆ OnOK()

void MacrosWindow::OnOK ( wxCommandEvent &  event)
private

Send changed values back to Prefs, and update Audacity.

Definition at line 1350 of file BatchProcessDialog.cpp.

1351{
1352 if( !SaveChanges() )
1353 return;
1354 Hide();
1355 //EndModal(true);
1356}

References SaveChanges().

Here is the call graph for this function:

◆ OnRemove()

void MacrosWindow::OnRemove ( wxCommandEvent &  event)
private

Definition at line 1054 of file BatchProcessDialog.cpp.

1055{
1056 long item = mMacros->GetNextItem(-1,
1057 wxLIST_NEXT_ALL,
1058 wxLIST_STATE_SELECTED);
1059 if (item == -1) {
1060 return;
1061 }
1062
1063 wxString name = mMacros->GetItemText(item);
1065 this,
1066 /*i18n-hint: %s will be replaced by the name of a file.*/
1067 XO("Are you sure you want to delete %s?").Format( name ),
1068 Verbatim( GetTitle() ),
1069 wxYES_NO | wxICON_QUESTION );
1070 if (m.ShowModal() == wxID_NO) {
1071 Raise();
1072 return;
1073 }
1074 Raise();
1075
1077
1078 item++;
1079 if (item >= (mMacros->GetItemCount() - 1) && item >= 0) {
1080 item--;
1081 }
1082
1083 // Bug 2284. The macro we have just removed might have been
1084 // changed. Since we've just deleted the macro, we should
1085 // forget about that change.
1086 mChanged = false;
1087 mSave->Enable( mChanged );
1088 mActiveMacro = mMacros->GetItemText(item);
1089
1091 UpdateMenus();
1092}
TranslatableString Verbatim(wxString str)
Require calls to the one-argument constructor to go through this distinct global function name.
Wrap wxMessageDialog so that caption IS translatable.
bool DeleteMacro(const wxString &name)

References MacroCommands::DeleteMacro(), ApplyMacroDialog::mActiveMacro, mChanged, ApplyMacroDialog::mMacroCommands, ApplyMacroDialog::mMacros, mSave, name, ApplyMacroDialog::PopulateMacros(), UpdateMenus(), Verbatim(), and XO().

Here is the call graph for this function:

◆ OnRename()

void MacrosWindow::OnRename ( wxCommandEvent &  event)
private

Definition at line 1095 of file BatchProcessDialog.cpp.

1096{
1097 long item = mMacros->GetNextItem(-1,
1098 wxLIST_NEXT_ALL,
1099 wxLIST_STATE_SELECTED);
1100 if (item == -1) {
1101 return;
1102 }
1103
1104 mMacros->EditLabel(item);
1105 UpdateMenus();
1106}

References ApplyMacroDialog::mMacros, and UpdateMenus().

Here is the call graph for this function:

◆ OnRestore()

void MacrosWindow::OnRestore ( wxCommandEvent &  event)
private

Reset a built in macro.

Definition at line 1109 of file BatchProcessDialog.cpp.

1110{
1112
1113 mChanged = true;
1114 mSave->Enable( mChanged );
1115
1116 PopulateList();
1117}
void RestoreMacro(const wxString &name)

References ApplyMacroDialog::mActiveMacro, mChanged, ApplyMacroDialog::mMacroCommands, mSave, PopulateList(), and MacroCommands::RestoreMacro().

Here is the call graph for this function:

◆ OnSave()

void MacrosWindow::OnSave ( wxCommandEvent &  event)
private

Definition at line 1159 of file BatchProcessDialog.cpp.

1160{
1161 SaveChanges();
1162}

References SaveChanges().

Here is the call graph for this function:

◆ OnShrink()

void MacrosWindow::OnShrink ( wxCommandEvent &  event)
private

Definition at line 822 of file BatchProcessDialog.cpp.

823{
824 if( ChangeOK() )
825 UpdateDisplay( false );
826}

References ChangeOK(), and UpdateDisplay().

Here is the call graph for this function:

◆ OnSize()

void MacrosWindow::OnSize ( wxSizeEvent &  event)
private

The window has been resized.

Definition at line 909 of file BatchProcessDialog.cpp.

910{
911 // Refresh the layout and re-fit the columns.
912 Layout();
913 if( !mbExpanded )
914 return;
915 FitColumns();
916}

References FitColumns(), and ApplyMacroDialog::mbExpanded.

Here is the call graph for this function:

◆ OnUp()

void MacrosWindow::OnUp ( wxCommandEvent &  event)
private

Definition at line 1275 of file BatchProcessDialog.cpp.

1276{
1277 long item = mList->GetNextItem(-1,
1278 wxLIST_NEXT_ALL,
1279 wxLIST_STATE_SELECTED);
1280 if (item == -1 || item == 0 || item + 1 == mList->GetItemCount()) {
1281 return;
1282 }
1283
1286 item - 1);
1288
1289 mChanged = true;
1290 mSave->Enable( mChanged );
1291
1292 mSelectedCommand = item - 1;
1293 PopulateList();
1294}

References MacroCommands::AddToMacro(), MacroCommands::DeleteFromMacro(), MacroCommands::GetCommand(), MacroCommands::GetParams(), mChanged, ApplyMacroDialog::mList, ApplyMacroDialog::mMacroCommands, mSave, mSelectedCommand, and PopulateList().

Here is the call graph for this function:

◆ Populate()

void MacrosWindow::Populate ( )
private

Creates the dialog and its contents.

Definition at line 590 of file BatchProcessDialog.cpp.

591{
592 //------------------------- Main section --------------------
593 ShuttleGui S(this, eIsCreating);
595 // ----------------------- End of main section --------------
596
597 // Get and validate the currently active macro
598 mActiveMacro = gPrefs->Read(wxT("/Batch/ActiveMacro"), wxT(""));
599 // Go populate the macros list.
601
602 // We have a bare list. We need to add columns and content.
603 PopulateList();
604
605 // Layout and set minimum size of window
606 Layout();
607 Fit();
608 SetSizeHints(GetSize());
609
610 // Size and place window
611 SetSize(std::min(wxSystemSettings::GetMetric(wxSYS_SCREEN_X) * 3 / 4, 800),
612 std::min(wxSystemSettings::GetMetric(wxSYS_SCREEN_Y) * 4 / 5, 400));
613 Center();
614
615 // Set the column size for the macros list.
616 wxSize sz = mMacros->GetClientSize();
617 mMacros->SetColumnWidth(0, sz.x);
618
619 // Size columns properly
620 FitColumns();
621}
int min(int a, int b)
audacity::BasicSettings * gPrefs
Definition: Prefs.cpp:68
@ eIsCreating
Definition: ShuttleGui.h:37
#define S(N)
Definition: ToChars.cpp:64
void PopulateOrExchange(ShuttleGui &S)
Defines the dialog and does data exchange with it.
Derived from ShuttleGuiBase, an Audacity specific class for shuttling data to and from GUI.
Definition: ShuttleGui.h:640
virtual bool Read(const wxString &key, bool *value) const =0

References eIsCreating, FitColumns(), gPrefs, ApplyMacroDialog::mActiveMacro, min(), ApplyMacroDialog::mMacros, PopulateList(), ApplyMacroDialog::PopulateMacros(), PopulateOrExchange(), audacity::BasicSettings::Read(), S, and wxT().

Referenced by MacrosWindow(), and UpdateDisplay().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ PopulateList()

void MacrosWindow::PopulateList ( )
private

This clears and updates the contents of mList, the commands for the current macro.

Definition at line 722 of file BatchProcessDialog.cpp.

723{
724 int topItem = mList->GetTopItem();
725 mList->DeleteAllItems();
726
727 for (int i = 0; i < mMacroCommands.GetCount(); i++) {
730 }
731 /*i18n-hint: This is the last item in a list.*/
732 AddItem(_("- END -"), wxT(""));
733
734 // Select the name in the list...this will fire an event.
735 if (mSelectedCommand >= (int)mList->GetItemCount()) {
737 }
738 mList->SetItemState(mSelectedCommand,
739 wxLIST_STATE_SELECTED | wxLIST_STATE_FOCUSED,
740 wxLIST_STATE_SELECTED | wxLIST_STATE_FOCUSED);
741 if( 0 <= topItem && topItem < (int)mList->GetItemCount())
742 {
743 // Workaround for scrolling being windows only.
744 // Try to scroll back to where we once were...
745 mList->EnsureVisible( (int)mList->GetItemCount() -1 );
746 mList->EnsureVisible( topItem );
747 // And then make sure whatever is selected is still visible...
748 if (mSelectedCommand >= 0) {
749 mList->EnsureVisible( mSelectedCommand );
750 }
751 }
752}
#define _(s)
Definition: Internat.h:73
void AddItem(const CommandID &command, wxString const &params)
Add one item into mList.

References _, AddItem(), MacroCommands::GetCommand(), MacroCommands::GetCount(), MacroCommands::GetParams(), ApplyMacroDialog::mList, ApplyMacroDialog::mMacroCommands, mSelectedCommand, and wxT().

Referenced by InsertCommandAt(), OnDelete(), OnDown(), OnEditCommandParams(), OnRestore(), OnUp(), Populate(), and ShowActiveMacro().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ PopulateOrExchange()

void MacrosWindow::PopulateOrExchange ( ShuttleGui S)
private

Defines the dialog and does data exchange with it.

Definition at line 624 of file BatchProcessDialog.cpp.

625{
626 S.StartHorizontalLay(wxEXPAND, 1);
627 {
628 S.StartStatic(XO("Select Macro"),0);
629 {
630 S.StartHorizontalLay(wxEXPAND,1);
631 {
632 mMacros = S.Id(MacrosListID).Prop(1)
633 .Style( wxLC_REPORT | wxLC_HRULES
634 | wxLC_SINGLE_SEL | wxLC_EDIT_LABELS)
635 // i18n-hint: This is the heading for a column in the edit macros dialog
636 .AddListControlReportMode( { XO("Macro") } );
637 S.StartVerticalLay(wxALIGN_TOP, 0);
638 {
639 S.Id(AddButtonID).AddButton(XXO("&New"), wxALIGN_LEFT);
640 mRemove = S.Id(RemoveButtonID).AddButton(XXO("Remo&ve"), wxALIGN_LEFT);
641 mRename = S.Id(RenameButtonID).AddButton(XXO("&Rename..."), wxALIGN_LEFT);
642 mRestore = S.Id(RestoreButtonID).AddButton(XXO("Re&store"), wxALIGN_LEFT);
643 mImport = S.Id(ImportButtonID).AddButton(XO("I&mport..."), wxALIGN_LEFT);
644 mExport = S.Id(ExportButtonID).AddButton(XO("E&xport..."), wxALIGN_LEFT);
645 }
646 S.EndVerticalLay();
647 }
648 S.EndHorizontalLay();
649 }
650 S.EndStatic();
651
652 S.StartStatic(XO("Edit Steps"), true);
653 {
654 S.StartHorizontalLay(wxEXPAND,1);
655 {
657 .Style( wxLC_REPORT | wxLC_HRULES | wxLC_VRULES |
658 wxLC_SINGLE_SEL)
659 .AddListControlReportMode({
660 /* i18n-hint: This is the number of the command in the list */
661 { XO("Num"), wxLIST_FORMAT_RIGHT },
662 { XO("Command "), wxLIST_FORMAT_RIGHT },
663 { XO("Parameters"), wxLIST_FORMAT_LEFT }
664 });
665
666 S.StartVerticalLay(wxALIGN_TOP, 0);
667 {
668 S.Id(InsertButtonID).AddButton(XXO("&Insert"), wxALIGN_LEFT);
669 mEdit = S.Id(EditButtonID).AddButton(XXO("&Edit..."), wxALIGN_LEFT);
670 S.Id(DeleteButtonID).AddButton(XXO("De&lete"), wxALIGN_LEFT);
671 S.Id(UpButtonID).AddButton(XXO("Move &Up"), wxALIGN_LEFT);
672 S.Id(DownButtonID).AddButton(XXO("Move &Down"), wxALIGN_LEFT);
673 mSave = S.Id(SaveButtonID).AddButton(XO("&Save"), wxALIGN_LEFT);
674 mSave->Enable( mChanged );
675 }
676 S.EndVerticalLay();
677 }
678 S.EndHorizontalLay();
679 }
680 S.EndStatic();
681 }
682 S.EndHorizontalLay();
683
684 S.StartHorizontalLay(wxEXPAND, 0);
685 {
686 /* i18n-hint: The Shrink button makes the dialog smaller, with less in it */
687 mResize = S.Id(ShrinkID).AddButton(XXO("Shrin&k"));
688 // Using variable text just to get the positioning options.
689 S.Prop(0).AddVariableText(
690 XO("Apply Macro to:"), false, wxALL | wxALIGN_CENTRE_VERTICAL );
691 wxButton* btn = S.Id(ApplyToProjectID)
692 .Name(XO("Apply macro to project"))
693 .AddButton(XXO("&Project"));
694#if wxUSE_ACCESSIBILITY
695 // so that name can be set on a standard control
696 btn->SetAccessible(safenew WindowAccessible(btn));
697#endif
698
699 btn = S.Id(ApplyToFilesID)
700 .Name(XO("Apply macro to files..."))
701 .AddButton(XXO("&Files..."));
702#if wxUSE_ACCESSIBILITY
703 // so that name can be set on a standard control
704 btn->SetAccessible(safenew WindowAccessible(btn));
705#endif
706 S.AddSpace( 10,10,1 );
707 // Bug 2524 OK button does much the same as cancel, so remove it.
708 // OnCancel prompts you if there has been a change.
709 // OnOK saves without prompting.
710 // That difference is too slight to merit a button, and with the OK
711 // button, people might expect the dialog to apply the macro too.
712 S.AddStandardButtons( /*eOkButton |*/ eCloseButton | eHelpButton);
713 }
714
715 S.EndHorizontalLay();
716
717
718 return;
719}
#define ApplyToFilesID
#define MacrosListID
#define CommandsListID
#define ApplyToProjectID
#define ShrinkID
@ SaveButtonID
@ UpButtonID
@ ImportButtonID
@ DownButtonID
@ RestoreButtonID
@ RenameButtonID
@ AddButtonID
@ EditButtonID
@ RemoveButtonID
@ DeleteButtonID
@ InsertButtonID
@ ExportButtonID
XXO("&Cut/Copy/Paste Toolbar")
#define safenew
Definition: MemoryX.h:10
@ eCloseButton
Definition: ShuttleGui.h:619
@ eHelpButton
Definition: ShuttleGui.h:613
wxButton * mResize
Provides list of available commands.
wxButton * mRemove
wxButton * mRestore
wxButton * mImport
wxButton * mRename
wxButton * mExport
An alternative to using wxWindowAccessible, which in wxWidgets 3.1.1 contained GetParent() which was ...

References AddButtonID, ApplyToFilesID, ApplyToProjectID, CommandsListID, DeleteButtonID, DownButtonID, eCloseButton, EditButtonID, eHelpButton, ExportButtonID, ImportButtonID, InsertButtonID, MacrosListID, mChanged, mEdit, mExport, mImport, ApplyMacroDialog::mList, ApplyMacroDialog::mMacros, mRemove, mRename, ApplyMacroDialog::mResize, mRestore, mSave, RemoveButtonID, RenameButtonID, RestoreButtonID, S, safenew, SaveButtonID, ShrinkID, UpButtonID, XO(), and XXO().

Referenced by Populate().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SaveChanges()

bool MacrosWindow::SaveChanges ( )
private

Definition at line 1332 of file BatchProcessDialog.cpp.

1332 {
1333 gPrefs->Write(wxT("/Batch/ActiveMacro"), mActiveMacro);
1334 gPrefs->Flush();
1335
1336 if (mChanged) {
1338 return false;
1339 }
1340 }
1341
1342 mChanged = false;
1343 if( mSave )
1344 mSave->Enable( mChanged );
1345
1346 return true;
1347}
virtual bool Flush() noexcept=0
virtual bool Write(const wxString &key, bool value)=0

References audacity::BasicSettings::Flush(), gPrefs, ApplyMacroDialog::mActiveMacro, mChanged, ApplyMacroDialog::mMacroCommands, mSave, audacity::BasicSettings::Write(), MacroCommands::WriteMacro(), and wxT().

Referenced by OnApplyToFiles(), OnApplyToProject(), OnOK(), OnSave(), and UpdateDisplay().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ShowActiveMacro()

void MacrosWindow::ShowActiveMacro ( )
private

Definition at line 871 of file BatchProcessDialog.cpp.

872{
874 if( !mbExpanded )
875 return;
876
878 mRemove->Disable();
879 mRename->Disable();
880 mRestore->Enable();
881 }
882 else {
883 mRemove->Enable();
884 mRename->Enable();
885 mRestore->Disable();
886 }
887
888 PopulateList();
889}

References MacroCommands::IsFixed(), ApplyMacroDialog::mActiveMacro, ApplyMacroDialog::mbExpanded, ApplyMacroDialog::mMacroCommands, mRemove, mRename, mRestore, PopulateList(), and MacroCommands::ReadMacro().

Referenced by OnCancel(), and OnMacroSelected().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ UpdateDisplay()

void MacrosWindow::UpdateDisplay ( bool  bExpanded)

Definition at line 779 of file BatchProcessDialog.cpp.

780{
781 // If we failed to save changes, we abandon the attempt to
782 // change the expand/shrink state of the GUI.
783 if( !SaveChanges() )
784 return;
785
786 mbExpanded = bExpanded;
787
788 mChanged = false;
789 // if we try to access the about to be destroyed mSave button
790 // inappropriately, we need to crash rather than (sometimes) silently
791 // succeed.
792 mSave = nullptr;
793
794 DestroyChildren();
795 SetSizer( nullptr );
796
798 SetMinSize( wxSize( 200,200 ));
799
800 // Get and set position for optical stability.
801 // Expanded and shrunk dialogs 'stay where they were'.
802 // That's OK , and what we want, even if we exapnd off-screen.
803 // We won't shrink to being off-screen, since the shrink button
804 // was clicked, so must have been on screen.
805 wxPoint p = GetPosition( );
806 if( mbExpanded )
807 Populate();
808 else
810 SetPosition( p );
811 mResize->SetFocus();
812
813 auto Title = WindowTitle();
814 SetLabel( Title ); // Provide visual label
815 SetName( Title ); // Provide audible label
816 SetTitle( Title );
817}

References ApplyMacroDialog::mbExpanded, mChanged, ApplyMacroDialog::mResize, mSave, mSelectedCommand, ApplyMacroDialog::Populate(), Populate(), SaveChanges(), wxDialogWrapper::SetLabel(), wxDialogWrapper::SetName(), wxDialogWrapper::SetTitle(), and WindowTitle().

Referenced by anonymous_namespace{BatchProcessDialog.cpp}::OnApplyMacrosPalette(), OnExpand(), anonymous_namespace{BatchProcessDialog.cpp}::OnManageMacros(), OnShrink(), and UpdatePrefs().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ UpdateMenus()

void MacrosWindow::UpdateMenus ( )
private

Definition at line 772 of file BatchProcessDialog.cpp.

773{
774 // OK even on mac, as dialog is modal.
775 auto p = &mProject;
777}
void RebuildMenuBar()
static MenuCreator & Get(AudacityProject &project)
Definition: MenuCreator.cpp:91

References MenuCreator::Get(), mProject, and MenuCreator::RebuildMenuBar().

Referenced by OnAdd(), OnImport(), OnMacrosEndEdit(), OnRemove(), and OnRename().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ UpdatePrefs()

void MacrosWindow::UpdatePrefs ( )
overrideprivatevirtual

Implements PrefsListener.

Definition at line 1390 of file BatchProcessDialog.cpp.

1391{
1393}

References ApplyMacroDialog::mbExpanded, and UpdateDisplay().

Here is the call graph for this function:

◆ WindowTitle()

TranslatableString MacrosWindow::WindowTitle ( ) const
private

Definition at line 1384 of file BatchProcessDialog.cpp.

1385{
1387}
#define MacrosPaletteTitle
#define ManageMacrosTitle

References MacrosPaletteTitle, ManageMacrosTitle, and ApplyMacroDialog::mbExpanded.

Referenced by MacrosWindow(), OnAdd(), and UpdateDisplay().

Here is the caller graph for this function:

Member Data Documentation

◆ mChanged

bool MacrosWindow::mChanged
private

◆ mEdit

wxButton* MacrosWindow::mEdit
private

Definition at line 142 of file BatchProcessDialog.h.

Referenced by OnListSelected(), and PopulateOrExchange().

◆ mExport

wxButton* MacrosWindow::mExport
private

Definition at line 141 of file BatchProcessDialog.h.

Referenced by PopulateOrExchange().

◆ mImport

wxButton* MacrosWindow::mImport
private

Definition at line 140 of file BatchProcessDialog.h.

Referenced by PopulateOrExchange().

◆ mProject

AudacityProject& MacrosWindow::mProject
private

Definition at line 135 of file BatchProcessDialog.h.

Referenced by InsertCommandAt(), and UpdateMenus().

◆ mRemove

wxButton* MacrosWindow::mRemove
private

Definition at line 137 of file BatchProcessDialog.h.

Referenced by PopulateOrExchange(), and ShowActiveMacro().

◆ mRename

wxButton* MacrosWindow::mRename
private

Definition at line 138 of file BatchProcessDialog.h.

Referenced by PopulateOrExchange(), and ShowActiveMacro().

◆ mRestore

wxButton* MacrosWindow::mRestore
private

Definition at line 139 of file BatchProcessDialog.h.

Referenced by PopulateOrExchange(), and ShowActiveMacro().

◆ mSave

wxButton* MacrosWindow::mSave
private

◆ mSelectedCommand

int MacrosWindow::mSelectedCommand
private

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