Slicer 5.9
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
qSlicerMainWindow.h
Go to the documentation of this file.
1/*==============================================================================
2
3 Program: 3D Slicer
4
5 Copyright (c) Kitware Inc.
6
7 See COPYRIGHT.txt
8 or http://www.slicer.org/copyright/copyright.txt for details.
9
10 Unless required by applicable law or agreed to in writing, software
11 distributed under the License is distributed on an "AS IS" BASIS,
12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 See the License for the specific language governing permissions and
14 limitations under the License.
15
16 This file was originally developed by Jean-Christophe Fillion-Robin, Kitware Inc.
17 and was partially funded by NIH grant 3P41RR013218-12S1
18
19==============================================================================*/
20
21#ifndef __qSlicerMainWindow_h
22#define __qSlicerMainWindow_h
23
24// Qt includes
25#include <QMainWindow>
26#include <QVariantMap>
27
28// CTK includes
29#include <ctkErrorLogModel.h>
30
31// Slicer includes
32#include "qSlicerBaseQTAppExport.h"
33#include "qSlicerIO.h"
34#include "vtkSlicerConfigure.h" // For Slicer_BUILD_DICOM_SUPPORT, Slicer_USE_PYTHONQT, Slicer_USE_QtTesting
35
36class ctkErrorLogWidget;
37class ctkPythonConsole;
39class qSlicerMainWindowPrivate;
41class vtkObject;
42
43class Q_SLICER_BASE_QTAPP_EXPORT qSlicerMainWindow : public QMainWindow
44{
45 Q_OBJECT
46public:
47 typedef QMainWindow Superclass;
48
49 qSlicerMainWindow(QWidget *parent=nullptr);
51
56
57#ifdef Slicer_USE_PYTHONQT
60 Q_INVOKABLE ctkPythonConsole* pythonConsole()const;
61#endif
64 Q_INVOKABLE ctkErrorLogWidget* errorLogWidget()const;
66 Q_INVOKABLE QDockWidget* errorLogDockWidget()const;
67
68public slots:
69 virtual void setHomeModuleCurrent();
70 virtual void restoreToolbars();
71
86
91
93
94 virtual void onLayoutActionTriggered(QAction* action);
95 virtual void onLayoutCompareActionTriggered(QAction* action);
96 virtual void onLayoutCompareWidescreenActionTriggered(QAction* action);
97 virtual void onLayoutCompareGridActionTriggered(QAction* action);
98
100 virtual void setLayout(int);
101
104
107
108 virtual void onPythonConsoleToggled(bool);
109 virtual void onErrorLogToggled(bool);
110
112
118
120
131 virtual void saveGUIState(bool force=false);
132
135 virtual void restoreGUIState(bool force=false);
136
137 virtual void addFileToRecentFiles(const qSlicerIO::IOProperties& fileProperties);
138
141
142signals:
146
147protected slots:
148 virtual void onModuleLoaded(const QString& moduleName);
149 virtual void onModuleAboutToBeUnloaded(const QString& moduleName);
150 virtual void onNewFileLoaded(const qSlicerIO::IOProperties &fileProperties);
151 virtual void onFileSaved(const qSlicerIO::IOProperties& fileProperties);
152
153 virtual void onMRMLSceneModified(vtkObject*);
154 virtual void onLayoutChanged(int);
155 virtual void onWarningsOrErrorsOccurred(ctkErrorLogLevel::LogLevel logLevel);
156
157 // Show/hide update indicator on Extensions Manager toolbar icon
158 void setExtensionUpdatesAvailable(bool updateAvailable);
159
160#ifdef Slicer_USE_PYTHONQT
161 virtual void onPythonConsoleUserInput(const QString&);
162#endif
163
166 virtual void onErrorLogDockWidgetAreaChanged(Qt::DockWidgetArea);
167
171
172protected:
174 virtual void setupMenuActions();
175
178
180 virtual void disclaimer();
181
185 void dragEnterEvent(QDragEnterEvent *event) override;
186
189 void dropEvent(QDropEvent *event) override;
190
197 bool eventFilter(QObject* object, QEvent* event) override;
198
199 void closeEvent(QCloseEvent *event) override;
200 void showEvent(QShowEvent *event) override;
201
202 void changeEvent(QEvent* event) override;
203
204protected:
205 QScopedPointer<qSlicerMainWindowPrivate> d_ptr;
206
207 qSlicerMainWindow(qSlicerMainWindowPrivate* pimpl, QWidget* parent);
208
209private:
210 Q_DECLARE_PRIVATE(qSlicerMainWindow);
211 Q_DISABLE_COPY(qSlicerMainWindow);
212};
213
214#endif
QVariantMap IOProperties
Definition qSlicerIO.h:53
virtual void setLayoutNumberOfCompareViewColumns(int)
virtual void onModuleAboutToBeUnloaded(const QString &moduleName)
virtual void removeAllMaximizedViewNodes()
Restores the original (non-maximized) layout in all viewports.
virtual void addFileToRecentFiles(const qSlicerIO::IOProperties &fileProperties)
~qSlicerMainWindow() override
virtual void onLayoutCompareActionTriggered(QAction *action)
virtual void on_EditApplicationSettingsAction_triggered()
qSlicerMainWindow(QWidget *parent=nullptr)
virtual void setupMenuActions()
Connect MainWindow action with slots defined in MainWindowCore.
virtual void on_FileLoadDataAction_triggered()
virtual void on_CopyAction_triggered()
virtual void on_EditPlayMacroAction_triggered()
virtual void on_FileAddDataAction_triggered()
virtual void onLayoutChanged(int)
virtual void restoreToolbars()
virtual void onLayoutCompareGridActionTriggered(QAction *action)
void changeEvent(QEvent *event) override
virtual void on_SDBSaveToMRBAction_triggered()
virtual void on_FileLoadSceneAction_triggered()
void showEvent(QShowEvent *event) override
virtual void onLayoutActionTriggered(QAction *action)
void dragEnterEvent(QDragEnterEvent *event) override
bool eventFilter(QObject *object, QEvent *event) override
virtual void on_FileCloseSceneAction_triggered()
Q_INVOKABLE QDockWidget * errorLogDockWidget() const
Return a pointer to the dock widget that shows the Error Log.
virtual void setLayoutNumberOfCompareViewRows(int)
Q_INVOKABLE qSlicerModuleSelectorToolBar * moduleSelector() const
virtual void on_WindowToolbarsResetToDefaultAction_triggered()
virtual void on_FileSaveSceneAction_triggered()
virtual void on_FileImportSceneAction_triggered()
virtual void onMRMLSceneModified(vtkObject *)
virtual void setHomeModuleCurrent()
virtual void on_FileExitAction_triggered()
virtual void setLayout(int)
Set the view layout.
virtual void restoreGUIState(bool force=false)
void onUserViewedErrorLog()
QScopedPointer< qSlicerMainWindowPrivate > d_ptr
void dropEvent(QDropEvent *event) override
virtual void onNewFileLoaded(const qSlicerIO::IOProperties &fileProperties)
virtual void on_EditUndoAction_triggered()
virtual void on_FileFavoriteModulesAction_triggered()
virtual void on_LoadDICOMAction_triggered()
virtual void on_SDBSaveToDirectoryAction_triggered()
virtual void onPythonConsoleToggled(bool)
Q_INVOKABLE ctkErrorLogWidget * errorLogWidget() const
virtual void on_FavoriteModulesChanged()
Refresh favorite modules toolbar from application settings.
qSlicerMainWindow(qSlicerMainWindowPrivate *pimpl, QWidget *parent)
virtual void on_PasteAction_triggered()
virtual void saveGUIState(bool force=false)
virtual void on_FileAddVolumeAction_triggered()
virtual void on_FileAddTransformAction_triggered()
virtual void on_ShowStatusBarAction_triggered(bool)
void setExtensionUpdatesAvailable(bool updateAvailable)
virtual void onWarningsOrErrorsOccurred(ctkErrorLogLevel::LogLevel logLevel)
virtual void disclaimer()
Open a popup to warn the user Slicer is not for clinical use.
void initialWindowShown()
virtual void on_ViewExtensionsManagerAction_triggered()
virtual void on_ModuleHomeAction_triggered()
void closeEvent(QCloseEvent *event) override
virtual void onFileSaved(const qSlicerIO::IOProperties &fileProperties)
virtual void on_EditRedoAction_triggered()
virtual void onModuleLoaded(const QString &moduleName)
virtual void onErrorLogDockWidgetAreaChanged(Qt::DockWidgetArea)
virtual void on_EditRecordMacroAction_triggered()
virtual void onFileRecentLoadedActionTriggered()
virtual void onErrorLogToggled(bool)
virtual void on_CutAction_triggered()
virtual void onLayoutCompareWidescreenActionTriggered(QAction *action)
virtual void pythonConsoleInitialDisplay()
Open Python console if it was requested.
Abstract MRML node to represent a view. The class holds the properties common to any view type (3D,...