00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef _MAIN_WINDOW_H_
00017 #define _MAIN_WINDOW_H_
00018
00019 #include <QFrame>
00020 #include <QString>
00021 #include <QUrl>
00022 #include <QPointer>
00023
00024 #include "framework/MainWindowBase.h"
00025 #include "base/Command.h"
00026 #include "view/ViewManager.h"
00027 #include "base/PropertyContainer.h"
00028 #include "base/RecentFiles.h"
00029 #include "layer/LayerFactory.h"
00030 #include "plugin/transform/Transform.h"
00031 #include "framework/SVFileReader.h"
00032 #include "data/fileio/FileFinder.h"
00033 #include "data/fileio/FileSource.h"
00034 #include "widgets/LayerTreeDialog.h"
00035 #include <map>
00036
00037 class Document;
00038 class PaneStack;
00039 class Pane;
00040 class View;
00041 class Fader;
00042 class Overview;
00043 class Layer;
00044 class WaveformLayer;
00045 class WaveFileModel;
00046 class AudioCallbackPlaySource;
00047 class AudioCallbackPlayTarget;
00048 class CommandHistory;
00049 class QMenu;
00050 class AudioDial;
00051 class QLabel;
00052 class QCheckBox;
00053 class PreferencesDialog;
00054 class QTreeView;
00055 class QPushButton;
00056 class OSCQueue;
00057 class OSCMessage;
00058 class KeyReference;
00059 class Labeller;
00060
00061
00062 class MainWindow : public MainWindowBase
00063 {
00064 Q_OBJECT
00065
00066 public:
00067 MainWindow(bool withAudioOutput = true,
00068 bool withOSCSupport = true);
00069 virtual ~MainWindow();
00070
00071 signals:
00072 virtual void canChangeSolo(bool);
00073 virtual void canAlign(bool);
00074
00075 public slots:
00076 virtual void preferenceChanged(PropertyContainer::PropertyName);
00077 virtual bool commitData(bool mayAskUser);
00078
00079 protected slots:
00080 virtual void openSession();
00081 virtual void importAudio();
00082 virtual void importMoreAudio();
00083 virtual void openSomething();
00084 virtual void openLocation();
00085 virtual void openRecentFile();
00086 virtual void exportAudio();
00087 virtual void importLayer();
00088 virtual void exportLayer();
00089 virtual void exportImage();
00090 virtual void saveSession();
00091 virtual void saveSessionAs();
00092 virtual void newSession();
00093 virtual void closeSession();
00094 virtual void preferences();
00095
00096 virtual void sampleRateMismatch(size_t, size_t, bool);
00097 virtual void audioOverloadPluginDisabled();
00098
00099 virtual void toolNavigateSelected();
00100 virtual void toolSelectSelected();
00101 virtual void toolEditSelected();
00102 virtual void toolDrawSelected();
00103 virtual void toolEraseSelected();
00104 virtual void toolMeasureSelected();
00105
00106 virtual void documentModified();
00107 virtual void documentRestored();
00108
00109 virtual void updateMenuStates();
00110 virtual void updateDescriptionLabel();
00111
00112 virtual void setInstantsNumbering();
00113 virtual void setInstantsCounterCycle();
00114 virtual void resetInstantsCounters();
00115
00116 virtual void modelGenerationFailed(QString, QString);
00117 virtual void modelGenerationWarning(QString, QString);
00118 virtual void modelRegenerationFailed(QString, QString, QString);
00119 virtual void modelRegenerationWarning(QString, QString, QString);
00120 virtual void alignmentFailed(QString, QString);
00121
00122 virtual void rightButtonMenuRequested(Pane *, QPoint point);
00123
00124 virtual void propertyStacksResized(int);
00125
00126 virtual void addPane();
00127 virtual void addLayer();
00128 virtual void renameCurrentLayer();
00129
00130 virtual void paneAdded(Pane *);
00131 virtual void paneHidden(Pane *);
00132 virtual void paneAboutToBeDeleted(Pane *);
00133 virtual void paneDropAccepted(Pane *, QStringList);
00134 virtual void paneDropAccepted(Pane *, QString);
00135
00136 virtual void setupRecentFilesMenu();
00137 virtual void setupRecentTransformsMenu();
00138
00139 virtual void playSpeedChanged(int);
00140 virtual void playSoloToggled();
00141 virtual void alignToggled();
00142
00143 virtual void currentPaneChanged(Pane *);
00144
00145 virtual void speedUpPlayback();
00146 virtual void slowDownPlayback();
00147 virtual void restoreNormalPlayback();
00148
00149 virtual void outputLevelsChanged(float, float);
00150
00151 virtual void layerRemoved(Layer *);
00152 virtual void layerInAView(Layer *, bool);
00153
00154 virtual void mainModelChanged(WaveFileModel *);
00155 virtual void modelAdded(Model *);
00156
00157 virtual void showLayerTree();
00158
00159 virtual void mouseEnteredWidget();
00160 virtual void mouseLeftWidget();
00161
00162 virtual void handleOSCMessage(const OSCMessage &);
00163
00164 virtual void website();
00165 virtual void help();
00166 virtual void about();
00167 virtual void keyReference();
00168
00169 protected:
00170 Overview *m_overview;
00171 Fader *m_fader;
00172 AudioDial *m_playSpeed;
00173 WaveformLayer *m_panLayer;
00174
00175 bool m_mainMenusCreated;
00176 QMenu *m_paneMenu;
00177 QMenu *m_layerMenu;
00178 QMenu *m_transformsMenu;
00179 QMenu *m_playbackMenu;
00180 QMenu *m_existingLayersMenu;
00181 QMenu *m_sliceMenu;
00182 QMenu *m_recentFilesMenu;
00183 QMenu *m_recentTransformsMenu;
00184 QMenu *m_rightButtonMenu;
00185 QMenu *m_rightButtonLayerMenu;
00186 QMenu *m_rightButtonTransformsMenu;
00187 QMenu *m_rightButtonPlaybackMenu;
00188
00189 QAction *m_deleteSelectedAction;
00190 QAction *m_soloAction;
00191 QAction *m_ffwdAction;
00192 QAction *m_rwdAction;
00193
00194 bool m_soloModified;
00195 bool m_prevSolo;
00196
00197 QFrame *m_playControlsSpacer;
00198 int m_playControlsWidth;
00199
00200 QPointer<PreferencesDialog> m_preferencesDialog;
00201 QPointer<LayerTreeDialog> m_layerTreeDialog;
00202
00203 KeyReference *m_keyReference;
00204
00205 struct LayerConfiguration {
00206 LayerConfiguration(LayerFactory::LayerType _layer
00207 = LayerFactory::TimeRuler,
00208 Model *_source = 0,
00209 int _channel = -1) :
00210 layer(_layer), sourceModel(_source), channel(_channel) { }
00211 LayerFactory::LayerType layer;
00212 Model *sourceModel;
00213 int channel;
00214 };
00215
00216 typedef std::map<QAction *, LayerConfiguration> PaneActionMap;
00217 PaneActionMap m_paneActions;
00218
00219 typedef std::map<QAction *, LayerConfiguration> LayerActionMap;
00220 LayerActionMap m_layerActions;
00221
00222 typedef std::map<QAction *, TransformId> TransformActionMap;
00223 TransformActionMap m_transformActions;
00224
00225 typedef std::map<TransformId, QAction *> TransformActionReverseMap;
00226 TransformActionReverseMap m_transformActionsReverse;
00227
00228 typedef std::map<QAction *, Layer *> ExistingLayerActionMap;
00229 ExistingLayerActionMap m_existingLayerActions;
00230 ExistingLayerActionMap m_sliceActions;
00231
00232 typedef std::map<ViewManager::ToolMode, QAction *> ToolActionMap;
00233 ToolActionMap m_toolActions;
00234
00235 typedef std::map<QAction *, int> NumberingActionMap;
00236 NumberingActionMap m_numberingActions;
00237
00238 virtual void setupMenus();
00239 virtual void setupFileMenu();
00240 virtual void setupEditMenu();
00241 virtual void setupViewMenu();
00242 virtual void setupPaneAndLayerMenus();
00243 virtual void setupTransformsMenu();
00244 virtual void setupHelpMenu();
00245 virtual void setupExistingLayersMenus();
00246 virtual void setupToolbars();
00247
00248 virtual void addPane(const LayerConfiguration &configuration, QString text);
00249
00250 virtual void closeEvent(QCloseEvent *e);
00251 virtual bool checkSaveModified();
00252
00253 virtual void updateVisibleRangeDisplay(Pane *p) const;
00254 };
00255
00256
00257 #endif