annotate main/MainWindow.h @ 1480:f1e1745acc3b 3.0-integration

Make the colour 3d plot renderer able to support more than one level of peak cache; introduce a second "peak" cache for the spectrogram layer that actually has a 1-1 column relationship with the underlying FFT model, and use it in addition to the existing peak cache if memory is plentiful. Makes spectrograms appear much faster in many common situations.
author Chris Cannam
date Thu, 05 Jan 2017 14:02:54 +0000
parents e76f72565112
children 47a18e281a93
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 Sonic Visualiser
Chris@0 5 An audio file viewer and annotation editor.
Chris@0 6 Centre for Digital Music, Queen Mary, University of London.
Chris@200 7 This file copyright 2006-2007 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@672 19 #include "framework/MainWindowBase.h"
Chris@0 20
Chris@672 21 class VersionTester;
Chris@672 22 class Surveyer;
Chris@672 23 class LayerTreeDialog;
Chris@672 24 class ActivityLog;
Chris@891 25 class UnitConverter;
Chris@0 26
Chris@426 27 class QFileSystemWatcher;
Chris@489 28 class QScrollArea;
Chris@0 29
Chris@200 30 class MainWindow : public MainWindowBase
Chris@0 31 {
Chris@0 32 Q_OBJECT
Chris@0 33
Chris@0 34 public:
Chris@1045 35 MainWindow(SoundOptions options, bool withOSCSupport = true);
Chris@0 36 virtual ~MainWindow();
Chris@0 37
Chris@0 38 signals:
Chris@376 39 void canChangeSolo(bool);
Chris@376 40 void canAlign(bool);
Chris@0 41
Chris@118 42 public slots:
Chris@200 43 virtual void preferenceChanged(PropertyContainer::PropertyName);
Chris@1448 44 virtual void coloursChanged();
Chris@1448 45
Chris@200 46 virtual bool commitData(bool mayAskUser);
Chris@118 47
Chris@489 48 void goFullScreen();
Chris@492 49 void endFullScreen();
Chris@489 50
Chris@0 51 protected slots:
Chris@200 52 virtual void importAudio();
Chris@200 53 virtual void importMoreAudio();
Chris@508 54 virtual void replaceMainAudio();
Chris@200 55 virtual void openSomething();
Chris@200 56 virtual void openLocation();
Chris@1253 57 /* F. Nicol patch 13 Aug. 2016 */
Chris@1253 58 virtual void openRecentFile(const QString& );
Chris@1253 59 /* End of F. Nicol patch 13 Aug. 2016 */
Chris@435 60 virtual void applyTemplate();
Chris@200 61 virtual void exportAudio();
Chris@631 62 virtual void exportAudioData();
Chris@200 63 virtual void importLayer();
Chris@200 64 virtual void exportLayer();
Chris@200 65 virtual void exportImage();
Chris@1451 66 virtual void exportSVG();
Chris@1056 67 virtual void browseRecordedAudio();
Chris@200 68 virtual void saveSession();
Chris@200 69 virtual void saveSessionAs();
Chris@200 70 virtual void newSession();
Chris@200 71 virtual void closeSession();
Chris@200 72 virtual void preferences();
Chris@0 73
Chris@921 74 virtual void sampleRateMismatch(sv_samplerate_t, sv_samplerate_t, bool);
Chris@200 75 virtual void audioOverloadPluginDisabled();
Chris@266 76 virtual void audioTimeStretchMultiChannelDisabled();
Chris@0 77
Chris@200 78 virtual void toolNavigateSelected();
Chris@200 79 virtual void toolSelectSelected();
Chris@200 80 virtual void toolEditSelected();
Chris@200 81 virtual void toolDrawSelected();
Chris@217 82 virtual void toolEraseSelected();
Chris@200 83 virtual void toolMeasureSelected();
Chris@7 84
Chris@200 85 virtual void documentModified();
Chris@200 86 virtual void documentRestored();
Chris@303 87 virtual void documentReplaced();
Chris@0 88
Chris@200 89 virtual void updateMenuStates();
Chris@200 90 virtual void updateDescriptionLabel();
Chris@0 91
Chris@200 92 virtual void setInstantsNumbering();
Chris@200 93 virtual void setInstantsCounterCycle();
Chris@597 94 virtual void setInstantsCounters();
Chris@200 95 virtual void resetInstantsCounters();
Chris@1355 96 virtual void subdivideInstants();
Chris@1356 97 virtual void winnowInstants();
Chris@0 98
Chris@233 99 virtual void modelGenerationFailed(QString, QString);
Chris@233 100 virtual void modelGenerationWarning(QString, QString);
Chris@233 101 virtual void modelRegenerationFailed(QString, QString, QString);
Chris@233 102 virtual void modelRegenerationWarning(QString, QString, QString);
Chris@1151 103 virtual void alignmentFailed(QString);
Chris@0 104
Chris@200 105 virtual void rightButtonMenuRequested(Pane *, QPoint point);
Chris@0 106
Chris@239 107 virtual void propertyStacksResized(int);
Chris@239 108
Chris@200 109 virtual void addPane();
Chris@200 110 virtual void addLayer();
Chris@274 111 virtual void addLayer(QString transformId);
Chris@200 112 virtual void renameCurrentLayer();
Chris@0 113
Chris@272 114 virtual void findTransform();
Chris@272 115
Chris@200 116 virtual void paneAdded(Pane *);
Chris@200 117 virtual void paneHidden(Pane *);
Chris@200 118 virtual void paneAboutToBeDeleted(Pane *);
Chris@200 119 virtual void paneDropAccepted(Pane *, QStringList);
Chris@200 120 virtual void paneDropAccepted(Pane *, QString);
Chris@0 121
Chris@200 122 virtual void setupRecentFilesMenu();
Chris@211 123 virtual void setupRecentTransformsMenu();
Chris@423 124 virtual void setupTemplatesMenu();
Chris@0 125
Chris@200 126 virtual void playSpeedChanged(int);
Chris@207 127 virtual void playSoloToggled();
Chris@206 128 virtual void alignToggled();
Chris@0 129
Chris@227 130 virtual void currentPaneChanged(Pane *);
Chris@227 131
Chris@200 132 virtual void speedUpPlayback();
Chris@200 133 virtual void slowDownPlayback();
Chris@200 134 virtual void restoreNormalPlayback();
Chris@0 135
Chris@1476 136 virtual void monitoringLevelsChanged(float, float);
Chris@0 137
Chris@200 138 virtual void layerRemoved(Layer *);
Chris@200 139 virtual void layerInAView(Layer *, bool);
Chris@0 140
Chris@200 141 virtual void mainModelChanged(WaveFileModel *);
Chris@1035 142 virtual void mainModelGainChanged(float);
Chris@1386 143 virtual void mainModelPanChanged(float);
Chris@200 144 virtual void modelAdded(Model *);
Chris@760 145 virtual void modelAboutToBeDeleted(Model *);
Chris@0 146
Chris@200 147 virtual void showLayerTree();
Chris@306 148 virtual void showActivityLog();
Chris@891 149 virtual void showUnitConverter();
Chris@0 150
Chris@200 151 virtual void mouseEnteredWidget();
Chris@200 152 virtual void mouseLeftWidget();
Chris@73 153
Chris@200 154 virtual void handleOSCMessage(const OSCMessage &);
Chris@304 155 virtual void midiEventsAvailable();
Chris@305 156 virtual void playStatusChanged(bool);
Chris@193 157
Chris@1148 158 virtual void pluginPopulationWarning();
Chris@1087 159
Chris@425 160 virtual void saveSessionAsTemplate();
Chris@425 161 virtual void manageSavedTemplates();
Chris@425 162
Chris@200 163 virtual void website();
Chris@200 164 virtual void help();
Chris@200 165 virtual void about();
Chris@200 166 virtual void keyReference();
Chris@333 167 virtual void newerVersionAvailable(QString);
Chris@0 168
Chris@0 169 protected:
Chris@65 170 Overview *m_overview;
Chris@1386 171 //!!! Fader *m_fader;
Chris@1431 172 LevelPanToolButton *m_mainLevelPan;
Chris@0 173 AudioDial *m_playSpeed;
Chris@0 174 WaveformLayer *m_panLayer;
Chris@489 175
Chris@489 176 QScrollArea *m_mainScroll;
Chris@34 177
Chris@0 178 bool m_mainMenusCreated;
Chris@0 179 QMenu *m_paneMenu;
Chris@0 180 QMenu *m_layerMenu;
Chris@34 181 QMenu *m_transformsMenu;
Chris@155 182 QMenu *m_playbackMenu;
Chris@0 183 QMenu *m_existingLayersMenu;
Chris@95 184 QMenu *m_sliceMenu;
Chris@0 185 QMenu *m_recentFilesMenu;
Chris@211 186 QMenu *m_recentTransformsMenu;
Chris@423 187 QMenu *m_templatesMenu;
Chris@0 188 QMenu *m_rightButtonMenu;
Chris@0 189 QMenu *m_rightButtonLayerMenu;
Chris@211 190 QMenu *m_rightButtonTransformsMenu;
Chris@155 191 QMenu *m_rightButtonPlaybackMenu;
Chris@155 192
Chris@164 193 QAction *m_deleteSelectedAction;
Chris@207 194 QAction *m_soloAction;
Chris@265 195 QAction *m_rwdStartAction;
Chris@323 196 QAction *m_rwdSimilarAction;
Chris@265 197 QAction *m_rwdAction;
Chris@155 198 QAction *m_ffwdAction;
Chris@323 199 QAction *m_ffwdSimilarAction;
Chris@265 200 QAction *m_ffwdEndAction;
Chris@265 201 QAction *m_playAction;
Chris@1047 202 QAction *m_recordAction;
Chris@265 203 QAction *m_playSelectionAction;
Chris@265 204 QAction *m_playLoopAction;
Chris@436 205 QAction *m_manageTemplatesAction;
Chris@494 206 QAction *m_zoomInAction;
Chris@494 207 QAction *m_zoomOutAction;
Chris@494 208 QAction *m_zoomFitAction;
Chris@494 209 QAction *m_scrollLeftAction;
Chris@494 210 QAction *m_scrollRightAction;
Chris@494 211 QAction *m_showPropertyBoxesAction;
Chris@0 212
Chris@207 213 bool m_soloModified;
Chris@207 214 bool m_prevSolo;
Chris@207 215
Chris@239 216 QFrame *m_playControlsSpacer;
Chris@239 217 int m_playControlsWidth;
Chris@239 218
Chris@518 219 QLabel *m_descriptionLabel;
Chris@340 220 QLabel *m_currentLabel;
Chris@340 221
Chris@0 222 QPointer<PreferencesDialog> m_preferencesDialog;
Chris@219 223 QPointer<LayerTreeDialog> m_layerTreeDialog;
Chris@0 224
Chris@302 225 ActivityLog *m_activityLog;
Chris@891 226 UnitConverter *m_unitConverter;
Chris@162 227 KeyReference *m_keyReference;
Chris@162 228
Chris@426 229 QFileSystemWatcher *m_templateWatcher;
Chris@426 230
Chris@662 231 Surveyer *m_surveyer;
Chris@573 232 VersionTester *m_versionTester;
Chris@573 233
Chris@232 234 struct LayerConfiguration {
Chris@232 235 LayerConfiguration(LayerFactory::LayerType _layer
Chris@0 236 = LayerFactory::TimeRuler,
Chris@232 237 Model *_source = 0,
Chris@232 238 int _channel = -1) :
Chris@66 239 layer(_layer), sourceModel(_source), channel(_channel) { }
Chris@0 240 LayerFactory::LayerType layer;
Chris@66 241 Model *sourceModel;
Chris@0 242 int channel;
Chris@0 243 };
Chris@0 244
Chris@232 245 typedef std::map<QAction *, LayerConfiguration> PaneActionMap;
Chris@0 246 PaneActionMap m_paneActions;
Chris@0 247
Chris@232 248 typedef std::map<QAction *, LayerConfiguration> LayerActionMap;
Chris@232 249 LayerActionMap m_layerActions;
Chris@232 250
Chris@211 251 typedef std::map<QAction *, TransformId> TransformActionMap;
Chris@211 252 TransformActionMap m_transformActions;
Chris@34 253
Chris@211 254 typedef std::map<TransformId, QAction *> TransformActionReverseMap;
Chris@211 255 TransformActionReverseMap m_transformActionsReverse;
Chris@0 256
Chris@0 257 typedef std::map<QAction *, Layer *> ExistingLayerActionMap;
Chris@0 258 ExistingLayerActionMap m_existingLayerActions;
Chris@95 259 ExistingLayerActionMap m_sliceActions;
Chris@0 260
Chris@0 261 typedef std::map<ViewManager::ToolMode, QAction *> ToolActionMap;
Chris@0 262 ToolActionMap m_toolActions;
Chris@0 263
Chris@189 264 typedef std::map<QAction *, int> NumberingActionMap;
Chris@189 265 NumberingActionMap m_numberingActions;
Chris@189 266
Chris@200 267 virtual void setupMenus();
Chris@200 268 virtual void setupFileMenu();
Chris@200 269 virtual void setupEditMenu();
Chris@200 270 virtual void setupViewMenu();
Chris@200 271 virtual void setupPaneAndLayerMenus();
Chris@211 272 virtual void setupTransformsMenu();
Chris@200 273 virtual void setupHelpMenu();
Chris@200 274 virtual void setupExistingLayersMenus();
Chris@200 275 virtual void setupToolbars();
Chris@66 276
Chris@232 277 virtual void addPane(const LayerConfiguration &configuration, QString text);
Chris@0 278
Chris@0 279 virtual void closeEvent(QCloseEvent *e);
Chris@200 280 virtual bool checkSaveModified();
Chris@265 281
Chris@631 282 virtual void exportAudio(bool asData);
Chris@631 283
Chris@265 284 virtual void updateVisibleRangeDisplay(Pane *p) const;
Chris@340 285 virtual void updatePositionStatusDisplays() const;
Chris@290 286
Chris@294 287 virtual bool shouldCreateNewSessionForRDFAudio(bool *cancel);
Chris@200 288
Chris@265 289 virtual void connectLayerEditDialog(ModelDataTableDialog *);
Chris@0 290 };
Chris@0 291
Chris@0 292
Chris@0 293 #endif