Mercurial > hg > svapp
diff framework/MainWindowBase.h @ 515:51befd6165a3 alignment-simple
Merge in from SV 3.0-integration branches
author | Chris Cannam |
---|---|
date | Wed, 02 Mar 2016 17:25:27 +0000 |
parents | 74d575708e06 21d3cf5c8f21 |
children | dd195633fc9f |
line wrap: on
line diff
--- a/framework/MainWindowBase.h Mon Jun 15 09:15:55 2015 +0100 +++ b/framework/MainWindowBase.h Wed Mar 02 17:25:27 2016 +0000 @@ -46,7 +46,7 @@ class WaveformLayer; class WaveFileModel; class AudioCallbackPlaySource; -class AudioCallbackPlayTarget; +class AudioRecordTarget; class CommandHistory; class QMenu; class AudioDial; @@ -64,6 +64,11 @@ class QShortcut; class AlignmentModel; +namespace breakfastquay { +class SystemPlaybackTarget; +class SystemAudioIO; +} + /** * The base class for the SV main window. This includes everything to * do with general document and pane stack management, but nothing @@ -78,7 +83,16 @@ Q_OBJECT public: - MainWindowBase(bool withAudioOutput, bool withMIDIInput); + enum SoundOption { + WithAudioOutput = 0x01, + WithAudioInput = 0x02, + WithMIDIInput = 0x04, + WithEverything = 0xff, + WithNothing = 0x00 + }; + typedef int SoundOptions; + + MainWindowBase(SoundOptions options = WithEverything); virtual ~MainWindowBase(); enum AudioFileOpenMode { @@ -96,6 +110,11 @@ FileOpenWrongMode // attempted to open layer when no main model present }; + enum AudioRecordMode { + RecordReplaceSession, + RecordCreateAdditionalModel + }; + virtual FileOpenStatus open(FileSource source, AudioFileOpenMode = AskUser); virtual FileOpenStatus openPath(QString fileOrUrl, AudioFileOpenMode = AskUser); virtual FileOpenStatus openAudio(FileSource source, AudioFileOpenMode = AskUser, QString templateName = ""); @@ -120,6 +139,10 @@ m_defaultFfwdRwdStep = step; } + void setAudioRecordMode(AudioRecordMode mode) { + m_audioRecordMode = mode; + } + signals: // Used to toggle the availability of menu actions void canAddPane(bool); @@ -149,6 +172,7 @@ void canZoom(bool); void canScroll(bool); void canPlay(bool); + void canRecord(bool); void canFfwd(bool); void canRewind(bool); void canPlaySelection(bool); @@ -199,6 +223,7 @@ virtual void ffwdEnd(); virtual void rewind(); virtual void rewindStart(); + virtual void record(); virtual void stop(); virtual void ffwdSimilar(); @@ -226,6 +251,7 @@ virtual void viewCentreFrameChanged(View *, sv_frame_t); virtual void viewZoomLevelChanged(View *, int, bool); virtual void outputLevelsChanged(float, float) = 0; + virtual void recordDurationChanged(sv_frame_t, sv_samplerate_t); virtual void currentPaneChanged(Pane *); virtual void currentLayerChanged(Pane *, Layer *); @@ -309,9 +335,12 @@ ViewManager *m_viewManager; Layer *m_timeRulerLayer; - bool m_audioOutput; + SoundOptions m_soundOptions; + AudioCallbackPlaySource *m_playSource; - AudioCallbackPlayTarget *m_playTarget; + AudioRecordTarget *m_recordTarget; + breakfastquay::SystemPlaybackTarget *m_playTarget; // only one of this... + breakfastquay::SystemAudioIO *m_audioIO; // ... and this exists class OSCQueueStarter : public QThread { @@ -347,6 +376,8 @@ RealTime m_defaultFfwdRwdStep; + AudioRecordMode m_audioRecordMode; + mutable QLabel *m_statusLabel; QLabel *getStatusLabel() const; @@ -426,8 +457,9 @@ virtual QString getDefaultSessionTemplate() const; virtual void setDefaultSessionTemplate(QString); - virtual void createPlayTarget(); + virtual void createAudioIO(); virtual void openHelpUrl(QString url); + virtual void openLocalFolder(QString path); virtual void setupMenus() = 0; virtual void updateVisibleRangeDisplay(Pane *p) const = 0;