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 @ 0:abed8a293168

History | View | Annotate | Download (5.6 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 "framework/SVFileReader.h"
33
#include "widgets/FileFinder.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 PreferencesDialog;
53
class QTreeView;
54
class QPushButton;
55
class OSCQueue;
56
class OSCMessage;
57
class KeyReference;
58

    
59

    
60
class MainWindow : public MainWindowBase
61
{
62
    Q_OBJECT
63

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

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

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

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

    
88
    virtual void renameCurrentLayer();
89

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

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

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

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

    
108
    virtual void outputLevelsChanged(float, float);
109

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

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

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

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

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

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

    
132
    virtual void setupRecentFilesMenu();
133

    
134
    virtual void showLayerTree();
135

    
136
    virtual void handleOSCMessage(const OSCMessage &);
137

    
138
    virtual void mouseEnteredWidget();
139
    virtual void mouseLeftWidget();
140

    
141
    virtual void website();
142
    virtual void help();
143
    virtual void about();
144
    virtual void keyReference();
145

    
146
protected:
147
    Overview                *m_overview;
148
    Fader                   *m_fader;
149
    AudioDial               *m_playSpeed;
150
    QPushButton             *m_playSharpen;
151
    QPushButton             *m_playMono;
152
    WaveformLayer           *m_panLayer;
153

    
154
    bool                     m_mainMenusCreated;
155
    QMenu                   *m_playbackMenu;
156
    QMenu                   *m_recentFilesMenu;
157
    QMenu                   *m_rightButtonMenu;
158
    QMenu                   *m_rightButtonPlaybackMenu;
159

    
160
    QAction                 *m_deleteSelectedAction;
161
    QAction                 *m_ffwdAction;
162
    QAction                 *m_rwdAction;
163

    
164
    QPointer<PreferencesDialog> m_preferencesDialog;
165
    QPointer<QTreeView>      m_layerTreeView;
166

    
167
    KeyReference            *m_keyReference;
168

    
169
    typedef std::set<Layer *> LayerSet;
170
    typedef std::map<Pane *, LayerSet> PaneLayerMap;
171
    PaneLayerMap             m_hiddenLayers;
172

    
173
    virtual void setupMenus();
174
    virtual void setupFileMenu();
175
    virtual void setupEditMenu();
176
    virtual void setupViewMenu();
177
    virtual void setupHelpMenu();
178
    virtual void setupToolbars();
179

    
180
    enum DisplayMode {
181
        CurveMode,
182
        WaveformMode,
183
        SpectrogramMode,
184
        MelodogramMode
185
    };
186
    virtual void reselectMode();
187
    DisplayMode m_displayMode;
188

    
189
    typedef std::map<Model *, Model *> ModelPairMap;
190
    ModelPairMap m_fftModelMap;
191

    
192
    virtual void closeEvent(QCloseEvent *e);
193
    bool checkSaveModified();
194

    
195
    virtual void configureNewPane(Pane *p);
196
    virtual Model *selectExistingModeLayer(Pane *, QString);
197

    
198
    virtual void updateVisibleRangeDisplay(Pane *p) const;
199
};
200

    
201

    
202
#endif