Chris@0: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ Chris@0: Chris@0: /* Chris@0: Tony Chris@0: An intonation analysis and annotation tool Chris@0: Centre for Digital Music, Queen Mary, University of London. Chris@0: This file copyright 2006-2012 Chris Cannam and QMUL. Chris@0: Chris@0: This program is free software; you can redistribute it and/or Chris@0: modify it under the terms of the GNU General Public License as Chris@0: published by the Free Software Foundation; either version 2 of the Chris@0: License, or (at your option) any later version. See the file Chris@0: COPYING included with this distribution for more information. Chris@0: */ Chris@0: Chris@0: #ifndef _MAIN_WINDOW_H_ Chris@0: #define _MAIN_WINDOW_H_ Chris@0: Chris@0: #include "framework/MainWindowBase.h" Chris@192: #include "Analyser.h" Chris@0: Chris@95: class VersionTester; Chris@244: class ActivityLog; Chris@414: class LevelPanToolButton; Chris@6: Chris@0: class MainWindow : public MainWindowBase Chris@0: { Chris@0: Q_OBJECT Chris@0: Chris@0: public: Chris@635: MainWindow(AudioMode audioMode, Chris@635: bool withSonification = true, Chris@635: bool withSpectrogram = true); Chris@0: virtual ~MainWindow(); Chris@0: Chris@224: signals: Chris@244: void canExportPitchTrack(bool); Chris@244: void canExportNotes(bool); Chris@244: void canSnapNotes(bool); Chris@291: void canPlayWaveform(bool); Chris@291: void canPlayPitch(bool); Chris@291: void canPlayNotes(bool); Chris@224: Chris@0: public slots: Chris@0: virtual bool commitData(bool mayAskUser); // on session shutdown Chris@0: Chris@0: protected slots: Chris@0: virtual void openFile(); Chris@0: virtual void openLocation(); Chris@0: virtual void openRecentFile(); Chris@0: virtual void saveSession(); matthiasm@310: virtual void saveSessionInAudioPath(); Chris@0: virtual void saveSessionAs(); Chris@85: virtual void exportPitchLayer(); Chris@85: virtual void exportNoteLayer(); Chris@174: virtual void importPitchLayer(); Chris@485: virtual void browseRecordedAudio(); Chris@0: virtual void newSession(); Chris@0: virtual void closeSession(); Chris@0: Chris@70: virtual void toolNavigateSelected(); Chris@70: virtual void toolEditSelected(); Chris@70: virtual void toolFreeEditSelected(); Chris@70: Chris@168: virtual void clearPitches(); Chris@184: virtual void togglePitchCandidates(); Chris@184: virtual void switchPitchUp(); Chris@184: virtual void switchPitchDown(); Chris@142: Chris@237: virtual void snapNotesToPitches(); Chris@240: virtual void splitNote(); Chris@238: virtual void mergeNotes(); matthiasm@292: virtual void deleteNotes(); Chris@240: virtual void formNoteFromSelection(); Chris@237: Chris@144: virtual void showAudioToggled(); Chris@145: virtual void showSpectToggled(); Chris@144: virtual void showPitchToggled(); Chris@144: virtual void showNotesToggled(); Chris@144: Chris@144: virtual void playAudioToggled(); Chris@144: virtual void playPitchToggled(); Chris@144: virtual void playNotesToggled(); Chris@128: Chris@227: virtual void editDisplayExtents(); Chris@227: Chris@323: virtual void analyseNow(); Chris@427: virtual void resetAnalyseOptions(); Chris@323: virtual void autoAnalysisToggled(); Chris@323: virtual void precisionAnalysisToggled(); matthiasm@345: virtual void lowampAnalysisToggled(); matthiasm@423: virtual void onsetAnalysisToggled(); matthiasm@423: virtual void pruneAnalysisToggled(); Chris@427: virtual void updateAnalyseStates(); Chris@323: Chris@399: virtual void doubleClickSelectInvoked(sv_frame_t); Chris@194: virtual void abandonSelection(); Chris@139: Chris@0: virtual void paneAdded(Pane *); Chris@0: virtual void paneHidden(Pane *); Chris@0: virtual void paneAboutToBeDeleted(Pane *); Chris@0: Chris@0: virtual void paneDropAccepted(Pane *, QStringList); Chris@0: virtual void paneDropAccepted(Pane *, QString); Chris@0: Chris@0: virtual void playSpeedChanged(int); Chris@0: virtual void playSharpenToggled(); Chris@0: virtual void playMonoToggled(); Chris@0: Chris@0: virtual void speedUpPlayback(); Chris@0: virtual void slowDownPlayback(); Chris@0: virtual void restoreNormalPlayback(); Chris@0: Chris@521: virtual void monitoringLevelsChanged(float, float); Chris@521: Chris@404: virtual void audioGainChanged(float); Chris@404: virtual void pitchGainChanged(float); Chris@404: virtual void notesGainChanged(float); justin@159: Chris@404: virtual void audioPanChanged(float); Chris@404: virtual void pitchPanChanged(float); Chris@404: virtual void notesPanChanged(float); justin@160: Chris@399: virtual void sampleRateMismatch(sv_samplerate_t, sv_samplerate_t, bool); Chris@0: virtual void audioOverloadPluginDisabled(); Chris@0: Chris@0: virtual void documentModified(); Chris@0: virtual void documentRestored(); Chris@244: virtual void documentReplaced(); Chris@0: Chris@0: virtual void updateMenuStates(); Chris@0: virtual void updateDescriptionLabel(); Chris@144: virtual void updateLayerStatuses(); Chris@0: Chris@0: virtual void layerRemoved(Layer *); Chris@0: virtual void layerInAView(Layer *, bool); Chris@0: Chris@572: virtual void mainModelChanged(ModelId); Chris@474: virtual void mainModelGainChanged(float); Chris@572: virtual void modelAdded(ModelId); Chris@0: Chris@0: virtual void modelGenerationFailed(QString, QString); Chris@0: virtual void modelGenerationWarning(QString, QString); Chris@0: virtual void modelRegenerationFailed(QString, QString, QString); Chris@0: virtual void modelRegenerationWarning(QString, QString, QString); Chris@697: virtual void alignmentFailed(ModelId, QString); Chris@0: Chris@688: virtual void paneRightButtonMenuRequested(Pane *, QPoint point); Chris@688: virtual void panePropertiesRightButtonMenuRequested(Pane *, QPoint point); Chris@688: virtual void layerPropertiesRightButtonMenuRequested(Pane *, Layer *, QPoint point); Chris@0: Chris@0: virtual void setupRecentFilesMenu(); Chris@0: Chris@0: virtual void handleOSCMessage(const OSCMessage &); Chris@0: Chris@0: virtual void mouseEnteredWidget(); Chris@0: virtual void mouseLeftWidget(); Chris@0: Chris@0: virtual void help(); Chris@0: virtual void about(); Chris@0: virtual void keyReference(); Chris@585: virtual void whatsNew(); Chris@0: Chris@609: virtual void betaReleaseWarning(); Chris@609: Chris@231: virtual void newerVersionAvailable(QString); Chris@231: Chris@192: virtual void selectionChangedByUser(); Chris@192: virtual void regionOutlined(QRect); Chris@164: Chris@260: virtual void analyseNewMainModel(); Chris@260: matthiasm@281: void moveOneNoteRight(); matthiasm@281: void moveOneNoteLeft(); matthiasm@283: void selectOneNoteRight(); matthiasm@283: void selectOneNoteLeft(); matthiasm@281: matthiasm@356: void ffwd(); matthiasm@356: void rewind(); matthiasm@356: Chris@0: protected: Chris@6: Analyser *m_analyser; Chris@0: Chris@6: Overview *m_overview; Chris@6: Fader *m_fader; Chris@6: AudioDial *m_playSpeed; Chris@6: QPushButton *m_playSharpen; Chris@6: QPushButton *m_playMono; Chris@6: WaveformLayer *m_panLayer; Chris@0: Chris@6: bool m_mainMenusCreated; Chris@6: QMenu *m_playbackMenu; Chris@6: QMenu *m_recentFilesMenu; Chris@6: QMenu *m_rightButtonMenu; Chris@6: QMenu *m_rightButtonPlaybackMenu; Chris@0: Chris@6: QAction *m_deleteSelectedAction; Chris@6: QAction *m_ffwdAction; Chris@6: QAction *m_rwdAction; gyorgyf@24: QAction *m_editSelectAction; Chris@187: QAction *m_showCandidatesAction; gyorgyf@45: QAction *m_toggleIntelligenceAction; gyorgyf@45: bool m_intelligentActionOn; // GF: !!! temporary Chris@128: Chris@427: QAction *m_autoAnalyse; Chris@427: QAction *m_precise; Chris@427: QAction *m_lowamp; Chris@427: QAction *m_onset; Chris@427: QAction *m_prune; Chris@427: Chris@144: QAction *m_showAudio; Chris@145: QAction *m_showSpect; Chris@144: QAction *m_showPitch; Chris@144: QAction *m_showNotes; Chris@424: QAction *m_playAudio; Chris@424: QAction *m_playPitch; Chris@424: QAction *m_playNotes; Chris@414: LevelPanToolButton *m_audioLPW; Chris@414: LevelPanToolButton *m_pitchLPW; Chris@414: LevelPanToolButton *m_notesLPW; gyorgyf@45: Chris@244: ActivityLog *m_activityLog; Chris@6: KeyReference *m_keyReference; Chris@95: VersionTester *m_versionTester; Chris@585: QString m_newerVersionIs; Chris@0: Chris@399: sv_frame_t m_selectionAnchor; matthiasm@296: matthiasm@364: bool m_withSonification; matthiasm@364: bool m_withSpectrogram; matthiasm@364: Chris@192: Analyser::FrequencyRange m_pendingConstraint; Chris@192: Chris@85: QString exportToSVL(QString path, Layer *layer); Chris@174: FileOpenStatus importPitchLayer(FileSource source); Chris@85: Chris@598: QString getReleaseText() const; Chris@598: Chris@0: virtual void setupMenus(); Chris@0: virtual void setupFileMenu(); Chris@0: virtual void setupEditMenu(); Chris@0: virtual void setupViewMenu(); matthiasm@317: virtual void setupAnalysisMenu(); Chris@0: virtual void setupHelpMenu(); Chris@0: virtual void setupToolbars(); Chris@0: Chris@142: virtual void octaveShift(bool up); Chris@142: Chris@239: virtual void auxSnapNotes(Selection s); Chris@239: Chris@0: virtual void closeEvent(QCloseEvent *e); Chris@0: bool checkSaveModified(); Chris@314: bool waitForInitialAnalysis(); Chris@0: Chris@0: virtual void updateVisibleRangeDisplay(Pane *p) const; Chris@0: virtual void updatePositionStatusDisplays() const; matthiasm@281: matthiasm@296: void moveByOneNote(bool right, bool doSelect); Chris@0: }; Chris@0: Chris@0: Chris@0: #endif