lbajardsilogic@0: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ lbajardsilogic@0: lbajardsilogic@0: /* lbajardsilogic@0: Sonic Visualiser lbajardsilogic@0: An audio file viewer and annotation editor. lbajardsilogic@0: Centre for Digital Music, Queen Mary, University of London. lbajardsilogic@0: This file copyright 2006 Chris Cannam and QMUL. lbajardsilogic@0: lbajardsilogic@0: This program is free software; you can redistribute it and/or lbajardsilogic@0: modify it under the terms of the GNU General Public License as lbajardsilogic@0: published by the Free Software Foundation; either version 2 of the lbajardsilogic@0: License, or (at your option) any later version. See the file lbajardsilogic@0: COPYING included with this distribution for more information. lbajardsilogic@0: */ lbajardsilogic@0: lbajardsilogic@0: #ifndef _MAIN_WINDOW_H_ lbajardsilogic@0: #define _MAIN_WINDOW_H_ lbajardsilogic@0: lbajardsilogic@0: #include lbajardsilogic@0: #include lbajardsilogic@0: #include lbajardsilogic@0: #include lbajardsilogic@0: #include lbajardsilogic@2: #include lbajardsilogic@35: #include lbajardsilogic@143: #include benoitrigolleau@217: #include ivand_qmul@129: #include lbajardsilogic@0: #include "base/Command.h" lbajardsilogic@0: #include "view/ViewManager.h" lbajardsilogic@0: #include "base/PropertyContainer.h" lbajardsilogic@0: #include "base/RecentFiles.h" lbajardsilogic@0: #include "layer/LayerFactory.h" lbajardsilogic@0: #include "transform/Transform.h" lbajardsilogic@0: #include "document/SVFileReader.h" lbajardsilogic@0: #include "data/fileio/FileFinder.h" lbajardsilogic@10: #include "data/fileio/HttpClient.h" lbajardsilogic@2: #include "widgets/WidgetGallery.h" lbajardsilogic@21: #include "document/ESFileReader.h" benoitrigolleau@66: #include "widgets/MultiPaneLayerContainer.h" benoitrigolleau@217: #include "widgets/WaitingWidget.h" lbajardsilogic@2: ivand_qmul@122: //Ivan Damnjanovic 12/07/2007 ivand_qmul@122: #include "data/fileio/VideoFileReader.h" benoitrigolleau@145: #include "data/model/SDLWidget.h" ivand_qmul@122: lbajardsilogic@0: #include lbajardsilogic@0: lbajardsilogic@0: class Document; lbajardsilogic@0: class PaneStack; lbajardsilogic@0: class Pane; lbajardsilogic@0: class View; lbajardsilogic@0: class Fader; lbajardsilogic@0: class Overview; lbajardsilogic@0: class Layer; lbajardsilogic@0: class WaveformLayer; lbajardsilogic@0: class WaveFileModel; lbajardsilogic@0: class AudioCallbackPlaySource; lbajardsilogic@0: class AudioCallbackPlayTarget; lbajardsilogic@0: class CommandHistory; lbajardsilogic@0: class QMenu; lbajardsilogic@0: class AudioDial; lbajardsilogic@0: class QLabel; lbajardsilogic@0: class QCheckBox; lbajardsilogic@0: class PreferencesDialog; lbajardsilogic@0: class QPushButton; lbajardsilogic@0: class OSCQueue; lbajardsilogic@0: class OSCMessage; lbajardsilogic@2: class InfoWidget; lbajardsilogic@2: class SearchWidget; lbajardsilogic@2: class QueryResultsWidget; lbajardsilogic@143: class RelatedMediaWidget; lbajardsilogic@2: class AdvancedToolBox; lbajardsilogic@21: class EasaierSessionManager; lbajardsilogic@21: class QueryModel; lbajardsilogic@79: class RealTimeFilterPropertyStack; lbajardsilogic@101: class ExpandWidget; benoitrigolleau@263: class SpeechRecognitionUI; lbajardsilogic@0: lbajardsilogic@0: class MainWindow : public QMainWindow lbajardsilogic@0: { lbajardsilogic@0: Q_OBJECT lbajardsilogic@0: lbajardsilogic@0: public: lbajardsilogic@0: MainWindow(bool withAudioOutput = true, lbajardsilogic@0: bool withOSCSupport = true); lbajardsilogic@0: virtual ~MainWindow(); lbajardsilogic@0: lbajardsilogic@0: enum AudioFileOpenMode { lbajardsilogic@0: ReplaceMainModel, lbajardsilogic@0: CreateAdditionalModel, lbajardsilogic@0: AskUser lbajardsilogic@0: }; lbajardsilogic@0: lbajardsilogic@0: enum FileOpenStatus { lbajardsilogic@0: FileOpenSucceeded, lbajardsilogic@0: FileOpenFailed, lbajardsilogic@0: FileOpenCancelled lbajardsilogic@0: }; lbajardsilogic@0: lbajardsilogic@21: enum TabName { lbajardsilogic@21: Search, lbajardsilogic@21: Result, lbajardsilogic@21: Info, lbajardsilogic@161: //RelatedMedia, benoitrigolleau@130: Video lbajardsilogic@21: }; lbajardsilogic@21: benoitrigolleau@262: EasaierSessionManager* getEasaierSessionManager(); benoitrigolleau@263: SpeechRecognitionUI* getSpeechRecognitionUI(); benoitrigolleau@263: benoitrigolleau@262: benoitrigolleau@276: Document* getDocument(); benoitrigolleau@262: lbajardsilogic@0: FileOpenStatus openSomeFile(QString path, AudioFileOpenMode = AskUser); lbajardsilogic@0: FileOpenStatus openAudioFile(QString path, AudioFileOpenMode = AskUser); ivand_qmul@122: // Ivan Damnjanovic 09-10/2007 added video file import ivand_qmul@122: FileOpenStatus openVideoFile(QString path, AudioFileOpenMode = AskUser); ivand_qmul@122: unsigned long Get_CurAudioTime(); ivand_qmul@129: unsigned long long Get_HardwareBufferTime(); ivand_qmul@122: bool isAudioPlaying(); ivand_qmul@122: // lbajardsilogic@0: FileOpenStatus openLayerFile(QString path); lbajardsilogic@0: FileOpenStatus openSessionFile(QString path); lbajardsilogic@0: FileOpenStatus openURL(QUrl url); lbajardsilogic@0: lbajardsilogic@0: bool saveSessionFile(QString path); lbajardsilogic@0: bool commitData(bool mayAskUser); // on session shutdown lbajardsilogic@0: lbajardsilogic@2: static MainWindow *instance(); lbajardsilogic@2: lbajardsilogic@21: QueryResultsWidget *getQueryResultsWidget(); lbajardsilogic@143: RelatedMediaWidget *getRelatedMediaWidget(); lbajardsilogic@21: lbajardsilogic@21: bool openEasaierSessionFile(QString path); lbajardsilogic@21: bool saveEasaierSessionFile(QString path); lbajardsilogic@21: benoitrigolleau@130: benoitrigolleau@130: QWidget* getVideoWidget(); benoitrigolleau@130: benoitrigolleau@145: SDLWidget* getSDLWidget(); benoitrigolleau@145: void setSDLInitSize(int w, int h); benoitrigolleau@262: benoitrigolleau@145: lbajardsilogic@135: float inline getPlaySpeedVal() const { return m_playSpeedVal;} benoitrigolleau@130: lbajardsilogic@268: size_t getMainModelSampleRate(); lbajardsilogic@268: lbajardsilogic@0: signals: lbajardsilogic@0: // Used to toggle the availability of menu actions lbajardsilogic@0: void canAddPane(bool); lbajardsilogic@0: void canDeleteCurrentPane(bool); lbajardsilogic@0: void canAddLayer(bool); lbajardsilogic@0: void canImportMoreAudio(bool); lbajardsilogic@0: void canImportLayer(bool); lbajardsilogic@0: void canExportAudio(bool); lbajardsilogic@0: void canExportLayer(bool); lbajardsilogic@0: void canExportImage(bool); lbajardsilogic@0: void canRenameLayer(bool); lbajardsilogic@0: void canEditLayer(bool); lbajardsilogic@0: void canSelect(bool); lbajardsilogic@0: void canClearSelection(bool); lbajardsilogic@0: void canEditSelection(bool); lbajardsilogic@0: void canPaste(bool); lbajardsilogic@0: void canInsertInstant(bool); lbajardsilogic@0: void canInsertInstantsAtBoundaries(bool); lbajardsilogic@0: void canDeleteCurrentLayer(bool); lbajardsilogic@0: void canZoom(bool); lbajardsilogic@0: void canScroll(bool); lbajardsilogic@0: void canPlay(bool); lbajardsilogic@0: void canFfwd(bool); lbajardsilogic@0: void canRewind(bool); lbajardsilogic@0: void canPlaySelection(bool); lbajardsilogic@0: void canSave(bool); benoitrigolleau@66: void newCurrentPane(Pane *pane); benoitrigolleau@276: void addAudioSourceInfo(AudioSourceInfoModel *); lbajardsilogic@0: lbajardsilogic@0: public slots: lbajardsilogic@204: //void preferenceChanged(PropertyContainer::PropertyName); benoitrigolleau@276: void createNewResultItem(); benoitrigolleau@276: void addInfoIntoResultItem(QString,QString); benoitrigolleau@276: void saveCurrentResultItem(); benoitrigolleau@276: void displayResultList(); lbajardsilogic@0: lbajardsilogic@0: protected slots: benoitrigolleau@263: void openSpeechQuery(); lbajardsilogic@0: void openSession(); lbajardsilogic@0: void importAudio(); lbajardsilogic@0: void importMoreAudio(); ivand_qmul@122: // Ivan Damnjanovic 09-10/2007 added video file import ivand_qmul@122: void importVideo(); ivand_qmul@122: // Ivan Damnjanovic 09-10/2007 added video file import lbajardsilogic@0: void openSomething(); lbajardsilogic@0: void openLocation(); lbajardsilogic@0: void openRecentFile(); lbajardsilogic@0: void exportAudio(); lbajardsilogic@0: void importLayer(); lbajardsilogic@0: void exportLayer(); lbajardsilogic@0: void exportImage(); lbajardsilogic@0: void saveSession(); lbajardsilogic@0: void saveSessionAs(); lbajardsilogic@0: void newSession(); lbajardsilogic@0: void closeSession(); lbajardsilogic@0: void preferences(); lbajardsilogic@0: lbajardsilogic@0: void zoomIn(); lbajardsilogic@0: void zoomOut(); lbajardsilogic@0: void zoomToFit(); lbajardsilogic@0: void zoomDefault(); lbajardsilogic@0: void scrollLeft(); lbajardsilogic@0: void scrollRight(); lbajardsilogic@0: void jumpLeft(); lbajardsilogic@0: void jumpRight(); lbajardsilogic@0: lbajardsilogic@0: void showNoOverlays(); lbajardsilogic@0: void showMinimalOverlays(); lbajardsilogic@0: void showStandardOverlays(); lbajardsilogic@0: void showAllOverlays(); lbajardsilogic@0: lbajardsilogic@0: void toggleZoomWheels(); lbajardsilogic@0: void toggleStatusBar(); lbajardsilogic@0: lbajardsilogic@0: void play(); lbajardsilogic@0: void ffwd(); lbajardsilogic@0: void ffwdEnd(); lbajardsilogic@0: void rewind(); lbajardsilogic@0: void rewindStart(); lbajardsilogic@0: void stop(); lbajardsilogic@0: lbajardsilogic@0: void addPane(); lbajardsilogic@0: void addLayer(); lbajardsilogic@0: void deleteCurrentPane(); lbajardsilogic@0: void renameCurrentLayer(); lbajardsilogic@0: void deleteCurrentLayer(); lbajardsilogic@0: lbajardsilogic@79: void removeFilter(QString); lbajardsilogic@79: lbajardsilogic@0: void playLoopToggled(); lbajardsilogic@0: void playSelectionToggled(); lbajardsilogic@127: void playSpeedChanged(float); lbajardsilogic@127: //void playSharpenToggled(); lbajardsilogic@127: //void playMonoToggled(); lbajardsilogic@0: void sampleRateMismatch(size_t, size_t, bool); lbajardsilogic@0: void audioOverloadPluginDisabled(); lbajardsilogic@0: lbajardsilogic@0: void playbackFrameChanged(unsigned long); lbajardsilogic@0: void globalCentreFrameChanged(unsigned long); lbajardsilogic@0: void viewCentreFrameChanged(View *, unsigned long); lbajardsilogic@0: void viewZoomLevelChanged(View *, unsigned long, bool); lbajardsilogic@0: void outputLevelsChanged(float, float); lbajardsilogic@0: lbajardsilogic@0: void currentPaneChanged(Pane *); lbajardsilogic@0: void currentLayerChanged(Pane *, Layer *); lbajardsilogic@0: lbajardsilogic@0: void toolNavigateSelected(); lbajardsilogic@0: void toolSelectSelected(); lbajardsilogic@0: void toolEditSelected(); lbajardsilogic@0: void toolDrawSelected(); lbajardsilogic@0: lbajardsilogic@0: void selectAll(); lbajardsilogic@0: void selectToStart(); lbajardsilogic@0: void selectToEnd(); lbajardsilogic@0: void selectVisible(); lbajardsilogic@0: void clearSelection(); lbajardsilogic@0: void cut(); lbajardsilogic@0: void copy(); lbajardsilogic@0: void paste(); lbajardsilogic@0: void deleteSelected(); lbajardsilogic@0: void insertInstant(); lbajardsilogic@0: void insertInstantAt(size_t); lbajardsilogic@0: void insertInstantsAtBoundaries(); lbajardsilogic@0: lbajardsilogic@0: void documentModified(); lbajardsilogic@0: void documentRestored(); lbajardsilogic@0: lbajardsilogic@0: void updateMenuStates(); lbajardsilogic@0: void updateDescriptionLabel(); lbajardsilogic@0: lbajardsilogic@0: void layerAdded(Layer *); lbajardsilogic@0: void layerRemoved(Layer *); lbajardsilogic@0: void layerAboutToBeDeleted(Layer *); lbajardsilogic@0: void layerInAView(Layer *, bool); lbajardsilogic@0: lbajardsilogic@0: void mainModelChanged(WaveFileModel *); lbajardsilogic@0: void modelAdded(Model *); lbajardsilogic@0: void modelAboutToBeDeleted(Model *); lbajardsilogic@0: lbajardsilogic@0: void modelGenerationFailed(QString); lbajardsilogic@0: void modelRegenerationFailed(QString, QString); lbajardsilogic@0: lbajardsilogic@0: void rightButtonMenuRequested(Pane *, QPoint point); lbajardsilogic@0: lbajardsilogic@0: void propertyStacksResized(); lbajardsilogic@0: lbajardsilogic@0: void setupRecentFilesMenu(); lbajardsilogic@0: void setupRecentTransformsMenu(); lbajardsilogic@0: lbajardsilogic@0: void showLayerTree(); lbajardsilogic@0: lbajardsilogic@0: void pollOSC(); lbajardsilogic@0: void handleOSCMessage(const OSCMessage &); lbajardsilogic@0: lbajardsilogic@0: void mouseEnteredWidget(); lbajardsilogic@0: void mouseLeftWidget(); lbajardsilogic@0: void contextHelpChanged(const QString &); lbajardsilogic@0: void inProgressSelectionChanged(); lbajardsilogic@0: lbajardsilogic@0: void website(); lbajardsilogic@0: void help(); lbajardsilogic@0: void about(); lbajardsilogic@0: lbajardsilogic@21: void newEasaierSession(); lbajardsilogic@21: void openEasaierSession(); lbajardsilogic@21: void saveEasaierSession(); lbajardsilogic@21: void saveEasaierSessionAs(); lbajardsilogic@21: void importEasaierLayer(const QString& filename); lbajardsilogic@21: void importEasaierFile(const QString& filename); lbajardsilogic@21: lbajardsilogic@143: void runExternProcess(const QString& filename); lbajardsilogic@143: lbajardsilogic@10: void connectionSettings(); lbajardsilogic@2: void styleSetting(); lbajardsilogic@2: lbajardsilogic@21: void queryModelLoaded(QueryModel* queryModel); lbajardsilogic@21: lbajardsilogic@214: void audioFileLoaded(); lbajardsilogic@214: lbajardsilogic@21: void audioSourceInfoAdded(AudioSourceInfoModel *); lbajardsilogic@21: lbajardsilogic@21: void queryDatabase(); lbajardsilogic@21: lbajardsilogic@10: void exit(); lbajardsilogic@10: benoitrigolleau@217: void lockWindow(); benoitrigolleau@217: void unlockWindow(); benoitrigolleau@217: benoitrigolleau@276: benoitrigolleau@276: lbajardsilogic@0: protected: benoitrigolleau@263: SpeechRecognitionUI *m_speechRecognitionUI; benoitrigolleau@217: WaitingWidget *m_waitwidget; benoitrigolleau@145: SDLWidget *m_sdlWidget; benoitrigolleau@130: QWidget *m_videoWidget; lbajardsilogic@0: QString m_sessionFile; lbajardsilogic@0: QString m_audioFile; ivand_qmul@122: // Ivan Damnjanovic 09-10/2007 added video file import ivand_qmul@122: QString m_videoFile; ivand_qmul@122: // ivand_qmul@122: Document *m_document; lbajardsilogic@0: lbajardsilogic@0: QLabel *m_descriptionLabel; lbajardsilogic@0: PaneStack *m_paneStack; lbajardsilogic@0: ViewManager *m_viewManager; lbajardsilogic@0: Overview *m_overview; lbajardsilogic@0: Fader *m_fader; lbajardsilogic@127: //AudioDial *m_playSpeed; lbajardsilogic@127: //QPushButton *m_playSharpen; lbajardsilogic@127: //QPushButton *m_playMono; lbajardsilogic@0: WaveformLayer *m_panLayer; lbajardsilogic@0: Layer *m_timeRulerLayer; lbajardsilogic@0: lbajardsilogic@0: bool m_audioOutput; lbajardsilogic@0: AudioCallbackPlaySource *m_playSource; lbajardsilogic@0: AudioCallbackPlayTarget *m_playTarget; lbajardsilogic@0: lbajardsilogic@0: OSCQueue *m_oscQueue; lbajardsilogic@0: lbajardsilogic@0: RecentFiles m_recentFiles; lbajardsilogic@0: RecentFiles m_recentTransforms; lbajardsilogic@0: lbajardsilogic@0: bool m_mainMenusCreated; lbajardsilogic@0: QMenu *m_paneMenu; lbajardsilogic@0: QMenu *m_layerMenu; lbajardsilogic@0: QMenu *m_transformsMenu; lbajardsilogic@0: QMenu *m_existingLayersMenu; lbajardsilogic@0: QMenu *m_sliceMenu; lbajardsilogic@0: QMenu *m_recentFilesMenu; lbajardsilogic@0: QMenu *m_recentTransformsMenu; lbajardsilogic@0: QMenu *m_rightButtonMenu; lbajardsilogic@0: QMenu *m_rightButtonLayerMenu; lbajardsilogic@0: QMenu *m_rightButtonTransformsMenu; lbajardsilogic@0: lbajardsilogic@0: bool m_documentModified; lbajardsilogic@0: bool m_openingAudioFile; lbajardsilogic@0: bool m_abandoning; lbajardsilogic@0: lbajardsilogic@0: int m_lastPlayStatusSec; lbajardsilogic@0: mutable QString m_myStatusMessage; lbajardsilogic@0: lbajardsilogic@0: QPointer m_preferencesDialog; lbajardsilogic@0: lbajardsilogic@0: WaveFileModel *getMainModel(); lbajardsilogic@0: const WaveFileModel *getMainModel() const; lbajardsilogic@0: void createDocument(); lbajardsilogic@0: lbajardsilogic@0: struct PaneConfiguration { lbajardsilogic@0: PaneConfiguration(LayerFactory::LayerType _layer lbajardsilogic@0: = LayerFactory::TimeRuler, lbajardsilogic@0: Model *_source = 0, lbajardsilogic@0: int _channel = -1) : lbajardsilogic@0: layer(_layer), sourceModel(_source), channel(_channel) { } lbajardsilogic@0: LayerFactory::LayerType layer; lbajardsilogic@0: Model *sourceModel; lbajardsilogic@0: int channel; lbajardsilogic@0: }; lbajardsilogic@0: lbajardsilogic@0: typedef std::map PaneActionMap; lbajardsilogic@0: PaneActionMap m_paneActions; lbajardsilogic@0: lbajardsilogic@0: typedef std::map TransformActionMap; lbajardsilogic@0: TransformActionMap m_transformActions; lbajardsilogic@0: lbajardsilogic@0: typedef std::map TransformActionReverseMap; lbajardsilogic@0: TransformActionReverseMap m_transformActionsReverse; lbajardsilogic@0: lbajardsilogic@0: typedef std::map LayerActionMap; lbajardsilogic@0: LayerActionMap m_layerActions; lbajardsilogic@0: lbajardsilogic@0: typedef std::map ExistingLayerActionMap; lbajardsilogic@0: ExistingLayerActionMap m_existingLayerActions; lbajardsilogic@0: ExistingLayerActionMap m_sliceActions; lbajardsilogic@0: lbajardsilogic@0: typedef std::map ToolActionMap; lbajardsilogic@0: ToolActionMap m_toolActions; lbajardsilogic@0: lbajardsilogic@0: void setupMenus(); lbajardsilogic@0: void setupFileMenu(); lbajardsilogic@21: void setupEasaierMenu(); lbajardsilogic@0: void setupEditMenu(); lbajardsilogic@2: void setupSettingMenu(); lbajardsilogic@0: void setupViewMenu(); lbajardsilogic@0: void setupPaneAndLayerMenus(); lbajardsilogic@0: void setupTransformsMenu(); lbajardsilogic@79: void setupFiltersMenu(); lbajardsilogic@79: void setupHelpMenu(); lbajardsilogic@0: void setupExistingLayersMenus(); lbajardsilogic@0: void setupToolbars(); lbajardsilogic@0: lbajardsilogic@0: Pane *addPaneToStack(); lbajardsilogic@0: lbajardsilogic@0: void addPane(const PaneConfiguration &configuration, QString text); lbajardsilogic@0: lbajardsilogic@21: class PaneCallback : public SVFileReaderPaneCallback , public ESFileReaderPaneCallback lbajardsilogic@0: { lbajardsilogic@0: public: lbajardsilogic@0: PaneCallback(MainWindow *mw) : m_mw(mw) { } lbajardsilogic@0: virtual Pane *addPane() { return m_mw->addPaneToStack(); } lbajardsilogic@0: virtual void setWindowSize(int width, int height) { lbajardsilogic@0: m_mw->resize(width, height); lbajardsilogic@0: } lbajardsilogic@0: virtual void addSelection(int start, int end) { lbajardsilogic@0: m_mw->m_viewManager->addSelection(Selection(start, end)); lbajardsilogic@0: } lbajardsilogic@0: protected: lbajardsilogic@0: MainWindow *m_mw; lbajardsilogic@0: }; lbajardsilogic@0: lbajardsilogic@0: class AddPaneCommand : public Command lbajardsilogic@0: { lbajardsilogic@0: public: lbajardsilogic@0: AddPaneCommand(MainWindow *mw); lbajardsilogic@0: virtual ~AddPaneCommand(); lbajardsilogic@0: lbajardsilogic@0: virtual void execute(); lbajardsilogic@0: virtual void unexecute(); lbajardsilogic@0: virtual QString getName() const; lbajardsilogic@0: lbajardsilogic@0: Pane *getPane() { return m_pane; } lbajardsilogic@0: lbajardsilogic@0: protected: lbajardsilogic@0: MainWindow *m_mw; lbajardsilogic@0: Pane *m_pane; // Main window owns this, but I determine its lifespan lbajardsilogic@0: Pane *m_prevCurrentPane; // I don't own this lbajardsilogic@0: bool m_added; lbajardsilogic@0: }; lbajardsilogic@0: lbajardsilogic@0: class RemovePaneCommand : public Command lbajardsilogic@0: { lbajardsilogic@0: public: lbajardsilogic@0: RemovePaneCommand(MainWindow *mw, Pane *pane); lbajardsilogic@0: virtual ~RemovePaneCommand(); lbajardsilogic@0: lbajardsilogic@0: virtual void execute(); lbajardsilogic@0: virtual void unexecute(); lbajardsilogic@0: virtual QString getName() const; lbajardsilogic@0: lbajardsilogic@0: protected: lbajardsilogic@0: MainWindow *m_mw; lbajardsilogic@0: Pane *m_pane; // Main window owns this, but I determine its lifespan lbajardsilogic@0: Pane *m_prevCurrentPane; // I don't own this lbajardsilogic@0: bool m_added; lbajardsilogic@0: }; lbajardsilogic@0: lbajardsilogic@0: virtual void closeEvent(QCloseEvent *e); lbajardsilogic@0: bool checkSaveModified(); lbajardsilogic@0: lbajardsilogic@0: FileOpenStatus openSomeFile(QString path, QString location, lbajardsilogic@0: AudioFileOpenMode = AskUser); lbajardsilogic@0: FileOpenStatus openAudioFile(QString path, QString location, lbajardsilogic@0: AudioFileOpenMode = AskUser); ivand_qmul@122: // Ivan Damnjanovic 09-10/2007 added video file import ivand_qmul@122: FileOpenStatus openVideoFile(QString path, QString location, ivand_qmul@122: AudioFileOpenMode = AskUser); ivand_qmul@122: // lbajardsilogic@0: FileOpenStatus openLayerFile(QString path, QString location); lbajardsilogic@0: FileOpenStatus openSessionFile(QString path, QString location); lbajardsilogic@0: lbajardsilogic@0: QString getOpenFileName(FileFinder::FileType type); lbajardsilogic@0: QString getSaveFileName(FileFinder::FileType type); lbajardsilogic@0: void registerLastOpenedFilePath(FileFinder::FileType type, QString path); lbajardsilogic@0: lbajardsilogic@0: void createPlayTarget(); lbajardsilogic@0: lbajardsilogic@0: void openHelpUrl(QString url); lbajardsilogic@0: lbajardsilogic@0: void updateVisibleRangeDisplay(Pane *p) const; lbajardsilogic@0: lbajardsilogic@0: void toXml(QTextStream &stream); lbajardsilogic@21: void toEasaierXml(QTextStream &stream); lbajardsilogic@2: lbajardsilogic@10: bool saveConfigFile(); lbajardsilogic@10: lbajardsilogic@2: static MainWindow *m_instance; lbajardsilogic@101: lbajardsilogic@101: ExpandWidget *m_leftExpandWidget; lbajardsilogic@101: ExpandWidget *m_rightExpandWidget; lbajardsilogic@101: lbajardsilogic@2: InfoWidget *m_infoWidget; lbajardsilogic@2: SearchWidget *m_searchWidget; lbajardsilogic@2: QueryResultsWidget *m_resultsWidget; lbajardsilogic@143: RelatedMediaWidget *m_relMediaWidget; lbajardsilogic@2: lbajardsilogic@2: QTabWidget *m_qtabwidget; lbajardsilogic@2: lbajardsilogic@2: AdvancedToolBox *m_toolBox; lbajardsilogic@2: lbajardsilogic@2: WidgetGallery m_gallery; lbajardsilogic@2: lbajardsilogic@10: HttpClient *m_httpClient; lbajardsilogic@21: lbajardsilogic@21: EasaierSessionManager *m_EasaierManager; lbajardsilogic@21: benoitrigolleau@66: MultiPaneLayerContainer *m_multiPaneLayerContainer; benoitrigolleau@66: lbajardsilogic@79: RealTimeFilterPropertyStack *m_filterPropertyStack; lbajardsilogic@79: lbajardsilogic@214: QObject* m_curSender; //correspond to the sender of a requested track in the results list lbajardsilogic@214: benoitrigolleau@66: private: benoitrigolleau@66: void createMultiPaneLayerContainer(); lbajardsilogic@135: float m_playSpeedVal; benoitrigolleau@217: int m_nbLock; benoitrigolleau@217: QVector m_toolBarVector; benoitrigolleau@217: QVector m_toolBarVectorValues; lbajardsilogic@135: lbajardsilogic@0: }; lbajardsilogic@0: lbajardsilogic@0: lbajardsilogic@0: #endif