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