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@6: Chris@0: class MainWindow : public MainWindowBase Chris@0: { Chris@0: Q_OBJECT Chris@0: Chris@0: public: Chris@355: MainWindow(bool withAudioOutput = 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@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@323: virtual void autoAnalysisToggled(); Chris@323: virtual void precisionAnalysisToggled(); matthiasm@345: virtual void lowampAnalysisToggled(); Chris@323: Chris@355: virtual void doubleClickSelectInvoked(int); 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: justin@159: virtual void audioGainChanged(int); justin@159: virtual void increaseAudioGain(); justin@159: virtual void decreaseAudioGain(); justin@159: virtual void restoreNormalAudioGain(); justin@159: Chris@158: virtual void pitchGainChanged(int); Chris@158: virtual void increasePitchGain(); Chris@158: virtual void decreasePitchGain(); Chris@158: virtual void restoreNormalPitchGain(); justin@157: justin@159: virtual void notesGainChanged(int); justin@159: virtual void increaseNotesGain(); justin@159: virtual void decreaseNotesGain(); justin@159: virtual void restoreNormalNotesGain(); justin@159: justin@160: virtual void audioPanChanged(int); justin@160: virtual void increaseAudioPan(); justin@160: virtual void decreaseAudioPan(); justin@160: virtual void restoreNormalAudioPan(); justin@160: justin@160: virtual void pitchPanChanged(int); justin@160: virtual void increasePitchPan(); justin@160: virtual void decreasePitchPan(); justin@160: virtual void restoreNormalPitchPan(); justin@160: justin@160: virtual void notesPanChanged(int); justin@160: virtual void increaseNotesPan(); justin@160: virtual void decreaseNotesPan(); justin@160: virtual void restoreNormalNotesPan(); justin@160: Chris@355: virtual void sampleRateMismatch(int, int, bool); Chris@0: virtual void audioOverloadPluginDisabled(); Chris@0: virtual void audioTimeStretchMultiChannelDisabled(); Chris@0: Chris@0: virtual void outputLevelsChanged(float, float); 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@0: virtual void mainModelChanged(WaveFileModel *); Chris@0: virtual void modelAdded(Model *); Chris@0: virtual void modelAboutToBeDeleted(Model *); 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@0: virtual void alignmentFailed(QString, QString); Chris@0: Chris@0: virtual void rightButtonMenuRequested(Pane *, 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 website(); Chris@0: virtual void help(); Chris@0: virtual void about(); Chris@0: virtual void keyReference(); Chris@0: 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@144: QAction *m_showAudio; Chris@145: QAction *m_showSpect; Chris@144: QAction *m_showPitch; Chris@144: QAction *m_showNotes; Chris@144: QAction *m_playAudio; Chris@144: QAction *m_playPitch; Chris@144: QAction *m_playNotes; Chris@158: AudioDial *m_gainAudio; Chris@158: AudioDial *m_gainPitch; Chris@158: AudioDial *m_gainNotes; justin@160: AudioDial *m_panAudio; justin@160: AudioDial *m_panPitch; justin@160: AudioDial *m_panNotes; gyorgyf@45: Chris@244: ActivityLog *m_activityLog; Chris@6: KeyReference *m_keyReference; Chris@95: VersionTester *m_versionTester; Chris@0: matthiasm@296: int m_selectionAnchor; matthiasm@296: 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@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