annotate main/MainWindow.h @ 1354:ae68ebb5fbe8 3.0-integration

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