To check out this repository please hg clone the following URL, or open the URL using EasyMercurial or your preferred Mercurial client.

Statistics Download as Zip
| Branch: | Revision:

root / main / MainWindow.h @ 3:36855d576f53

History | View | Annotate | Download (5.97 KB)

1
/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*-  vi:set ts=8 sts=4 sw=4: */
2

    
3
/*
4
    Sonic Visualiser
5
    An audio file viewer and annotation editor.
6
    Centre for Digital Music, Queen Mary, University of London.
7
    This file copyright 2006 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 "transform/TransformDescription.h"
33
#include "framework/SVFileReader.h"
34
#include "data/fileio/FileFinder.h"
35
#include <map>
36

    
37
class Document;
38
class PaneStack;
39
class Pane;
40
class View;
41
class Fader;
42
class Overview;
43
class Layer;
44
class WaveformLayer;
45
class WaveFileModel;
46
class AudioCallbackPlaySource;
47
class AudioCallbackPlayTarget;
48
class CommandHistory;
49
class QMenu;
50
class AudioDial;
51
class QLabel;
52
class QCheckBox;
53
class PreferencesDialog;
54
class QTreeView;
55
class QPushButton;
56
class OSCQueue;
57
class OSCMessage;
58
class KeyReference;
59

    
60

    
61
class MainWindow : public MainWindowBase
62
{
63
    Q_OBJECT
64

    
65
public:
66
    MainWindow(bool withAudioOutput = true,
67
               bool withOSCSupport = true);
68
    virtual ~MainWindow();
69

    
70
public slots:
71
    virtual void preferenceChanged(PropertyContainer::PropertyName);
72
    virtual bool commitData(bool mayAskUser); // on session shutdown
73

    
74
protected slots:
75
    virtual void openFile();
76
    virtual void openLocation();
77
    virtual void openRecentFile();
78
    virtual void saveSession();
79
    virtual void saveSessionAs();
80
    virtual void newSession();
81
    virtual void closeSession();
82
    virtual void preferences();
83

    
84
    virtual void curveModeSelected();
85
    virtual void waveformModeSelected();
86
    virtual void spectrogramModeSelected();
87
    virtual void melodogramModeSelected();
88

    
89
    virtual void renameCurrentLayer();
90

    
91
    virtual void paneAdded(Pane *);
92
    virtual void paneHidden(Pane *);
93
    virtual void paneAboutToBeDeleted(Pane *);
94
    virtual void paneDropAccepted(Pane *, QStringList);
95
    virtual void paneDropAccepted(Pane *, QString);
96

    
97
    virtual void playSpeedChanged(int);
98
    virtual void playSharpenToggled();
99
    virtual void playMonoToggled();
100

    
101
    virtual void speedUpPlayback();
102
    virtual void slowDownPlayback();
103
    virtual void restoreNormalPlayback();
104

    
105
    virtual void sampleRateMismatch(size_t, size_t, bool);
106
    virtual void audioOverloadPluginDisabled();
107
    virtual void audioTimeStretchMultiChannelDisabled();
108

    
109
    virtual void outputLevelsChanged(float, float);
110

    
111
    virtual void documentModified();
112
    virtual void documentRestored();
113

    
114
    virtual void updateMenuStates();
115
    virtual void updateDescriptionLabel();
116

    
117
    virtual void layerRemoved(Layer *);
118
    virtual void layerInAView(Layer *, bool);
119

    
120
    virtual void mainModelChanged(WaveFileModel *);
121
    virtual void modelAdded(Model *);
122
    virtual void modelReady();
123
    virtual void modelAboutToBeDeleted(Model *);
124

    
125
    virtual void modelGenerationFailed(QString, QString);
126
    virtual void modelGenerationWarning(QString, QString);
127
    virtual void modelRegenerationFailed(QString, QString, QString);
128
    virtual void modelRegenerationWarning(QString, QString, QString);
129
    virtual void alignmentFailed(QString, QString);
130

    
131
    virtual void rightButtonMenuRequested(Pane *, QPoint point);
132

    
133
    virtual void setupRecentFilesMenu();
134

    
135
    virtual void addSegmentation();
136

    
137
    virtual void showLayerTree();
138

    
139
    virtual void handleOSCMessage(const OSCMessage &);
140

    
141
    virtual void mouseEnteredWidget();
142
    virtual void mouseLeftWidget();
143

    
144
    virtual void website();
145
    virtual void help();
146
    virtual void about();
147
    virtual void keyReference();
148

    
149
protected:
150
    Overview                *m_overview;
151
    Fader                   *m_fader;
152
    AudioDial               *m_playSpeed;
153
    QPushButton             *m_playSharpen;
154
    QPushButton             *m_playMono;
155
    WaveformLayer           *m_panLayer;
156

    
157
    bool                     m_mainMenusCreated;
158
    QMenu                   *m_playbackMenu;
159
    QMenu                   *m_recentFilesMenu;
160
    QMenu                   *m_rightButtonMenu;
161
    QMenu                   *m_rightButtonPlaybackMenu;
162
    QMenu                   *m_segmentersMenu;
163

    
164
    QAction                 *m_deleteSelectedAction;
165
    QAction                 *m_ffwdAction;
166
    QAction                 *m_rwdAction;
167

    
168
    QPointer<PreferencesDialog> m_preferencesDialog;
169
    QPointer<QTreeView>      m_layerTreeView;
170

    
171
    KeyReference            *m_keyReference;
172

    
173
    typedef std::set<Layer *> LayerSet;
174
    typedef std::map<Pane *, LayerSet> PaneLayerMap;
175
    PaneLayerMap             m_hiddenLayers;
176

    
177
    TransformList            m_segmentationTransforms;
178
    
179
    void findSegmentationTransforms();
180

    
181
    virtual void setupMenus();
182
    virtual void setupFileMenu();
183
    virtual void setupEditMenu();
184
    virtual void setupViewMenu();
185
    virtual void setupSegmentersMenu();
186
    virtual void setupHelpMenu();
187
    virtual void setupToolbars();
188

    
189
    enum DisplayMode {
190
        CurveMode,
191
        WaveformMode,
192
        SpectrogramMode,
193
        MelodogramMode
194
    };
195
    virtual void reselectMode();
196
    DisplayMode m_displayMode;
197

    
198
    typedef std::map<Model *, Model *> ModelPairMap;
199
    ModelPairMap m_fftModelMap;
200

    
201
    typedef std::map<QAction *, TransformId> TransformActionMap;
202
    TransformActionMap m_segmenterActions;
203

    
204
    virtual void closeEvent(QCloseEvent *e);
205
    bool checkSaveModified();
206

    
207
    virtual void configureNewPane(Pane *p);
208
    virtual bool selectExistingModeLayer(Pane *, QString);
209

    
210
    virtual void updateVisibleRangeDisplay(Pane *p) const;
211
};
212

    
213

    
214
#endif