diff --git a/src/AudacityApp.h b/src/AudacityApp.h index 998a286f9..b103f8989 100644 --- a/src/AudacityApp.h +++ b/src/AudacityApp.h @@ -56,7 +56,7 @@ DECLARE_EXPORTED_EVENT_TYPE(AUDACITY_DLL_API, EVT_OPEN_AUDIO_FILE, -1); // These flags represent the majority of the states that affect // whether or not items in menus are enabled or disabled. -enum +enum CommandFlag : unsigned long long { AlwaysEnabledFlag = 0x00000000, @@ -93,11 +93,89 @@ enum CaptureNotBusyFlag = 0x20000000, CanStopAudioStreamFlag = 0x40000000, AudioStreamNotScrubbingFlag - = 0x80000000, + = 0x80000000ULL, // prl - NoFlagsSpecifed = 0xffffffff + NoFlagsSpecifed = ~0ULL }; +// Prevent accidental misuse with narrower types + +bool operator == (CommandFlag, unsigned long) PROHIBITED; +bool operator == (CommandFlag, long) PROHIBITED; +bool operator == (unsigned long, CommandFlag) PROHIBITED; +bool operator == (long, CommandFlag) PROHIBITED; + +bool operator != (CommandFlag, unsigned long) PROHIBITED; +bool operator != (CommandFlag, long) PROHIBITED; +bool operator != (unsigned long, CommandFlag) PROHIBITED; +bool operator != (long, CommandFlag) PROHIBITED; + +CommandFlag operator & (CommandFlag, unsigned long) PROHIBITED; +CommandFlag operator & (CommandFlag, long) PROHIBITED; +CommandFlag operator & (unsigned long, CommandFlag) PROHIBITED; +CommandFlag operator & (long, CommandFlag) PROHIBITED; + +CommandFlag operator | (CommandFlag, unsigned long) PROHIBITED; +CommandFlag operator | (CommandFlag, long) PROHIBITED; +CommandFlag operator | (unsigned long, CommandFlag) PROHIBITED; +CommandFlag operator | (long, CommandFlag) PROHIBITED; + +CommandFlag operator ^ (CommandFlag, unsigned long) PROHIBITED; +CommandFlag operator ^ (CommandFlag, long) PROHIBITED; +CommandFlag operator ^ (unsigned long, CommandFlag) PROHIBITED; +CommandFlag operator ^ (long, CommandFlag) PROHIBITED; + +bool operator == (CommandFlag, unsigned int) PROHIBITED; +bool operator == (CommandFlag, int) PROHIBITED; +bool operator == (unsigned int, CommandFlag) PROHIBITED; +bool operator == (int, CommandFlag) PROHIBITED; + +bool operator != (CommandFlag, unsigned int) PROHIBITED; +bool operator != (CommandFlag, int) PROHIBITED; +bool operator != (unsigned int, CommandFlag) PROHIBITED; +bool operator != (int, CommandFlag) PROHIBITED; + +CommandFlag operator & (CommandFlag, unsigned int) PROHIBITED; +CommandFlag operator & (CommandFlag, int) PROHIBITED; +CommandFlag operator & (unsigned int, CommandFlag) PROHIBITED; +CommandFlag operator & (int, CommandFlag) PROHIBITED; + +CommandFlag operator | (CommandFlag, unsigned int) PROHIBITED; +CommandFlag operator | (CommandFlag, int) PROHIBITED; +CommandFlag operator | (unsigned int, CommandFlag) PROHIBITED; +CommandFlag operator | (int, CommandFlag) PROHIBITED; + +CommandFlag operator ^ (CommandFlag, unsigned int) PROHIBITED; +CommandFlag operator ^ (CommandFlag, int) PROHIBITED; +CommandFlag operator ^ (unsigned int, CommandFlag) PROHIBITED; +CommandFlag operator ^ (int, CommandFlag) PROHIBITED; + +// Supply the bitwise operations + +inline CommandFlag operator ~ (CommandFlag flag) +{ + return static_cast( ~ static_cast (flag) ); +} +inline CommandFlag operator & (CommandFlag lhs, CommandFlag rhs) +{ + return static_cast ( + static_cast(lhs) & static_cast(rhs) + ); +} +inline CommandFlag operator | (CommandFlag lhs, CommandFlag rhs) +{ + return static_cast ( + static_cast(lhs) | static_cast(rhs) + ); +} +inline CommandFlag & operator |= (CommandFlag &lhs, CommandFlag rhs) +{ + lhs = lhs | rhs; + return lhs; +} + +using CommandMask = CommandFlag; + class BlockFile; class AudacityApp final : public wxApp { diff --git a/src/Menus.cpp b/src/Menus.cpp index 6dafd2369..e02a79779 100644 --- a/src/Menus.cpp +++ b/src/Menus.cpp @@ -907,7 +907,8 @@ void AudacityProject::CreateMenusAndCommands() #else wxT("Ctrl+M"), #endif - 0, AudioIONotBusyFlag); + AlwaysEnabledFlag, // is this correct?? + AudioIONotBusyFlag); c->AddItem(wxT("EditLabels"), _("&Edit Labels..."), FN(OnEditLabels)); c->AddSeparator(); @@ -1214,7 +1215,7 @@ void AudacityProject::CreateMenusAndCommands() c->AddCommand(wxT("PlaySpeedInc"), _("Increase playback speed"), FN(OnPlaySpeedInc)); c->AddCommand(wxT("PlaySpeedDec"), _("Decrease playback speed"), FN(OnPlaySpeedDec)); - mLastFlags = 0; + mLastFlags = AlwaysEnabledFlag; #if defined(__WXDEBUG__) // c->CheckDups(); @@ -1223,8 +1224,8 @@ void AudacityProject::CreateMenusAndCommands() void AudacityProject::PopulateEffectsMenu(CommandManager* c, EffectType type, - int batchflags, - int realflags) + CommandFlag batchflags, + CommandFlag realflags) { PluginManager & pm = PluginManager::Get(); @@ -1295,8 +1296,8 @@ void AudacityProject::PopulateEffectsMenu(CommandManager* c, void AudacityProject::AddEffectMenuItems(CommandManager *c, EffectPlugs & plugs, - int batchflags, - int realflags, + CommandFlag batchflags, + CommandFlag realflags, bool isDefault) { size_t pluginCnt = plugs.GetCount(); @@ -1311,7 +1312,7 @@ void AudacityProject::AddEffectMenuItems(CommandManager *c, wxArrayString groupNames; PluginIDList groupPlugs; - wxArrayInt groupFlags; + std::vector groupFlags; if (grouped) { wxString last; @@ -1361,13 +1362,13 @@ void AudacityProject::AddEffectMenuItems(CommandManager *c, groupNames.Clear(); groupPlugs.Clear(); - groupFlags.Clear(); + groupFlags.clear(); last = current; } groupNames.Add(name); groupPlugs.Add(plug->GetID()); - groupFlags.Add(plug->IsEffectRealtime() ? realflags : batchflags); + groupFlags.push_back(plug->IsEffectRealtime() ? realflags : batchflags); } if (groupNames.GetCount() > 0) @@ -1414,7 +1415,7 @@ void AudacityProject::AddEffectMenuItems(CommandManager *c, groupNames.Add(group + name); groupPlugs.Add(plug->GetID()); - groupFlags.Add(plug->IsEffectRealtime() ? realflags : batchflags); + groupFlags.push_back(plug->IsEffectRealtime() ? realflags : batchflags); } if (groupNames.GetCount() > 0) @@ -1430,7 +1431,7 @@ void AudacityProject::AddEffectMenuItems(CommandManager *c, void AudacityProject::AddEffectMenuItemGroup(CommandManager *c, const wxArrayString & names, const PluginIDList & plugs, - const wxArrayInt & flags, + const std::vector & flags, bool isDefault) { int namesCnt = (int) names.GetCount(); @@ -1609,7 +1610,7 @@ void AudacityProject::RebuildOtherMenus() } } -int AudacityProject::GetFocusedFrame() +CommandFlag AudacityProject::GetFocusedFrame() { wxWindow *w = FindFocus(); @@ -1629,16 +1630,16 @@ int AudacityProject::GetFocusedFrame() w = w->GetParent(); } - return 0; + return AlwaysEnabledFlag; } -wxUint32 AudacityProject::GetUpdateFlags() +CommandFlag AudacityProject::GetUpdateFlags() { // This method determines all of the flags that determine whether // certain menu items and commands should be enabled or disabled, // and returns them in a bitfield. Note that if none of the flags // have changed, it's not necessary to even check for updates. - wxUint32 flags = 0; + auto flags = AlwaysEnabledFlag; if (!gAudioIO->IsAudioTokenActive(GetAudioIOToken())) flags |= AudioIONotBusyFlag; @@ -1767,8 +1768,8 @@ wxUint32 AudacityProject::GetUpdateFlags() void AudacityProject::SelectAllIfNone() { - wxUint32 flags = GetUpdateFlags(); - if(((flags & TracksSelectedFlag) ==0) || + auto flags = GetUpdateFlags(); + if(!(flags & TracksSelectedFlag) || (mViewInfo.selectedRegion.isPoint())) OnSelectAll(); } @@ -1850,17 +1851,17 @@ void AudacityProject::UpdateMenus(bool checkActive) if (checkActive && !IsActive()) return; - wxUint32 flags = GetUpdateFlags(); - wxUint32 flags2 = flags; + auto flags = GetUpdateFlags(); + auto flags2 = flags; // We can enable some extra items if we have select-all-on-none. //EXPLAIN-ME: Why is this here rather than in GetUpdateFlags()? if (mSelectAllOnNone) { - if ((flags & TracksExistFlag) != 0) + if ((flags & TracksExistFlag)) { flags2 |= TracksSelectedFlag; - if ((flags & WaveTracksExistFlag) != 0 ) + if ((flags & WaveTracksExistFlag)) { flags2 |= TimeSelectedFlag | WaveTracksSelectedFlag @@ -1875,21 +1876,21 @@ void AudacityProject::UpdateMenus(bool checkActive) return; mLastFlags = flags; - mCommandManager.EnableUsingFlags(flags2 , 0xFFFFFFFF); + mCommandManager.EnableUsingFlags(flags2 , NoFlagsSpecifed); // With select-all-on-none, some items that we don't want enabled may have // been enabled, since we changed the flags. Here we manually disable them. if (mSelectAllOnNone) { - if ((flags & TracksSelectedFlag) == 0) + if (!(flags & TracksSelectedFlag)) { mCommandManager.Enable(wxT("SplitCut"), false); - if ((flags & WaveTracksSelectedFlag) == 0) + if (!(flags & WaveTracksSelectedFlag)) { mCommandManager.Enable(wxT("Split"), false); } - if ((flags & TimeSelectedFlag) == 0) + if (!(flags & TimeSelectedFlag)) { mCommandManager.Enable(wxT("ExportSel"), false); mCommandManager.Enable(wxT("SplitNew"), false); @@ -2690,6 +2691,9 @@ void AudacityProject::NextFrame() case BotDockHasFocus: mToolManager->GetTopDock()->SetFocus(); break; + + default: + break; } } @@ -2708,6 +2712,9 @@ void AudacityProject::PrevFrame() case BotDockHasFocus: mTrackPanel->SetFocus(); break; + + default: + break; } } diff --git a/src/Menus.h b/src/Menus.h index f8cc32084..edd2d8fbd 100644 --- a/src/Menus.h +++ b/src/Menus.h @@ -24,17 +24,21 @@ private: void CreateMenusAndCommands(); -void PopulateEffectsMenu(CommandManager *c, EffectType type, int batchflags, int realflags); -void AddEffectMenuItems(CommandManager *c, EffectPlugs & plugs, int batchflags, int realflags, bool isDefault); -void AddEffectMenuItemGroup(CommandManager *c, const wxArrayString & names, const PluginIDList & plugs, const wxArrayInt & flags, bool isDefault); +void PopulateEffectsMenu(CommandManager *c, EffectType type, + CommandFlag batchflags, CommandFlag realflags); +void AddEffectMenuItems(CommandManager *c, EffectPlugs & plugs, + CommandFlag batchflags, CommandFlag realflags, bool isDefault); +void AddEffectMenuItemGroup(CommandManager *c, const wxArrayString & names, + const PluginIDList & plugs, + const std::vector & flags, bool isDefault); void CreateRecentFilesMenu(CommandManager *c); void ModifyUndoMenuItems(); void ModifyToolbarMenus(); // Calls ModifyToolbarMenus() on all projects void ModifyAllProjectToolbarMenus(); -int GetFocusedFrame(); -wxUint32 GetUpdateFlags(); +CommandFlag GetFocusedFrame(); +CommandFlag GetUpdateFlags(); double NearestZeroCrossing(double t0); diff --git a/src/Project.cpp b/src/Project.cpp index d33e80ffa..1c2f41c72 100644 --- a/src/Project.cpp +++ b/src/Project.cpp @@ -2072,11 +2072,12 @@ void AudacityProject::OnScroll(wxScrollEvent & WXUNUSED(event)) /// Determines if flags for command are compatible with current state. /// If not, then try some recovery action to make it so. /// @return whether compatible or not after any actions taken. -bool AudacityProject::TryToMakeActionAllowed( wxUint32 & flags, wxUint32 flagsRqd, wxUint32 mask ) +bool AudacityProject::TryToMakeActionAllowed + ( CommandFlag & flags, CommandFlag flagsRqd, CommandFlag mask ) { bool bAllowed; - if( flags == 0 ) + if( !flags ) flags = GetUpdateFlags(); bAllowed = ((flags & mask) == (flagsRqd & mask)); @@ -2088,12 +2089,12 @@ bool AudacityProject::TryToMakeActionAllowed( wxUint32 & flags, wxUint32 flagsRq if( !mSelectAllOnNone ) return false; - wxUint32 MissingFlags = (flags & ~flagsRqd) & mask; + auto MissingFlags = (flags & ~flagsRqd) & mask; // IF selecting all audio won't do any good, THEN return with failure. - if( (flags & WaveTracksExistFlag) == 0 ) + if( !(flags & WaveTracksExistFlag) ) return false; - if( (MissingFlags & ~( TimeSelectedFlag | WaveTracksSelectedFlag))!=0) + if( (MissingFlags & ~( TimeSelectedFlag | WaveTracksSelectedFlag)) ) return false; OnSelectAll(); @@ -2107,7 +2108,7 @@ void AudacityProject::OnMenu(wxCommandEvent & event) bool handled = mCommandManager.HandleMenuID(event.GetId(), GetUpdateFlags(), - 0xFFFFFFFF); + NoFlagsSpecifed); if (handled) event.Skip(false); diff --git a/src/Project.h b/src/Project.h index f86cc5521..b5a4e97ab 100644 --- a/src/Project.h +++ b/src/Project.h @@ -504,7 +504,8 @@ public: void OnAudioIONewBlockFiles(const AutoSaveFile & blockFileLog) override; // Command Handling - bool TryToMakeActionAllowed( wxUint32 & flags, wxUint32 flagsRqd, wxUint32 mask ); + bool TryToMakeActionAllowed + ( CommandFlag & flags, CommandFlag flagsRqd, CommandFlag mask ); ///Prevents DELETE from external thread - for e.g. use of GetActiveProject static void AllProjectsDeleteLock(); @@ -580,7 +581,7 @@ public: CommandManager mCommandManager; - wxUint32 mLastFlags; + CommandFlag mLastFlags; // Window elements diff --git a/src/commands/CommandManager.cpp b/src/commands/CommandManager.cpp index d395af8b2..fc9b28164 100644 --- a/src/commands/CommandManager.cpp +++ b/src/commands/CommandManager.cpp @@ -395,8 +395,8 @@ CommandManager::CommandManager(): mCurrentID(17000), mCurrentMenuName(COMMAND), mCurrentMenu(NULL), - mDefaultFlags(0), - mDefaultMask(0) + mDefaultFlags(AlwaysEnabledFlag), + mDefaultMask(AlwaysEnabledFlag) { mbSeparatorAllowed = false; } @@ -647,15 +647,15 @@ void CommandManager::AddCheck(const wxChar *name, const CommandFunctorPointer &callback, int checkmark) { - AddItem(name, label, callback, wxT(""), (unsigned int)NoFlagsSpecifed, (unsigned int)NoFlagsSpecifed, checkmark); + AddItem(name, label, callback, wxT(""), NoFlagsSpecifed, NoFlagsSpecifed, checkmark); } void CommandManager::AddCheck(const wxChar *name, const wxChar *label, const CommandFunctorPointer &callback, int checkmark, - unsigned int flags, - unsigned int mask) + CommandFlag flags, + CommandMask mask) { AddItem(name, label, callback, wxT(""), flags, mask, checkmark); } @@ -663,8 +663,8 @@ void CommandManager::AddCheck(const wxChar *name, void CommandManager::AddItem(const wxChar *name, const wxChar *label, const CommandFunctorPointer &callback, - unsigned int flags, - unsigned int mask) + CommandFlag flags, + CommandMask mask) { AddItem(name, label, callback, wxT(""), flags, mask); } @@ -673,8 +673,8 @@ void CommandManager::AddItem(const wxChar *name, const wxChar *label_in, const CommandFunctorPointer &callback, const wxChar *accel, - unsigned int flags, - unsigned int mask, + CommandFlag flags, + CommandMask mask, int checkmark) { CommandListEntry *entry = NewIdentifier(name, label_in, accel, CurrentMenu(), callback, false, 0, 0); @@ -726,8 +726,8 @@ void CommandManager::AddItemList(const wxString & name, void CommandManager::AddCommand(const wxChar *name, const wxChar *label, const CommandFunctorPointer &callback, - unsigned int flags, - unsigned int mask) + CommandFlag flags, + CommandMask mask) { AddCommand(name, label, callback, wxT(""), flags, mask); } @@ -736,8 +736,8 @@ void CommandManager::AddCommand(const wxChar *name, const wxChar *label_in, const CommandFunctorPointer &callback, const wxChar *accel, - unsigned int flags, - unsigned int mask) + CommandFlag flags, + CommandMask mask) { NewIdentifier(name, label_in, accel, NULL, callback, false, 0, 0); @@ -755,8 +755,8 @@ void CommandManager::AddGlobalCommand(const wxChar *name, entry->enabled = false; entry->isGlobal = true; - entry->flags = 0; - entry->mask = 0; + entry->flags = AlwaysEnabledFlag; + entry->mask = AlwaysEnabledFlag; } void CommandManager::AddSeparator() @@ -978,13 +978,13 @@ void CommandManager::Enable(const wxString &name, bool enabled) Enable(entry, enabled); } -void CommandManager::EnableUsingFlags(wxUint32 flags, wxUint32 mask) +void CommandManager::EnableUsingFlags(CommandFlag flags, CommandMask mask) { for(const auto &entry : mCommandList) { if (entry->multi && entry->index != 0) continue; - wxUint32 combinedMask = (mask & entry->mask); + auto combinedMask = (mask & entry->mask); if (combinedMask) { bool enable = ((flags & combinedMask) == (entry->flags & combinedMask)); @@ -1038,15 +1038,15 @@ void CommandManager::SetKeyFromIndex(int i, const wxString &key) entry->key = KeyStringNormalize(key); } -void CommandManager::TellUserWhyDisallowed( wxUint32 flagsGot, wxUint32 flagsRequired ) +void CommandManager::TellUserWhyDisallowed( CommandFlag flagsGot, CommandMask flagsRequired ) { // The default string for 'reason' is a catch all. I hope it won't ever be seen // and that we will get something more specific. wxString reason = _("There was a problem with your last action. If you think\nthis is a bug, please tell us exactly where it occurred."); - wxUint32 missingFlags = flagsRequired & (~flagsGot ); + auto missingFlags = flagsRequired & (~flagsGot ); if( missingFlags & AudioIONotBusyFlag ) - reason= _("You can only do this when playing and recording are\n stopped. (Pausing is not sufficient.)"); + reason = _("You can only do this when playing and recording are\n stopped. (Pausing is not sufficient.)"); else if( missingFlags & StereoRequiredFlag ) reason = _("You must first select some stereo audio for this\n to use. (You cannot use this with mono.)"); else if( missingFlags & TimeSelectedFlag ) @@ -1081,7 +1081,7 @@ bool CommandManager::FilterKeyEvent(AudacityProject *project, const wxKeyEvent & // enable them temporarily and then disable them again after handling. // LL: Why do they need to be disabled??? entry->enabled = true; - bool ret = HandleCommandEntry(entry, 0xffffffff, 0xffffffff, &evt); + bool ret = HandleCommandEntry(entry, NoFlagsSpecifed, NoFlagsSpecifed, &evt); entry->enabled = false; return ret; } @@ -1094,7 +1094,7 @@ bool CommandManager::FilterKeyEvent(AudacityProject *project, const wxKeyEvent & return false; } - wxUint32 flags = project->GetUpdateFlags(); + auto flags = project->GetUpdateFlags(); wxKeyEvent temp = evt; @@ -1105,12 +1105,12 @@ bool CommandManager::FilterKeyEvent(AudacityProject *project, const wxKeyEvent & return true; } - return HandleCommandEntry(entry, flags, 0xffffffff, &temp); + return HandleCommandEntry(entry, flags, NoFlagsSpecifed, &temp); } if (type == wxEVT_KEY_UP && entry->wantKeyup) { - return HandleCommandEntry(entry, flags, 0xffffffff, &temp); + return HandleCommandEntry(entry, flags, NoFlagsSpecifed, &temp); } return false; @@ -1120,12 +1120,13 @@ bool CommandManager::FilterKeyEvent(AudacityProject *project, const wxKeyEvent & /// returning true iff successful. If you pass any flags, ///the command won't be executed unless the flags are compatible ///with the command's flags. -bool CommandManager::HandleCommandEntry(const CommandListEntry * entry, wxUint32 flags, wxUint32 mask, const wxEvent * evt) +bool CommandManager::HandleCommandEntry(const CommandListEntry * entry, + CommandFlag flags, CommandMask mask, const wxEvent * evt) { if (!entry || !entry->enabled) return false; - wxUint32 combinedMask = (mask & entry->mask); + auto combinedMask = (mask & entry->mask); if (combinedMask) { AudacityProject * proj; @@ -1154,7 +1155,7 @@ bool CommandManager::HandleCommandEntry(const CommandListEntry * entry, wxUint32 ///CommandManagerListener function. If you pass any flags, ///the command won't be executed unless the flags are compatible ///with the command's flags. -bool CommandManager::HandleMenuID(int id, wxUint32 flags, wxUint32 mask) +bool CommandManager::HandleMenuID(int id, CommandFlag flags, CommandMask mask) { CommandListEntry *entry = mCommandIDHash[id]; return HandleCommandEntry( entry, flags, mask ); @@ -1163,7 +1164,7 @@ bool CommandManager::HandleMenuID(int id, wxUint32 flags, wxUint32 mask) /// HandleTextualCommand() allows us a limitted version of script/batch /// behavior, since we can get from a string command name to the actual /// code to run. -bool CommandManager::HandleTextualCommand(wxString & Str, wxUint32 flags, wxUint32 mask) +bool CommandManager::HandleTextualCommand(wxString & Str, CommandFlag flags, CommandMask mask) { // Linear search for now... for (const auto &entry : mCommandList) @@ -1410,14 +1411,14 @@ void CommandManager::WriteXML(XMLWriter &xmlFile) xmlFile.EndTag(wxT("audacitykeyboard")); } -void CommandManager::SetDefaultFlags(wxUint32 flags, wxUint32 mask) +void CommandManager::SetDefaultFlags(CommandFlag flags, CommandMask mask) { mDefaultFlags = flags; mDefaultMask = mask; } void CommandManager::SetCommandFlags(const wxString &name, - wxUint32 flags, wxUint32 mask) + CommandFlag flags, CommandMask mask) { CommandListEntry *entry = mCommandNameHash[name]; if (entry) { @@ -1427,7 +1428,7 @@ void CommandManager::SetCommandFlags(const wxString &name, } void CommandManager::SetCommandFlags(const wxChar **names, - wxUint32 flags, wxUint32 mask) + CommandFlag flags, CommandMask mask) { const wxChar **nptr = names; while(*nptr) { @@ -1436,7 +1437,7 @@ void CommandManager::SetCommandFlags(const wxChar **names, } } -void CommandManager::SetCommandFlags(wxUint32 flags, wxUint32 mask, ...) +void CommandManager::SetCommandFlags(CommandFlag flags, CommandMask mask, ...) { va_list list; va_start(list, mask); diff --git a/src/commands/CommandManager.h b/src/commands/CommandManager.h index 80c6a178a..a2b76120d 100644 --- a/src/commands/CommandManager.h +++ b/src/commands/CommandManager.h @@ -66,8 +66,8 @@ struct CommandListEntry bool skipKeydown; bool wantKeyup; bool isGlobal; - wxUint32 flags; - wxUint32 mask; + CommandFlag flags; + CommandMask mask; }; using MenuBarList = std::vector < MenuBarListEntry >; @@ -132,21 +132,21 @@ class AUDACITY_DLL_API CommandManager final : public XMLTagHandler const wxChar *label, const CommandFunctorPointer &callback, int checkmark, - unsigned int flags, - unsigned int mask); + CommandFlag flags, + CommandMask mask); void AddItem(const wxChar *name, const wxChar *label, const CommandFunctorPointer &callback, - unsigned int flags = NoFlagsSpecifed, - unsigned int mask = NoFlagsSpecifed); + CommandFlag flags = NoFlagsSpecifed, + CommandMask mask = NoFlagsSpecifed); void AddItem(const wxChar *name, const wxChar *label_in, const CommandFunctorPointer &callback, const wxChar *accel, - unsigned int flags = NoFlagsSpecifed, - unsigned int mask = NoFlagsSpecifed, + CommandFlag flags = NoFlagsSpecifed, + CommandMask mask = NoFlagsSpecifed, int checkmark = -1); void AddSeparator(); @@ -156,15 +156,15 @@ class AUDACITY_DLL_API CommandManager final : public XMLTagHandler void AddCommand(const wxChar *name, const wxChar *label, const CommandFunctorPointer &callback, - unsigned int flags = NoFlagsSpecifed, - unsigned int mask = NoFlagsSpecifed); + CommandFlag flags = NoFlagsSpecifed, + CommandMask mask = NoFlagsSpecifed); void AddCommand(const wxChar *name, const wxChar *label, const CommandFunctorPointer &callback, const wxChar *accel, - unsigned int flags = NoFlagsSpecifed, - unsigned int mask = NoFlagsSpecifed); + CommandFlag flags = NoFlagsSpecifed, + CommandMask mask = NoFlagsSpecifed); void AddGlobalCommand(const wxChar *name, const wxChar *label, @@ -175,21 +175,21 @@ class AUDACITY_DLL_API CommandManager final : public XMLTagHandler // // For NEW items/commands - void SetDefaultFlags(wxUint32 flags, wxUint32 mask); - wxUint32 GetDefaultFlags() const { return mDefaultFlags; } - wxUint32 GetDefaultMask() const { return mDefaultMask; } + void SetDefaultFlags(CommandFlag flags, CommandMask mask); + CommandFlag GetDefaultFlags() const { return mDefaultFlags; } + CommandMask GetDefaultMask() const { return mDefaultMask; } - void SetCommandFlags(const wxString &name, wxUint32 flags, wxUint32 mask); + void SetCommandFlags(const wxString &name, CommandFlag flags, CommandMask mask); void SetCommandFlags(const wxChar **names, - wxUint32 flags, wxUint32 mask); + CommandFlag flags, CommandMask mask); // Pass multiple command names as const wxChar *, terminated by NULL - void SetCommandFlags(wxUint32 flags, wxUint32 mask, ...); + void SetCommandFlags(CommandFlag flags, CommandMask mask, ...); // // Modifying menus // - void EnableUsingFlags(wxUint32 flags, wxUint32 mask); + void EnableUsingFlags(CommandFlag flags, CommandMask mask); void Enable(const wxString &name, bool enabled); void Check(const wxString &name, bool checked); void Modify(const wxString &name, const wxString &newLabel); @@ -208,8 +208,8 @@ class AUDACITY_DLL_API CommandManager final : public XMLTagHandler // "permit" allows filtering even if the active window isn't a child of the project. // Lyrics and MixerTrackCluster classes use it. bool FilterKeyEvent(AudacityProject *project, const wxKeyEvent & evt, bool permit = false); - bool HandleMenuID(int id, wxUint32 flags, wxUint32 mask); - bool HandleTextualCommand(wxString & Str, wxUint32 flags, wxUint32 mask); + bool HandleMenuID(int id, CommandFlag flags, CommandMask mask); + bool HandleTextualCommand(wxString & Str, CommandFlag flags, CommandMask mask); // // Accessing @@ -271,8 +271,8 @@ protected: // Executing commands // - bool HandleCommandEntry(const CommandListEntry * entry, wxUint32 flags, wxUint32 mask, const wxEvent * evt = NULL); - void TellUserWhyDisallowed(wxUint32 flagsGot, wxUint32 flagsRequired); + bool HandleCommandEntry(const CommandListEntry * entry, CommandFlag flags, CommandMask mask, const wxEvent * evt = NULL); + void TellUserWhyDisallowed(CommandFlag flagsGot, CommandFlag flagsRequired); // // Modifying @@ -313,8 +313,8 @@ private: wxString mCurrentMenuName; wxMenu * mCurrentMenu; - wxUint32 mDefaultFlags; - wxUint32 mDefaultMask; + CommandFlag mDefaultFlags; + CommandMask mDefaultMask; }; #endif diff --git a/src/commands/ExecMenuCommand.cpp b/src/commands/ExecMenuCommand.cpp index a4c276545..1514188b7 100644 --- a/src/commands/ExecMenuCommand.cpp +++ b/src/commands/ExecMenuCommand.cpp @@ -38,7 +38,7 @@ bool ExecMenuCommand::Apply(CommandExecutionContext context) CommandManager *cmdManager = context.GetProject()->GetCommandManager(); wxString cmdName = GetString(wxT("CommandName")); - wxUint32 cmdFlags = 0; // TODO ? - wxUint32 cmdMask = 0; + auto cmdFlags = AlwaysEnabledFlag; // TODO ? + auto cmdMask = AlwaysEnabledFlag; return cmdManager->HandleTextualCommand(cmdName, cmdFlags, cmdMask); } diff --git a/src/effects/Effect.cpp b/src/effects/Effect.cpp index 45305a111..ac08b1b54 100644 --- a/src/effects/Effect.cpp +++ b/src/effects/Effect.cpp @@ -3219,7 +3219,7 @@ void EffectUIHost::OnApply(wxCommandEvent & evt) // Honor the "select all if none" preference...a little hackish, but whatcha gonna do... if (!mIsBatch && mEffect->GetType() != EffectTypeGenerate && mProject->mViewInfo.selectedRegion.isPoint()) { - wxUint32 flags = 0; + auto flags = AlwaysEnabledFlag; bool allowed = mProject->TryToMakeActionAllowed(flags, WaveTracksSelectedFlag | TimeSelectedFlag, WaveTracksSelectedFlag | TimeSelectedFlag);