mirror of
https://github.com/cookiengineer/audacity
synced 2025-06-15 23:59:37 +02:00
Label context menu can bring up the edit dialog
This commit is contained in:
parent
28c31903e9
commit
53e30e5533
@ -88,6 +88,8 @@ END_EVENT_TABLE()
|
|||||||
LabelDialog::LabelDialog(wxWindow *parent,
|
LabelDialog::LabelDialog(wxWindow *parent,
|
||||||
TrackFactory &factory,
|
TrackFactory &factory,
|
||||||
TrackList *tracks,
|
TrackList *tracks,
|
||||||
|
LabelTrack *selectedTrack,
|
||||||
|
int index,
|
||||||
ViewInfo &viewinfo,
|
ViewInfo &viewinfo,
|
||||||
double rate,
|
double rate,
|
||||||
const wxString & format)
|
const wxString & format)
|
||||||
@ -98,8 +100,10 @@ LabelDialog::LabelDialog(wxWindow *parent,
|
|||||||
wxSize(800, 600),
|
wxSize(800, 600),
|
||||||
wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER),
|
wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER),
|
||||||
mFactory(factory),
|
mFactory(factory),
|
||||||
mTracks(tracks),
|
mTracks(tracks)
|
||||||
mViewInfo(&viewinfo),
|
, mSelectedTrack(selectedTrack)
|
||||||
|
, mIndex(index)
|
||||||
|
, mViewInfo(&viewinfo),
|
||||||
mRate(rate),
|
mRate(rate),
|
||||||
mFormat(format)
|
mFormat(format)
|
||||||
{
|
{
|
||||||
@ -302,9 +306,10 @@ bool LabelDialog::TransferDataFromWindow()
|
|||||||
Track *t;
|
Track *t;
|
||||||
int tndx = 0;
|
int tndx = 0;
|
||||||
|
|
||||||
// Clear all label tracks of labels
|
// Clear label tracks of labels
|
||||||
for (t = iter.First(); t; t = iter.Next()) {
|
for (t = iter.First(); t; t = iter.Next()) {
|
||||||
if (t->GetKind() == Track::Label) {
|
if (t->GetKind() == Track::Label &&
|
||||||
|
(!mSelectedTrack || mSelectedTrack == t)) {
|
||||||
LabelTrack *lt = (LabelTrack *)t;
|
LabelTrack *lt = (LabelTrack *)t;
|
||||||
tndx++;
|
tndx++;
|
||||||
|
|
||||||
@ -343,8 +348,8 @@ bool LabelDialog::TransferDataFromWindow()
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
// Add the label to it
|
// Add the label to it
|
||||||
((LabelTrack *) t)->AddLabel(rd.selectedRegion, rd.title);
|
static_cast<LabelTrack *>(t)->AddLabel(rd.selectedRegion, rd.title);
|
||||||
((LabelTrack *) t)->Unselect();
|
static_cast<LabelTrack *>(t)->Unselect();
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -380,9 +385,8 @@ void LabelDialog::FindAllLabels()
|
|||||||
|
|
||||||
// Add labels from all label tracks
|
// Add labels from all label tracks
|
||||||
for (t = iter.First(); t; t = iter.Next()) {
|
for (t = iter.First(); t; t = iter.Next()) {
|
||||||
if (t->GetKind() == Track::Label) {
|
if (t->GetKind() == Track::Label)
|
||||||
AddLabels((LabelTrack *) t);
|
AddLabels(static_cast<LabelTrack *>(t));
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
FindInitialRow();
|
FindInitialRow();
|
||||||
@ -402,12 +406,15 @@ void LabelDialog::AddLabels(LabelTrack *t)
|
|||||||
// Add a NEW track name
|
// Add a NEW track name
|
||||||
TrackName(tndx, t->GetName());
|
TrackName(tndx, t->GetName());
|
||||||
|
|
||||||
// Add each label in the track
|
// If editor was invoked for one label, add that one only, else add all.
|
||||||
|
if (!mSelectedTrack || mSelectedTrack == t) {
|
||||||
for (i = 0; i < t->GetNumLabels(); i++) {
|
for (i = 0; i < t->GetNumLabels(); i++) {
|
||||||
const LabelStruct *ls = t->GetLabel(i);
|
const LabelStruct *ls = t->GetLabel(i);
|
||||||
|
|
||||||
|
if (mIndex < 0 || mIndex == i)
|
||||||
mData.push_back(RowData(tndx, ls->title, ls->selectedRegion));
|
mData.push_back(RowData(tndx, ls->title, ls->selectedRegion));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void LabelDialog::FindInitialRow()
|
void LabelDialog::FindInitialRow()
|
||||||
@ -569,7 +576,7 @@ void LabelDialog::OnImport(wxCommandEvent & WXUNUSED(event))
|
|||||||
auto lt = mFactory.NewLabelTrack();
|
auto lt = mFactory.NewLabelTrack();
|
||||||
lt->Import(f);
|
lt->Import(f);
|
||||||
|
|
||||||
// Add the labesls to our collection
|
// Add the labels to our collection
|
||||||
AddLabels(lt.get());
|
AddLabels(lt.get());
|
||||||
|
|
||||||
// Done with the temporary track
|
// Done with the temporary track
|
||||||
|
@ -37,6 +37,14 @@ class LabelDialog final : public wxDialog
|
|||||||
LabelDialog(wxWindow *parent,
|
LabelDialog(wxWindow *parent,
|
||||||
TrackFactory &factory,
|
TrackFactory &factory,
|
||||||
TrackList *tracks,
|
TrackList *tracks,
|
||||||
|
|
||||||
|
// if NULL edit all tracks, else this one only:
|
||||||
|
LabelTrack *selectedTrack,
|
||||||
|
|
||||||
|
// This is nonnegative only if selectedTrack is not NULL
|
||||||
|
// and is the unique label to edit
|
||||||
|
int index,
|
||||||
|
|
||||||
ViewInfo &viewinfo,
|
ViewInfo &viewinfo,
|
||||||
double rate,
|
double rate,
|
||||||
const wxString & format);
|
const wxString & format);
|
||||||
@ -78,6 +86,8 @@ class LabelDialog final : public wxDialog
|
|||||||
|
|
||||||
TrackFactory &mFactory;
|
TrackFactory &mFactory;
|
||||||
TrackList *mTracks;
|
TrackList *mTracks;
|
||||||
|
LabelTrack *mSelectedTrack {};
|
||||||
|
int mIndex { -1 };
|
||||||
ViewInfo *mViewInfo;
|
ViewInfo *mViewInfo;
|
||||||
wxArrayString mTrackNames;
|
wxArrayString mTrackNames;
|
||||||
double mRate;
|
double mRate;
|
||||||
|
@ -69,6 +69,7 @@ enum
|
|||||||
OnCopySelectedTextID,
|
OnCopySelectedTextID,
|
||||||
OnPasteSelectedTextID,
|
OnPasteSelectedTextID,
|
||||||
OnDeleteSelectedLabelID,
|
OnDeleteSelectedLabelID,
|
||||||
|
OnEditSelectedLabelID,
|
||||||
};
|
};
|
||||||
|
|
||||||
wxFont LabelTrack::msFont;
|
wxFont LabelTrack::msFont;
|
||||||
@ -2029,11 +2030,13 @@ void LabelTrack::ShowContextMenu()
|
|||||||
menu.Append(OnCopySelectedTextID, _("&Copy"));
|
menu.Append(OnCopySelectedTextID, _("&Copy"));
|
||||||
menu.Append(OnPasteSelectedTextID, _("&Paste"));
|
menu.Append(OnPasteSelectedTextID, _("&Paste"));
|
||||||
menu.Append(OnDeleteSelectedLabelID, _("&Delete Label"));
|
menu.Append(OnDeleteSelectedLabelID, _("&Delete Label"));
|
||||||
|
menu.Append(OnEditSelectedLabelID, _("&Edit..."));
|
||||||
|
|
||||||
menu.Enable(OnCutSelectedTextID, IsTextSelected());
|
menu.Enable(OnCutSelectedTextID, IsTextSelected());
|
||||||
menu.Enable(OnCopySelectedTextID, IsTextSelected());
|
menu.Enable(OnCopySelectedTextID, IsTextSelected());
|
||||||
menu.Enable(OnPasteSelectedTextID, IsTextClipSupported());
|
menu.Enable(OnPasteSelectedTextID, IsTextClipSupported());
|
||||||
menu.Enable(OnDeleteSelectedLabelID, true);
|
menu.Enable(OnDeleteSelectedLabelID, true);
|
||||||
|
menu.Enable(OnEditSelectedLabelID, true);
|
||||||
|
|
||||||
const LabelStruct *ls = GetLabel(mSelIndex);
|
const LabelStruct *ls = GetLabel(mSelIndex);
|
||||||
|
|
||||||
@ -2094,7 +2097,7 @@ void LabelTrack::OnContextMenu(wxCommandEvent & evt)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
/// DELETE selected label
|
/// DELETE selected label
|
||||||
case OnDeleteSelectedLabelID:
|
case OnDeleteSelectedLabelID: {
|
||||||
int ndx = GetLabelIndex(p->GetSel0(), p->GetSel1());
|
int ndx = GetLabelIndex(p->GetSel0(), p->GetSel1());
|
||||||
if (ndx != -1)
|
if (ndx != -1)
|
||||||
{
|
{
|
||||||
@ -2103,6 +2106,14 @@ void LabelTrack::OnContextMenu(wxCommandEvent & evt)
|
|||||||
_("Label Edit"),
|
_("Label Edit"),
|
||||||
UndoPush::CONSOLIDATE);
|
UndoPush::CONSOLIDATE);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case OnEditSelectedLabelID: {
|
||||||
|
int ndx = GetLabelIndex(p->GetSel0(), p->GetSel1());
|
||||||
|
if (ndx != -1)
|
||||||
|
p->DoEditLabels(this, ndx);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6551,11 +6551,14 @@ void AudacityProject::OnAddLabelPlaying()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void AudacityProject::OnEditLabels()
|
void AudacityProject::DoEditLabels(LabelTrack *lt, int index)
|
||||||
{
|
{
|
||||||
wxString format = GetSelectionFormat();
|
wxString format = GetSelectionFormat();
|
||||||
|
|
||||||
LabelDialog dlg(this, *GetTrackFactory(), mTracks, mViewInfo, mRate, format);
|
LabelDialog dlg(this, *GetTrackFactory(), mTracks,
|
||||||
|
lt, index,
|
||||||
|
mViewInfo, mRate,
|
||||||
|
format);
|
||||||
|
|
||||||
if (dlg.ShowModal() == wxID_OK) {
|
if (dlg.ShowModal() == wxID_OK) {
|
||||||
PushState(_("Edited labels"), _("Label"));
|
PushState(_("Edited labels"), _("Label"));
|
||||||
@ -6563,6 +6566,11 @@ void AudacityProject::OnEditLabels()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AudacityProject::OnEditLabels()
|
||||||
|
{
|
||||||
|
DoEditLabels();
|
||||||
|
}
|
||||||
|
|
||||||
void AudacityProject::OnApplyChain()
|
void AudacityProject::OnApplyChain()
|
||||||
{
|
{
|
||||||
BatchProcessDialog dlg(this);
|
BatchProcessDialog dlg(this);
|
||||||
|
@ -365,6 +365,7 @@ void OnRemoveTracks();
|
|||||||
void OnSyncLock();
|
void OnSyncLock();
|
||||||
void OnAddLabel();
|
void OnAddLabel();
|
||||||
void OnAddLabelPlaying();
|
void OnAddLabelPlaying();
|
||||||
|
void DoEditLabels(LabelTrack *lt = nullptr, int index = -1);
|
||||||
void OnEditLabels();
|
void OnEditLabels();
|
||||||
|
|
||||||
// Effect Menu
|
// Effect Menu
|
||||||
|
Loading…
x
Reference in New Issue
Block a user