mirror of
https://github.com/cookiengineer/audacity
synced 2025-07-31 07:59:27 +02:00
Change expansion of XXO and pass more arguments to CommandManager
This commit is contained in:
parent
4e18318934
commit
bb7b77cde0
@ -296,7 +296,7 @@ static bool SortEffectsByType(const PluginDescriptor *a, const PluginDescriptor
|
||||
static CommandHandlerObject &ident(AudacityProject &project) { return project; }
|
||||
|
||||
#define FN(X) ident, static_cast<CommandFunctorPointer>(& AudacityProject :: X)
|
||||
#define XXO _
|
||||
#define XXO(X) _(X), wxString{X}.Contains("...")
|
||||
|
||||
void AudacityProject::CreateMenusAndCommands()
|
||||
{
|
||||
@ -855,7 +855,7 @@ void AudacityProject::CreateMenusAndCommands()
|
||||
c->AddItem( wxT("Record2ndChoice"),
|
||||
// Our first choice is bound to R (by default) and gets the prime position.
|
||||
// We supply the name for the 'other one' here. It should be bound to Shift+R
|
||||
bPreferNewTrack ? _("&Append Record") : _("Record &New Track"),
|
||||
(bPreferNewTrack ? _("&Append Record") : _("Record &New Track")), false,
|
||||
FN(OnRecord2ndChoice),
|
||||
wxT("Shift+R")
|
||||
);
|
||||
@ -1145,7 +1145,7 @@ void AudacityProject::CreateMenusAndCommands()
|
||||
c->AddSeparator();
|
||||
#endif
|
||||
|
||||
c->AddItem(wxT("RepeatLastEffect"), buildMenuLabel, FN(OnRepeatLastEffect), wxT("Ctrl+R"),
|
||||
c->AddItem(wxT("RepeatLastEffect"), buildMenuLabel, false, FN(OnRepeatLastEffect), wxT("Ctrl+R"),
|
||||
AudioIONotBusyFlag | TimeSelectedFlag | WaveTracksSelectedFlag | HasLastEffectFlag,
|
||||
AudioIONotBusyFlag | TimeSelectedFlag | WaveTracksSelectedFlag | HasLastEffectFlag);
|
||||
|
||||
@ -1713,7 +1713,7 @@ void AudacityProject::PopulateMacrosMenu( CommandManager* c, CommandFlag flags
|
||||
|
||||
for (i = 0; i < (int)names.GetCount(); i++) {
|
||||
wxString MacroID = ApplyMacroDialog::MacroIdOfName( names[i] );
|
||||
c->AddItem(MacroID, names[i], FN(OnApplyMacroDirectly),
|
||||
c->AddItem(MacroID, names[i], false, FN(OnApplyMacroDirectly),
|
||||
flags,
|
||||
flags);
|
||||
}
|
||||
@ -1800,6 +1800,7 @@ void AudacityProject::AddEffectMenuItems(CommandManager *c,
|
||||
grouped = true;
|
||||
}
|
||||
|
||||
std::vector<bool> vHasDialog;
|
||||
wxArrayString groupNames;
|
||||
PluginIDList groupPlugs;
|
||||
std::vector<CommandFlag> groupFlags;
|
||||
@ -1812,6 +1813,7 @@ void AudacityProject::AddEffectMenuItems(CommandManager *c,
|
||||
{
|
||||
const PluginDescriptor *plug = plugs[i];
|
||||
|
||||
bool hasDialog = plug->GetUntranslatedName().Contains("...");
|
||||
wxString name = plug->GetTranslatedName();
|
||||
|
||||
if (plug->IsEffectInteractive())
|
||||
@ -1843,7 +1845,8 @@ void AudacityProject::AddEffectMenuItems(CommandManager *c,
|
||||
c->BeginSubMenu(last);
|
||||
}
|
||||
|
||||
AddEffectMenuItemGroup(c, groupNames, groupPlugs, groupFlags, isDefault);
|
||||
AddEffectMenuItemGroup(c, groupNames, vHasDialog,
|
||||
groupPlugs, groupFlags, isDefault);
|
||||
|
||||
if (!last.IsEmpty())
|
||||
{
|
||||
@ -1851,12 +1854,14 @@ void AudacityProject::AddEffectMenuItems(CommandManager *c,
|
||||
}
|
||||
|
||||
groupNames.Clear();
|
||||
vHasDialog.clear();
|
||||
groupPlugs.Clear();
|
||||
groupFlags.clear();
|
||||
last = current;
|
||||
}
|
||||
|
||||
groupNames.Add(name);
|
||||
vHasDialog.push_back(hasDialog);
|
||||
groupPlugs.Add(plug->GetID());
|
||||
groupFlags.push_back(plug->IsEffectRealtime() ? realflags : batchflags);
|
||||
}
|
||||
@ -1865,7 +1870,7 @@ void AudacityProject::AddEffectMenuItems(CommandManager *c,
|
||||
{
|
||||
c->BeginSubMenu(current);
|
||||
|
||||
AddEffectMenuItemGroup(c, groupNames, groupPlugs, groupFlags, isDefault);
|
||||
AddEffectMenuItemGroup(c, groupNames, vHasDialog, groupPlugs, groupFlags, isDefault);
|
||||
|
||||
c->EndSubMenu();
|
||||
}
|
||||
@ -1876,6 +1881,7 @@ void AudacityProject::AddEffectMenuItems(CommandManager *c,
|
||||
{
|
||||
const PluginDescriptor *plug = plugs[i];
|
||||
|
||||
bool hasDialog = plug->GetUntranslatedName().Contains("...");
|
||||
wxString name = plug->GetTranslatedName();
|
||||
|
||||
if (plug->IsEffectInteractive())
|
||||
@ -1904,13 +1910,14 @@ void AudacityProject::AddEffectMenuItems(CommandManager *c,
|
||||
}
|
||||
|
||||
groupNames.Add(group + name);
|
||||
vHasDialog.push_back(hasDialog);
|
||||
groupPlugs.Add(plug->GetID());
|
||||
groupFlags.push_back(plug->IsEffectRealtime() ? realflags : batchflags);
|
||||
}
|
||||
|
||||
if (groupNames.GetCount() > 0)
|
||||
{
|
||||
AddEffectMenuItemGroup(c, groupNames, groupPlugs, groupFlags, isDefault);
|
||||
AddEffectMenuItemGroup(c, groupNames, vHasDialog, groupPlugs, groupFlags, isDefault);
|
||||
}
|
||||
|
||||
}
|
||||
@ -1920,6 +1927,7 @@ void AudacityProject::AddEffectMenuItems(CommandManager *c,
|
||||
|
||||
void AudacityProject::AddEffectMenuItemGroup(CommandManager *c,
|
||||
const wxArrayString & names,
|
||||
const std::vector<bool> &vHasDialog,
|
||||
const PluginIDList & plugs,
|
||||
const std::vector<CommandFlag> & flags,
|
||||
bool isDefault)
|
||||
@ -1983,6 +1991,7 @@ void AudacityProject::AddEffectMenuItemGroup(CommandManager *c,
|
||||
if( plug->GetPluginType() == PluginTypeEffect )
|
||||
c->AddItem(item,
|
||||
item,
|
||||
item.Contains("..."),
|
||||
FN(OnEffect),
|
||||
flags[i],
|
||||
flags[i], true, plugs[i]);
|
||||
@ -1998,6 +2007,7 @@ void AudacityProject::AddEffectMenuItemGroup(CommandManager *c,
|
||||
if( plug->GetPluginType() == PluginTypeEffect )
|
||||
c->AddItem(names[i],
|
||||
names[i],
|
||||
vHasDialog[i],
|
||||
FN(OnEffect),
|
||||
flags[i],
|
||||
flags[i], true, plugs[i]);
|
||||
|
@ -31,6 +31,7 @@ void AddEffectMenuItems(CommandManager *c,
|
||||
std::vector<const PluginDescriptor*> & plugs,
|
||||
CommandFlag batchflags, CommandFlag realflags, bool isDefault);
|
||||
void AddEffectMenuItemGroup(CommandManager *c, const wxArrayString & names,
|
||||
const std::vector<bool> &vHasDialog,
|
||||
const PluginIDList & plugs,
|
||||
const std::vector<CommandFlag> & flags, bool isDefault);
|
||||
void CreateRecentFilesMenu(CommandManager *c);
|
||||
|
@ -704,6 +704,7 @@ void CommandManager::ClearCurrentMenu()
|
||||
mCurrentMenu = nullptr;
|
||||
}
|
||||
|
||||
#if 0
|
||||
///
|
||||
/// Add a menu item to the current menu. When the user selects it, the
|
||||
/// given functor will be called
|
||||
@ -760,7 +761,7 @@ void CommandManager::InsertItem(const wxString & name,
|
||||
}
|
||||
}
|
||||
|
||||
CommandListEntry *entry = NewIdentifier(name, label_in, menu, finder, callback, {}, 0, 0, false);
|
||||
CommandListEntry *entry = NewIdentifier(name, label_in, false, menu, finder, callback, {}, 0, 0, false);
|
||||
int ID = entry->id;
|
||||
wxString label = GetLabel(entry);
|
||||
|
||||
@ -774,32 +775,36 @@ void CommandManager::InsertItem(const wxString & name,
|
||||
|
||||
mbSeparatorAllowed = true;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
void CommandManager::AddCheck(const wxChar *name,
|
||||
const wxChar *label,
|
||||
bool hasDialog,
|
||||
CommandHandlerFinder finder,
|
||||
CommandFunctorPointer callback,
|
||||
int checkmark)
|
||||
{
|
||||
AddItem(name, label, finder, callback, wxT(""),
|
||||
AddItem(name, label, hasDialog, finder, callback, wxT(""),
|
||||
NoFlagsSpecifed, NoFlagsSpecifed, checkmark);
|
||||
}
|
||||
|
||||
void CommandManager::AddCheck(const wxChar *name,
|
||||
const wxChar *label,
|
||||
bool hasDialog,
|
||||
CommandHandlerFinder finder,
|
||||
CommandFunctorPointer callback,
|
||||
int checkmark,
|
||||
CommandFlag flags,
|
||||
CommandMask mask)
|
||||
{
|
||||
AddItem(name, label, finder, callback, wxT(""), flags, mask, checkmark);
|
||||
AddItem(name, label, hasDialog, finder, callback, wxT(""), flags, mask, checkmark);
|
||||
}
|
||||
|
||||
void CommandManager::AddItem(const wxChar *name,
|
||||
const wxChar *label,
|
||||
bool hasDialog,
|
||||
CommandHandlerFinder finder,
|
||||
CommandFunctorPointer callback,
|
||||
CommandFlag flags,
|
||||
@ -807,11 +812,12 @@ void CommandManager::AddItem(const wxChar *name,
|
||||
bool bIsEffect,
|
||||
const CommandParameter ¶meter)
|
||||
{
|
||||
AddItem(name, label, finder, callback, wxT(""), flags, mask, -1, bIsEffect, parameter);
|
||||
AddItem(name, label, hasDialog, finder, callback, wxT(""), flags, mask, -1, bIsEffect, parameter);
|
||||
}
|
||||
|
||||
void CommandManager::AddItem(const wxChar *name,
|
||||
const wxChar *label_in,
|
||||
bool hasDialog,
|
||||
CommandHandlerFinder finder,
|
||||
CommandFunctorPointer callback,
|
||||
const wxChar *accel,
|
||||
@ -827,7 +833,7 @@ void CommandManager::AddItem(const wxChar *name,
|
||||
else
|
||||
cookedParameter = parameter;
|
||||
CommandListEntry *entry =
|
||||
NewIdentifier(name, label_in, accel, CurrentMenu(), finder, callback,
|
||||
NewIdentifier(name, label_in, hasDialog, accel, CurrentMenu(), finder, callback,
|
||||
{}, 0, 0, bIsEffect, cookedParameter);
|
||||
int ID = entry->id;
|
||||
wxString label = GetLabelWithDisabledAccel(entry);
|
||||
@ -864,6 +870,8 @@ void CommandManager::AddItemList(const wxString & name,
|
||||
for (size_t i = 0, cnt = nItems; i < cnt; i++) {
|
||||
CommandListEntry *entry = NewIdentifier(name,
|
||||
items[i].Translated(),
|
||||
// No means yet to specify !
|
||||
false,
|
||||
CurrentMenu(),
|
||||
finder,
|
||||
callback,
|
||||
@ -897,7 +905,7 @@ void CommandManager::AddCommand(const wxChar *name,
|
||||
CommandFlag flags,
|
||||
CommandMask mask)
|
||||
{
|
||||
NewIdentifier(name, label_in, accel, NULL, finder, callback, {}, 0, 0, false, {});
|
||||
NewIdentifier(name, label_in, false, accel, NULL, finder, callback, {}, 0, 0, false, {});
|
||||
|
||||
if (flags != NoFlagsSpecifed || mask != NoFlagsSpecifed) {
|
||||
SetCommandFlags(name, flags, mask);
|
||||
@ -906,12 +914,13 @@ void CommandManager::AddCommand(const wxChar *name,
|
||||
|
||||
void CommandManager::AddGlobalCommand(const wxChar *name,
|
||||
const wxChar *label_in,
|
||||
bool hasDialog,
|
||||
CommandHandlerFinder finder,
|
||||
CommandFunctorPointer callback,
|
||||
const wxChar *accel)
|
||||
{
|
||||
CommandListEntry *entry =
|
||||
NewIdentifier(name, label_in, accel, NULL, finder, callback,
|
||||
NewIdentifier(name, label_in, hasDialog, accel, NULL, finder, callback,
|
||||
{}, 0, 0, false, {});
|
||||
|
||||
entry->enabled = false;
|
||||
@ -945,6 +954,7 @@ int CommandManager::NextIdentifier(int ID)
|
||||
///and keep menus above wxID_HIGHEST
|
||||
CommandListEntry *CommandManager::NewIdentifier(const wxString & name,
|
||||
const wxString & label,
|
||||
bool hasDialog,
|
||||
wxMenu *menu,
|
||||
CommandHandlerFinder finder,
|
||||
CommandFunctorPointer callback,
|
||||
@ -955,6 +965,7 @@ CommandListEntry *CommandManager::NewIdentifier(const wxString & name,
|
||||
{
|
||||
return NewIdentifier(name,
|
||||
label.BeforeFirst(wxT('\t')),
|
||||
hasDialog,
|
||||
label.AfterFirst(wxT('\t')),
|
||||
menu,
|
||||
finder,
|
||||
@ -968,6 +979,7 @@ CommandListEntry *CommandManager::NewIdentifier(const wxString & name,
|
||||
|
||||
CommandListEntry *CommandManager::NewIdentifier(const wxString & nameIn,
|
||||
const wxString & label,
|
||||
bool WXUNUSED(hasDialog),
|
||||
const wxString & accel,
|
||||
wxMenu *menu,
|
||||
CommandHandlerFinder finder,
|
||||
|
@ -154,12 +154,14 @@ class AUDACITY_DLL_API CommandManager final : public XMLTagHandler
|
||||
wxMenu* BeginSubMenu(const wxString & tName);
|
||||
void EndSubMenu();
|
||||
|
||||
/*
|
||||
void InsertItem(const wxString & name,
|
||||
const wxString & label,
|
||||
CommandHandlerFinder finder,
|
||||
CommandFunctorPointer callback,
|
||||
const wxString & after,
|
||||
int checkmark = -1);
|
||||
*/
|
||||
|
||||
void AddItemList(const wxString & name,
|
||||
const TranslatedInternalString items[],
|
||||
@ -170,12 +172,14 @@ class AUDACITY_DLL_API CommandManager final : public XMLTagHandler
|
||||
|
||||
void AddCheck(const wxChar *name,
|
||||
const wxChar *label,
|
||||
bool hasDialog,
|
||||
CommandHandlerFinder finder,
|
||||
CommandFunctorPointer callback,
|
||||
int checkmark = 0);
|
||||
|
||||
void AddCheck(const wxChar *name,
|
||||
const wxChar *label,
|
||||
bool hasDialog,
|
||||
CommandHandlerFinder finder,
|
||||
CommandFunctorPointer callback,
|
||||
int checkmark,
|
||||
@ -184,6 +188,7 @@ class AUDACITY_DLL_API CommandManager final : public XMLTagHandler
|
||||
|
||||
void AddItem(const wxChar *name,
|
||||
const wxChar *label,
|
||||
bool hasDialog,
|
||||
CommandHandlerFinder finder,
|
||||
CommandFunctorPointer callback,
|
||||
CommandFlag flags = NoFlagsSpecifed,
|
||||
@ -193,6 +198,7 @@ class AUDACITY_DLL_API CommandManager final : public XMLTagHandler
|
||||
|
||||
void AddItem(const wxChar *name,
|
||||
const wxChar *label_in,
|
||||
bool hasDialog,
|
||||
CommandHandlerFinder finder,
|
||||
CommandFunctorPointer callback,
|
||||
const wxChar *accel,
|
||||
@ -223,6 +229,7 @@ class AUDACITY_DLL_API CommandManager final : public XMLTagHandler
|
||||
|
||||
void AddGlobalCommand(const wxChar *name,
|
||||
const wxChar *label,
|
||||
bool hasDialog,
|
||||
CommandHandlerFinder finder,
|
||||
CommandFunctorPointer callback,
|
||||
const wxChar *accel);
|
||||
@ -333,6 +340,7 @@ protected:
|
||||
int NextIdentifier(int ID);
|
||||
CommandListEntry *NewIdentifier(const wxString & name,
|
||||
const wxString & label,
|
||||
bool hasDialog,
|
||||
wxMenu *menu,
|
||||
CommandHandlerFinder finder,
|
||||
CommandFunctorPointer callback,
|
||||
@ -342,6 +350,7 @@ protected:
|
||||
bool bIsEffect);
|
||||
CommandListEntry *NewIdentifier(const wxString & name,
|
||||
const wxString & label,
|
||||
bool hasDialog,
|
||||
const wxString & accel,
|
||||
wxMenu *menu,
|
||||
CommandHandlerFinder finder,
|
||||
|
@ -1002,12 +1002,16 @@ void Scrubber::AddMenuItems()
|
||||
for (const auto &item : menuItems) {
|
||||
if (item.StatusTest)
|
||||
cm->AddCheck(item.name, wxGetTranslation(item.label),
|
||||
// No menu items yet have dialogs
|
||||
false,
|
||||
findme, static_cast<CommandFunctorPointer>(item.memFn),
|
||||
false,
|
||||
item.flags, item.flags);
|
||||
else
|
||||
// The start item
|
||||
cm->AddItem(item.name, wxGetTranslation(item.label),
|
||||
// No menu items yet have dialogs
|
||||
false,
|
||||
findme, static_cast<CommandFunctorPointer>(item.memFn),
|
||||
item.flags, item.flags);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user