diff main/MainWindow.h @ 580:f52766aa747b

Rename src -> main for consistency with SV/Sonic Lineup
author Chris Cannam
date Wed, 14 Aug 2019 11:57:06 +0100
parents src/MainWindow.h@5c14493026da
children d882f64e60db
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main/MainWindow.h	Wed Aug 14 11:57:06 2019 +0100
@@ -0,0 +1,254 @@
+/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*-  vi:set ts=8 sts=4 sw=4: */
+
+/*
+    Tony
+    An intonation analysis and annotation tool
+    Centre for Digital Music, Queen Mary, University of London.
+    This file copyright 2006-2012 Chris Cannam and QMUL.
+    
+    This program is free software; you can redistribute it and/or
+    modify it under the terms of the GNU General Public License as
+    published by the Free Software Foundation; either version 2 of the
+    License, or (at your option) any later version.  See the file
+    COPYING included with this distribution for more information.
+*/
+
+#ifndef _MAIN_WINDOW_H_
+#define _MAIN_WINDOW_H_
+
+#include "framework/MainWindowBase.h"
+#include "Analyser.h"
+
+class VersionTester;
+class ActivityLog;
+class LevelPanToolButton;
+
+class MainWindow : public MainWindowBase
+{
+    Q_OBJECT
+
+public:
+    MainWindow(SoundOptions options, bool withSonification = true, bool withSpectrogram = true);
+    virtual ~MainWindow();
+
+signals:
+    void canExportPitchTrack(bool);
+    void canExportNotes(bool);
+    void canSnapNotes(bool);
+    void canPlayWaveform(bool);
+    void canPlayPitch(bool);
+    void canPlayNotes(bool);
+
+public slots:
+    virtual bool commitData(bool mayAskUser); // on session shutdown
+
+protected slots:
+    virtual void openFile();
+    virtual void openLocation();
+    virtual void openRecentFile();
+    virtual void saveSession();
+    virtual void saveSessionInAudioPath();
+    virtual void saveSessionAs();
+    virtual void exportPitchLayer();
+    virtual void exportNoteLayer();
+    virtual void importPitchLayer();
+    virtual void browseRecordedAudio();
+    virtual void newSession();
+    virtual void closeSession();
+
+    virtual void toolNavigateSelected();
+    virtual void toolEditSelected();
+    virtual void toolFreeEditSelected();
+
+    virtual void clearPitches();
+    virtual void togglePitchCandidates();
+    virtual void switchPitchUp();
+    virtual void switchPitchDown();
+
+    virtual void snapNotesToPitches();
+    virtual void splitNote();
+    virtual void mergeNotes();
+    virtual void deleteNotes();
+    virtual void formNoteFromSelection();
+
+    virtual void showAudioToggled();
+    virtual void showSpectToggled();
+    virtual void showPitchToggled();
+    virtual void showNotesToggled();
+
+    virtual void playAudioToggled();
+    virtual void playPitchToggled();
+    virtual void playNotesToggled();
+
+    virtual void editDisplayExtents();
+
+    virtual void analyseNow();
+    virtual void resetAnalyseOptions();
+    virtual void autoAnalysisToggled();
+    virtual void precisionAnalysisToggled();
+    virtual void lowampAnalysisToggled();
+    virtual void onsetAnalysisToggled();
+    virtual void pruneAnalysisToggled();
+    virtual void updateAnalyseStates();
+
+    virtual void doubleClickSelectInvoked(sv_frame_t);
+    virtual void abandonSelection();
+
+    virtual void paneAdded(Pane *);
+    virtual void paneHidden(Pane *);
+    virtual void paneAboutToBeDeleted(Pane *);
+
+    virtual void paneDropAccepted(Pane *, QStringList);
+    virtual void paneDropAccepted(Pane *, QString);
+
+    virtual void playSpeedChanged(int);
+    virtual void playSharpenToggled();
+    virtual void playMonoToggled();
+
+    virtual void speedUpPlayback();
+    virtual void slowDownPlayback();
+    virtual void restoreNormalPlayback();
+
+    virtual void monitoringLevelsChanged(float, float);
+
+    virtual void audioGainChanged(float);
+    virtual void pitchGainChanged(float);
+    virtual void notesGainChanged(float);
+
+    virtual void audioPanChanged(float);
+    virtual void pitchPanChanged(float);
+    virtual void notesPanChanged(float);
+
+    virtual void sampleRateMismatch(sv_samplerate_t, sv_samplerate_t, bool);
+    virtual void audioOverloadPluginDisabled();
+    virtual void audioTimeStretchMultiChannelDisabled();
+
+    virtual void documentModified();
+    virtual void documentRestored();
+    virtual void documentReplaced();
+
+    virtual void updateMenuStates();
+    virtual void updateDescriptionLabel();
+    virtual void updateLayerStatuses();
+
+    virtual void layerRemoved(Layer *);
+    virtual void layerInAView(Layer *, bool);
+
+    virtual void mainModelChanged(ModelId);
+    virtual void mainModelGainChanged(float);
+    virtual void modelAdded(ModelId);
+
+    virtual void modelGenerationFailed(QString, QString);
+    virtual void modelGenerationWarning(QString, QString);
+    virtual void modelRegenerationFailed(QString, QString, QString);
+    virtual void modelRegenerationWarning(QString, QString, QString);
+    virtual void alignmentFailed(QString);
+
+    virtual void rightButtonMenuRequested(Pane *, QPoint point);
+
+    virtual void setupRecentFilesMenu();
+
+    virtual void handleOSCMessage(const OSCMessage &);
+
+    virtual void mouseEnteredWidget();
+    virtual void mouseLeftWidget();
+
+    virtual void website();
+    virtual void help();
+    virtual void about();
+    virtual void keyReference();
+
+    virtual void newerVersionAvailable(QString);
+
+    virtual void selectionChangedByUser();
+    virtual void regionOutlined(QRect);
+
+    virtual void analyseNewMainModel();
+
+    void moveOneNoteRight();
+    void moveOneNoteLeft();
+    void selectOneNoteRight();
+    void selectOneNoteLeft();
+
+    void ffwd();
+    void rewind();
+
+protected:
+    Analyser      *m_analyser;
+
+    Overview      *m_overview;
+    Fader         *m_fader;
+    AudioDial     *m_playSpeed;
+    QPushButton   *m_playSharpen;
+    QPushButton   *m_playMono;
+    WaveformLayer *m_panLayer;
+
+    bool           m_mainMenusCreated;
+    QMenu         *m_playbackMenu;
+    QMenu         *m_recentFilesMenu;
+    QMenu         *m_rightButtonMenu;
+    QMenu         *m_rightButtonPlaybackMenu;
+
+    QAction       *m_deleteSelectedAction;
+    QAction       *m_ffwdAction;
+    QAction       *m_rwdAction;
+    QAction       *m_editSelectAction;
+    QAction       *m_showCandidatesAction;
+    QAction       *m_toggleIntelligenceAction;
+    bool           m_intelligentActionOn; // GF: !!! temporary
+
+    QAction       *m_autoAnalyse;
+    QAction       *m_precise;
+    QAction       *m_lowamp;
+    QAction       *m_onset;
+    QAction       *m_prune;
+        
+    QAction       *m_showAudio;
+    QAction       *m_showSpect;
+    QAction       *m_showPitch;
+    QAction       *m_showNotes;
+    QAction       *m_playAudio;
+    QAction       *m_playPitch;
+    QAction       *m_playNotes;
+    LevelPanToolButton *m_audioLPW;
+    LevelPanToolButton *m_pitchLPW;
+    LevelPanToolButton *m_notesLPW;
+    
+    ActivityLog   *m_activityLog;
+    KeyReference  *m_keyReference;
+    VersionTester *m_versionTester;
+
+    sv_frame_t m_selectionAnchor;
+
+    bool m_withSonification;
+    bool m_withSpectrogram;
+
+    Analyser::FrequencyRange m_pendingConstraint;
+
+    QString exportToSVL(QString path, Layer *layer);
+    FileOpenStatus importPitchLayer(FileSource source);
+
+    virtual void setupMenus();
+    virtual void setupFileMenu();
+    virtual void setupEditMenu();
+    virtual void setupViewMenu();
+    virtual void setupAnalysisMenu();
+    virtual void setupHelpMenu();
+    virtual void setupToolbars();
+
+    virtual void octaveShift(bool up);
+
+    virtual void auxSnapNotes(Selection s);
+
+    virtual void closeEvent(QCloseEvent *e);
+    bool checkSaveModified();
+    bool waitForInitialAnalysis();
+
+    virtual void updateVisibleRangeDisplay(Pane *p) const;
+    virtual void updatePositionStatusDisplays() const;
+
+    void moveByOneNote(bool right, bool doSelect);
+};
+
+
+#endif