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 567 of file BatchProcessDialog.cpp.

568 :
569 ApplyMacroDialog(parent, project, true)
570 , mProject{ project }
571{
572 mbExpanded = bExpanded;
573 auto Title = WindowTitle();
574 SetLabel( Title ); // Provide visual label
575 SetName( Title ); // Provide audible label
576 SetTitle( Title );
577
578 mChanged = false;
580
581 if( mbExpanded )
582 Populate();
583 else
585}
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 587 of file BatchProcessDialog.cpp.

588{
589}

Member Function Documentation

◆ AddItem()

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

Add one item into mList.

Definition at line 757 of file BatchProcessDialog.cpp.

758{
760 auto friendlyName = entry != mCatalog.end()
761 ? entry->name.StrippedTranslation()
762 :
763 // uh oh, using GET to expose an internal name to the user!
764 // in default of any better friendly name
765 Action.GET();
766
767 int i = mList->GetItemCount();
768
769 mList->InsertItem(i, wxString::Format(wxT(" %02i"), i + 1));
770 mList->SetItem(i, ActionColumn, friendlyName );
771 mList->SetItem(i, ParamsColumn, Params );
772}
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 831 of file BatchProcessDialog.cpp.

832{
833 if (mChanged) {
834 int id;
835
836 auto title = XO("%s changed").Format( mActiveMacro );
837 auto msg = XO("Do you want to save the changes?");
838
840 msg,
841 title,
842 wxYES_NO | wxCANCEL);
843 if (id == wxCANCEL) {
844 return false;
845 }
846
847 if (id == wxYES) {
849 return false;
850 }
851 }
852
853 mChanged = false;
854 mSave->Enable( mChanged );
855 }
856
857 return true;
858}
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 920 of file BatchProcessDialog.cpp.

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

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 1187 of file BatchProcessDialog.cpp.

1188{
1189 if (item == -1) {
1190 return;
1191 }
1192
1193 MacroCommandDialog d(this, wxID_ANY, mProject);
1194
1195 if (!d.ShowModal()) {
1196 Raise();
1197 return;
1198 }
1199 Raise();
1200
1201 if(!d.mSelectedCommand.empty())
1202 {
1203 mMacroCommands.AddToMacro(d.mSelectedCommand,
1204 d.mSelectedParameters,
1205 item);
1206 mChanged = true;
1207 mSave->Enable( mChanged );
1208
1209 mSelectedCommand = item + 1;
1210 PopulateList();
1211 }
1212
1213}
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 1001 of file BatchProcessDialog.cpp.

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

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 1327 of file BatchProcessDialog.cpp.

1328{
1329 if( !SaveChanges() )
1330 return;
1332}
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 1320 of file BatchProcessDialog.cpp.

1321{
1322 if( !SaveChanges() )
1323 return;
1325}
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 1361 of file BatchProcessDialog.cpp.

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

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 1169 of file BatchProcessDialog.cpp.

1170{
1171 wxCommandEvent dummy;
1172 OnEditCommandParams( dummy );
1173}
void OnEditCommandParams(wxCommandEvent &event)

References OnEditCommandParams().

Here is the call graph for this function:

◆ OnDelete()

void MacrosWindow::OnDelete ( wxCommandEvent &  event)
private

Definition at line 1255 of file BatchProcessDialog.cpp.

1256{
1257 long item = mList->GetNextItem(-1,
1258 wxLIST_NEXT_ALL,
1259 wxLIST_STATE_SELECTED);
1260 if (item == -1 || item + 1 == mList->GetItemCount()) {
1261 return;
1262 }
1263
1265
1266 mChanged = true;
1267 mSave->Enable( mChanged );
1268
1269 if (item >= (mList->GetItemCount() - 2) && item >= 0) {
1270 item--;
1271 }
1272 mSelectedCommand = item;
1273 PopulateList();
1274}
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 1299 of file BatchProcessDialog.cpp.

1300{
1301 long item = mList->GetNextItem(-1,
1302 wxLIST_NEXT_ALL,
1303 wxLIST_STATE_SELECTED);
1304 if (item == -1 || item + 2 >= mList->GetItemCount()) {
1305 return;
1306 }
1307
1310 item + 2);
1312
1313 mChanged = true;
1314 mSave->Enable( mChanged );
1315
1316 mSelectedCommand = item + 1;
1317 PopulateList();
1318}
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 1215 of file BatchProcessDialog.cpp.

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

References MacroCommands::AddToMacro(), MacroCommands::DeleteFromMacro(), MacroCommands::GetCommand(), MacroCommands::GetParams(), InsertCommandAt(), mChanged, ApplyMacroDialog::mList, ApplyMacroDialog::mMacroCommands, mProject, 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 821 of file BatchProcessDialog.cpp.

822{ 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 1149 of file BatchProcessDialog.cpp.

1150{
1151 long item = mMacros->GetNextItem(-1,
1152 wxLIST_NEXT_ALL,
1153 wxLIST_STATE_SELECTED);
1154 if (item == -1) {
1155 return;
1156 }
1157
1158 mMacroCommands.WriteMacro(mMacros->GetItemText(item), this);
1159}
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 1122 of file BatchProcessDialog.cpp.

1123{
1124 if (!ChangeOK()) {
1125 return;
1126 }
1127
1128 long item = mMacros->GetNextItem(-1,
1129 wxLIST_NEXT_ALL,
1130 wxLIST_STATE_SELECTED);
1131 if (item == -1) {
1132 return;
1133 }
1134
1135 wxString name = mMacros->GetItemText(item);
1136
1137 name = mMacroCommands.ReadMacro({}, this);
1138 if (name == wxEmptyString) {
1139 return;
1140 }
1141
1143
1145 UpdateMenus();
1146}
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 1176 of file BatchProcessDialog.cpp.

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

References InsertCommandAt(), and ApplyMacroDialog::mList.

Here is the call graph for this function:

◆ OnKeyDown()

void MacrosWindow::OnKeyDown ( wxKeyEvent &  event)
private

Definition at line 1377 of file BatchProcessDialog.cpp.

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

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 894 of file BatchProcessDialog.cpp.

895{
896 const auto &command = mCatalog.ByTranslation(mList->GetItemText(event.GetIndex(), ActionColumn));
897
898 if (command != mCatalog.end())
899 {
900 PluginID ID =
901 PluginManager::Get().GetByCommandIdentifier(command->name.Internal());
902
903 mEdit->Enable(!ID.empty());
904 }
905
906
907 FitColumns();
908}
wxString PluginID
Entries::const_iterator ByTranslation(const wxString &translation) const
const PluginID & GetByCommandIdentifier(const CommandID &strTarget)
static PluginManager & Get()

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

Here is the call graph for this function:

◆ OnMacrosBeginEdit()

void MacrosWindow::OnMacrosBeginEdit ( wxListEvent &  event)
private

Definition at line 964 of file BatchProcessDialog.cpp.

965{
966 int itemNo = event.GetIndex();
967
968 wxString macro = mMacros->GetItemText(itemNo);
969
970 if (mMacroCommands.IsFixed(macro)) {
971 wxBell();
972 event.Veto();
973 }
974 if( mMacroBeingRenamed.IsEmpty())
975 mMacroBeingRenamed = macro;
976}
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 860 of file BatchProcessDialog.cpp.

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

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 979 of file BatchProcessDialog.cpp.

980{
981 if (event.IsEditCancelled()) {
983 return;
984 }
985
986 if( mMacroBeingRenamed.IsEmpty())
987 return;
988
989 wxString newname = event.GetLabel();
990
993 mActiveMacro = newname;
996 UpdateMenus();
997 event.Veto();
998}
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 1352 of file BatchProcessDialog.cpp.

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

References SaveChanges().

Here is the call graph for this function:

◆ OnRemove()

void MacrosWindow::OnRemove ( wxCommandEvent &  event)
private

Definition at line 1056 of file BatchProcessDialog.cpp.

1057{
1058 long item = mMacros->GetNextItem(-1,
1059 wxLIST_NEXT_ALL,
1060 wxLIST_STATE_SELECTED);
1061 if (item == -1) {
1062 return;
1063 }
1064
1065 wxString name = mMacros->GetItemText(item);
1067 this,
1068 /*i18n-hint: %s will be replaced by the name of a file.*/
1069 XO("Are you sure you want to delete %s?").Format( name ),
1070 Verbatim( GetTitle() ),
1071 wxYES_NO | wxICON_QUESTION );
1072 if (m.ShowModal() == wxID_NO) {
1073 Raise();
1074 return;
1075 }
1076 Raise();
1077
1079
1080 item++;
1081 if (item >= (mMacros->GetItemCount() - 1) && item >= 0) {
1082 item--;
1083 }
1084
1085 // Bug 2284. The macro we have just removed might have been
1086 // changed. Since we've just deleted the macro, we should
1087 // forget about that change.
1088 mChanged = false;
1089 mSave->Enable( mChanged );
1090 mActiveMacro = mMacros->GetItemText(item);
1091
1093 UpdateMenus();
1094}
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 1097 of file BatchProcessDialog.cpp.

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

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 1111 of file BatchProcessDialog.cpp.

1112{
1114
1115 mChanged = true;
1116 mSave->Enable( mChanged );
1117
1118 PopulateList();
1119}
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 1161 of file BatchProcessDialog.cpp.

1162{
1163 SaveChanges();
1164}

References SaveChanges().

Here is the call graph for this function:

◆ OnShrink()

void MacrosWindow::OnShrink ( wxCommandEvent &  event)
private

Definition at line 824 of file BatchProcessDialog.cpp.

825{
826 if( ChangeOK() )
827 UpdateDisplay( false );
828}

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 911 of file BatchProcessDialog.cpp.

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

References FitColumns(), and ApplyMacroDialog::mbExpanded.

Here is the call graph for this function:

◆ OnUp()

void MacrosWindow::OnUp ( wxCommandEvent &  event)
private

Definition at line 1277 of file BatchProcessDialog.cpp.

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

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 592 of file BatchProcessDialog.cpp.

593{
594 //------------------------- Main section --------------------
595 ShuttleGui S(this, eIsCreating);
597 // ----------------------- End of main section --------------
598
599 // Get and validate the currently active macro
600 mActiveMacro = gPrefs->Read(wxT("/Batch/ActiveMacro"), wxT(""));
601 // Go populate the macros list.
603
604 // We have a bare list. We need to add columns and content.
605 PopulateList();
606
607 // Layout and set minimum size of window
608 Layout();
609 Fit();
610 SetSizeHints(GetSize());
611
612 // Size and place window
613 SetSize(std::min(wxSystemSettings::GetMetric(wxSYS_SCREEN_X) * 3 / 4, 800),
614 std::min(wxSystemSettings::GetMetric(wxSYS_SCREEN_Y) * 4 / 5, 400));
615 Center();
616
617 // Set the column size for the macros list.
618 wxSize sz = mMacros->GetClientSize();
619 mMacros->SetColumnWidth(0, sz.x);
620
621 // Size columns properly
622 FitColumns();
623}
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 724 of file BatchProcessDialog.cpp.

725{
726 int topItem = mList->GetTopItem();
727 mList->DeleteAllItems();
728
729 for (int i = 0; i < mMacroCommands.GetCount(); i++) {
732 }
733 /*i18n-hint: This is the last item in a list.*/
734 AddItem(_("- END -"), wxT(""));
735
736 // Select the name in the list...this will fire an event.
737 if (mSelectedCommand >= (int)mList->GetItemCount()) {
739 }
740 mList->SetItemState(mSelectedCommand,
741 wxLIST_STATE_SELECTED | wxLIST_STATE_FOCUSED,
742 wxLIST_STATE_SELECTED | wxLIST_STATE_FOCUSED);
743 if( 0 <= topItem && topItem < (int)mList->GetItemCount())
744 {
745 // Workaround for scrolling being windows only.
746 // Try to scroll back to where we once were...
747 mList->EnsureVisible( (int)mList->GetItemCount() -1 );
748 mList->EnsureVisible( topItem );
749 // And then make sure whatever is selected is still visible...
750 if (mSelectedCommand >= 0) {
751 mList->EnsureVisible( mSelectedCommand );
752 }
753 }
754}
#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 626 of file BatchProcessDialog.cpp.

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

1334 {
1335 gPrefs->Write(wxT("/Batch/ActiveMacro"), mActiveMacro);
1336 gPrefs->Flush();
1337
1338 if (mChanged) {
1340 return false;
1341 }
1342 }
1343
1344 mChanged = false;
1345 if( mSave )
1346 mSave->Enable( mChanged );
1347
1348 return true;
1349}
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 873 of file BatchProcessDialog.cpp.

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

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 781 of file BatchProcessDialog.cpp.

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

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 774 of file BatchProcessDialog.cpp.

775{
776 // OK even on mac, as dialog is modal.
777 auto p = &mProject;
779}
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 1392 of file BatchProcessDialog.cpp.

1393{
1395}

References ApplyMacroDialog::mbExpanded, and UpdateDisplay().

Here is the call graph for this function:

◆ WindowTitle()

TranslatableString MacrosWindow::WindowTitle ( ) const
private

Definition at line 1386 of file BatchProcessDialog.cpp.

1387{
1389}
#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(), OnEditCommandParams(), 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: