annotate sv/main/MainWindow.h @ 217:c24fafc45d50

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