1 /********************************************************************** 2 3 Audacity: A Digital Audio Editor 4 5 LabelDialog.h 6 7 Dominic Mazzoni 8 9 **********************************************************************/ 10 11 #ifndef __AUDACITY_LABELDIALOG__ 12 #define __AUDACITY_LABELDIALOG__ 13 14 #include <vector> 15 #include <wx/defs.h> 16 17 #include "widgets/wxPanelWrapper.h" // to inherit 18 #include "ComponentInterface.h" // member variable 19 20 class wxArrayString; 21 class wxGridEvent; 22 class AudacityProject; 23 class ChoiceEditor; 24 class Grid; 25 class NumericEditor; 26 class TrackList; 27 class RowData; 28 class EmptyLabelRenderer; 29 class LabelTrack; 30 class ViewInfo; 31 class ShuttleGui; 32 33 typedef std::vector<RowData> RowDataArray; 34 35 class LabelDialog final : public wxDialogWrapper 36 { 37 public: 38 39 LabelDialog(wxWindow *parent, 40 AudacityProject &project, 41 TrackList *tracks, 42 43 // if NULL edit all tracks, else this one only: 44 LabelTrack *selectedTrack, 45 46 // This is nonnegative only if selectedTrack is not NULL 47 // and is the unique label to edit 48 int index, 49 50 ViewInfo &viewinfo, 51 double rate, 52 const NumericFormatSymbol & format, 53 const NumericFormatSymbol &freqFormat); 54 ~LabelDialog(); 55 56 bool Show(bool show = true) override; 57 58 private: 59 60 void Populate(); 61 void PopulateOrExchange( ShuttleGui & S ); 62 void PopulateLabels(); 63 void OnHelp(wxCommandEvent & event); GetHelpPageName()64 ManualPageID GetHelpPageName() {return "Labels_Editor";} 65 66 bool TransferDataToWindow() override; 67 bool TransferDataFromWindow() override; 68 bool Validate() override; 69 void FindAllLabels(); 70 void AddLabels(const LabelTrack *t); 71 void FindInitialRow(); 72 wxString TrackName(int & index, const wxString &dflt = _("Label Track")); 73 74 void OnUpdate(wxCommandEvent &event); 75 void OnFreqUpdate(wxCommandEvent &event); 76 void OnInsert(wxCommandEvent &event); 77 void OnRemove(wxCommandEvent &event); 78 void OnImport(wxCommandEvent &event); 79 void OnExport(wxCommandEvent &event); 80 void OnSelectCell(wxGridEvent &event); 81 void OnCellChange(wxGridEvent &event); 82 void OnChangeTrack(wxGridEvent &event, int row, RowData *rd); 83 void OnChangeLabel(wxGridEvent &event, int row, RowData *rd); 84 void OnChangeStime(wxGridEvent &event, int row, RowData *rd); 85 void OnChangeEtime(wxGridEvent &event, int row, RowData *rd); 86 void OnChangeLfreq(wxGridEvent &event, int row, RowData *rd); 87 void OnChangeHfreq(wxGridEvent &event, int row, RowData *rd); 88 void OnOK(wxCommandEvent &event); 89 void OnCancel(wxCommandEvent &event); 90 91 void ReadSize(); 92 void WriteSize(); 93 94 private: 95 96 AudacityProject &mProject; 97 98 Grid *mGrid; 99 ChoiceEditor *mChoiceEditor; 100 NumericEditor *mTimeEditor; 101 NumericEditor *mFrequencyEditor; 102 103 RowDataArray mData; 104 105 TrackList *mTracks; 106 LabelTrack *mSelectedTrack {}; 107 int mIndex { -1 }; 108 ViewInfo *mViewInfo; 109 wxArrayString mTrackNames; 110 double mRate; 111 NumericFormatSymbol mFormat, mFreqFormat; 112 113 int mInitialRow; 114 115 DECLARE_EVENT_TABLE() 116 }; 117 118 #endif 119