CommonCommandFlags does not depend on LabelTrack

This commit is contained in:
Paul Licameli 2019-07-23 21:06:16 -04:00
parent 9093364b8c
commit 873d067e74
3 changed files with 28 additions and 29 deletions

View File

@ -16,7 +16,6 @@ Paul Licameli split from Menus.cpp
#include <wx/frame.h>
#include "AudioIO.h"
#include "LabelTrack.h"
#include "Menus.h"
#include "NoteTrack.h"
#include "Project.h"
@ -276,29 +275,6 @@ const ReservedCommandFlag&
;
}
}; return flag; }
const ReservedCommandFlag&
LabelsSelectedFlag() { static ReservedCommandFlag flag{
[](const AudacityProject &project){
// At least one label track selected, having at least one label
// completely within the time selection.
const auto &selectedRegion = ViewInfo::Get( project ).selectedRegion;
const auto &test = [&]( const LabelTrack *pTrack ){
const auto &labels = pTrack->GetLabels();
return std::any_of( labels.begin(), labels.end(),
[&](const LabelStruct &label){
return
label.getT0() >= selectedRegion.t0()
&&
label.getT1() <= selectedRegion.t1()
;
}
);
};
auto range = TrackList::Get( project ).Selected<const LabelTrack>()
+ test;
return !range.empty();
}
}; return flag; }
const ReservedCommandFlag&
PlayRegionLockedFlag() { static ReservedCommandFlag flag{
[](const AudacityProject &project){

View File

@ -43,7 +43,6 @@ extern AUDACITY_DLL_API const ReservedCommandFlag
&RedoAvailableFlag(),
&ZoomInAvailableFlag(),
&ZoomOutAvailableFlag(),
&LabelsSelectedFlag(),
&PlayRegionLockedFlag(), //msmeyer
&PlayRegionNotLockedFlag(), //msmeyer
&WaveTracksExistFlag(),

View File

@ -18,6 +18,30 @@
// private helper classes and functions
namespace {
const ReservedCommandFlag
LabelsSelectedFlag{
[](const AudacityProject &project){
// At least one label track selected, having at least one label
// completely within the time selection.
const auto &selectedRegion = ViewInfo::Get( project ).selectedRegion;
const auto &test = [&]( const LabelTrack *pTrack ){
const auto &labels = pTrack->GetLabels();
return std::any_of( labels.begin(), labels.end(),
[&](const LabelStruct &label){
return
label.getT0() >= selectedRegion.t0()
&&
label.getT1() <= selectedRegion.t1()
;
}
);
};
auto range = TrackList::Get( project ).Selected<const LabelTrack>()
+ test;
return !range.empty();
}
};
//Adds label and returns index of label in labeltrack.
int DoAddLabel(
AudacityProject &project, const SelectedRegion &region,
@ -571,7 +595,7 @@ MenuTable::BaseItemSharedPtr LabelEditMenus()
static const auto NotBusyLabelsAndWaveFlags =
AudioIONotBusyFlag() |
LabelsSelectedFlag() | WaveTracksExistFlag() | TimeSelectedFlag();
LabelsSelectedFlag | WaveTracksExistFlag() | TimeSelectedFlag();
// Returns TWO menus.
@ -612,11 +636,11 @@ MenuTable::BaseItemSharedPtr LabelEditMenus()
Menu( wxT("Labeled"), XO("La&beled Audio"),
/* i18n-hint: (verb)*/
Command( wxT("CutLabels"), XXO("&Cut"), FN(OnCutLabels),
AudioIONotBusyFlag() | LabelsSelectedFlag() | WaveTracksExistFlag() |
AudioIONotBusyFlag() | LabelsSelectedFlag | WaveTracksExistFlag() |
TimeSelectedFlag() | IsNotSyncLockedFlag(),
Options{ wxT("Alt+X"), XO("Label Cut") } ),
Command( wxT("DeleteLabels"), XXO("&Delete"), FN(OnDeleteLabels),
AudioIONotBusyFlag() | LabelsSelectedFlag() | WaveTracksExistFlag() |
AudioIONotBusyFlag() | LabelsSelectedFlag | WaveTracksExistFlag() |
TimeSelectedFlag() | IsNotSyncLockedFlag(),
Options{ wxT("Alt+K"), XO("Label Delete") } ),
@ -644,7 +668,7 @@ MenuTable::BaseItemSharedPtr LabelEditMenus()
/* i18n-hint: (verb)*/
Command( wxT("SplitLabels"), XXO("Spli&t"), FN(OnSplitLabels),
AudioIONotBusyFlag() | LabelsSelectedFlag() | WaveTracksExistFlag(),
AudioIONotBusyFlag() | LabelsSelectedFlag | WaveTracksExistFlag(),
Options{ wxT("Alt+I"), XO("Label Split") } ),
/* i18n-hint: (verb)*/
Command( wxT("JoinLabels"), XXO("&Join"), FN(OnJoinLabels),