mirror of
https://github.com/cookiengineer/audacity
synced 2025-06-22 23:30:07 +02:00
Use names not numbers in MacroIdOfName()
Previously the ID for a macro was, e.g. Macro003. However this would not work if macros were added or deleted, since chains containing the old macro references would now refer to a different macro. So changed to using names.
This commit is contained in:
parent
585a4c6170
commit
70b1f69bbe
@ -192,6 +192,27 @@ void ApplyMacroDialog::OnApplyToProject(wxCommandEvent & WXUNUSED(event))
|
|||||||
ApplyMacroToProject( item );
|
ApplyMacroToProject( item );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wxString ApplyMacroDialog::MacroIdOfName( const wxString & MacroName )
|
||||||
|
{
|
||||||
|
wxString Temp = MacroName;
|
||||||
|
Temp.Replace(" ","");
|
||||||
|
Temp = wxString( "Macro_" ) + Temp;
|
||||||
|
return Temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Does nothing if not found, rather than returning an error.
|
||||||
|
void ApplyMacroDialog::ApplyMacroToProject( const wxString & MacroID, bool bHasGui )
|
||||||
|
{
|
||||||
|
for( size_t i=0;i<mMacros->GetItemCount();i++){
|
||||||
|
wxString name = mMacros->GetItemText(i);
|
||||||
|
if( MacroIdOfName( name ) == MacroID ){
|
||||||
|
ApplyMacroToProject( i, bHasGui );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void ApplyMacroDialog::ApplyMacroToProject( int iMacro, bool bHasGui )
|
void ApplyMacroDialog::ApplyMacroToProject( int iMacro, bool bHasGui )
|
||||||
{
|
{
|
||||||
wxString name = mMacros->GetItemText(iMacro);
|
wxString name = mMacros->GetItemText(iMacro);
|
||||||
|
@ -56,7 +56,9 @@ class ApplyMacroDialog : public wxDialogWrapper {
|
|||||||
virtual wxString GetHelpPageName() {return "Tools_Menu#macros_compact_dialog";};
|
virtual wxString GetHelpPageName() {return "Tools_Menu#macros_compact_dialog";};
|
||||||
|
|
||||||
void PopulateMacros();
|
void PopulateMacros();
|
||||||
|
static wxString MacroIdOfName( const wxString & MacroName );
|
||||||
void ApplyMacroToProject( int iMacro, bool bHasGui=true );
|
void ApplyMacroToProject( int iMacro, bool bHasGui=true );
|
||||||
|
void ApplyMacroToProject( const wxString & MacroID, bool bHasGui=true );
|
||||||
|
|
||||||
|
|
||||||
// These will be reused in the derived class...
|
// These will be reused in the derived class...
|
||||||
|
@ -1713,7 +1713,8 @@ void AudacityProject::PopulateMacrosMenu( CommandManager* c, CommandFlag flags
|
|||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < (int)names.GetCount(); i++) {
|
for (i = 0; i < (int)names.GetCount(); i++) {
|
||||||
c->AddItem(wxString::Format("Macro%03i", i ), names[i], FN(OnApplyMacroDirectly),
|
wxString MacroID = ApplyMacroDialog::MacroIdOfName( names[i] );
|
||||||
|
c->AddItem(MacroID, names[i], FN(OnApplyMacroDirectly),
|
||||||
flags,
|
flags,
|
||||||
flags);
|
flags);
|
||||||
}
|
}
|
||||||
@ -6860,10 +6861,17 @@ void AudacityProject::OnApplyMacroDirectly(const CommandContext &context )
|
|||||||
//wxLogDebug( "Macro was: %s", context.parameter);
|
//wxLogDebug( "Macro was: %s", context.parameter);
|
||||||
ApplyMacroDialog dlg(this);
|
ApplyMacroDialog dlg(this);
|
||||||
wxString Name = context.parameter;
|
wxString Name = context.parameter;
|
||||||
|
|
||||||
|
// We used numbers previously, but macros could get renumbered, making
|
||||||
|
// macros containing macros unpredictable.
|
||||||
|
#ifdef MACROS_BY_NUMBERS
|
||||||
long item=0;
|
long item=0;
|
||||||
// Take last three letters (of e.g. Macro007) and convert to a number.
|
// Take last three letters (of e.g. Macro007) and convert to a number.
|
||||||
Name.Mid( Name.Length() - 3 ).ToLong( &item, 10 );
|
Name.Mid( Name.Length() - 3 ).ToLong( &item, 10 );
|
||||||
dlg.ApplyMacroToProject( item, false );
|
dlg.ApplyMacroToProject( item, false );
|
||||||
|
#else
|
||||||
|
dlg.ApplyMacroToProject( Name, false );
|
||||||
|
#endif
|
||||||
ModifyUndoMenuItems();
|
ModifyUndoMenuItems();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user