annotate src/MainWindow.h @ 0:158f40a613a5

Initial import of material from SV and Vect. This builds and runs, but does not yet have the layout we need
author Chris Cannam
date Fri, 16 Nov 2012 11:48:16 +0000
parents
children a11a9c04df44
rev   line source
Chris@0 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@0 2
Chris@0 3 /*
Chris@0 4 Tony
Chris@0 5 An intonation analysis and annotation tool
Chris@0 6 Centre for Digital Music, Queen Mary, University of London.
Chris@0 7 This file copyright 2006-2012 Chris Cannam and QMUL.
Chris@0 8
Chris@0 9 This program is free software; you can redistribute it and/or
Chris@0 10 modify it under the terms of the GNU General Public License as
Chris@0 11 published by the Free Software Foundation; either version 2 of the
Chris@0 12 License, or (at your option) any later version. See the file
Chris@0 13 COPYING included with this distribution for more information.
Chris@0 14 */
Chris@0 15
Chris@0 16 #ifndef _MAIN_WINDOW_H_
Chris@0 17 #define _MAIN_WINDOW_H_
Chris@0 18
Chris@0 19 #include <QFrame>
Chris@0 20 #include <QString>
Chris@0 21 #include <QUrl>
Chris@0 22 #include <QMainWindow>
Chris@0 23 #include <QPointer>
Chris@0 24
Chris@0 25 #include "framework/MainWindowBase.h"
Chris@0 26 #include "base/Command.h"
Chris@0 27 #include "view/ViewManager.h"
Chris@0 28 #include "base/PropertyContainer.h"
Chris@0 29 #include "base/RecentFiles.h"
Chris@0 30 #include "layer/LayerFactory.h"
Chris@0 31 #include "transform/Transform.h"
Chris@0 32 #include "framework/SVFileReader.h"
Chris@0 33 #include "widgets/InteractiveFileFinder.h"
Chris@0 34 #include <map>
Chris@0 35
Chris@0 36 class Document;
Chris@0 37 class PaneStack;
Chris@0 38 class Pane;
Chris@0 39 class View;
Chris@0 40 class Fader;
Chris@0 41 class Overview;
Chris@0 42 class Layer;
Chris@0 43 class WaveformLayer;
Chris@0 44 class WaveFileModel;
Chris@0 45 class AudioCallbackPlaySource;
Chris@0 46 class AudioCallbackPlayTarget;
Chris@0 47 class CommandHistory;
Chris@0 48 class QMenu;
Chris@0 49 class AudioDial;
Chris@0 50 class QLabel;
Chris@0 51 class QCheckBox;
Chris@0 52 class QTreeView;
Chris@0 53 class QPushButton;
Chris@0 54 class OSCQueue;
Chris@0 55 class OSCMessage;
Chris@0 56 class KeyReference;
Chris@0 57
Chris@0 58
Chris@0 59 class MainWindow : public MainWindowBase
Chris@0 60 {
Chris@0 61 Q_OBJECT
Chris@0 62
Chris@0 63 public:
Chris@0 64 MainWindow(bool withAudioOutput = true,
Chris@0 65 bool withOSCSupport = true);
Chris@0 66 virtual ~MainWindow();
Chris@0 67
Chris@0 68 public slots:
Chris@0 69 virtual bool commitData(bool mayAskUser); // on session shutdown
Chris@0 70
Chris@0 71 protected slots:
Chris@0 72 virtual void openFile();
Chris@0 73 virtual void openLocation();
Chris@0 74 virtual void openRecentFile();
Chris@0 75 virtual void saveSession();
Chris@0 76 virtual void saveSessionAs();
Chris@0 77 virtual void newSession();
Chris@0 78 virtual void closeSession();
Chris@0 79
Chris@0 80 virtual void renameCurrentLayer();
Chris@0 81
Chris@0 82 virtual void paneAdded(Pane *);
Chris@0 83 virtual void paneHidden(Pane *);
Chris@0 84 virtual void paneAboutToBeDeleted(Pane *);
Chris@0 85
Chris@0 86 virtual void paneDropAccepted(Pane *, QStringList);
Chris@0 87 virtual void paneDropAccepted(Pane *, QString);
Chris@0 88
Chris@0 89 virtual void playSpeedChanged(int);
Chris@0 90 virtual void playSharpenToggled();
Chris@0 91 virtual void playMonoToggled();
Chris@0 92
Chris@0 93 virtual void speedUpPlayback();
Chris@0 94 virtual void slowDownPlayback();
Chris@0 95 virtual void restoreNormalPlayback();
Chris@0 96
Chris@0 97 virtual void sampleRateMismatch(size_t, size_t, bool);
Chris@0 98 virtual void audioOverloadPluginDisabled();
Chris@0 99 virtual void audioTimeStretchMultiChannelDisabled();
Chris@0 100
Chris@0 101 virtual void outputLevelsChanged(float, float);
Chris@0 102
Chris@0 103 virtual void documentModified();
Chris@0 104 virtual void documentRestored();
Chris@0 105
Chris@0 106 virtual void updateMenuStates();
Chris@0 107 virtual void updateDescriptionLabel();
Chris@0 108
Chris@0 109 virtual void layerRemoved(Layer *);
Chris@0 110 virtual void layerInAView(Layer *, bool);
Chris@0 111
Chris@0 112 virtual void mainModelChanged(WaveFileModel *);
Chris@0 113 virtual void modelAdded(Model *);
Chris@0 114 virtual void modelReady();
Chris@0 115 virtual void modelAboutToBeDeleted(Model *);
Chris@0 116
Chris@0 117 virtual void modelGenerationFailed(QString, QString);
Chris@0 118 virtual void modelGenerationWarning(QString, QString);
Chris@0 119 virtual void modelRegenerationFailed(QString, QString, QString);
Chris@0 120 virtual void modelRegenerationWarning(QString, QString, QString);
Chris@0 121 virtual void alignmentFailed(QString, QString);
Chris@0 122
Chris@0 123 virtual void rightButtonMenuRequested(Pane *, QPoint point);
Chris@0 124
Chris@0 125 virtual void setupRecentFilesMenu();
Chris@0 126
Chris@0 127 virtual void showLayerTree();
Chris@0 128
Chris@0 129 virtual void handleOSCMessage(const OSCMessage &);
Chris@0 130
Chris@0 131 virtual void mouseEnteredWidget();
Chris@0 132 virtual void mouseLeftWidget();
Chris@0 133
Chris@0 134 virtual void website();
Chris@0 135 virtual void help();
Chris@0 136 virtual void about();
Chris@0 137 virtual void keyReference();
Chris@0 138
Chris@0 139 protected:
Chris@0 140 Overview *m_overview;
Chris@0 141 Fader *m_fader;
Chris@0 142 AudioDial *m_playSpeed;
Chris@0 143 QPushButton *m_playSharpen;
Chris@0 144 QPushButton *m_playMono;
Chris@0 145 WaveformLayer *m_panLayer;
Chris@0 146
Chris@0 147 bool m_mainMenusCreated;
Chris@0 148 QMenu *m_playbackMenu;
Chris@0 149 QMenu *m_recentFilesMenu;
Chris@0 150 QMenu *m_rightButtonMenu;
Chris@0 151 QMenu *m_rightButtonPlaybackMenu;
Chris@0 152
Chris@0 153 QAction *m_deleteSelectedAction;
Chris@0 154 QAction *m_ffwdAction;
Chris@0 155 QAction *m_rwdAction;
Chris@0 156
Chris@0 157 QPointer<QTreeView> m_layerTreeView;
Chris@0 158
Chris@0 159 KeyReference *m_keyReference;
Chris@0 160
Chris@0 161 typedef std::set<Layer *> LayerSet;
Chris@0 162 typedef std::map<Pane *, LayerSet> PaneLayerMap;
Chris@0 163 PaneLayerMap m_hiddenLayers;
Chris@0 164
Chris@0 165 virtual void setupMenus();
Chris@0 166 virtual void setupFileMenu();
Chris@0 167 virtual void setupEditMenu();
Chris@0 168 virtual void setupViewMenu();
Chris@0 169 virtual void setupHelpMenu();
Chris@0 170 virtual void setupToolbars();
Chris@0 171
Chris@0 172 virtual void closeEvent(QCloseEvent *e);
Chris@0 173 bool checkSaveModified();
Chris@0 174
Chris@0 175 virtual void configureNewPane(Pane *p);
Chris@0 176 virtual void updateVisibleRangeDisplay(Pane *p) const;
Chris@0 177 virtual void updatePositionStatusDisplays() const;
Chris@0 178 };
Chris@0 179
Chris@0 180
Chris@0 181 #endif