Mercurial > hg > svapp
diff framework/MainWindowBase.h @ 548:baa11365ebdd bqaudioio
Merge from branch bqresample
author | Chris Cannam |
---|---|
date | Wed, 07 Dec 2016 11:51:42 +0000 |
parents | 287fce13a1ae |
children | fb675409297a b9d8c7a690d6 |
line wrap: on
line diff
--- a/framework/MainWindowBase.h Wed Dec 07 11:50:54 2016 +0000 +++ b/framework/MainWindowBase.h Wed Dec 07 11:51:42 2016 +0000 @@ -46,6 +46,7 @@ class WaveformLayer; class WaveFileModel; class AudioCallbackPlaySource; +class AudioRecordTarget; class CommandHistory; class QMenu; class AudioDial; @@ -61,9 +62,11 @@ class ModelDataTableDialog; class QSignalMapper; class QShortcut; +class AlignmentModel; namespace breakfastquay { class SystemPlaybackTarget; +class SystemAudioIO; } /** @@ -80,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 { @@ -98,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 = ""); @@ -105,6 +122,8 @@ virtual FileOpenStatus openLayer(FileSource source); virtual FileOpenStatus openImage(FileSource source); + virtual FileOpenStatus openDirOfAudio(QString dirPath); + virtual FileOpenStatus openSession(FileSource source); virtual FileOpenStatus openSessionPath(QString fileOrUrl); virtual FileOpenStatus openSessionTemplate(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); @@ -145,10 +168,13 @@ void canInsertInstantsAtBoundaries(bool); void canInsertItemAtSelection(bool); void canRenumberInstants(bool); + void canSubdivideInstants(bool); + void canWinnowInstants(bool); void canDeleteCurrentLayer(bool); void canZoom(bool); void canScroll(bool); void canPlay(bool); + void canRecord(bool); void canFfwd(bool); void canRewind(bool); void canPlaySelection(bool); @@ -199,6 +225,7 @@ virtual void ffwdEnd(); virtual void rewind(); virtual void rewindStart(); + virtual void record(); virtual void stop(); virtual void ffwdSimilar(); @@ -226,6 +253,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 *); @@ -249,6 +277,8 @@ virtual void insertItemAtSelection(); virtual void insertItemAt(sv_frame_t, sv_frame_t); virtual void renumberInstants(); + virtual void subdivideInstantsBy(int); + virtual void winnowInstantsBy(int); virtual void documentModified(); virtual void documentRestored(); @@ -269,7 +299,9 @@ virtual void modelGenerationWarning(QString, QString) = 0; virtual void modelRegenerationFailed(QString, QString, QString) = 0; virtual void modelRegenerationWarning(QString, QString, QString) = 0; - virtual void alignmentFailed(QString, QString) = 0; + + virtual void alignmentComplete(AlignmentModel *); + virtual void alignmentFailed(QString) = 0; virtual void rightButtonMenuRequested(Pane *, QPoint point) = 0; @@ -307,9 +339,12 @@ ViewManager *m_viewManager; Layer *m_timeRulerLayer; - bool m_audioOutput; + SoundOptions m_soundOptions; + AudioCallbackPlaySource *m_playSource; - breakfastquay::SystemPlaybackTarget *m_playTarget; + AudioRecordTarget *m_recordTarget; + breakfastquay::SystemPlaybackTarget *m_playTarget; // only one of this... + breakfastquay::SystemAudioIO *m_audioIO; // ... and this exists class OSCQueueStarter : public QThread { @@ -345,6 +380,8 @@ RealTime m_defaultFfwdRwdStep; + AudioRecordMode m_audioRecordMode; + mutable QLabel *m_statusLabel; QLabel *getStatusLabel() const; @@ -424,18 +461,23 @@ 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; virtual void updatePositionStatusDisplays() const = 0; // Call this after setting up the menu bar, to fix up single-key - // shortcuts on OS/X + // shortcuts on OS/X and do any other platform-specific tidying virtual void finaliseMenus(); virtual void finaliseMenu(QMenu *); + // Call before finaliseMenus if you wish to have a say in this question + void setIconsVisibleInMenus(bool visible) { m_iconsVisibleInMenus = visible; } + bool m_iconsVisibleInMenus; + // Only used on OS/X to work around a Qt/Cocoa bug, see finaliseMenus QSignalMapper *m_menuShortcutMapper; QList<QShortcut *> m_appShortcuts;