annotate main/MainWindow.h @ 1109:ed51b940662c spectrogram-minor-refactor

Make paint method do its own timing and abandon if it's taking too long (still needs some work on queueing correct repaints of the remainder)
author Chris Cannam
date Mon, 25 Jan 2016 16:16:21 +0000
parents 6fcb632384ba
children b3b5885e7c2c
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@200 44 virtual bool commitData(bool mayAskUser);
Chris@118 45
Chris@489 46 void goFullScreen();
Chris@492 47 void endFullScreen();
Chris@489 48
Chris@0 49 protected slots:
Chris@200 50 virtual void importAudio();
Chris@200 51 virtual void importMoreAudio();
Chris@508 52 virtual void replaceMainAudio();
Chris@200 53 virtual void openSomething();
Chris@200 54 virtual void openLocation();
Chris@200 55 virtual void openRecentFile();
Chris@435 56 virtual void applyTemplate();
Chris@200 57 virtual void exportAudio();
Chris@631 58 virtual void exportAudioData();
Chris@200 59 virtual void importLayer();
Chris@200 60 virtual void exportLayer();
Chris@200 61 virtual void exportImage();
Chris@1056 62 virtual void browseRecordedAudio();
Chris@200 63 virtual void saveSession();
Chris@200 64 virtual void saveSessionAs();
Chris@200 65 virtual void newSession();
Chris@200 66 virtual void closeSession();
Chris@200 67 virtual void preferences();
Chris@0 68
Chris@921 69 virtual void sampleRateMismatch(sv_samplerate_t, sv_samplerate_t, bool);
Chris@200 70 virtual void audioOverloadPluginDisabled();
Chris@266 71 virtual void audioTimeStretchMultiChannelDisabled();
Chris@0 72
Chris@200 73 virtual void toolNavigateSelected();
Chris@200 74 virtual void toolSelectSelected();
Chris@200 75 virtual void toolEditSelected();
Chris@200 76 virtual void toolDrawSelected();
Chris@217 77 virtual void toolEraseSelected();
Chris@200 78 virtual void toolMeasureSelected();
Chris@7 79
Chris@200 80 virtual void documentModified();
Chris@200 81 virtual void documentRestored();
Chris@303 82 virtual void documentReplaced();
Chris@0 83
Chris@200 84 virtual void updateMenuStates();
Chris@200 85 virtual void updateDescriptionLabel();
Chris@0 86
Chris@200 87 virtual void setInstantsNumbering();
Chris@200 88 virtual void setInstantsCounterCycle();
Chris@597 89 virtual void setInstantsCounters();
Chris@200 90 virtual void resetInstantsCounters();
Chris@0 91
Chris@233 92 virtual void modelGenerationFailed(QString, QString);
Chris@233 93 virtual void modelGenerationWarning(QString, QString);
Chris@233 94 virtual void modelRegenerationFailed(QString, QString, QString);
Chris@233 95 virtual void modelRegenerationWarning(QString, QString, QString);
Chris@233 96 virtual void alignmentFailed(QString, QString);
Chris@0 97
Chris@200 98 virtual void rightButtonMenuRequested(Pane *, QPoint point);
Chris@0 99
Chris@239 100 virtual void propertyStacksResized(int);
Chris@239 101
Chris@200 102 virtual void addPane();
Chris@200 103 virtual void addLayer();
Chris@274 104 virtual void addLayer(QString transformId);
Chris@200 105 virtual void renameCurrentLayer();
Chris@0 106
Chris@272 107 virtual void findTransform();
Chris@272 108
Chris@200 109 virtual void paneAdded(Pane *);
Chris@200 110 virtual void paneHidden(Pane *);
Chris@200 111 virtual void paneAboutToBeDeleted(Pane *);
Chris@200 112 virtual void paneDropAccepted(Pane *, QStringList);
Chris@200 113 virtual void paneDropAccepted(Pane *, QString);
Chris@0 114
Chris@200 115 virtual void setupRecentFilesMenu();
Chris@211 116 virtual void setupRecentTransformsMenu();
Chris@423 117 virtual void setupTemplatesMenu();
Chris@0 118
Chris@200 119 virtual void playSpeedChanged(int);
Chris@207 120 virtual void playSoloToggled();
Chris@206 121 virtual void alignToggled();
Chris@0 122
Chris@227 123 virtual void currentPaneChanged(Pane *);
Chris@227 124
Chris@200 125 virtual void speedUpPlayback();
Chris@200 126 virtual void slowDownPlayback();
Chris@200 127 virtual void restoreNormalPlayback();
Chris@0 128
Chris@200 129 virtual void outputLevelsChanged(float, float);
Chris@0 130
Chris@200 131 virtual void layerRemoved(Layer *);
Chris@200 132 virtual void layerInAView(Layer *, bool);
Chris@0 133
Chris@200 134 virtual void mainModelChanged(WaveFileModel *);
Chris@1035 135 virtual void mainModelGainChanged(float);
Chris@200 136 virtual void modelAdded(Model *);
Chris@760 137 virtual void modelAboutToBeDeleted(Model *);
Chris@0 138
Chris@200 139 virtual void showLayerTree();
Chris@306 140 virtual void showActivityLog();
Chris@891 141 virtual void showUnitConverter();
Chris@0 142
Chris@200 143 virtual void mouseEnteredWidget();
Chris@200 144 virtual void mouseLeftWidget();
Chris@73 145
Chris@200 146 virtual void handleOSCMessage(const OSCMessage &);
Chris@304 147 virtual void midiEventsAvailable();
Chris@305 148 virtual void playStatusChanged(bool);
Chris@193 149
Chris@1087 150 virtual void pluginPopulationWarning(QString);
Chris@1087 151
Chris@425 152 virtual void saveSessionAsTemplate();
Chris@425 153 virtual void manageSavedTemplates();
Chris@425 154
Chris@200 155 virtual void website();
Chris@200 156 virtual void help();
Chris@200 157 virtual void about();
Chris@200 158 virtual void keyReference();
Chris@333 159 virtual void newerVersionAvailable(QString);
Chris@0 160
Chris@0 161 protected:
Chris@65 162 Overview *m_overview;
Chris@0 163 Fader *m_fader;
Chris@0 164 AudioDial *m_playSpeed;
Chris@0 165 WaveformLayer *m_panLayer;
Chris@489 166
Chris@489 167 QScrollArea *m_mainScroll;
Chris@34 168
Chris@0 169 bool m_mainMenusCreated;
Chris@0 170 QMenu *m_paneMenu;
Chris@0 171 QMenu *m_layerMenu;
Chris@34 172 QMenu *m_transformsMenu;
Chris@155 173 QMenu *m_playbackMenu;
Chris@0 174 QMenu *m_existingLayersMenu;
Chris@95 175 QMenu *m_sliceMenu;
Chris@0 176 QMenu *m_recentFilesMenu;
Chris@211 177 QMenu *m_recentTransformsMenu;
Chris@423 178 QMenu *m_templatesMenu;
Chris@0 179 QMenu *m_rightButtonMenu;
Chris@0 180 QMenu *m_rightButtonLayerMenu;
Chris@211 181 QMenu *m_rightButtonTransformsMenu;
Chris@155 182 QMenu *m_rightButtonPlaybackMenu;
Chris@155 183
Chris@164 184 QAction *m_deleteSelectedAction;
Chris@207 185 QAction *m_soloAction;
Chris@265 186 QAction *m_rwdStartAction;
Chris@323 187 QAction *m_rwdSimilarAction;
Chris@265 188 QAction *m_rwdAction;
Chris@155 189 QAction *m_ffwdAction;
Chris@323 190 QAction *m_ffwdSimilarAction;
Chris@265 191 QAction *m_ffwdEndAction;
Chris@265 192 QAction *m_playAction;
Chris@1047 193 QAction *m_recordAction;
Chris@265 194 QAction *m_playSelectionAction;
Chris@265 195 QAction *m_playLoopAction;
Chris@436 196 QAction *m_manageTemplatesAction;
Chris@494 197 QAction *m_zoomInAction;
Chris@494 198 QAction *m_zoomOutAction;
Chris@494 199 QAction *m_zoomFitAction;
Chris@494 200 QAction *m_scrollLeftAction;
Chris@494 201 QAction *m_scrollRightAction;
Chris@494 202 QAction *m_showPropertyBoxesAction;
Chris@0 203
Chris@207 204 bool m_soloModified;
Chris@207 205 bool m_prevSolo;
Chris@207 206
Chris@239 207 QFrame *m_playControlsSpacer;
Chris@239 208 int m_playControlsWidth;
Chris@239 209
Chris@518 210 QLabel *m_descriptionLabel;
Chris@340 211 QLabel *m_currentLabel;
Chris@340 212
Chris@0 213 QPointer<PreferencesDialog> m_preferencesDialog;
Chris@219 214 QPointer<LayerTreeDialog> m_layerTreeDialog;
Chris@0 215
Chris@302 216 ActivityLog *m_activityLog;
Chris@891 217 UnitConverter *m_unitConverter;
Chris@162 218 KeyReference *m_keyReference;
Chris@162 219
Chris@426 220 QFileSystemWatcher *m_templateWatcher;
Chris@426 221
Chris@662 222 Surveyer *m_surveyer;
Chris@573 223 VersionTester *m_versionTester;
Chris@573 224
Chris@232 225 struct LayerConfiguration {
Chris@232 226 LayerConfiguration(LayerFactory::LayerType _layer
Chris@0 227 = LayerFactory::TimeRuler,
Chris@232 228 Model *_source = 0,
Chris@232 229 int _channel = -1) :
Chris@66 230 layer(_layer), sourceModel(_source), channel(_channel) { }
Chris@0 231 LayerFactory::LayerType layer;
Chris@66 232 Model *sourceModel;
Chris@0 233 int channel;
Chris@0 234 };
Chris@0 235
Chris@232 236 typedef std::map<QAction *, LayerConfiguration> PaneActionMap;
Chris@0 237 PaneActionMap m_paneActions;
Chris@0 238
Chris@232 239 typedef std::map<QAction *, LayerConfiguration> LayerActionMap;
Chris@232 240 LayerActionMap m_layerActions;
Chris@232 241
Chris@211 242 typedef std::map<QAction *, TransformId> TransformActionMap;
Chris@211 243 TransformActionMap m_transformActions;
Chris@34 244
Chris@211 245 typedef std::map<TransformId, QAction *> TransformActionReverseMap;
Chris@211 246 TransformActionReverseMap m_transformActionsReverse;
Chris@0 247
Chris@0 248 typedef std::map<QAction *, Layer *> ExistingLayerActionMap;
Chris@0 249 ExistingLayerActionMap m_existingLayerActions;
Chris@95 250 ExistingLayerActionMap m_sliceActions;
Chris@0 251
Chris@0 252 typedef std::map<ViewManager::ToolMode, QAction *> ToolActionMap;
Chris@0 253 ToolActionMap m_toolActions;
Chris@0 254
Chris@189 255 typedef std::map<QAction *, int> NumberingActionMap;
Chris@189 256 NumberingActionMap m_numberingActions;
Chris@189 257
Chris@200 258 virtual void setupMenus();
Chris@200 259 virtual void setupFileMenu();
Chris@200 260 virtual void setupEditMenu();
Chris@200 261 virtual void setupViewMenu();
Chris@200 262 virtual void setupPaneAndLayerMenus();
Chris@211 263 virtual void setupTransformsMenu();
Chris@200 264 virtual void setupHelpMenu();
Chris@200 265 virtual void setupExistingLayersMenus();
Chris@200 266 virtual void setupToolbars();
Chris@66 267
Chris@232 268 virtual void addPane(const LayerConfiguration &configuration, QString text);
Chris@0 269
Chris@0 270 virtual void closeEvent(QCloseEvent *e);
Chris@200 271 virtual bool checkSaveModified();
Chris@265 272
Chris@631 273 virtual void exportAudio(bool asData);
Chris@631 274
Chris@265 275 virtual void updateVisibleRangeDisplay(Pane *p) const;
Chris@340 276 virtual void updatePositionStatusDisplays() const;
Chris@290 277
Chris@294 278 virtual bool shouldCreateNewSessionForRDFAudio(bool *cancel);
Chris@200 279
Chris@265 280 virtual void connectLayerEditDialog(ModelDataTableDialog *);
Chris@0 281 };
Chris@0 282
Chris@0 283
Chris@0 284 #endif