1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-08-02 17:09:26 +02:00

Separate the flags mentioned in TellUserWhyDisallowed

This commit is contained in:
Paul Licameli 2019-06-14 10:14:56 -04:00
parent f9b0281b47
commit b09a1af564
2 changed files with 57 additions and 54 deletions

View File

@ -454,28 +454,68 @@ const ReservedCommandFlag
return !AudioIOBusyPred( project );
},
CommandFlagOptions{}.QuickTest()
},
}, //lll
StereoRequiredFlag{
[](const AudacityProject &project){
// True iff at least one stereo track is selected, i.e., at least
// one right channel is selected.
// TODO: more-than-two-channels
auto range = TrackList::Get( project ).Selected<const WaveTrack>()
- &Track::IsLeader;
return !range.empty();
}
}, //lda
TimeSelectedFlag{
TimeSelectedPred
},
TracksSelectedFlag{
TracksSelectedPred
CutCopyAvailableFlag{
[](const AudacityProject &project){
auto range = TrackList::Get( project ).Any<const LabelTrack>()
+ &LabelTrack::IsTextSelected;
if ( !range.empty() )
return true;
if (
!AudioIOBusyPred( project )
&&
TimeSelectedPred( project )
&&
TracksSelectedPred( project )
)
return true;
return false;
}
},
WaveTracksSelectedFlag{
[](const AudacityProject &project){
return !TrackList::Get( project ).Selected<const WaveTrack>().empty();
}
},
TracksExistFlag{
[](const AudacityProject &project){
return !TrackList::Get( project ).Any().empty();
}
},
TracksSelectedFlag{
TracksSelectedPred
},
TrackPanelHasFocus{
[](const AudacityProject &project){
for (auto w = wxWindow::FindFocus(); w; w = w->GetParent()) {
if (dynamic_cast<const NonKeystrokeInterceptingWindow*>(w))
return true;
}
return false;
}
}; //lll
const ReservedCommandFlag
LabelTracksExistFlag{
[](const AudacityProject &project){
return !TrackList::Get( project ).Any<const LabelTrack>().empty();
}
},
WaveTracksSelectedFlag{
[](const AudacityProject &project){
return !TrackList::Get( project ).Selected<const WaveTrack>().empty();
}
},
UnsavedChangesFlag{
[](const AudacityProject &project){
auto &undoManager = UndoManager::Get( project );
@ -519,25 +559,6 @@ const ReservedCommandFlag
;
}
},
StereoRequiredFlag{
[](const AudacityProject &project){
// True iff at least one stereo track is selected, i.e., at least
// one right channel is selected.
// TODO: more-than-two-channels
auto range = TrackList::Get( project ).Selected<const WaveTrack>()
- &Track::IsLeader;
return !range.empty();
}
}, //lda
TrackPanelHasFocus{
[](const AudacityProject &project){
for (auto w = wxWindow::FindFocus(); w; w = w->GetParent()) {
if (dynamic_cast<const NonKeystrokeInterceptingWindow*>(w))
return true;
}
return false;
}
}, //lll
LabelsSelectedFlag{
[](const AudacityProject &project){
// At least one label track selected, having at least one label
@ -575,25 +596,6 @@ const ReservedCommandFlag
return !playRegion.Locked() && !playRegion.Empty();
}
}, //msmeyer
CutCopyAvailableFlag{
[](const AudacityProject &project){
auto range = TrackList::Get( project ).Any<const LabelTrack>()
+ &LabelTrack::IsTextSelected;
if ( !range.empty() )
return true;
if (
!AudioIOBusyPred( project )
&&
TimeSelectedPred( project )
&&
TracksSelectedPred( project )
)
return true;
return false;
}
},
WaveTracksExistFlag{
[](const AudacityProject &project){
return !TrackList::Get( project ).Any<const WaveTrack>().empty();

View File

@ -59,25 +59,26 @@ public:
// ReservedCommandFlag values
extern const ReservedCommandFlag
AudioIONotBusyFlag,
AudioIOBusyFlag, //lll
StereoRequiredFlag, //lda
TimeSelectedFlag, // This is equivalent to check if there is a valid selection, so it's used for Zoom to Selection too
TracksSelectedFlag,
TracksExistFlag,
LabelTracksExistFlag,
CutCopyAvailableFlag,
WaveTracksSelectedFlag,
TracksExistFlag,
TracksSelectedFlag,
TrackPanelHasFocus, //lll
AudioIONotBusyFlag,
LabelTracksExistFlag,
UnsavedChangesFlag,
HasLastEffectFlag,
UndoAvailableFlag,
RedoAvailableFlag,
ZoomInAvailableFlag,
ZoomOutAvailableFlag,
StereoRequiredFlag, //lda
TrackPanelHasFocus, //lll
LabelsSelectedFlag,
AudioIOBusyFlag, //lll
PlayRegionLockedFlag, //msmeyer
PlayRegionNotLockedFlag, //msmeyer
CutCopyAvailableFlag,
WaveTracksExistFlag,
NoteTracksExistFlag, //gsw
NoteTracksSelectedFlag, //gsw