annotate main/MainWindow.h @ 1620:33d32b3190bf

Store aggregate models in the document and release them when they are invalidated (because their components have been released). They're no longer leaked, but we still don't save them in the session file.
author Chris Cannam
date Mon, 27 Feb 2017 16:26:37 +0000
parents 3b8bd7e520c5
children 6b2e781b0154
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@1521 158 virtual void betaReleaseWarning();
Chris@1148 159 virtual void pluginPopulationWarning();
Chris@1087 160
Chris@425 161 virtual void saveSessionAsTemplate();
Chris@425 162 virtual void manageSavedTemplates();
Chris@425 163
Chris@200 164 virtual void website();
Chris@200 165 virtual void help();
Chris@200 166 virtual void about();
Chris@1516 167 virtual void whatsNew();
Chris@200 168 virtual void keyReference();
Chris@333 169 virtual void newerVersionAvailable(QString);
Chris@0 170
Chris@0 171 protected:
Chris@65 172 Overview *m_overview;
Chris@1431 173 LevelPanToolButton *m_mainLevelPan;
Chris@0 174 AudioDial *m_playSpeed;
Chris@0 175 WaveformLayer *m_panLayer;
Chris@489 176
Chris@489 177 QScrollArea *m_mainScroll;
Chris@34 178
Chris@0 179 bool m_mainMenusCreated;
Chris@0 180 QMenu *m_paneMenu;
Chris@0 181 QMenu *m_layerMenu;
Chris@34 182 QMenu *m_transformsMenu;
Chris@155 183 QMenu *m_playbackMenu;
Chris@0 184 QMenu *m_existingLayersMenu;
Chris@95 185 QMenu *m_sliceMenu;
Chris@0 186 QMenu *m_recentFilesMenu;
Chris@211 187 QMenu *m_recentTransformsMenu;
Chris@423 188 QMenu *m_templatesMenu;
Chris@0 189 QMenu *m_rightButtonMenu;
Chris@0 190 QMenu *m_rightButtonLayerMenu;
Chris@211 191 QMenu *m_rightButtonTransformsMenu;
Chris@155 192 QMenu *m_rightButtonPlaybackMenu;
Chris@155 193
Chris@164 194 QAction *m_deleteSelectedAction;
Chris@207 195 QAction *m_soloAction;
Chris@265 196 QAction *m_rwdStartAction;
Chris@323 197 QAction *m_rwdSimilarAction;
Chris@265 198 QAction *m_rwdAction;
Chris@155 199 QAction *m_ffwdAction;
Chris@323 200 QAction *m_ffwdSimilarAction;
Chris@265 201 QAction *m_ffwdEndAction;
Chris@265 202 QAction *m_playAction;
Chris@1047 203 QAction *m_recordAction;
Chris@265 204 QAction *m_playSelectionAction;
Chris@265 205 QAction *m_playLoopAction;
Chris@436 206 QAction *m_manageTemplatesAction;
Chris@494 207 QAction *m_zoomInAction;
Chris@494 208 QAction *m_zoomOutAction;
Chris@494 209 QAction *m_zoomFitAction;
Chris@494 210 QAction *m_scrollLeftAction;
Chris@494 211 QAction *m_scrollRightAction;
Chris@494 212 QAction *m_showPropertyBoxesAction;
Chris@0 213
Chris@207 214 bool m_soloModified;
Chris@207 215 bool m_prevSolo;
Chris@207 216
Chris@239 217 QFrame *m_playControlsSpacer;
Chris@239 218 int m_playControlsWidth;
Chris@239 219
Chris@518 220 QLabel *m_descriptionLabel;
Chris@340 221 QLabel *m_currentLabel;
Chris@340 222
Chris@0 223 QPointer<PreferencesDialog> m_preferencesDialog;
Chris@219 224 QPointer<LayerTreeDialog> m_layerTreeDialog;
Chris@0 225
Chris@302 226 ActivityLog *m_activityLog;
Chris@891 227 UnitConverter *m_unitConverter;
Chris@162 228 KeyReference *m_keyReference;
Chris@162 229
Chris@426 230 QFileSystemWatcher *m_templateWatcher;
Chris@426 231
Chris@662 232 Surveyer *m_surveyer;
Chris@573 233 VersionTester *m_versionTester;
Chris@1516 234 QString m_newerVersionIs;
Chris@573 235
Chris@232 236 struct LayerConfiguration {
Chris@232 237 LayerConfiguration(LayerFactory::LayerType _layer
Chris@0 238 = LayerFactory::TimeRuler,
Chris@232 239 Model *_source = 0,
Chris@232 240 int _channel = -1) :
Chris@66 241 layer(_layer), sourceModel(_source), channel(_channel) { }
Chris@0 242 LayerFactory::LayerType layer;
Chris@66 243 Model *sourceModel;
Chris@0 244 int channel;
Chris@0 245 };
Chris@0 246
Chris@232 247 typedef std::map<QAction *, LayerConfiguration> PaneActionMap;
Chris@0 248 PaneActionMap m_paneActions;
Chris@0 249
Chris@232 250 typedef std::map<QAction *, LayerConfiguration> LayerActionMap;
Chris@232 251 LayerActionMap m_layerActions;
Chris@232 252
Chris@211 253 typedef std::map<QAction *, TransformId> TransformActionMap;
Chris@211 254 TransformActionMap m_transformActions;
Chris@34 255
Chris@211 256 typedef std::map<TransformId, QAction *> TransformActionReverseMap;
Chris@211 257 TransformActionReverseMap m_transformActionsReverse;
Chris@0 258
Chris@0 259 typedef std::map<QAction *, Layer *> ExistingLayerActionMap;
Chris@0 260 ExistingLayerActionMap m_existingLayerActions;
Chris@95 261 ExistingLayerActionMap m_sliceActions;
Chris@0 262
Chris@0 263 typedef std::map<ViewManager::ToolMode, QAction *> ToolActionMap;
Chris@0 264 ToolActionMap m_toolActions;
Chris@0 265
Chris@189 266 typedef std::map<QAction *, int> NumberingActionMap;
Chris@189 267 NumberingActionMap m_numberingActions;
Chris@189 268
Chris@1610 269 QString getReleaseText() const;
Chris@1610 270
Chris@200 271 virtual void setupMenus();
Chris@200 272 virtual void setupFileMenu();
Chris@200 273 virtual void setupEditMenu();
Chris@200 274 virtual void setupViewMenu();
Chris@200 275 virtual void setupPaneAndLayerMenus();
Chris@211 276 virtual void setupTransformsMenu();
Chris@200 277 virtual void setupHelpMenu();
Chris@200 278 virtual void setupExistingLayersMenus();
Chris@200 279 virtual void setupToolbars();
Chris@66 280
Chris@232 281 virtual void addPane(const LayerConfiguration &configuration, QString text);
Chris@0 282
Chris@0 283 virtual void closeEvent(QCloseEvent *e);
Chris@200 284 virtual bool checkSaveModified();
Chris@265 285
Chris@631 286 virtual void exportAudio(bool asData);
Chris@631 287
Chris@265 288 virtual void updateVisibleRangeDisplay(Pane *p) const;
Chris@340 289 virtual void updatePositionStatusDisplays() const;
Chris@290 290
Chris@294 291 virtual bool shouldCreateNewSessionForRDFAudio(bool *cancel);
Chris@200 292
Chris@265 293 virtual void connectLayerEditDialog(ModelDataTableDialog *);
Chris@0 294 };
Chris@0 295
Chris@0 296
Chris@0 297 #endif