audacia/src/LabelDialog.h

119 lines
3.1 KiB
C
Raw Normal View History

/**********************************************************************
Audacity: A Digital Audio Editor
LabelDialog.h
Dominic Mazzoni
**********************************************************************/
#ifndef __AUDACITY_LABELDIALOG__
#define __AUDACITY_LABELDIALOG__
2016-02-04 02:43:49 +00:00
#include <vector>
#include <wx/defs.h>
#include "widgets/wxPanelWrapper.h" // to inherit
2019-03-31 19:51:54 +00:00
#include "audacity/ComponentInterface.h" // member variable
2018-11-12 00:47:44 +00:00
class wxArrayString;
class wxGridEvent;
class AudacityProject;
2019-03-31 19:51:54 +00:00
class ChoiceEditor;
class Grid;
class NumericEditor;
class TrackList;
class RowData;
class EmptyLabelRenderer;
class LabelTrack;
class ViewInfo;
class ShuttleGui;
2016-02-04 02:43:49 +00:00
typedef std::vector<RowData> RowDataArray;
class LabelDialog final : public wxDialogWrapper
{
public:
LabelDialog(wxWindow *parent,
AudacityProject &project,
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,
double rate,
const NumericFormatSymbol & format,
const NumericFormatSymbol &freqFormat);
~LabelDialog();
bool Show(bool show = true) override;
private:
void Populate();
void PopulateOrExchange( ShuttleGui & S );
void PopulateLabels();
void OnHelp(wxCommandEvent & event);
ManualPageID GetHelpPageName() {return "Labels_Editor";}
2017-10-01 17:28:04 +00:00
bool TransferDataToWindow() override;
bool TransferDataFromWindow() override;
bool Validate() override;
void FindAllLabels();
void AddLabels(const LabelTrack *t);
void FindInitialRow();
wxString TrackName(int & index, const wxString &dflt = _("Label Track"));
void OnUpdate(wxCommandEvent &event);
void OnFreqUpdate(wxCommandEvent &event);
void OnInsert(wxCommandEvent &event);
void OnRemove(wxCommandEvent &event);
void OnImport(wxCommandEvent &event);
void OnExport(wxCommandEvent &event);
void OnSelectCell(wxGridEvent &event);
void OnCellChange(wxGridEvent &event);
void OnChangeTrack(wxGridEvent &event, int row, RowData *rd);
void OnChangeLabel(wxGridEvent &event, int row, RowData *rd);
void OnChangeStime(wxGridEvent &event, int row, RowData *rd);
void OnChangeEtime(wxGridEvent &event, int row, RowData *rd);
void OnChangeLfreq(wxGridEvent &event, int row, RowData *rd);
void OnChangeHfreq(wxGridEvent &event, int row, RowData *rd);
void OnOK(wxCommandEvent &event);
void OnCancel(wxCommandEvent &event);
void ReadSize();
void WriteSize();
private:
AudacityProject &mProject;
Grid *mGrid;
ChoiceEditor *mChoiceEditor;
NumericEditor *mTimeEditor;
NumericEditor *mFrequencyEditor;
RowDataArray mData;
2014-06-03 20:30:19 +00:00
TrackList *mTracks;
LabelTrack *mSelectedTrack {};
int mIndex { -1 };
ViewInfo *mViewInfo;
wxArrayString mTrackNames;
double mRate;
NumericFormatSymbol mFormat, mFreqFormat;
int mInitialRow;
2016-09-18 14:26:29 +00:00
DECLARE_EVENT_TABLE()
};
#endif