annotate sv/main/MainWindow.h @ 282:d9319859a4cf tip

(none)
author benoitrigolleau
date Fri, 31 Oct 2008 11:00:24 +0000
parents a9af42a93073
children
rev   line source
lbajardsilogic@0 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
lbajardsilogic@0 2
lbajardsilogic@0 3 /*
lbajardsilogic@0 4 Sonic Visualiser
lbajardsilogic@0 5 An audio file viewer and annotation editor.
lbajardsilogic@0 6 Centre for Digital Music, Queen Mary, University of London.
lbajardsilogic@0 7 This file copyright 2006 Chris Cannam and QMUL.
lbajardsilogic@0 8
lbajardsilogic@0 9 This program is free software; you can redistribute it and/or
lbajardsilogic@0 10 modify it under the terms of the GNU General Public License as
lbajardsilogic@0 11 published by the Free Software Foundation; either version 2 of the
lbajardsilogic@0 12 License, or (at your option) any later version. See the file
lbajardsilogic@0 13 COPYING included with this distribution for more information.
lbajardsilogic@0 14 */
lbajardsilogic@0 15
lbajardsilogic@0 16 #ifndef _MAIN_WINDOW_H_
lbajardsilogic@0 17 #define _MAIN_WINDOW_H_
lbajardsilogic@0 18
lbajardsilogic@0 19 #include <QFrame>
lbajardsilogic@0 20 #include <QString>
lbajardsilogic@0 21 #include <QUrl>
lbajardsilogic@0 22 #include <QMainWindow>
lbajardsilogic@0 23 #include <QPointer>
lbajardsilogic@2 24 #include <QTabWidget>
lbajardsilogic@35 25 #include <QStatusBar>
lbajardsilogic@143 26 #include <QProcess>
benoitrigolleau@217 27 #include <QVector>
ivand_qmul@129 28 #include <time.h>
lbajardsilogic@0 29 #include "base/Command.h"
lbajardsilogic@0 30 #include "view/ViewManager.h"
lbajardsilogic@0 31 #include "base/PropertyContainer.h"
lbajardsilogic@0 32 #include "base/RecentFiles.h"
lbajardsilogic@0 33 #include "layer/LayerFactory.h"
lbajardsilogic@0 34 #include "transform/Transform.h"
lbajardsilogic@0 35 #include "document/SVFileReader.h"
lbajardsilogic@0 36 #include "data/fileio/FileFinder.h"
lbajardsilogic@10 37 #include "data/fileio/HttpClient.h"
lbajardsilogic@2 38 #include "widgets/WidgetGallery.h"
lbajardsilogic@21 39 #include "document/ESFileReader.h"
benoitrigolleau@66 40 #include "widgets/MultiPaneLayerContainer.h"
benoitrigolleau@217 41 #include "widgets/WaitingWidget.h"
lbajardsilogic@2 42
ivand_qmul@122 43 //Ivan Damnjanovic 12/07/2007
ivand_qmul@122 44 #include "data/fileio/VideoFileReader.h"
benoitrigolleau@145 45 #include "data/model/SDLWidget.h"
ivand_qmul@122 46
lbajardsilogic@0 47 #include <map>
lbajardsilogic@0 48
lbajardsilogic@0 49 class Document;
lbajardsilogic@0 50 class PaneStack;
lbajardsilogic@0 51 class Pane;
lbajardsilogic@0 52 class View;
lbajardsilogic@0 53 class Fader;
lbajardsilogic@0 54 class Overview;
lbajardsilogic@0 55 class Layer;
lbajardsilogic@0 56 class WaveformLayer;
lbajardsilogic@0 57 class WaveFileModel;
lbajardsilogic@0 58 class AudioCallbackPlaySource;
lbajardsilogic@0 59 class AudioCallbackPlayTarget;
lbajardsilogic@0 60 class CommandHistory;
lbajardsilogic@0 61 class QMenu;
lbajardsilogic@0 62 class AudioDial;
lbajardsilogic@0 63 class QLabel;
lbajardsilogic@0 64 class QCheckBox;
lbajardsilogic@0 65 class PreferencesDialog;
lbajardsilogic@0 66 class QPushButton;
lbajardsilogic@0 67 class OSCQueue;
lbajardsilogic@0 68 class OSCMessage;
lbajardsilogic@2 69 class InfoWidget;
lbajardsilogic@2 70 class SearchWidget;
lbajardsilogic@2 71 class QueryResultsWidget;
lbajardsilogic@143 72 class RelatedMediaWidget;
lbajardsilogic@2 73 class AdvancedToolBox;
lbajardsilogic@21 74 class EasaierSessionManager;
lbajardsilogic@21 75 class QueryModel;
lbajardsilogic@79 76 class RealTimeFilterPropertyStack;
lbajardsilogic@101 77 class ExpandWidget;
benoitrigolleau@263 78 class SpeechRecognitionUI;
lbajardsilogic@0 79
lbajardsilogic@0 80 class MainWindow : public QMainWindow
lbajardsilogic@0 81 {
lbajardsilogic@0 82 Q_OBJECT
lbajardsilogic@0 83
lbajardsilogic@0 84 public:
lbajardsilogic@0 85 MainWindow(bool withAudioOutput = true,
lbajardsilogic@0 86 bool withOSCSupport = true);
lbajardsilogic@0 87 virtual ~MainWindow();
lbajardsilogic@0 88
lbajardsilogic@0 89 enum AudioFileOpenMode {
lbajardsilogic@0 90 ReplaceMainModel,
lbajardsilogic@0 91 CreateAdditionalModel,
lbajardsilogic@0 92 AskUser
lbajardsilogic@0 93 };
lbajardsilogic@0 94
lbajardsilogic@0 95 enum FileOpenStatus {
lbajardsilogic@0 96 FileOpenSucceeded,
lbajardsilogic@0 97 FileOpenFailed,
lbajardsilogic@0 98 FileOpenCancelled
lbajardsilogic@0 99 };
lbajardsilogic@0 100
lbajardsilogic@21 101 enum TabName {
lbajardsilogic@21 102 Search,
lbajardsilogic@21 103 Result,
lbajardsilogic@21 104 Info,
lbajardsilogic@161 105 //RelatedMedia,
benoitrigolleau@130 106 Video
lbajardsilogic@21 107 };
lbajardsilogic@21 108
benoitrigolleau@262 109 EasaierSessionManager* getEasaierSessionManager();
benoitrigolleau@263 110 SpeechRecognitionUI* getSpeechRecognitionUI();
benoitrigolleau@263 111
benoitrigolleau@262 112
benoitrigolleau@276 113 Document* getDocument();
benoitrigolleau@262 114
lbajardsilogic@0 115 FileOpenStatus openSomeFile(QString path, AudioFileOpenMode = AskUser);
lbajardsilogic@0 116 FileOpenStatus openAudioFile(QString path, AudioFileOpenMode = AskUser);
ivand_qmul@122 117 // Ivan Damnjanovic 09-10/2007 added video file import
ivand_qmul@122 118 FileOpenStatus openVideoFile(QString path, AudioFileOpenMode = AskUser);
ivand_qmul@122 119 unsigned long Get_CurAudioTime();
ivand_qmul@129 120 unsigned long long Get_HardwareBufferTime();
ivand_qmul@122 121 bool isAudioPlaying();
ivand_qmul@122 122 //
lbajardsilogic@0 123 FileOpenStatus openLayerFile(QString path);
lbajardsilogic@0 124 FileOpenStatus openSessionFile(QString path);
lbajardsilogic@0 125 FileOpenStatus openURL(QUrl url);
lbajardsilogic@0 126
lbajardsilogic@0 127 bool saveSessionFile(QString path);
lbajardsilogic@0 128 bool commitData(bool mayAskUser); // on session shutdown
lbajardsilogic@0 129
lbajardsilogic@2 130 static MainWindow *instance();
lbajardsilogic@2 131
lbajardsilogic@21 132 QueryResultsWidget *getQueryResultsWidget();
lbajardsilogic@143 133 RelatedMediaWidget *getRelatedMediaWidget();
lbajardsilogic@21 134
lbajardsilogic@21 135 bool openEasaierSessionFile(QString path);
lbajardsilogic@21 136 bool saveEasaierSessionFile(QString path);
lbajardsilogic@21 137
benoitrigolleau@130 138
benoitrigolleau@130 139 QWidget* getVideoWidget();
benoitrigolleau@130 140
benoitrigolleau@145 141 SDLWidget* getSDLWidget();
benoitrigolleau@145 142 void setSDLInitSize(int w, int h);
benoitrigolleau@262 143
benoitrigolleau@145 144
lbajardsilogic@135 145 float inline getPlaySpeedVal() const { return m_playSpeedVal;}
benoitrigolleau@130 146
lbajardsilogic@268 147 size_t getMainModelSampleRate();
lbajardsilogic@268 148
lbajardsilogic@0 149 signals:
lbajardsilogic@0 150 // Used to toggle the availability of menu actions
lbajardsilogic@0 151 void canAddPane(bool);
lbajardsilogic@0 152 void canDeleteCurrentPane(bool);
lbajardsilogic@0 153 void canAddLayer(bool);
lbajardsilogic@0 154 void canImportMoreAudio(bool);
lbajardsilogic@0 155 void canImportLayer(bool);
lbajardsilogic@0 156 void canExportAudio(bool);
lbajardsilogic@0 157 void canExportLayer(bool);
lbajardsilogic@0 158 void canExportImage(bool);
lbajardsilogic@0 159 void canRenameLayer(bool);
lbajardsilogic@0 160 void canEditLayer(bool);
lbajardsilogic@0 161 void canSelect(bool);
lbajardsilogic@0 162 void canClearSelection(bool);
lbajardsilogic@0 163 void canEditSelection(bool);
lbajardsilogic@0 164 void canPaste(bool);
lbajardsilogic@0 165 void canInsertInstant(bool);
lbajardsilogic@0 166 void canInsertInstantsAtBoundaries(bool);
lbajardsilogic@0 167 void canDeleteCurrentLayer(bool);
lbajardsilogic@0 168 void canZoom(bool);
lbajardsilogic@0 169 void canScroll(bool);
lbajardsilogic@0 170 void canPlay(bool);
lbajardsilogic@0 171 void canFfwd(bool);
lbajardsilogic@0 172 void canRewind(bool);
lbajardsilogic@0 173 void canPlaySelection(bool);
lbajardsilogic@0 174 void canSave(bool);
benoitrigolleau@66 175 void newCurrentPane(Pane *pane);
benoitrigolleau@276 176 void addAudioSourceInfo(AudioSourceInfoModel *);
lbajardsilogic@0 177
lbajardsilogic@0 178 public slots:
lbajardsilogic@204 179 //void preferenceChanged(PropertyContainer::PropertyName);
benoitrigolleau@276 180 void createNewResultItem();
benoitrigolleau@276 181 void addInfoIntoResultItem(QString,QString);
benoitrigolleau@276 182 void saveCurrentResultItem();
benoitrigolleau@276 183 void displayResultList();
lbajardsilogic@0 184
lbajardsilogic@0 185 protected slots:
benoitrigolleau@263 186 void openSpeechQuery();
lbajardsilogic@0 187 void openSession();
lbajardsilogic@0 188 void importAudio();
lbajardsilogic@0 189 void importMoreAudio();
ivand_qmul@122 190 // Ivan Damnjanovic 09-10/2007 added video file import
ivand_qmul@122 191 void importVideo();
ivand_qmul@122 192 // Ivan Damnjanovic 09-10/2007 added video file import
lbajardsilogic@0 193 void openSomething();
lbajardsilogic@0 194 void openLocation();
lbajardsilogic@0 195 void openRecentFile();
lbajardsilogic@0 196 void exportAudio();
lbajardsilogic@0 197 void importLayer();
lbajardsilogic@0 198 void exportLayer();
lbajardsilogic@0 199 void exportImage();
lbajardsilogic@0 200 void saveSession();
lbajardsilogic@0 201 void saveSessionAs();
lbajardsilogic@0 202 void newSession();
lbajardsilogic@0 203 void closeSession();
lbajardsilogic@0 204 void preferences();
lbajardsilogic@0 205
lbajardsilogic@0 206 void zoomIn();
lbajardsilogic@0 207 void zoomOut();
lbajardsilogic@0 208 void zoomToFit();
lbajardsilogic@0 209 void zoomDefault();
lbajardsilogic@0 210 void scrollLeft();
lbajardsilogic@0 211 void scrollRight();
lbajardsilogic@0 212 void jumpLeft();
lbajardsilogic@0 213 void jumpRight();
lbajardsilogic@0 214
lbajardsilogic@0 215 void showNoOverlays();
lbajardsilogic@0 216 void showMinimalOverlays();
lbajardsilogic@0 217 void showStandardOverlays();
lbajardsilogic@0 218 void showAllOverlays();
lbajardsilogic@0 219
lbajardsilogic@0 220 void toggleZoomWheels();
lbajardsilogic@0 221 void toggleStatusBar();
lbajardsilogic@0 222
lbajardsilogic@0 223 void play();
lbajardsilogic@0 224 void ffwd();
lbajardsilogic@0 225 void ffwdEnd();
lbajardsilogic@0 226 void rewind();
lbajardsilogic@0 227 void rewindStart();
lbajardsilogic@0 228 void stop();
lbajardsilogic@0 229
lbajardsilogic@0 230 void addPane();
lbajardsilogic@0 231 void addLayer();
lbajardsilogic@0 232 void deleteCurrentPane();
lbajardsilogic@0 233 void renameCurrentLayer();
lbajardsilogic@0 234 void deleteCurrentLayer();
lbajardsilogic@0 235
lbajardsilogic@79 236 void removeFilter(QString);
lbajardsilogic@79 237
lbajardsilogic@0 238 void playLoopToggled();
lbajardsilogic@0 239 void playSelectionToggled();
lbajardsilogic@127 240 void playSpeedChanged(float);
lbajardsilogic@127 241 //void playSharpenToggled();
lbajardsilogic@127 242 //void playMonoToggled();
lbajardsilogic@0 243 void sampleRateMismatch(size_t, size_t, bool);
lbajardsilogic@0 244 void audioOverloadPluginDisabled();
lbajardsilogic@0 245
lbajardsilogic@0 246 void playbackFrameChanged(unsigned long);
lbajardsilogic@0 247 void globalCentreFrameChanged(unsigned long);
lbajardsilogic@0 248 void viewCentreFrameChanged(View *, unsigned long);
lbajardsilogic@0 249 void viewZoomLevelChanged(View *, unsigned long, bool);
lbajardsilogic@0 250 void outputLevelsChanged(float, float);
lbajardsilogic@0 251
lbajardsilogic@0 252 void currentPaneChanged(Pane *);
lbajardsilogic@0 253 void currentLayerChanged(Pane *, Layer *);
lbajardsilogic@0 254
lbajardsilogic@0 255 void toolNavigateSelected();
lbajardsilogic@0 256 void toolSelectSelected();
lbajardsilogic@0 257 void toolEditSelected();
lbajardsilogic@0 258 void toolDrawSelected();
lbajardsilogic@0 259
lbajardsilogic@0 260 void selectAll();
lbajardsilogic@0 261 void selectToStart();
lbajardsilogic@0 262 void selectToEnd();
lbajardsilogic@0 263 void selectVisible();
lbajardsilogic@0 264 void clearSelection();
lbajardsilogic@0 265 void cut();
lbajardsilogic@0 266 void copy();
lbajardsilogic@0 267 void paste();
lbajardsilogic@0 268 void deleteSelected();
lbajardsilogic@0 269 void insertInstant();
lbajardsilogic@0 270 void insertInstantAt(size_t);
lbajardsilogic@0 271 void insertInstantsAtBoundaries();
lbajardsilogic@0 272
lbajardsilogic@0 273 void documentModified();
lbajardsilogic@0 274 void documentRestored();
lbajardsilogic@0 275
lbajardsilogic@0 276 void updateMenuStates();
lbajardsilogic@0 277 void updateDescriptionLabel();
lbajardsilogic@0 278
lbajardsilogic@0 279 void layerAdded(Layer *);
lbajardsilogic@0 280 void layerRemoved(Layer *);
lbajardsilogic@0 281 void layerAboutToBeDeleted(Layer *);
lbajardsilogic@0 282 void layerInAView(Layer *, bool);
lbajardsilogic@0 283
lbajardsilogic@0 284 void mainModelChanged(WaveFileModel *);
lbajardsilogic@0 285 void modelAdded(Model *);
lbajardsilogic@0 286 void modelAboutToBeDeleted(Model *);
lbajardsilogic@0 287
lbajardsilogic@0 288 void modelGenerationFailed(QString);
lbajardsilogic@0 289 void modelRegenerationFailed(QString, QString);
lbajardsilogic@0 290
lbajardsilogic@0 291 void rightButtonMenuRequested(Pane *, QPoint point);
lbajardsilogic@0 292
lbajardsilogic@0 293 void propertyStacksResized();
lbajardsilogic@0 294
lbajardsilogic@0 295 void setupRecentFilesMenu();
lbajardsilogic@0 296 void setupRecentTransformsMenu();
lbajardsilogic@0 297
lbajardsilogic@0 298 void showLayerTree();
lbajardsilogic@0 299
lbajardsilogic@0 300 void pollOSC();
lbajardsilogic@0 301 void handleOSCMessage(const OSCMessage &);
lbajardsilogic@0 302
lbajardsilogic@0 303 void mouseEnteredWidget();
lbajardsilogic@0 304 void mouseLeftWidget();
lbajardsilogic@0 305 void contextHelpChanged(const QString &);
lbajardsilogic@0 306 void inProgressSelectionChanged();
lbajardsilogic@0 307
lbajardsilogic@0 308 void website();
lbajardsilogic@0 309 void help();
lbajardsilogic@0 310 void about();
lbajardsilogic@0 311
lbajardsilogic@21 312 void newEasaierSession();
lbajardsilogic@21 313 void openEasaierSession();
lbajardsilogic@21 314 void saveEasaierSession();
lbajardsilogic@21 315 void saveEasaierSessionAs();
lbajardsilogic@21 316 void importEasaierLayer(const QString& filename);
lbajardsilogic@21 317 void importEasaierFile(const QString& filename);
lbajardsilogic@21 318
lbajardsilogic@143 319 void runExternProcess(const QString& filename);
lbajardsilogic@143 320
lbajardsilogic@10 321 void connectionSettings();
lbajardsilogic@2 322 void styleSetting();
lbajardsilogic@2 323
lbajardsilogic@21 324 void queryModelLoaded(QueryModel* queryModel);
lbajardsilogic@21 325
lbajardsilogic@214 326 void audioFileLoaded();
lbajardsilogic@214 327
lbajardsilogic@21 328 void audioSourceInfoAdded(AudioSourceInfoModel *);
lbajardsilogic@21 329
lbajardsilogic@21 330 void queryDatabase();
lbajardsilogic@21 331
lbajardsilogic@10 332 void exit();
lbajardsilogic@10 333
benoitrigolleau@217 334 void lockWindow();
benoitrigolleau@217 335 void unlockWindow();
benoitrigolleau@217 336
benoitrigolleau@276 337
benoitrigolleau@276 338
lbajardsilogic@0 339 protected:
benoitrigolleau@263 340 SpeechRecognitionUI *m_speechRecognitionUI;
benoitrigolleau@217 341 WaitingWidget *m_waitwidget;
benoitrigolleau@145 342 SDLWidget *m_sdlWidget;
benoitrigolleau@130 343 QWidget *m_videoWidget;
lbajardsilogic@0 344 QString m_sessionFile;
lbajardsilogic@0 345 QString m_audioFile;
ivand_qmul@122 346 // Ivan Damnjanovic 09-10/2007 added video file import
ivand_qmul@122 347 QString m_videoFile;
ivand_qmul@122 348 //
ivand_qmul@122 349 Document *m_document;
lbajardsilogic@0 350
lbajardsilogic@0 351 QLabel *m_descriptionLabel;
lbajardsilogic@0 352 PaneStack *m_paneStack;
lbajardsilogic@0 353 ViewManager *m_viewManager;
lbajardsilogic@0 354 Overview *m_overview;
lbajardsilogic@0 355 Fader *m_fader;
lbajardsilogic@127 356 //AudioDial *m_playSpeed;
lbajardsilogic@127 357 //QPushButton *m_playSharpen;
lbajardsilogic@127 358 //QPushButton *m_playMono;
lbajardsilogic@0 359 WaveformLayer *m_panLayer;
lbajardsilogic@0 360 Layer *m_timeRulerLayer;
lbajardsilogic@0 361
lbajardsilogic@0 362 bool m_audioOutput;
lbajardsilogic@0 363 AudioCallbackPlaySource *m_playSource;
lbajardsilogic@0 364 AudioCallbackPlayTarget *m_playTarget;
lbajardsilogic@0 365
lbajardsilogic@0 366 OSCQueue *m_oscQueue;
lbajardsilogic@0 367
lbajardsilogic@0 368 RecentFiles m_recentFiles;
lbajardsilogic@0 369 RecentFiles m_recentTransforms;
lbajardsilogic@0 370
lbajardsilogic@0 371 bool m_mainMenusCreated;
lbajardsilogic@0 372 QMenu *m_paneMenu;
lbajardsilogic@0 373 QMenu *m_layerMenu;
lbajardsilogic@0 374 QMenu *m_transformsMenu;
lbajardsilogic@0 375 QMenu *m_existingLayersMenu;
lbajardsilogic@0 376 QMenu *m_sliceMenu;
lbajardsilogic@0 377 QMenu *m_recentFilesMenu;
lbajardsilogic@0 378 QMenu *m_recentTransformsMenu;
lbajardsilogic@0 379 QMenu *m_rightButtonMenu;
lbajardsilogic@0 380 QMenu *m_rightButtonLayerMenu;
lbajardsilogic@0 381 QMenu *m_rightButtonTransformsMenu;
lbajardsilogic@0 382
lbajardsilogic@0 383 bool m_documentModified;
lbajardsilogic@0 384 bool m_openingAudioFile;
lbajardsilogic@0 385 bool m_abandoning;
lbajardsilogic@0 386
lbajardsilogic@0 387 int m_lastPlayStatusSec;
lbajardsilogic@0 388 mutable QString m_myStatusMessage;
lbajardsilogic@0 389
lbajardsilogic@0 390 QPointer<PreferencesDialog> m_preferencesDialog;
lbajardsilogic@0 391
lbajardsilogic@0 392 WaveFileModel *getMainModel();
lbajardsilogic@0 393 const WaveFileModel *getMainModel() const;
lbajardsilogic@0 394 void createDocument();
lbajardsilogic@0 395
lbajardsilogic@0 396 struct PaneConfiguration {
lbajardsilogic@0 397 PaneConfiguration(LayerFactory::LayerType _layer
lbajardsilogic@0 398 = LayerFactory::TimeRuler,
lbajardsilogic@0 399 Model *_source = 0,
lbajardsilogic@0 400 int _channel = -1) :
lbajardsilogic@0 401 layer(_layer), sourceModel(_source), channel(_channel) { }
lbajardsilogic@0 402 LayerFactory::LayerType layer;
lbajardsilogic@0 403 Model *sourceModel;
lbajardsilogic@0 404 int channel;
lbajardsilogic@0 405 };
lbajardsilogic@0 406
lbajardsilogic@0 407 typedef std::map<QAction *, PaneConfiguration> PaneActionMap;
lbajardsilogic@0 408 PaneActionMap m_paneActions;
lbajardsilogic@0 409
lbajardsilogic@0 410 typedef std::map<QAction *, TransformId> TransformActionMap;
lbajardsilogic@0 411 TransformActionMap m_transformActions;
lbajardsilogic@0 412
lbajardsilogic@0 413 typedef std::map<TransformId, QAction *> TransformActionReverseMap;
lbajardsilogic@0 414 TransformActionReverseMap m_transformActionsReverse;
lbajardsilogic@0 415
lbajardsilogic@0 416 typedef std::map<QAction *, LayerFactory::LayerType> LayerActionMap;
lbajardsilogic@0 417 LayerActionMap m_layerActions;
lbajardsilogic@0 418
lbajardsilogic@0 419 typedef std::map<QAction *, Layer *> ExistingLayerActionMap;
lbajardsilogic@0 420 ExistingLayerActionMap m_existingLayerActions;
lbajardsilogic@0 421 ExistingLayerActionMap m_sliceActions;
lbajardsilogic@0 422
lbajardsilogic@0 423 typedef std::map<ViewManager::ToolMode, QAction *> ToolActionMap;
lbajardsilogic@0 424 ToolActionMap m_toolActions;
lbajardsilogic@0 425
lbajardsilogic@0 426 void setupMenus();
lbajardsilogic@0 427 void setupFileMenu();
lbajardsilogic@21 428 void setupEasaierMenu();
lbajardsilogic@0 429 void setupEditMenu();
lbajardsilogic@2 430 void setupSettingMenu();
lbajardsilogic@0 431 void setupViewMenu();
lbajardsilogic@0 432 void setupPaneAndLayerMenus();
lbajardsilogic@0 433 void setupTransformsMenu();
lbajardsilogic@79 434 void setupFiltersMenu();
lbajardsilogic@79 435 void setupHelpMenu();
lbajardsilogic@0 436 void setupExistingLayersMenus();
lbajardsilogic@0 437 void setupToolbars();
lbajardsilogic@0 438
lbajardsilogic@0 439 Pane *addPaneToStack();
lbajardsilogic@0 440
lbajardsilogic@0 441 void addPane(const PaneConfiguration &configuration, QString text);
lbajardsilogic@0 442
lbajardsilogic@21 443 class PaneCallback : public SVFileReaderPaneCallback , public ESFileReaderPaneCallback
lbajardsilogic@0 444 {
lbajardsilogic@0 445 public:
lbajardsilogic@0 446 PaneCallback(MainWindow *mw) : m_mw(mw) { }
lbajardsilogic@0 447 virtual Pane *addPane() { return m_mw->addPaneToStack(); }
lbajardsilogic@0 448 virtual void setWindowSize(int width, int height) {
lbajardsilogic@0 449 m_mw->resize(width, height);
lbajardsilogic@0 450 }
lbajardsilogic@0 451 virtual void addSelection(int start, int end) {
lbajardsilogic@0 452 m_mw->m_viewManager->addSelection(Selection(start, end));
lbajardsilogic@0 453 }
lbajardsilogic@0 454 protected:
lbajardsilogic@0 455 MainWindow *m_mw;
lbajardsilogic@0 456 };
lbajardsilogic@0 457
lbajardsilogic@0 458 class AddPaneCommand : public Command
lbajardsilogic@0 459 {
lbajardsilogic@0 460 public:
lbajardsilogic@0 461 AddPaneCommand(MainWindow *mw);
lbajardsilogic@0 462 virtual ~AddPaneCommand();
lbajardsilogic@0 463
lbajardsilogic@0 464 virtual void execute();
lbajardsilogic@0 465 virtual void unexecute();
lbajardsilogic@0 466 virtual QString getName() const;
lbajardsilogic@0 467
lbajardsilogic@0 468 Pane *getPane() { return m_pane; }
lbajardsilogic@0 469
lbajardsilogic@0 470 protected:
lbajardsilogic@0 471 MainWindow *m_mw;
lbajardsilogic@0 472 Pane *m_pane; // Main window owns this, but I determine its lifespan
lbajardsilogic@0 473 Pane *m_prevCurrentPane; // I don't own this
lbajardsilogic@0 474 bool m_added;
lbajardsilogic@0 475 };
lbajardsilogic@0 476
lbajardsilogic@0 477 class RemovePaneCommand : public Command
lbajardsilogic@0 478 {
lbajardsilogic@0 479 public:
lbajardsilogic@0 480 RemovePaneCommand(MainWindow *mw, Pane *pane);
lbajardsilogic@0 481 virtual ~RemovePaneCommand();
lbajardsilogic@0 482
lbajardsilogic@0 483 virtual void execute();
lbajardsilogic@0 484 virtual void unexecute();
lbajardsilogic@0 485 virtual QString getName() const;
lbajardsilogic@0 486
lbajardsilogic@0 487 protected:
lbajardsilogic@0 488 MainWindow *m_mw;
lbajardsilogic@0 489 Pane *m_pane; // Main window owns this, but I determine its lifespan
lbajardsilogic@0 490 Pane *m_prevCurrentPane; // I don't own this
lbajardsilogic@0 491 bool m_added;
lbajardsilogic@0 492 };
lbajardsilogic@0 493
lbajardsilogic@0 494 virtual void closeEvent(QCloseEvent *e);
lbajardsilogic@0 495 bool checkSaveModified();
lbajardsilogic@0 496
lbajardsilogic@0 497 FileOpenStatus openSomeFile(QString path, QString location,
lbajardsilogic@0 498 AudioFileOpenMode = AskUser);
lbajardsilogic@0 499 FileOpenStatus openAudioFile(QString path, QString location,
lbajardsilogic@0 500 AudioFileOpenMode = AskUser);
ivand_qmul@122 501 // Ivan Damnjanovic 09-10/2007 added video file import
ivand_qmul@122 502 FileOpenStatus openVideoFile(QString path, QString location,
ivand_qmul@122 503 AudioFileOpenMode = AskUser);
ivand_qmul@122 504 //
lbajardsilogic@0 505 FileOpenStatus openLayerFile(QString path, QString location);
lbajardsilogic@0 506 FileOpenStatus openSessionFile(QString path, QString location);
lbajardsilogic@0 507
lbajardsilogic@0 508 QString getOpenFileName(FileFinder::FileType type);
lbajardsilogic@0 509 QString getSaveFileName(FileFinder::FileType type);
lbajardsilogic@0 510 void registerLastOpenedFilePath(FileFinder::FileType type, QString path);
lbajardsilogic@0 511
lbajardsilogic@0 512 void createPlayTarget();
lbajardsilogic@0 513
lbajardsilogic@0 514 void openHelpUrl(QString url);
lbajardsilogic@0 515
lbajardsilogic@0 516 void updateVisibleRangeDisplay(Pane *p) const;
lbajardsilogic@0 517
lbajardsilogic@0 518 void toXml(QTextStream &stream);
lbajardsilogic@21 519 void toEasaierXml(QTextStream &stream);
lbajardsilogic@2 520
lbajardsilogic@10 521 bool saveConfigFile();
lbajardsilogic@10 522
lbajardsilogic@2 523 static MainWindow *m_instance;
lbajardsilogic@101 524
lbajardsilogic@101 525 ExpandWidget *m_leftExpandWidget;
lbajardsilogic@101 526 ExpandWidget *m_rightExpandWidget;
lbajardsilogic@101 527
lbajardsilogic@2 528 InfoWidget *m_infoWidget;
lbajardsilogic@2 529 SearchWidget *m_searchWidget;
lbajardsilogic@2 530 QueryResultsWidget *m_resultsWidget;
lbajardsilogic@143 531 RelatedMediaWidget *m_relMediaWidget;
lbajardsilogic@2 532
lbajardsilogic@2 533 QTabWidget *m_qtabwidget;
lbajardsilogic@2 534
lbajardsilogic@2 535 AdvancedToolBox *m_toolBox;
lbajardsilogic@2 536
lbajardsilogic@2 537 WidgetGallery m_gallery;
lbajardsilogic@2 538
lbajardsilogic@10 539 HttpClient *m_httpClient;
lbajardsilogic@21 540
lbajardsilogic@21 541 EasaierSessionManager *m_EasaierManager;
lbajardsilogic@21 542
benoitrigolleau@66 543 MultiPaneLayerContainer *m_multiPaneLayerContainer;
benoitrigolleau@66 544
lbajardsilogic@79 545 RealTimeFilterPropertyStack *m_filterPropertyStack;
lbajardsilogic@79 546
lbajardsilogic@214 547 QObject* m_curSender; //correspond to the sender of a requested track in the results list
lbajardsilogic@214 548
benoitrigolleau@66 549 private:
benoitrigolleau@66 550 void createMultiPaneLayerContainer();
lbajardsilogic@135 551 float m_playSpeedVal;
benoitrigolleau@217 552 int m_nbLock;
benoitrigolleau@217 553 QVector<QToolBar*> m_toolBarVector;
benoitrigolleau@217 554 QVector<bool> m_toolBarVectorValues;
lbajardsilogic@135 555
lbajardsilogic@0 556 };
lbajardsilogic@0 557
lbajardsilogic@0 558
lbajardsilogic@0 559 #endif