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@6: Chris@0: class MainWindow : public MainWindowBase Chris@0: { Chris@0: Q_OBJECT Chris@0: Chris@0: public: Chris@0: MainWindow(bool withAudioOutput = true, Chris@0: bool withOSCSupport = true); Chris@0: virtual ~MainWindow(); Chris@0: 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(); 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@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@139: virtual void doubleClickSelectInvoked(size_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: 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@0: virtual void sampleRateMismatch(size_t, size_t, 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@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@192: virtual void selectionChangedByUser(); Chris@192: virtual void regionOutlined(QRect); Chris@164: 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; Chris@144: Chris@128: QLabel *m_waveformStatus; Chris@128: QLabel *m_pitchStatus; Chris@128: QLabel *m_notesStatus; gyorgyf@45: Chris@6: KeyReference *m_keyReference; Chris@95: VersionTester *m_versionTester; Chris@0: 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(); Chris@0: virtual void setupHelpMenu(); Chris@0: virtual void setupToolbars(); Chris@0: Chris@142: virtual void octaveShift(bool up); Chris@142: Chris@0: virtual void closeEvent(QCloseEvent *e); Chris@0: bool checkSaveModified(); Chris@0: Chris@0: virtual void updateVisibleRangeDisplay(Pane *p) const; Chris@0: virtual void updatePositionStatusDisplays() const; Chris@0: }; Chris@0: Chris@0: Chris@0: #endif