From 8a6edf3623662b6cb3eb90e794c34e44c283c33d Mon Sep 17 00:00:00 2001 From: Steve Daulton Date: Sat, 16 Jan 2016 14:44:45 +0000 Subject: [PATCH] Add custom track name defaults to preferences --- src/WaveTrack.cpp | 2 +- src/prefs/GUIPrefs.cpp | 3 -- src/prefs/RecordingPrefs.cpp | 47 ++++++++++++++++++++++++++++ src/prefs/RecordingPrefs.h | 8 +++++ src/prefs/TracksPrefs.cpp | 14 ++++++--- src/toolbars/ControlToolBar.cpp | 54 +++++++++++++++++++++++++++++++++ 6 files changed, 120 insertions(+), 8 deletions(-) diff --git a/src/WaveTrack.cpp b/src/WaveTrack.cpp index 62bfc2cc4..b6d8dabbf 100644 --- a/src/WaveTrack.cpp +++ b/src/WaveTrack.cpp @@ -103,7 +103,7 @@ WaveTrack::WaveTrack(DirManager *projDirManager, sampleFormat format, double rat mRate = (int) rate; mGain = 1.0; mPan = 0.0; - SetDefaultName(_("Audio Track")); + SetDefaultName(gPrefs->Read(wxT("/GUI/TrackNames/DefaultTrackName"), _("Audio Track"))); SetName(GetDefaultName()); mDisplayMin = -1.0; mDisplayMax = 1.0; diff --git a/src/prefs/GUIPrefs.cpp b/src/prefs/GUIPrefs.cpp index d87275282..9842b7c7b 100644 --- a/src/prefs/GUIPrefs.cpp +++ b/src/prefs/GUIPrefs.cpp @@ -146,9 +146,6 @@ void GUIPrefs::PopulateOrExchange(ShuttleGui & S) S.TieCheckBox(_("&Beep on completion of longer activities"), wxT("/GUI/BeepOnCompletion"), false); - S.TieCheckBox(_("&Show track name in waveform display"), - wxT("/GUI/ShowTrackNameInWaveform"), - false); S.TieCheckBox(_("Re&tain labels if selection snaps to a label edge"), wxT("/GUI/RetainLabels"), false); diff --git a/src/prefs/RecordingPrefs.cpp b/src/prefs/RecordingPrefs.cpp index 8e4264ee2..c8b8d87ca 100644 --- a/src/prefs/RecordingPrefs.cpp +++ b/src/prefs/RecordingPrefs.cpp @@ -34,9 +34,19 @@ using std::min; +enum { + UseCustomTrackNameID = 1000, +}; + +BEGIN_EVENT_TABLE(RecordingPrefs, PrefsPanel) + EVT_CHECKBOX(UseCustomTrackNameID, RecordingPrefs::OnToggleCustomName) +END_EVENT_TABLE() + RecordingPrefs::RecordingPrefs(wxWindow * parent) : PrefsPanel(parent, _("Recording")) { + gPrefs->Read(wxT("/GUI/TrackNames/RecordingNameCustom"), &mUseCustomTrackName, false); + mOldNameChoice = mUseCustomTrackName; Populate(); } @@ -125,6 +135,37 @@ void RecordingPrefs::PopulateOrExchange(ShuttleGui & S) } S.EndStatic(); + S.StartStatic(_("Naming newly recorded tracks")); + { + S.StartMultiColumn(3); + { + S.Id(UseCustomTrackNameID).TieCheckBox(_("Use Custom Track &Name"), + wxT("/GUI/TrackNames/RecordingNameCustom"), + mUseCustomTrackName ? true : false); + + mToggleCustomName = S.TieTextBox(wxT(""), + wxT("/GUI/TrackNames/RecodingTrackName"), + _("Recorded_Audio"), + 30); + mToggleCustomName->SetName(_("Custom name text")); + mToggleCustomName->Enable(mUseCustomTrackName); + } + S.EndMultiColumn(); + + S.TieCheckBox(_("Add &Track Number"), + wxT("/GUI/TrackNames/TrackNumber"), + false); + + S.TieCheckBox(_("Add System &Date"), + wxT("/GUI/TrackNames/DateStamp"), + false); + + S.TieCheckBox(_("Add System T&ime"), + wxT("/GUI/TrackNames/TimeStamp"), + false); + } + S.EndStatic(); + #ifdef EXPERIMENTAL_AUTOMATED_INPUT_LEVEL_ADJUSTMENT S.StartStatic(_("Automated Recording Level Adjustment")); { @@ -203,6 +244,12 @@ bool RecordingPrefs::Apply() return true; } +void RecordingPrefs::OnToggleCustomName(wxCommandEvent & Evt) +{ + mUseCustomTrackName = !mUseCustomTrackName; + mToggleCustomName->Enable(mUseCustomTrackName); +} + PrefsPanel *RecordingPrefsFactory::Create(wxWindow *parent) { return new RecordingPrefs(parent); diff --git a/src/prefs/RecordingPrefs.h b/src/prefs/RecordingPrefs.h index f3f8b9ee1..74665da32 100644 --- a/src/prefs/RecordingPrefs.h +++ b/src/prefs/RecordingPrefs.h @@ -13,6 +13,7 @@ #define __AUDACITY_RECORDING_PREFS__ #include +#include #include @@ -30,6 +31,13 @@ class RecordingPrefs :public PrefsPanel private: void Populate(); void PopulateOrExchange(ShuttleGui & S); + void OnToggleCustomName(wxCommandEvent & Evt); + + wxTextCtrl *mToggleCustomName; + bool mUseCustomTrackName; + bool mOldNameChoice; + + DECLARE_EVENT_TABLE(); }; class RecordingPrefsFactory : public PrefsPanelFactory diff --git a/src/prefs/TracksPrefs.cpp b/src/prefs/TracksPrefs.cpp index 6b5ea159b..a19f760e7 100644 --- a/src/prefs/TracksPrefs.cpp +++ b/src/prefs/TracksPrefs.cpp @@ -30,8 +30,6 @@ #include "../Experimental.h" -//////////////////////////////////////////////////////////////////////////////// - TracksPrefs::TracksPrefs(wxWindow * parent) : PrefsPanel(parent, _("Tracks")) { @@ -96,15 +94,23 @@ void TracksPrefs::PopulateOrExchange(ShuttleGui & S) S.StartMultiColumn(2); { - - S.TieChoice(_("Default &View Mode:"), + S.TieChoice(_("Default &view mode:"), wxT("/GUI/DefaultViewModeNew"), 0, mViewChoices, mViewCodes); S.SetSizeHints(mViewChoices); + + S.TieTextBox(_("Default audio track &name:"), + wxT("/GUI/TrackNames/DefaultTrackName"), + _("Audio Track"), + 30); } S.EndMultiColumn(); + + S.TieCheckBox(_("Sho&w track name in waveform display"), + wxT("/GUI/ShowTrackNameInWaveform"), + false); } S.EndStatic(); diff --git a/src/toolbars/ControlToolBar.cpp b/src/toolbars/ControlToolBar.cpp index f678e3ce0..bff271608 100644 --- a/src/toolbars/ControlToolBar.cpp +++ b/src/toolbars/ControlToolBar.cpp @@ -51,6 +51,7 @@ #include #endif #include +#include #include "TranscriptionToolBar.h" #include "MeterToolBar.h" @@ -896,11 +897,64 @@ void ControlToolBar::OnRecord(wxCommandEvent &evt) t1 = 1000000000.0; // record for a long, long time (tens of years) } else { + bool recordingNameCustom, useTrackNumber, useDateStamp, useTimeStamp; + wxString defaultTrackName, defaultRecordingTrackName; + int numTracks = 0; + + for (Track *tt = it.First(); tt; tt = it.Next()) { + if (tt->GetKind() == Track::Wave && !tt->GetLinked()) + numTracks++; + } + numTracks++; + recordingChannels = gPrefs->Read(wxT("/AudioIO/RecordChannels"), 2); + + gPrefs->Read(wxT("/GUI/TrackNames/RecordingNameCustom"), &recordingNameCustom, false); + gPrefs->Read(wxT("/GUI/TrackNames/TrackNumber"), &useTrackNumber, false); + gPrefs->Read(wxT("/GUI/TrackNames/DateStamp"), &useDateStamp, false); + gPrefs->Read(wxT("/GUI/TrackNames/TimeStamp"), &useTimeStamp, false); + /* i18n-hint: The default name for an audio track. */ + gPrefs->Read(wxT("/GUI/TrackNames/DefaultTrackName"),&defaultTrackName, _("Audio Track")); + gPrefs->Read(wxT("/GUI/TrackNames/RecodingTrackName"), &defaultRecordingTrackName, defaultTrackName); + + wxString baseTrackName = recordingNameCustom? defaultRecordingTrackName : defaultTrackName; + for (int c = 0; c < recordingChannels; c++) { WaveTrack *newTrack = p->GetTrackFactory()->NewWaveTrack(); newTrack->SetOffset(t0); + wxString nameSuffix = wxString(wxT("")); + + if (useTrackNumber) { + nameSuffix += wxString::Format(wxT("%d"), numTracks + c); + } + + if (useDateStamp) { + if (!nameSuffix.IsEmpty()) { + nameSuffix += wxT("_"); + } + nameSuffix += wxDateTime::Now().FormatISODate(); + } + + if (useTimeStamp) { + if (!nameSuffix.IsEmpty()) { + nameSuffix += wxT("_"); + } + nameSuffix += wxDateTime::Now().FormatISOTime(); + } + + // ISO standard would be nice, but ":" is unsafe for file name. + nameSuffix.Replace(wxT(":"), wxT("-")); + + if (baseTrackName.IsEmpty()) { + newTrack->SetName(nameSuffix); + } + else if (nameSuffix.IsEmpty()) { + newTrack->SetName(baseTrackName); + } + else { + newTrack->SetName(baseTrackName + wxT("_") + nameSuffix); + } if (recordingChannels > 2) newTrack->SetMinimized(true);