diff --git a/CMake/BuildConfigurations/Default.cmake b/CMake/BuildConfigurations/Default.cmake
index 5b46d0ac78..4faffa7f12 100644
--- a/CMake/BuildConfigurations/Default.cmake
+++ b/CMake/BuildConfigurations/Default.cmake
@@ -1,23 +1,23 @@
set(MITK_CONFIG_PACKAGES
ACVD
Qt5
BLUEBERRY
)
set(MITK_CONFIG_PLUGINS
org.mitk.gui.qt.mitkworkbench.intro
org.mitk.gui.qt.datamanager
org.mitk.gui.qt.stdmultiwidgeteditor
- org.mitk.gui.qt.dicom
+ org.mitk.gui.qt.dicombrowser
org.mitk.gui.qt.imagenavigator
org.mitk.gui.qt.measurementtoolbox
org.mitk.gui.qt.properties
org.mitk.gui.qt.segmentation
org.mitk.gui.qt.volumevisualization
org.mitk.planarfigure
org.mitk.gui.qt.moviemaker
org.mitk.gui.qt.pointsetinteraction
org.mitk.gui.qt.remeshing
org.mitk.gui.qt.viewnavigator
org.mitk.gui.qt.imagecropper
)
diff --git a/CMake/BuildConfigurations/mitkNavigationModules.cmake b/CMake/BuildConfigurations/mitkNavigationModules.cmake
index c315c718e0..d6881034ab 100644
--- a/CMake/BuildConfigurations/mitkNavigationModules.cmake
+++ b/CMake/BuildConfigurations/mitkNavigationModules.cmake
@@ -1,35 +1,35 @@
message(STATUS "Configuring MITK Navigation Modules Build")
set(MITK_CONFIG_PACKAGES
ACVD
Qt5
BLUEBERRY
)
# Enable open cv and open igt link, which is a necessary configuration
set(MITK_USE_OpenCV ON CACHE BOOL "MITK Use OpenCV Library" FORCE)
set(MITK_USE_OpenIGTLink ON CACHE BOOL "MITK Use OpenIGTLink Library" FORCE)
# Enable default plugins and the navigation modules
set(MITK_CONFIG_PLUGINS
org.mitk.gui.qt.datamanager
org.mitk.gui.qt.stdmultiwidgeteditor
- org.mitk.gui.qt.dicom
+ org.mitk.gui.qt.dicombrowser
org.mitk.gui.qt.imagenavigator
org.mitk.gui.qt.measurementtoolbox
org.mitk.gui.qt.properties
org.mitk.gui.qt.segmentation
org.mitk.gui.qt.volumevisualization
org.mitk.planarfigure
org.mitk.gui.qt.moviemaker
org.mitk.gui.qt.pointsetinteraction
org.mitk.gui.qt.registration
org.mitk.gui.qt.remeshing
org.mitk.gui.qt.viewnavigator
org.mitk.gui.qt.imagecropper
org.mitk.gui.qt.igttracking
org.mitk.gui.qt.openigtlink
org.mitk.gui.qt.ultrasound
org.mitk.gui.qt.tofutil
)
diff --git a/Documentation/Doxygen/2-UserManual/MITKPluginManualsList.dox b/Documentation/Doxygen/2-UserManual/MITKPluginManualsList.dox
index ad3769bb0b..85fa0471bf 100644
--- a/Documentation/Doxygen/2-UserManual/MITKPluginManualsList.dox
+++ b/Documentation/Doxygen/2-UserManual/MITKPluginManualsList.dox
@@ -1,77 +1,77 @@
/**
\page PluginListPage MITK Plugin Manuals
\section PluginListPageOverview Overview
The plugins and bundles provide much of the extended functionality of MITK. Each encapsulates a solution to a problem and associated features. This way one can easily assemble the necessary capabilites for a workflow without adding a lot of bloat, by combining plugins as needed.
The distinction between developer and end user use is for convenience only and mainly distinguishes which group a plugin is primarily aimed at.
\section PluginListPageEndUserPluginList List of Plugins for End User Use
\li \subpage org_blueberry_ui_qt_log
\li \subpage org_mitk_views_basicimageprocessing
\li \subpage org_mitk_views_cmdlinemodules
\li \subpage org_mitk_views_datamanager
- \li \subpage org_mitk_gui_qt_dicom
+ \li \subpage org_mitk_gui_qt_dicombrowser
\li \subpage org_mitk_gui_qt_dicominspector
\li \subpage org_mitk_gui_qt_diffusionimaging
\li \subpage org_mitk_gui_qt_imagecropper
\li \subpage org_mitk_views_imagenavigator
\li \subpage org_mitk_gui_qt_measurementtoolbox
\li \subpage org_mitk_gui_qt_moviemaker
\li \subpage org_mitk_views_screenshotmaker
\li \subpage org_mitk_gui_qt_photoacoustics_imageprocessing
\li \subpage org_mitk_views_pointsetinteraction
\li \subpage org_mitk_gui_qt_pointsetinteractionmultispectrum
\li \subpage org_mitk_gui_qt_python
\li \subpage org_mitk_gui_qt_remeshing
\li \subpage org_mitk_views_segmentation
\li \subpage org_mitk_views_multilabelsegmentation
\li \subpage org_mitk_gui_qt_spectrocamrecorder
\li \subpage org_mitk_gui_qt_ultrasound
\li \subpage org_mitk_gui_qt_viewnavigator
\li \subpage org_mitk_views_volumevisualization
\li \subpage org_mitk_gui_qt_xnat
\li \subpage org_mitk_gui_qt_aicpregistration
\li \subpage org_mitk_gui_qt_igtlplugin
\li \subpage org_mitk_gui_qt_geometrytools
\li \subpage org_mitk_gui_qt_classificationsegmentation
\li \subpage org_mitk_gui_qt_matchpoint_algorithm_batch
\li \subpage org_mitk_gui_qt_matchpoint_algorithm_browser
\li \subpage org_mitk_gui_qt_matchpoint_algorithm_control
\li \subpage org_mitk_gui_qt_matchpoint_evaluator
\li \subpage org_mitk_gui_qt_matchpoint_framereg
\li \subpage org_mitk_gui_qt_matchpoint_manipulator
\li \subpage org_mitk_gui_qt_matchpoint_mapper
\li \subpage org_mitk_gui_qt_matchpoint_visualizer
\li \subpage org_mitk_gui_qt_cest
\li \subpage org_mitk_gui_qt_fit_genericfitting
\li \subpage org_mitk_gui_qt_fit_inspector
\li \subpage org_mitk_gui_qt_pharmacokinetics_mri
\li \subpage org_mitk_gui_qt_pharmacokinetics_pet
\li \subpage org_mitk_gui_qt_pharmacokinetics_concentration_mri
\li \subpage org_mitk_gui_qt_pharmacokinetics_curvedescriptor
\section PluginListPageDevPluginList List of Plugins for Developer Use and Examples
\li \subpage org_surfacematerialeditor
\li \subpage org_toftutorial
\li \subpage org_mitk_gui_qt_examples
\li \subpage org_mitkexamplesopencv
\li \subpage org_mitk_gui_qt_igtexample
\li \subpage org_mitk_gui_qt_igttracking
\li \subpage org_mitk_gui_qt_igt_app_echotrack
\li \subpage org_blueberry_ui_qt_objectinspector
\li \subpage org_mitk_gui_qt_eventrecorder
\li \subpage org_mitk_gui_qt_overlaymanager
\li \subpage org_mitk_example_gui_pcaexample
\li \subpage org_mitk_gui_qt_renderwindowmanager
\li \subpage org_mitk_gui_qt_lasercontrol
\li \subpage org_mitk_gui_qt_photoacoustics_imageprocessing
\li \subpage org_mitk_gui_qt_lasercontrol
\li \subpage org_mitk_gui_qt_igttrackingsemiautomaticmeasurement
\li \subpage org_mitk_gui_qt_fit_demo
\li \subpage org_mitk_gui_qt_pharmacokinetics_simulation
*/
diff --git a/Modules/DicomUI/src/QmitkDicomExternalDataWidgetControls.ui b/Modules/DicomUI/src/QmitkDicomExternalDataWidgetControls.ui
index 154d4cdd0d..483d6ab6f0 100644
--- a/Modules/DicomUI/src/QmitkDicomExternalDataWidgetControls.ui
+++ b/Modules/DicomUI/src/QmitkDicomExternalDataWidgetControls.ui
@@ -1,138 +1,138 @@
QmitkDicomExternalDataWidgetControls
0
0
754
633
Form
-
External Dicom Data
-
true
0
0
QFrame::Box
QFrame::Sunken
-
Scan directory
-
- :/org.mitk.gui.qt.dicom/folder_32.png:/org.mitk.gui.qt.dicom/folder_32.png
+
+ :/org.mitk.gui.qt.dicombrowser/folder_32.png:/org.mitk.gui.qt.dicombrowser/folder_32.png
-
true
Add to local storage
-
- :/org.mitk.gui.qt.dicom/import_32.png:/org.mitk.gui.qt.dicom/import_32.png
+
+ :/org.mitk.gui.qt.dicombrowser/import_32.png:/org.mitk.gui.qt.dicombrowser/import_32.png
-
false
View
-
- :/org.mitk.gui.qt.dicom/viewIcon.png:/org.mitk.gui.qt.dicom/viewIcon.png
+
+ :/org.mitk.gui.qt.dicombrowser/viewIcon.png:/org.mitk.gui.qt.dicombrowser/viewIcon.png
16
20
-
Qt::Horizontal
40
20
-
0
QLayout::SetNoConstraint
0
0
-
ctkDICOMTableManager
QWidget
1
-
+
diff --git a/Modules/DicomUI/src/QmitkDicomLocalStorageWidgetControls.ui b/Modules/DicomUI/src/QmitkDicomLocalStorageWidgetControls.ui
index 4087d11a4a..540f1bdad8 100644
--- a/Modules/DicomUI/src/QmitkDicomLocalStorageWidgetControls.ui
+++ b/Modules/DicomUI/src/QmitkDicomLocalStorageWidgetControls.ui
@@ -1,128 +1,128 @@
QmitkDicomLocalStorageWidgetControls
0
0
754
633
Form
-
Local Dicom Storage
12
-
0
0
QFrame::Box
QFrame::Sunken
-
false
View
-
- :/org.mitk.gui.qt.dicom/viewIcon.png:/org.mitk.gui.qt.dicom/viewIcon.png
+
+ :/org.mitk.gui.qt.dicombrowser/viewIcon.png:/org.mitk.gui.qt.dicombrowser/viewIcon.png
16
20
-
true
Delete
:/org.mitk.gui.qt.datamanager/Remove_48.png:/org.mitk.gui.qt.datamanager/Remove_48.png
-
Qt::Horizontal
40
20
-
0
QLayout::SetNoConstraint
0
0
-
ctkDICOMTableManager
QWidget
1
-
+
diff --git a/Plugins/PluginList.cmake b/Plugins/PluginList.cmake
index 493c30fb31..a0899b3787 100644
--- a/Plugins/PluginList.cmake
+++ b/Plugins/PluginList.cmake
@@ -1,96 +1,96 @@
# Plug-ins must be ordered according to their dependencies
set(MITK_PLUGINS
org.blueberry.core.runtime:ON
org.blueberry.core.expressions:OFF
org.blueberry.core.commands:OFF
org.blueberry.core.jobs:OFF
org.blueberry.ui.qt:OFF
org.blueberry.ui.qt.help:ON
org.blueberry.ui.qt.log:ON
org.blueberry.ui.qt.objectinspector:OFF
org.mitk.core.services:ON
org.mitk.gui.common:ON
org.mitk.planarfigure:ON
org.mitk.core.ext:OFF
org.mitk.core.jobs:OFF
org.mitk.gui.qt.application:ON
org.mitk.gui.qt.ext:OFF
org.mitk.gui.qt.extapplication:OFF
org.mitk.gui.qt.mitkworkbench.intro:OFF
org.mitk.gui.qt.common:ON
org.mitk.gui.qt.stdmultiwidgeteditor:ON
org.mitk.gui.qt.mxnmultiwidgeteditor:OFF
org.mitk.gui.qt.common.legacy:OFF
org.mitk.gui.qt.cmdlinemodules:OFF
org.mitk.gui.qt.chartExample:OFF
org.mitk.gui.qt.datamanager:ON
org.mitk.gui.qt.datamanagerlight:OFF
org.mitk.gui.qt.datastorageviewertest:OFF
org.mitk.gui.qt.properties:ON
org.mitk.gui.qt.basicimageprocessing:OFF
- org.mitk.gui.qt.dicom:OFF
+ org.mitk.gui.qt.dicombrowser:OFF
org.mitk.gui.qt.dicominspector:OFF
org.mitk.gui.qt.dosevisualization:OFF
org.mitk.gui.qt.geometrytools:OFF
org.mitk.gui.qt.igtexamples:OFF
org.mitk.gui.qt.igttracking:OFF
org.mitk.gui.qt.lasercontrol:OFF
org.mitk.gui.qt.openigtlink:OFF
org.mitk.gui.qt.imagecropper:OFF
org.mitk.gui.qt.imagenavigator:ON
org.mitk.gui.qt.viewnavigator:OFF
org.mitk.gui.qt.materialeditor:OFF
org.mitk.gui.qt.measurementtoolbox:OFF
org.mitk.gui.qt.moviemaker:OFF
org.mitk.gui.qt.pointsetinteraction:OFF
org.mitk.gui.qt.pointsetinteractionmultispectrum:OFF
org.mitk.gui.qt.python:OFF
org.mitk.gui.qt.remeshing:OFF
org.mitk.gui.qt.segmentation:OFF
org.mitk.gui.qt.aicpregistration:OFF
org.mitk.gui.qt.renderwindowmanager:OFF
org.mitk.gui.qt.semanticrelations:OFF
org.mitk.gui.qt.toftutorial:OFF
org.mitk.gui.qt.tofutil:OFF
org.mitk.gui.qt.tubegraph:OFF
org.mitk.gui.qt.ugvisualization:OFF
org.mitk.gui.qt.photoacoustics.pausviewer:OFF
org.mitk.gui.qt.photoacoustics.pausmotioncompensation:OFF
org.mitk.gui.qt.photoacoustics.imageprocessing:OFF
org.mitk.gui.qt.photoacoustics.simulation:OFF
org.mitk.gui.qt.photoacoustics.spectralunmixing:OFF
org.mitk.gui.qt.ultrasound:OFF
org.mitk.gui.qt.volumevisualization:OFF
org.mitk.gui.qt.eventrecorder:OFF
org.mitk.gui.qt.xnat:OFF
org.mitk.gui.qt.igt.app.ultrasoundtrackingnavigation:OFF
org.mitk.gui.qt.spectrocamrecorder:OFF
org.mitk.gui.qt.classificationsegmentation:OFF
org.mitk.gui.qt.overlaymanager:OFF
org.mitk.gui.qt.igt.app.hummelprotocolmeasurements:OFF
org.mitk.gui.qt.multilabelsegmentation:OFF
org.mitk.matchpoint.core.helper:OFF
org.mitk.gui.qt.matchpoint.algorithm.browser:OFF
org.mitk.gui.qt.matchpoint.algorithm.control:OFF
org.mitk.gui.qt.matchpoint.mapper:OFF
org.mitk.gui.qt.matchpoint.framereg:OFF
org.mitk.gui.qt.matchpoint.visualizer:OFF
org.mitk.gui.qt.matchpoint.evaluator:OFF
org.mitk.gui.qt.matchpoint.manipulator:OFF
org.mitk.gui.qt.preprocessing.resampling:OFF
org.mitk.gui.qt.radiomics:OFF
org.mitk.gui.qt.cest:OFF
org.mitk.gui.qt.fit.demo:OFF
org.mitk.gui.qt.fit.inspector:OFF
org.mitk.gui.qt.fit.genericfitting:OFF
org.mitk.gui.qt.pharmacokinetics.mri:OFF
org.mitk.gui.qt.pharmacokinetics.pet:OFF
org.mitk.gui.qt.pharmacokinetics.simulation:OFF
org.mitk.gui.qt.pharmacokinetics.curvedescriptor:OFF
org.mitk.gui.qt.pharmacokinetics.concentration.mri:OFF
org.mitk.gui.qt.flowapplication:OFF
org.mitk.gui.qt.flow.segmentation:OFF
)
diff --git a/Plugins/org.mitk.gui.qt.dicom/CMakeLists.txt b/Plugins/org.mitk.gui.qt.dicombrowser/CMakeLists.txt
similarity index 87%
rename from Plugins/org.mitk.gui.qt.dicom/CMakeLists.txt
rename to Plugins/org.mitk.gui.qt.dicombrowser/CMakeLists.txt
index 9e021c2a81..f6beb3aaea 100644
--- a/Plugins/org.mitk.gui.qt.dicom/CMakeLists.txt
+++ b/Plugins/org.mitk.gui.qt.dicombrowser/CMakeLists.txt
@@ -1,28 +1,28 @@
-project(org_mitk_gui_qt_dicom)
+project(org_mitk_gui_qt_dicombrowser)
# Note:
# If we use an installed version of DCMTK then DCMTK_DIR points to the subdirectory
# of the installation directory (share/dcmtk) that contains DCMTKConfig.cmake.
# Therefore we look for the the storescp command in the '../../bin' directory, too.
find_program(DCMTK_STORESCP
NAMES storescp storescp${DCMTK_CMAKE_DEBUG_POSTFIX} storescp${CMAKE_DEBUG_POSTFIX}
PATHS "${MITK_EXTERNAL_PROJECT_PREFIX}/bin"
PATH_SUFFIXES Release Debug
DOC "Dcmtk storage provider which is used to store dicom files which are transfered over network."
NO_DEFAULT_PATH
)
mark_as_advanced(DCMTK_STORESCP)
if(NOT EXISTS ${DCMTK_STORESCP})
message(WARNING "Couldn't find program storescp: Query/retrieve of the DICOM plugin won't work!")
else()
- configure_file( org_mitk_gui_qt_dicom_config.h.in org_mitk_gui_qt_dicom_config.h @ONLY)
+ configure_file( org_mitk_gui_qt_dicombrowser_config.h.in org_mitk_gui_qt_dicombrowser_config.h @ONLY)
MITK_INSTALL_HELPER_APP(EXECUTABLES ${DCMTK_STORESCP})
mitk_create_plugin(
EXPORT_DIRECTIVE DICOM_EXPORT
EXPORTED_INCLUDE_SUFFIXES src
MODULE_DEPENDS MitkContourModel MitkQtWidgetsExt MitkDicomUI MitkDicomRT MitkRTUI MitkDICOMReader
)
endif()
diff --git a/Plugins/org.mitk.gui.qt.dicom/documentation/UserManual/QmitkDicom.dox b/Plugins/org.mitk.gui.qt.dicombrowser/documentation/UserManual/QmitkDicom.dox
similarity index 99%
rename from Plugins/org.mitk.gui.qt.dicom/documentation/UserManual/QmitkDicom.dox
rename to Plugins/org.mitk.gui.qt.dicombrowser/documentation/UserManual/QmitkDicom.dox
index 136c56e93d..66d4d325f9 100644
--- a/Plugins/org.mitk.gui.qt.dicom/documentation/UserManual/QmitkDicom.dox
+++ b/Plugins/org.mitk.gui.qt.dicombrowser/documentation/UserManual/QmitkDicom.dox
@@ -1,118 +1,118 @@
/**
-\page org_mitk_gui_qt_dicom The Dicom Plugin
+\page org_mitk_gui_qt_dicombrowser The Dicom Plugin
\imageMacro{dicom.svg,"Icon of the DICOM Plugin",2.00}
\note This article requires a basic knowledge of the DICOM Standard.
\tableofcontents
\section org_mitk_gui_qt_dicomOverview Overview
The DICOM editor is an experimental editor which allows for loading of DICOM images as well as server communication.
It features a highly experimental query/retrieve (you need to configure your PACS correspondingly) as well as a DICOM browser.
The DICOM browser allows you to navigate the DICOM folder/cd depending on its metadata (patient/study/series)
and import selected series for viewing in your MITK based application.
It also allows you to store your dicom data in an internal database so you can easily access often used dicom images.
It is based on the commonTK (CTK) DICOM funcionality.
\section org_mitk_gui_qt_dicomDataHandling Data handling
\imageMacro{QmitkDicom_PluginControls.png,"The dicom Plugin controls",7.37}
In the image above you see the start page of the dicom plugin. On top of the start page you see four buttons. The Local Storage,
the Import CD, the Import Folder and the Query Retrieve button. If you press one of these buttons, the dicom plugin will switch to your local dicom image storage or will start importing dicom images
from CD or a folder on your hard drive or it will open the query retrieve screen.
- Click the 'Local Storage' button to open the local storage screen.
- Click the 'Import CD' button to import DICOM data from a CD.
- Click the 'Import Folder' button to import DICOM date from a directory.
- Click the 'Query Retrieve' button to open the query retrieve screen.
\subsection org_mitk_gui_qt_dicomStorage Data storage
\imageMacro{QmitkDicom_PluginExtended.png,"The DICOM data storage",16.00}
If you open the dicom plugin the dicom data storage will be displayed. You are able to see all your stored dicom image data.
You can browse your data by clicking on the left arrow beside the name of your data. There are three levels available.
The first level is the patient level where you can see the patient data. On the second level you can see the dicom studies for the patient.
on the third level you can see all available series refering to it's study.
You can delete the data by selecting it and pressing the delete button.
Be careful if you have selected a patient or a study all refering data be deleted.
So if you delete a patient the patient and all studies and series refered to the patient will be deleted.
If you delete a study all series of the study will be deleted.
If you want to view the dicom data you have to select a series and click on the View button.
The data will appear in the DataManager and will be dispayed.
\imageMacro{QmitkDicom_DisplayDataManager.png,"Viewed image",16.00}
- Click on the arrow on the left of your data to expand or hide dicom data levels.
- Click the 'Delete' button to delete selected DICOM data.
- Click the 'View' button to view DICOM data.
\subsection org_mitk_gui_qt_dicomImport Data import
\imageMacro{QmitkDicom_ImportDialog.png,"The import dialog checked",9.53}
There are two diffrent ways to import DICOM data.
The First one is to directly imort it into your DICOM data storage. To achieve this you should toggle the checkbox 'Copy on import'.
The second approach is, to have a look at the data first before importing it.
To do that you simply don't check 'Copy on import'.
This will leed you to the leed you to the 'External Dicom Data' screen which provides you a preview of the data containing in youre choosen folder.
You can import the data here by selecting it and pressing the 'Download' button.
It is also possible to view DICOM series directly in Mitk by selecting it here and pressing the 'View' button.
- Click 'Import Folder' or 'Import CD' button to open the import dialog.
- Enable the 'Copy on import' checkbox and choose a folder to import into data storage directly.
- Disable the 'Copy on import' checkbox to get to the 'External Dicom Data' screen.
- Click on the arrow on the left of your data to expand or hide dicom data levels.
- Click the 'Download' button to download selected DICOM data to your DICOM data storage.
- Click the 'View' button to view DICOM data.
\section org_mitk_gui_qt_dicomQueryRetrieve Query/Retrieve
\warning This plugin is experimental and not all of the described features behave as expected.
\note The query retrieve plugin only works if the PACS you are calling knows your machine settings.
There are also issues when you are running a firewall.
The query retrieve workflow allows you to get DICOM data from a server.
\imageMacro{QmitkDicom_QueryRetrieve.png,"The query retrieve screen",16.00}
\subsection org_mitk_gui_qt_dicomQuery Query
\imageMacro{QmitkDicom_Nodes.png,"The DICOM network configuration",11.26}
By performing a DICOM query you will ask a server for it's DICOM data.
This requires to setup the DICOM network configuration of your system and the server.
By clicking on 'Add Server' a new plain server field will appear. Now you can give it a name of your choice.
Fill the servers "DICOM name" the AETitle. Type in it's url, it's port and the specific DICOM protocoll you want to use for image transfer.
\note I recommend not to use CGET because most of the PACS systems (Image Servers) don't support that protocoll.
You can configure the DICOM network configuration of your machine by editing the 'Calling AETiltle', the 'Storage AETitle' and The 'Storage Port' text fields.
But normaly you don't have to change your configuration.
\imageMacro{QmitkDicom_FilterWidget.png,"The DICOM search options",3.66}
After you have finished your network configuration and before you start the query you should use the 'Search Options' to specify your query.
Otherwise all data on the server will be queried and you will have to wait for a long time.
You can specify your query by searching for a specific patient name or a study or a serie or a specific DICOM object by it's id.
You are allowed to include or exclude DICOM modalities from your query and you can specify a specific time in which the DICOM images you are searching fo might been captured.
When you finished that you can click the query button and the queried DICOM data will appear.
- Click on the 'Add Server' button.
- Edit 'Name' field.
- Edit 'AETitle' field.
- Edit 'Adress' field.
- Edit 'Port' field.
- Set search options.
- Click on 'Query' button.
\subsection org_mitk_gui_qt_dicomRetrieve Retrieve
\imageMacro{QmitkDicom_Retrieve.png,"The queried DICOM data.",15.22}
After the query you are able to select the queried data and click the 'Retrieve' button.
This will store the queried DICOM data into your DICOM storage.
Click on the 'Local Storage' button and work with your new data.
- Click on the 'Retrieve' button to retrieve the data to your DICOM storage.
- Click on the 'Local Storage' button.
*/
diff --git a/Plugins/org.mitk.gui.qt.dicom/documentation/UserManual/QmitkDicom_DisplayDataManager.png b/Plugins/org.mitk.gui.qt.dicombrowser/documentation/UserManual/QmitkDicom_DisplayDataManager.png
similarity index 100%
rename from Plugins/org.mitk.gui.qt.dicom/documentation/UserManual/QmitkDicom_DisplayDataManager.png
rename to Plugins/org.mitk.gui.qt.dicombrowser/documentation/UserManual/QmitkDicom_DisplayDataManager.png
diff --git a/Plugins/org.mitk.gui.qt.dicom/documentation/UserManual/QmitkDicom_ExternalView.png b/Plugins/org.mitk.gui.qt.dicombrowser/documentation/UserManual/QmitkDicom_ExternalView.png
similarity index 100%
rename from Plugins/org.mitk.gui.qt.dicom/documentation/UserManual/QmitkDicom_ExternalView.png
rename to Plugins/org.mitk.gui.qt.dicombrowser/documentation/UserManual/QmitkDicom_ExternalView.png
diff --git a/Plugins/org.mitk.gui.qt.dicom/documentation/UserManual/QmitkDicom_FilterWidget.png b/Plugins/org.mitk.gui.qt.dicombrowser/documentation/UserManual/QmitkDicom_FilterWidget.png
similarity index 100%
rename from Plugins/org.mitk.gui.qt.dicom/documentation/UserManual/QmitkDicom_FilterWidget.png
rename to Plugins/org.mitk.gui.qt.dicombrowser/documentation/UserManual/QmitkDicom_FilterWidget.png
diff --git a/Plugins/org.mitk.gui.qt.dicom/documentation/UserManual/QmitkDicom_Icon.png b/Plugins/org.mitk.gui.qt.dicombrowser/documentation/UserManual/QmitkDicom_Icon.png
similarity index 100%
rename from Plugins/org.mitk.gui.qt.dicom/documentation/UserManual/QmitkDicom_Icon.png
rename to Plugins/org.mitk.gui.qt.dicombrowser/documentation/UserManual/QmitkDicom_Icon.png
diff --git a/Plugins/org.mitk.gui.qt.dicom/documentation/UserManual/QmitkDicom_ImportDialog.png b/Plugins/org.mitk.gui.qt.dicombrowser/documentation/UserManual/QmitkDicom_ImportDialog.png
similarity index 100%
rename from Plugins/org.mitk.gui.qt.dicom/documentation/UserManual/QmitkDicom_ImportDialog.png
rename to Plugins/org.mitk.gui.qt.dicombrowser/documentation/UserManual/QmitkDicom_ImportDialog.png
diff --git a/Plugins/org.mitk.gui.qt.dicom/documentation/UserManual/QmitkDicom_Nodes.png b/Plugins/org.mitk.gui.qt.dicombrowser/documentation/UserManual/QmitkDicom_Nodes.png
similarity index 100%
rename from Plugins/org.mitk.gui.qt.dicom/documentation/UserManual/QmitkDicom_Nodes.png
rename to Plugins/org.mitk.gui.qt.dicombrowser/documentation/UserManual/QmitkDicom_Nodes.png
diff --git a/Plugins/org.mitk.gui.qt.dicom/documentation/UserManual/QmitkDicom_Plugin.png b/Plugins/org.mitk.gui.qt.dicombrowser/documentation/UserManual/QmitkDicom_Plugin.png
similarity index 100%
rename from Plugins/org.mitk.gui.qt.dicom/documentation/UserManual/QmitkDicom_Plugin.png
rename to Plugins/org.mitk.gui.qt.dicombrowser/documentation/UserManual/QmitkDicom_Plugin.png
diff --git a/Plugins/org.mitk.gui.qt.dicom/documentation/UserManual/QmitkDicom_PluginControls.png b/Plugins/org.mitk.gui.qt.dicombrowser/documentation/UserManual/QmitkDicom_PluginControls.png
similarity index 100%
rename from Plugins/org.mitk.gui.qt.dicom/documentation/UserManual/QmitkDicom_PluginControls.png
rename to Plugins/org.mitk.gui.qt.dicombrowser/documentation/UserManual/QmitkDicom_PluginControls.png
diff --git a/Plugins/org.mitk.gui.qt.dicom/documentation/UserManual/QmitkDicom_PluginExtended.png b/Plugins/org.mitk.gui.qt.dicombrowser/documentation/UserManual/QmitkDicom_PluginExtended.png
similarity index 100%
rename from Plugins/org.mitk.gui.qt.dicom/documentation/UserManual/QmitkDicom_PluginExtended.png
rename to Plugins/org.mitk.gui.qt.dicombrowser/documentation/UserManual/QmitkDicom_PluginExtended.png
diff --git a/Plugins/org.mitk.gui.qt.dicom/documentation/UserManual/QmitkDicom_QueryRetrieve.png b/Plugins/org.mitk.gui.qt.dicombrowser/documentation/UserManual/QmitkDicom_QueryRetrieve.png
similarity index 100%
rename from Plugins/org.mitk.gui.qt.dicom/documentation/UserManual/QmitkDicom_QueryRetrieve.png
rename to Plugins/org.mitk.gui.qt.dicombrowser/documentation/UserManual/QmitkDicom_QueryRetrieve.png
diff --git a/Plugins/org.mitk.gui.qt.dicom/documentation/UserManual/QmitkDicom_Retrieve.png b/Plugins/org.mitk.gui.qt.dicombrowser/documentation/UserManual/QmitkDicom_Retrieve.png
similarity index 100%
rename from Plugins/org.mitk.gui.qt.dicom/documentation/UserManual/QmitkDicom_Retrieve.png
rename to Plugins/org.mitk.gui.qt.dicombrowser/documentation/UserManual/QmitkDicom_Retrieve.png
diff --git a/Plugins/org.mitk.gui.qt.dicom/documentation/UserManual/Queried.png b/Plugins/org.mitk.gui.qt.dicombrowser/documentation/UserManual/Queried.png
similarity index 100%
rename from Plugins/org.mitk.gui.qt.dicom/documentation/UserManual/Queried.png
rename to Plugins/org.mitk.gui.qt.dicombrowser/documentation/UserManual/Queried.png
diff --git a/Plugins/org.mitk.gui.qt.dicom/documentation/UserManual/StartDicomPlugin.png b/Plugins/org.mitk.gui.qt.dicombrowser/documentation/UserManual/StartDicomPlugin.png
similarity index 100%
rename from Plugins/org.mitk.gui.qt.dicom/documentation/UserManual/StartDicomPlugin.png
rename to Plugins/org.mitk.gui.qt.dicombrowser/documentation/UserManual/StartDicomPlugin.png
diff --git a/Plugins/org.mitk.gui.qt.dicom/documentation/UserManual/dicom.svg b/Plugins/org.mitk.gui.qt.dicombrowser/documentation/UserManual/dicom.svg
similarity index 100%
rename from Plugins/org.mitk.gui.qt.dicom/documentation/UserManual/dicom.svg
rename to Plugins/org.mitk.gui.qt.dicombrowser/documentation/UserManual/dicom.svg
diff --git a/Plugins/org.mitk.gui.qt.dicom/documentation/doxygen/modules.dox b/Plugins/org.mitk.gui.qt.dicombrowser/documentation/doxygen/modules.dox
similarity index 55%
rename from Plugins/org.mitk.gui.qt.dicom/documentation/doxygen/modules.dox
rename to Plugins/org.mitk.gui.qt.dicombrowser/documentation/doxygen/modules.dox
index 729ff70cb9..a2b304e8b5 100644
--- a/Plugins/org.mitk.gui.qt.dicom/documentation/doxygen/modules.dox
+++ b/Plugins/org.mitk.gui.qt.dicombrowser/documentation/doxygen/modules.dox
@@ -1,16 +1,16 @@
/**
- \defgroup org_mitk_gui_qt_dicom org.mitk.gui.qt.dicom Plugin
+ \defgroup org_mitk_gui_qt_dicombrowser org.mitk.gui.qt.dicombrowser Plugin
\ingroup MITKPlugins
\brief Describe your plugin here.
*/
/**
- \defgroup org_mitk_gui_qt_dicom_internal Internal
- \ingroup org_mitk_gui_qt_dicom
+ \defgroup org_mitk_gui_qt_dicombrowser_internal Internal
+ \ingroup org_mitk_gui_qt_dicombrowser
- \brief This subcategory includes the internal classes of the org.mitk.gui.qt.dicom plugin. Other
+ \brief This subcategory includes the internal classes of the org.mitk.gui.qt.dicombrowser plugin. Other
plugins must not rely on these classes. They contain implementation details and their interface
may change at any time. We mean it.
*/
diff --git a/Plugins/org.mitk.gui.qt.dicom/files.cmake b/Plugins/org.mitk.gui.qt.dicombrowser/files.cmake
similarity index 100%
rename from Plugins/org.mitk.gui.qt.dicom/files.cmake
rename to Plugins/org.mitk.gui.qt.dicombrowser/files.cmake
diff --git a/Plugins/org.mitk.gui.qt.dicom/manifest_headers.cmake b/Plugins/org.mitk.gui.qt.dicombrowser/manifest_headers.cmake
similarity index 100%
rename from Plugins/org.mitk.gui.qt.dicom/manifest_headers.cmake
rename to Plugins/org.mitk.gui.qt.dicombrowser/manifest_headers.cmake
diff --git a/Plugins/org.mitk.gui.qt.dicom/org_mitk_gui_qt_dicom_config.h.in b/Plugins/org.mitk.gui.qt.dicombrowser/org_mitk_gui_qt_dicombrowser_config.h.in
similarity index 100%
rename from Plugins/org.mitk.gui.qt.dicom/org_mitk_gui_qt_dicom_config.h.in
rename to Plugins/org.mitk.gui.qt.dicombrowser/org_mitk_gui_qt_dicombrowser_config.h.in
diff --git a/Plugins/org.mitk.gui.qt.dicom/plugin.xml b/Plugins/org.mitk.gui.qt.dicombrowser/plugin.xml
similarity index 94%
rename from Plugins/org.mitk.gui.qt.dicom/plugin.xml
rename to Plugins/org.mitk.gui.qt.dicombrowser/plugin.xml
index 45decdc1a2..4af1935280 100644
--- a/Plugins/org.mitk.gui.qt.dicom/plugin.xml
+++ b/Plugins/org.mitk.gui.qt.dicombrowser/plugin.xml
@@ -1,20 +1,20 @@
diff --git a/Plugins/org.mitk.gui.qt.dicom/resources/dicom.qrc b/Plugins/org.mitk.gui.qt.dicombrowser/resources/dicom.qrc
similarity index 86%
rename from Plugins/org.mitk.gui.qt.dicom/resources/dicom.qrc
rename to Plugins/org.mitk.gui.qt.dicombrowser/resources/dicom.qrc
index bc4edfb70a..88a2ec4c62 100644
--- a/Plugins/org.mitk.gui.qt.dicom/resources/dicom.qrc
+++ b/Plugins/org.mitk.gui.qt.dicombrowser/resources/dicom.qrc
@@ -1,12 +1,12 @@
-
+
drive-harddisk_32.png
import_32.png
network-workgroup_32.png
network-idle_16.png
network-offline_16.png
network-error_16.png
viewIcon.png
folder_32.png
diff --git a/Plugins/org.mitk.gui.qt.dicom/resources/dicom.svg b/Plugins/org.mitk.gui.qt.dicombrowser/resources/dicom.svg
similarity index 100%
rename from Plugins/org.mitk.gui.qt.dicom/resources/dicom.svg
rename to Plugins/org.mitk.gui.qt.dicombrowser/resources/dicom.svg
diff --git a/Plugins/org.mitk.gui.qt.dicom/resources/drive-harddisk_32.png b/Plugins/org.mitk.gui.qt.dicombrowser/resources/drive-harddisk_32.png
similarity index 100%
rename from Plugins/org.mitk.gui.qt.dicom/resources/drive-harddisk_32.png
rename to Plugins/org.mitk.gui.qt.dicombrowser/resources/drive-harddisk_32.png
diff --git a/Plugins/org.mitk.gui.qt.dicom/resources/folder_32.png b/Plugins/org.mitk.gui.qt.dicombrowser/resources/folder_32.png
similarity index 100%
rename from Plugins/org.mitk.gui.qt.dicom/resources/folder_32.png
rename to Plugins/org.mitk.gui.qt.dicombrowser/resources/folder_32.png
diff --git a/Plugins/org.mitk.gui.qt.dicom/resources/import_32.png b/Plugins/org.mitk.gui.qt.dicombrowser/resources/import_32.png
similarity index 100%
rename from Plugins/org.mitk.gui.qt.dicom/resources/import_32.png
rename to Plugins/org.mitk.gui.qt.dicombrowser/resources/import_32.png
diff --git a/Plugins/org.mitk.gui.qt.dicom/resources/network-error_16.png b/Plugins/org.mitk.gui.qt.dicombrowser/resources/network-error_16.png
similarity index 100%
rename from Plugins/org.mitk.gui.qt.dicom/resources/network-error_16.png
rename to Plugins/org.mitk.gui.qt.dicombrowser/resources/network-error_16.png
diff --git a/Plugins/org.mitk.gui.qt.dicom/resources/network-idle_16.png b/Plugins/org.mitk.gui.qt.dicombrowser/resources/network-idle_16.png
similarity index 100%
rename from Plugins/org.mitk.gui.qt.dicom/resources/network-idle_16.png
rename to Plugins/org.mitk.gui.qt.dicombrowser/resources/network-idle_16.png
diff --git a/Plugins/org.mitk.gui.qt.dicom/resources/network-offline_16.png b/Plugins/org.mitk.gui.qt.dicombrowser/resources/network-offline_16.png
similarity index 100%
rename from Plugins/org.mitk.gui.qt.dicom/resources/network-offline_16.png
rename to Plugins/org.mitk.gui.qt.dicombrowser/resources/network-offline_16.png
diff --git a/Plugins/org.mitk.gui.qt.dicom/resources/network-receive_16.png b/Plugins/org.mitk.gui.qt.dicombrowser/resources/network-receive_16.png
similarity index 100%
rename from Plugins/org.mitk.gui.qt.dicom/resources/network-receive_16.png
rename to Plugins/org.mitk.gui.qt.dicombrowser/resources/network-receive_16.png
diff --git a/Plugins/org.mitk.gui.qt.dicom/resources/network-transmit-receive_16.png b/Plugins/org.mitk.gui.qt.dicombrowser/resources/network-transmit-receive_16.png
similarity index 100%
rename from Plugins/org.mitk.gui.qt.dicom/resources/network-transmit-receive_16.png
rename to Plugins/org.mitk.gui.qt.dicombrowser/resources/network-transmit-receive_16.png
diff --git a/Plugins/org.mitk.gui.qt.dicom/resources/network-transmit_16.png b/Plugins/org.mitk.gui.qt.dicombrowser/resources/network-transmit_16.png
similarity index 100%
rename from Plugins/org.mitk.gui.qt.dicom/resources/network-transmit_16.png
rename to Plugins/org.mitk.gui.qt.dicombrowser/resources/network-transmit_16.png
diff --git a/Plugins/org.mitk.gui.qt.dicom/resources/network-workgroup_32.png b/Plugins/org.mitk.gui.qt.dicombrowser/resources/network-workgroup_32.png
similarity index 100%
rename from Plugins/org.mitk.gui.qt.dicom/resources/network-workgroup_32.png
rename to Plugins/org.mitk.gui.qt.dicombrowser/resources/network-workgroup_32.png
diff --git a/Plugins/org.mitk.gui.qt.dicom/resources/viewIcon.png b/Plugins/org.mitk.gui.qt.dicombrowser/resources/viewIcon.png
similarity index 100%
rename from Plugins/org.mitk.gui.qt.dicom/resources/viewIcon.png
rename to Plugins/org.mitk.gui.qt.dicombrowser/resources/viewIcon.png
diff --git a/Plugins/org.mitk.gui.qt.dicom/src/internal/DicomEventHandler.cpp b/Plugins/org.mitk.gui.qt.dicombrowser/src/internal/DicomEventHandler.cpp
similarity index 100%
rename from Plugins/org.mitk.gui.qt.dicom/src/internal/DicomEventHandler.cpp
rename to Plugins/org.mitk.gui.qt.dicombrowser/src/internal/DicomEventHandler.cpp
diff --git a/Plugins/org.mitk.gui.qt.dicom/src/internal/DicomEventHandler.h b/Plugins/org.mitk.gui.qt.dicombrowser/src/internal/DicomEventHandler.h
similarity index 100%
rename from Plugins/org.mitk.gui.qt.dicom/src/internal/DicomEventHandler.h
rename to Plugins/org.mitk.gui.qt.dicombrowser/src/internal/DicomEventHandler.h
diff --git a/Plugins/org.mitk.gui.qt.dicom/src/internal/QmitkDicomBrowser.cpp b/Plugins/org.mitk.gui.qt.dicombrowser/src/internal/QmitkDicomBrowser.cpp
similarity index 97%
rename from Plugins/org.mitk.gui.qt.dicom/src/internal/QmitkDicomBrowser.cpp
rename to Plugins/org.mitk.gui.qt.dicombrowser/src/internal/QmitkDicomBrowser.cpp
index c3fdd56d9d..b139f22536 100644
--- a/Plugins/org.mitk.gui.qt.dicom/src/internal/QmitkDicomBrowser.cpp
+++ b/Plugins/org.mitk.gui.qt.dicombrowser/src/internal/QmitkDicomBrowser.cpp
@@ -1,193 +1,193 @@
/*============================================================================
The Medical Imaging Interaction Toolkit (MITK)
Copyright (c) German Cancer Research Center (DKFZ)
All rights reserved.
Use of this source code is governed by a 3-clause BSD license that can be
found in the LICENSE file.
============================================================================*/
// Qmitk
#include "QmitkDicomBrowser.h"
#include "mitkPluginActivator.h"
#include "berryIQtPreferencePage.h"
#include
#include
#include
#include
const std::string QmitkDicomBrowser::EDITOR_ID = "org.mitk.editors.dicombrowser";
const QString QmitkDicomBrowser::TEMP_DICOM_FOLDER_SUFFIX="TmpDicomFolder";
QmitkDicomBrowser::QmitkDicomBrowser()
: m_DicomDirectoryListener(new QmitkDicomDirectoryListener())
, m_StoreSCPLauncher(new QmitkStoreSCPLauncher(&m_Builder))
, m_Publisher(new QmitkDicomDataEventPublisher())
{
}
QmitkDicomBrowser::~QmitkDicomBrowser()
{
delete m_DicomDirectoryListener;
delete m_StoreSCPLauncher;
delete m_Handler;
delete m_Publisher;
}
void QmitkDicomBrowser::CreateQtPartControl(QWidget *parent )
{
m_Controls.setupUi( parent );
m_Controls.StoreSCPStatusLabel->setTextFormat(Qt::RichText);
- m_Controls.StoreSCPStatusLabel->setText("");
+ m_Controls.StoreSCPStatusLabel->setText("");
TestHandler();
OnPreferencesChanged(nullptr);
CreateTemporaryDirectory();
StartDicomDirectoryListener();
m_Controls.m_ctkDICOMQueryRetrieveWidget->useProgressDialog(true);
connect(m_Controls.tabWidget, SIGNAL(currentChanged(int)), this, SLOT(OnTabChanged(int)));
connect(m_Controls.externalDataWidget,SIGNAL(SignalStartDicomImport(const QStringList&)),
m_Controls.internalDataWidget,SLOT(OnStartDicomImport(const QStringList&)));
connect(m_Controls.externalDataWidget,SIGNAL(SignalDicomToDataManager(const QHash&)),
this,SLOT(OnViewButtonAddToDataManager(const QHash&)));
connect(m_Controls.internalDataWidget,SIGNAL(SignalFinishedImport()),this, SLOT(OnDicomImportFinished()));
connect(m_Controls.internalDataWidget,SIGNAL(SignalDicomToDataManager(const QHash&)),
this,SLOT(OnViewButtonAddToDataManager(const QHash&)));
}
void QmitkDicomBrowser::Init(berry::IEditorSite::Pointer site, berry::IEditorInput::Pointer input)
{
this->SetSite(site);
this->SetInput(input);
}
void QmitkDicomBrowser::SetFocus()
{
}
berry::IPartListener::Events::Types QmitkDicomBrowser::GetPartEventTypes() const
{
return Events::CLOSED | Events::HIDDEN | Events::VISIBLE;
}
void QmitkDicomBrowser::OnTabChanged(int page)
{
if (page == 2)//Query/Retrieve is selected
{
QString storagePort = m_Controls.m_ctkDICOMQueryRetrieveWidget->getServerParameters()["StoragePort"].toString();
QString storageAET = m_Controls.m_ctkDICOMQueryRetrieveWidget->getServerParameters()["StorageAETitle"].toString();
if(!((m_Builder.GetAETitle()->compare(storageAET,Qt::CaseSensitive)==0)&&
(m_Builder.GetPort()->compare(storagePort,Qt::CaseSensitive)==0)))
{
StopStoreSCP();
StartStoreSCP();
}
}
}
void QmitkDicomBrowser::OnDicomImportFinished()
{
m_Controls.tabWidget->setCurrentIndex(0);
}
void QmitkDicomBrowser::StartDicomDirectoryListener()
{
m_DicomDirectoryListener->SetDicomListenerDirectory(m_TempDirectory);
m_DicomDirectoryListener->SetDicomFolderSuffix(TEMP_DICOM_FOLDER_SUFFIX);
connect(m_DicomDirectoryListener, SIGNAL(SignalStartDicomImport(const QStringList&)), m_Controls.internalDataWidget, SLOT(OnStartDicomImport(const QStringList&)), Qt::DirectConnection);
}
void QmitkDicomBrowser::TestHandler()
{
m_Handler = new DicomEventHandler();
m_Handler->SubscribeSlots();
}
void QmitkDicomBrowser::OnViewButtonAddToDataManager(QHash eventProperties)
{
ctkDictionary properties;
// properties["PatientName"] = eventProperties["PatientName"];
// properties["StudyUID"] = eventProperties["StudyUID"];
// properties["StudyName"] = eventProperties["StudyName"];
// properties["SeriesUID"] = eventProperties["SeriesUID"];
// properties["SeriesName"] = eventProperties["SeriesName"];
properties["FilesForSeries"] = eventProperties["FilesForSeries"];
if(eventProperties.contains("Modality"))
{
properties["Modality"] = eventProperties["Modality"];
}
m_Publisher->PublishSignals(mitk::PluginActivator::getContext());
m_Publisher->AddSeriesToDataManagerEvent(properties);
}
void QmitkDicomBrowser::StartStoreSCP()
{
QString storagePort = m_Controls.m_ctkDICOMQueryRetrieveWidget->getServerParameters()["StoragePort"].toString();
QString storageAET = m_Controls.m_ctkDICOMQueryRetrieveWidget->getServerParameters()["StorageAETitle"].toString();
m_Builder.AddPort(storagePort)->AddAETitle(storageAET)->AddTransferSyntax()->AddOtherNetworkOptions()->AddMode()->AddOutputDirectory(m_TempDirectory);
m_StoreSCPLauncher = new QmitkStoreSCPLauncher(&m_Builder);
connect(m_StoreSCPLauncher, SIGNAL(SignalStatusOfStoreSCP(const QString&)), this, SLOT(OnStoreSCPStatusChanged(const QString&)));
connect(m_StoreSCPLauncher ,SIGNAL(SignalStartImport(const QStringList&)),m_Controls.internalDataWidget,SLOT(OnStartDicomImport(const QStringList&)));
connect(m_StoreSCPLauncher ,SIGNAL(SignalStoreSCPError(const QString&)),m_DicomDirectoryListener,SLOT(OnDicomNetworkError(const QString&)),Qt::DirectConnection);
connect(m_StoreSCPLauncher ,SIGNAL(SignalStoreSCPError(const QString&)),this,SLOT(OnDicomNetworkError(const QString&)),Qt::DirectConnection);
m_StoreSCPLauncher->StartStoreSCP();
}
void QmitkDicomBrowser::OnStoreSCPStatusChanged(const QString& status)
{
- m_Controls.StoreSCPStatusLabel->setText(" "+status);
+ m_Controls.StoreSCPStatusLabel->setText(" "+status);
}
void QmitkDicomBrowser::OnDicomNetworkError(const QString& status)
{
- m_Controls.StoreSCPStatusLabel->setText(" "+status);
+ m_Controls.StoreSCPStatusLabel->setText(" "+status);
}
void QmitkDicomBrowser::StopStoreSCP()
{
delete m_StoreSCPLauncher;
}
void QmitkDicomBrowser::SetPluginDirectory()
{
m_PluginDirectory = mitk::PluginActivator::getContext()->getDataFile("").absolutePath();
m_PluginDirectory.append("/database");
}
void QmitkDicomBrowser::CreateTemporaryDirectory()
{
QDir tmp;
QString tmpPath = QDir::tempPath();
m_TempDirectory.clear();
m_TempDirectory.append(tmpPath);
m_TempDirectory.append(QString("/"));
m_TempDirectory.append(TEMP_DICOM_FOLDER_SUFFIX);
m_TempDirectory.append(QString("."));
m_TempDirectory.append(QTime::currentTime().toString("hhmmsszzz"));
m_TempDirectory.append(QString::number(QCoreApplication::applicationPid()));
tmp.mkdir(QDir::toNativeSeparators( m_TempDirectory ));
}
void QmitkDicomBrowser::OnPreferencesChanged(const berry::IBerryPreferences*)
{
SetPluginDirectory();
berry::IPreferencesService* prefService = berry::Platform::GetPreferencesService();
m_DatabaseDirectory = prefService->GetSystemPreferences()->Node("/org.mitk.views.dicomreader")->Get("default dicom path", m_PluginDirectory);
m_Controls.internalDataWidget->SetDatabaseDirectory(m_DatabaseDirectory);
}
diff --git a/Plugins/org.mitk.gui.qt.dicom/src/internal/QmitkDicomBrowser.h b/Plugins/org.mitk.gui.qt.dicombrowser/src/internal/QmitkDicomBrowser.h
similarity index 98%
rename from Plugins/org.mitk.gui.qt.dicom/src/internal/QmitkDicomBrowser.h
rename to Plugins/org.mitk.gui.qt.dicombrowser/src/internal/QmitkDicomBrowser.h
index 212073f403..9dbcc2d139 100644
--- a/Plugins/org.mitk.gui.qt.dicom/src/internal/QmitkDicomBrowser.h
+++ b/Plugins/org.mitk.gui.qt.dicombrowser/src/internal/QmitkDicomBrowser.h
@@ -1,145 +1,145 @@
/*============================================================================
The Medical Imaging Interaction Toolkit (MITK)
Copyright (c) German Cancer Research Center (DKFZ)
All rights reserved.
Use of this source code is governed by a 3-clause BSD license that can be
found in the LICENSE file.
============================================================================*/
#ifndef QmitkDicomBrowser_h
#define QmitkDicomBrowser_h
// Blueberry
#include
#include
#include
#include
// MITK
#include "DicomEventHandler.h"
#include "QmitkDicomDataEventPublisher.h"
#include "QmitkDicomDirectoryListener.h"
#include "QmitkStoreSCPLauncher.h"
#include "QmitkStoreSCPLauncherBuilder.h"
#include "ui_QmitkDicomBrowserControls.h"
-#include
+#include
// Qt
#include
#include
#include
#include
#include
/**
* \brief QmitkDicomBrowser is an editor providing functionality for dicom storage and import and query retrieve functionality.
*
* \sa berry::IPartListener
* \ingroup ${plugin_target}_internal
*/
class DICOM_EXPORT QmitkDicomBrowser : public berry::QtEditorPart, virtual public berry::IPartListener
{
// this is needed for all Qt objects that should have a Qt meta-object
// (everything that derives from QObject and wants to have signal/slots)
Q_OBJECT
public:
berryObjectMacro(QmitkDicomBrowser);
static const std::string EDITOR_ID;
static const QString TEMP_DICOM_FOLDER_SUFFIX;
/**
* \brief QmitkDicomBrowser constructor.
*/
QmitkDicomBrowser();
/**
* \brief QmitkDicomBrowser destructor.
*/
~QmitkDicomBrowser() override;
/**
* \brief Init initialize the editor.
*/
void Init(berry::IEditorSite::Pointer site, berry::IEditorInput::Pointer input) override;
void SetFocus() override;
void DoSave() override {}
void DoSaveAs() override {}
bool IsDirty() const override { return false; }
bool IsSaveAsAllowed() const override { return false; }
virtual void OnPreferencesChanged(const berry::IBerryPreferences* prefs);
signals:
/**
* \brief SignalStartDicomImport is enitted when dicom directory for import was selected.
*/
void SignalStartDicomImport(const QString&);
protected slots:
/// \brief Called when import is finished.
void OnDicomImportFinished();
/// \brief Called when Query Retrieve or Import Folder was clicked.
void OnTabChanged(int);
/// \brief Called when view button is clicked. Sends out an event for adding the current selected file to the mitkDataStorage.
void OnViewButtonAddToDataManager(QHash eventProperties);
/// \brief Called when status of dicom storage provider changes.
void OnStoreSCPStatusChanged(const QString& status);
/// \brief Called when dicom storage provider emits a network error.
void OnDicomNetworkError(const QString& status);
protected:
/// \brief StartStoreSCP starts dicom storage provider.
void StartStoreSCP();
/// \brief StopStoreSCP stops dicom storage provider.
void StopStoreSCP();
/// \brief TestHandler initializes event handler.
void TestHandler();
/// \brief CreateTemporaryDirectory creates temporary directory in which temorary dicom objects are stored.
void CreateTemporaryDirectory();
/// \brief StartDicomDirectoryListener starts dicom directory listener.
void StartDicomDirectoryListener();
/**
* \brief CreateQtPartControl(QWidget *parent) sets the view objects from ui_QmitkDicomBrowserControls.h.
*
* \param parent is a pointer to the parent widget
*/
void CreateQtPartControl(QWidget *parent) override;
/// \brief SetPluginDirectory Sets plugin directory.
void SetPluginDirectory();
Events::Types GetPartEventTypes() const override;
ctkFileDialog* m_ImportDialog;
Ui::QmitkDicomBrowserControls m_Controls;
QmitkDicomDirectoryListener* m_DicomDirectoryListener;
QmitkStoreSCPLauncherBuilder m_Builder;
QmitkStoreSCPLauncher* m_StoreSCPLauncher;
DicomEventHandler* m_Handler;
QmitkDicomDataEventPublisher* m_Publisher;
QString m_PluginDirectory;
QString m_TempDirectory;
QString m_DatabaseDirectory;
};
#endif // QmitkDicomBrowser_h
diff --git a/Plugins/org.mitk.gui.qt.dicom/src/internal/QmitkDicomBrowserControls.ui b/Plugins/org.mitk.gui.qt.dicombrowser/src/internal/QmitkDicomBrowserControls.ui
similarity index 95%
rename from Plugins/org.mitk.gui.qt.dicom/src/internal/QmitkDicomBrowserControls.ui
rename to Plugins/org.mitk.gui.qt.dicombrowser/src/internal/QmitkDicomBrowserControls.ui
index ff5b4f3dc5..d8a12ed7a6 100644
--- a/Plugins/org.mitk.gui.qt.dicom/src/internal/QmitkDicomBrowserControls.ui
+++ b/Plugins/org.mitk.gui.qt.dicombrowser/src/internal/QmitkDicomBrowserControls.ui
@@ -1,307 +1,307 @@
QmitkDicomBrowserControls
0
0
752
696
0
0
0
0
false
QmitkTemplate
-
true
0
0
738
682
0
0
-
true
0
0
QTabWidget::North
QTabWidget::Rounded
1
32
32
0
0
- :/org.mitk.gui.qt.dicom/drive-harddisk_32.png:/org.mitk.gui.qt.dicom/drive-harddisk_32.png
+ :/org.mitk.gui.qt.dicombrowser/drive-harddisk_32.png:/org.mitk.gui.qt.dicombrowser/drive-harddisk_32.png
Local Storage
Manage your local dicom imports
-
0
0
0
0
- :/org.mitk.gui.qt.dicom/import_32.png
- :/org.mitk.gui.qt.dicom/import_32.png:/org.mitk.gui.qt.dicom/import_32.png
+ :/org.mitk.gui.qt.dicombrowser/import_32.png
+ :/org.mitk.gui.qt.dicombrowser/import_32.png:/org.mitk.gui.qt.dicombrowser/import_32.png
Import
Import dicom data from any hard drive
-
0
0
0
0
- :/org.mitk.gui.qt.dicom/network-workgroup_32.png:/org.mitk.gui.qt.dicom/network-workgroup_32.png
+ :/org.mitk.gui.qt.dicombrowser/network-workgroup_32.png:/org.mitk.gui.qt.dicombrowser/network-workgroup_32.png
Query Retrieve
Query and retrieve dicom data from server
-
0
0
color: rgb(255, 0, 0);
Warning: This is currently an experimental feature!
-
0
0
-
0
0
QFrame::StyledPanel
QFrame::Raised
0
0
-
Qt::Horizontal
QSizePolicy::Minimum
4
20
-
0
0
Qt::RichText
-
Qt::Horizontal
40
20
-
Qt::Vertical
20
40
ctkDICOMQueryRetrieveWidget
QWidget
ctkDICOMQueryRetrieveWidget.h
1
QmitkDicomLocalStorageWidget
QWidget
QmitkDicomLocalStorageWidget.h
1
QmitkDicomExternalDataWidget
QWidget
QmitkDicomExternalDataWidget.h
1
OnChangePage(int)
diff --git a/Plugins/org.mitk.gui.qt.dicom/src/internal/QmitkDicomDataEventPublisher.cpp b/Plugins/org.mitk.gui.qt.dicombrowser/src/internal/QmitkDicomDataEventPublisher.cpp
similarity index 100%
rename from Plugins/org.mitk.gui.qt.dicom/src/internal/QmitkDicomDataEventPublisher.cpp
rename to Plugins/org.mitk.gui.qt.dicombrowser/src/internal/QmitkDicomDataEventPublisher.cpp
diff --git a/Plugins/org.mitk.gui.qt.dicom/src/internal/QmitkDicomDataEventPublisher.h b/Plugins/org.mitk.gui.qt.dicombrowser/src/internal/QmitkDicomDataEventPublisher.h
similarity index 100%
rename from Plugins/org.mitk.gui.qt.dicom/src/internal/QmitkDicomDataEventPublisher.h
rename to Plugins/org.mitk.gui.qt.dicombrowser/src/internal/QmitkDicomDataEventPublisher.h
diff --git a/Plugins/org.mitk.gui.qt.dicom/src/internal/QmitkDicomDirectoryListener.cpp b/Plugins/org.mitk.gui.qt.dicombrowser/src/internal/QmitkDicomDirectoryListener.cpp
similarity index 100%
rename from Plugins/org.mitk.gui.qt.dicom/src/internal/QmitkDicomDirectoryListener.cpp
rename to Plugins/org.mitk.gui.qt.dicombrowser/src/internal/QmitkDicomDirectoryListener.cpp
diff --git a/Plugins/org.mitk.gui.qt.dicom/src/internal/QmitkDicomDirectoryListener.h b/Plugins/org.mitk.gui.qt.dicombrowser/src/internal/QmitkDicomDirectoryListener.h
similarity index 100%
rename from Plugins/org.mitk.gui.qt.dicom/src/internal/QmitkDicomDirectoryListener.h
rename to Plugins/org.mitk.gui.qt.dicombrowser/src/internal/QmitkDicomDirectoryListener.h
diff --git a/Plugins/org.mitk.gui.qt.dicom/src/internal/QmitkDicomPreferencePage.cpp b/Plugins/org.mitk.gui.qt.dicombrowser/src/internal/QmitkDicomPreferencePage.cpp
similarity index 100%
rename from Plugins/org.mitk.gui.qt.dicom/src/internal/QmitkDicomPreferencePage.cpp
rename to Plugins/org.mitk.gui.qt.dicombrowser/src/internal/QmitkDicomPreferencePage.cpp
diff --git a/Plugins/org.mitk.gui.qt.dicom/src/internal/QmitkDicomPreferencePage.h b/Plugins/org.mitk.gui.qt.dicombrowser/src/internal/QmitkDicomPreferencePage.h
similarity index 97%
rename from Plugins/org.mitk.gui.qt.dicom/src/internal/QmitkDicomPreferencePage.h
rename to Plugins/org.mitk.gui.qt.dicombrowser/src/internal/QmitkDicomPreferencePage.h
index 9e16364ea8..e8d151975f 100644
--- a/Plugins/org.mitk.gui.qt.dicom/src/internal/QmitkDicomPreferencePage.h
+++ b/Plugins/org.mitk.gui.qt.dicombrowser/src/internal/QmitkDicomPreferencePage.h
@@ -1,71 +1,71 @@
/*============================================================================
The Medical Imaging Interaction Toolkit (MITK)
Copyright (c) German Cancer Research Center (DKFZ)
All rights reserved.
Use of this source code is governed by a 3-clause BSD license that can be
found in the LICENSE file.
============================================================================*/
#ifndef QmitkDicomPreferencePage_h
#define QmitkDicomPreferencePage_h
#include
#include
#include "berryIQtPreferencePage.h"
-#include
+#include
#include
class QWidget;
class QCheckBox;
class QLineEdit;
class QPushButton;
class DICOM_EXPORT QmitkDicomPreferencePage : public QObject, public berry::IQtPreferencePage
{
Q_OBJECT
Q_INTERFACES(berry::IPreferencePage)
public:
QmitkDicomPreferencePage();
~QmitkDicomPreferencePage() override;
void Init(berry::IWorkbench::Pointer workbench) override;
void CreateQtControl(QWidget* widget) override;
QWidget* GetQtControl() const override;
///
/// \see IPreferencePage::PerformOk()
///
bool PerformOk() override;
///
/// \see IPreferencePage::PerformCancel()
///
void PerformCancel() override;
///
/// \see IPreferencePage::Update()
///
void Update() override;
protected:
QWidget* m_MainControl;
berry::IPreferences::Pointer m_DicomPreferencesNode;
QLineEdit* m_PathEdit;
QPushButton* m_PathSelect;
QPushButton* m_PathDefault;
protected slots:
void DefaultButtonPushed();
void PathSelectButtonPushed();
};
#endif // QmitkQmitkDicomPreferencePage_h
diff --git a/Plugins/org.mitk.gui.qt.dicom/src/internal/QmitkStoreSCPLauncher.cpp b/Plugins/org.mitk.gui.qt.dicombrowser/src/internal/QmitkStoreSCPLauncher.cpp
similarity index 99%
rename from Plugins/org.mitk.gui.qt.dicom/src/internal/QmitkStoreSCPLauncher.cpp
rename to Plugins/org.mitk.gui.qt.dicombrowser/src/internal/QmitkStoreSCPLauncher.cpp
index d632bb6237..d295cdf7df 100644
--- a/Plugins/org.mitk.gui.qt.dicom/src/internal/QmitkStoreSCPLauncher.cpp
+++ b/Plugins/org.mitk.gui.qt.dicombrowser/src/internal/QmitkStoreSCPLauncher.cpp
@@ -1,199 +1,199 @@
/*============================================================================
The Medical Imaging Interaction Toolkit (MITK)
Copyright (c) German Cancer Research Center (DKFZ)
All rights reserved.
Use of this source code is governed by a 3-clause BSD license that can be
found in the LICENSE file.
============================================================================*/
#include "QmitkStoreSCPLauncher.h"
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
-#include "org_mitk_gui_qt_dicom_config.h"
+#include "org_mitk_gui_qt_dicombrowser_config.h"
QmitkStoreSCPLauncher::QmitkStoreSCPLauncher(QmitkStoreSCPLauncherBuilder* builder)
: m_StoreSCP(new QProcess())
{
m_StoreSCP->setProcessChannelMode(QProcess::MergedChannels);
connect( m_StoreSCP, SIGNAL(error(QProcess::ProcessError)),this, SLOT(OnProcessError(QProcess::ProcessError)));
connect( m_StoreSCP, SIGNAL(stateChanged(QProcess::ProcessState)),this, SLOT(OnStateChanged(QProcess::ProcessState)));
connect( m_StoreSCP, SIGNAL(readyReadStandardOutput()),this, SLOT(OnReadyProcessOutput()));
SetArgumentList(builder);
}
QmitkStoreSCPLauncher::~QmitkStoreSCPLauncher()
{
disconnect( m_StoreSCP, SIGNAL(error(QProcess::ProcessError)),this, SLOT(OnProcessError(QProcess::ProcessError)));
disconnect( m_StoreSCP, SIGNAL(stateChanged(QProcess::ProcessState)),this, SLOT(OnStateChanged(QProcess::ProcessState)));
disconnect( m_StoreSCP, SIGNAL(readyReadStandardOutput()),this, SLOT(OnReadyProcessOutput()));
m_StoreSCP->close();
m_StoreSCP->waitForFinished(1000);
delete m_StoreSCP;
}
void QmitkStoreSCPLauncher::StartStoreSCP()
{
FindPathToStoreSCP();
m_StoreSCP->start(m_PathToStoreSCP,m_ArgumentList);
}
void QmitkStoreSCPLauncher::FindPathToStoreSCP()
{
QString appPath= QCoreApplication::applicationDirPath();
if(m_PathToStoreSCP.isEmpty())
{
QString fileName;
#ifdef _WIN32
fileName = "/storescp.exe";
#else
fileName = "/storescp";
#endif
m_PathToStoreSCP = appPath + fileName;
//In developement the storescp isn't copied into bin directory
if(!QFile::exists(m_PathToStoreSCP))
{
m_PathToStoreSCP = static_cast(DCMTK_STORESCP);
}
}
}
void QmitkStoreSCPLauncher::OnReadyProcessOutput()
{
QString out(m_StoreSCP->readAllStandardOutput());
QStringList allDataList,importList;
allDataList = out.split("\n",QString::SkipEmptyParts);
QStringListIterator it(allDataList);
while(it.hasNext())
{
QString output = it.next();
if (output.contains("E: "))
{
output.replace("E: ","");
m_ErrorText = output;
OnProcessError(QProcess::UnknownError);
return;
}
if(output.contains("I: storing DICOM file: "))
{
output.replace("I: storing DICOM file: ","");
output.replace("\\", "/"); // cannot handle backslashes
output.replace("\r", ""); // cannot handle carriage return
importList += output;
}
}
if(!importList.isEmpty())
{
emit SignalStartImport(importList);
}
}
void QmitkStoreSCPLauncher::OnProcessError(QProcess::ProcessError err)
{
switch(err)
{
case QProcess::FailedToStart:
m_ErrorText.prepend("Failed to start storage provider: ");
m_ErrorText.append(m_StoreSCP->errorString());
emit SignalStoreSCPError(m_ErrorText);
m_ErrorText.clear();
break;
case QProcess::Crashed:
m_ErrorText.prepend("Storage provider closed: ");
m_ErrorText.append(m_StoreSCP->errorString());
emit SignalStoreSCPError(m_ErrorText);
m_ErrorText.clear();
break;
case QProcess::Timedout:
m_ErrorText.prepend("Storage provider timeout: ");
m_ErrorText.append(m_StoreSCP->errorString());
emit SignalStoreSCPError(m_ErrorText);
m_ErrorText.clear();
break;
case QProcess::WriteError:
m_ErrorText.prepend("Storage provider write error: ");
m_ErrorText.append(m_StoreSCP->errorString());
emit SignalStoreSCPError(m_ErrorText);
m_ErrorText.clear();
break;
case QProcess::ReadError:
m_ErrorText.prepend("Storage provider read error: ");
m_ErrorText.append(m_StoreSCP->errorString());
emit SignalStoreSCPError(m_ErrorText);
m_ErrorText.clear();
break;
case QProcess::UnknownError:
m_ErrorText.prepend("Storage provider unknown error: ");
m_ErrorText.append(m_StoreSCP->errorString());
emit SignalStoreSCPError(m_ErrorText);
m_ErrorText.clear();
break;
default:
m_ErrorText.prepend("Storage provider unknown error: ");
m_ErrorText.append(m_StoreSCP->errorString());
emit SignalStoreSCPError(m_ErrorText);
m_ErrorText.clear();
break;
}
}
void QmitkStoreSCPLauncher::OnStateChanged(QProcess::ProcessState status)
{
switch(status)
{
case QProcess::NotRunning:
m_StatusText.prepend("Storage provider not running!");
emit SignalStatusOfStoreSCP(m_StatusText);
m_StatusText.clear();
break;
case QProcess::Starting:
m_StatusText.prepend("Starting storage provider!");
emit SignalStatusOfStoreSCP(m_StatusText);
m_StatusText.clear();
break;
case QProcess::Running:
m_StatusText.prepend(m_ArgumentList[0]).prepend(" Port: ").prepend(m_ArgumentList[2]).prepend(" AET: ").prepend("Storage provider running! ");
emit SignalStatusOfStoreSCP(m_StatusText);
m_StatusText.clear();
break;
default:
m_StatusText.prepend("Storage provider unknown error!");
emit SignalStatusOfStoreSCP(m_StatusText);
m_StatusText.clear();
break;
}
}
void QmitkStoreSCPLauncher::SetArgumentList(QmitkStoreSCPLauncherBuilder* builder)
{
m_ArgumentList << *builder->GetPort() << QString("-aet") <<*builder->GetAETitle() << *builder->GetTransferSyntax()
<< *builder->GetOtherNetworkOptions() << *builder->GetMode() << QString("-od") << *builder->GetOutputDirectory();
}
QString QmitkStoreSCPLauncher::ArgumentListToQString()
{
QString argumentString;
QStringListIterator argumentIterator(m_ArgumentList);
while(argumentIterator.hasNext())
{
argumentString.append(" ");
argumentString.append(argumentIterator.next());
}
return argumentString;
}
diff --git a/Plugins/org.mitk.gui.qt.dicom/src/internal/QmitkStoreSCPLauncher.h b/Plugins/org.mitk.gui.qt.dicombrowser/src/internal/QmitkStoreSCPLauncher.h
similarity index 100%
rename from Plugins/org.mitk.gui.qt.dicom/src/internal/QmitkStoreSCPLauncher.h
rename to Plugins/org.mitk.gui.qt.dicombrowser/src/internal/QmitkStoreSCPLauncher.h
diff --git a/Plugins/org.mitk.gui.qt.dicom/src/internal/QmitkStoreSCPLauncherBuilder.cpp b/Plugins/org.mitk.gui.qt.dicombrowser/src/internal/QmitkStoreSCPLauncherBuilder.cpp
similarity index 100%
rename from Plugins/org.mitk.gui.qt.dicom/src/internal/QmitkStoreSCPLauncherBuilder.cpp
rename to Plugins/org.mitk.gui.qt.dicombrowser/src/internal/QmitkStoreSCPLauncherBuilder.cpp
diff --git a/Plugins/org.mitk.gui.qt.dicom/src/internal/QmitkStoreSCPLauncherBuilder.h b/Plugins/org.mitk.gui.qt.dicombrowser/src/internal/QmitkStoreSCPLauncherBuilder.h
similarity index 100%
rename from Plugins/org.mitk.gui.qt.dicom/src/internal/QmitkStoreSCPLauncherBuilder.h
rename to Plugins/org.mitk.gui.qt.dicombrowser/src/internal/QmitkStoreSCPLauncherBuilder.h
diff --git a/Plugins/org.mitk.gui.qt.dicom/src/internal/mitkPluginActivator.cpp b/Plugins/org.mitk.gui.qt.dicombrowser/src/internal/mitkPluginActivator.cpp
similarity index 100%
rename from Plugins/org.mitk.gui.qt.dicom/src/internal/mitkPluginActivator.cpp
rename to Plugins/org.mitk.gui.qt.dicombrowser/src/internal/mitkPluginActivator.cpp
diff --git a/Plugins/org.mitk.gui.qt.dicom/src/internal/mitkPluginActivator.h b/Plugins/org.mitk.gui.qt.dicombrowser/src/internal/mitkPluginActivator.h
similarity index 93%
rename from Plugins/org.mitk.gui.qt.dicom/src/internal/mitkPluginActivator.h
rename to Plugins/org.mitk.gui.qt.dicombrowser/src/internal/mitkPluginActivator.h
index e68ad3c52e..265b13f26a 100644
--- a/Plugins/org.mitk.gui.qt.dicom/src/internal/mitkPluginActivator.h
+++ b/Plugins/org.mitk.gui.qt.dicombrowser/src/internal/mitkPluginActivator.h
@@ -1,38 +1,38 @@
/*============================================================================
The Medical Imaging Interaction Toolkit (MITK)
Copyright (c) German Cancer Research Center (DKFZ)
All rights reserved.
Use of this source code is governed by a 3-clause BSD license that can be
found in the LICENSE file.
============================================================================*/
#ifndef MITKPLUGINACTIVATOR_H
#define MITKPLUGINACTIVATOR_H
#include
namespace mitk {
class PluginActivator :
public QObject, public ctkPluginActivator
{
Q_OBJECT
- Q_PLUGIN_METADATA(IID "org_mitk_gui_qt_dicom")
+ Q_PLUGIN_METADATA(IID "org_mitk_gui_qt_dicombrowser")
Q_INTERFACES(ctkPluginActivator)
public:
void start(ctkPluginContext* context) override;
void stop(ctkPluginContext* context) override;
static ctkPluginContext* getContext();
private:
static ctkPluginContext* pluginContext;
}; // PluginActivator
}
#endif // MITKPLUGINACTIVATOR_H
diff --git a/Plugins/org.mitk.gui.qt.ext/src/QmitkExtWorkbenchWindowAdvisor.cpp b/Plugins/org.mitk.gui.qt.ext/src/QmitkExtWorkbenchWindowAdvisor.cpp
index 380cf44b23..c6fb743873 100644
--- a/Plugins/org.mitk.gui.qt.ext/src/QmitkExtWorkbenchWindowAdvisor.cpp
+++ b/Plugins/org.mitk.gui.qt.ext/src/QmitkExtWorkbenchWindowAdvisor.cpp
@@ -1,1432 +1,1432 @@
/*============================================================================
The Medical Imaging Interaction Toolkit (MITK)
Copyright (c) German Cancer Research Center (DKFZ)
All rights reserved.
Use of this source code is governed by a 3-clause BSD license that can be
found in the LICENSE file.
============================================================================*/
#include "QmitkExtWorkbenchWindowAdvisor.h"
#include "QmitkExtActionBarAdvisor.h"
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
// UGLYYY
#include "internal/QmitkExtWorkbenchWindowAdvisorHack.h"
#include "internal/QmitkCommonExtPlugin.h"
#include "mitkUndoController.h"
#include "mitkVerboseLimitedLinearUndo.h"
#include
#include
#include
#include
#include
#include
QmitkExtWorkbenchWindowAdvisorHack* QmitkExtWorkbenchWindowAdvisorHack::undohack =
new QmitkExtWorkbenchWindowAdvisorHack();
QString QmitkExtWorkbenchWindowAdvisor::QT_SETTINGS_FILENAME = "QtSettings.ini";
static bool USE_EXPERIMENTAL_COMMAND_CONTRIBUTIONS = false;
class PartListenerForTitle: public berry::IPartListener
{
public:
PartListenerForTitle(QmitkExtWorkbenchWindowAdvisor* wa)
: windowAdvisor(wa)
{
}
Events::Types GetPartEventTypes() const override
{
return Events::ACTIVATED | Events::BROUGHT_TO_TOP | Events::CLOSED
| Events::HIDDEN | Events::VISIBLE;
}
void PartActivated(const berry::IWorkbenchPartReference::Pointer& ref) override
{
if (ref.Cast ())
{
windowAdvisor->UpdateTitle(false);
}
}
void PartBroughtToTop(const berry::IWorkbenchPartReference::Pointer& ref) override
{
if (ref.Cast ())
{
windowAdvisor->UpdateTitle(false);
}
}
void PartClosed(const berry::IWorkbenchPartReference::Pointer& /*ref*/) override
{
windowAdvisor->UpdateTitle(false);
}
void PartHidden(const berry::IWorkbenchPartReference::Pointer& ref) override
{
if (!windowAdvisor->lastActiveEditor.Expired() &&
ref->GetPart(false) == windowAdvisor->lastActiveEditor.Lock())
{
windowAdvisor->UpdateTitle(true);
}
}
void PartVisible(const berry::IWorkbenchPartReference::Pointer& ref) override
{
if (!windowAdvisor->lastActiveEditor.Expired() &&
ref->GetPart(false) == windowAdvisor->lastActiveEditor.Lock())
{
windowAdvisor->UpdateTitle(false);
}
}
private:
QmitkExtWorkbenchWindowAdvisor* windowAdvisor;
};
class PartListenerForViewNavigator: public berry::IPartListener
{
public:
PartListenerForViewNavigator(QAction* act)
: viewNavigatorAction(act)
{
}
Events::Types GetPartEventTypes() const override
{
return Events::OPENED | Events::CLOSED | Events::HIDDEN |
Events::VISIBLE;
}
void PartOpened(const berry::IWorkbenchPartReference::Pointer& ref) override
{
if (ref->GetId()=="org.mitk.views.viewnavigatorview")
{
viewNavigatorAction->setChecked(true);
}
}
void PartClosed(const berry::IWorkbenchPartReference::Pointer& ref) override
{
if (ref->GetId()=="org.mitk.views.viewnavigatorview")
{
viewNavigatorAction->setChecked(false);
}
}
void PartVisible(const berry::IWorkbenchPartReference::Pointer& ref) override
{
if (ref->GetId()=="org.mitk.views.viewnavigatorview")
{
viewNavigatorAction->setChecked(true);
}
}
void PartHidden(const berry::IWorkbenchPartReference::Pointer& ref) override
{
if (ref->GetId()=="org.mitk.views.viewnavigatorview")
{
viewNavigatorAction->setChecked(false);
}
}
private:
QAction* viewNavigatorAction;
};
class PartListenerForImageNavigator: public berry::IPartListener
{
public:
PartListenerForImageNavigator(QAction* act)
: imageNavigatorAction(act)
{
}
Events::Types GetPartEventTypes() const override
{
return Events::OPENED | Events::CLOSED | Events::HIDDEN |
Events::VISIBLE;
}
void PartOpened(const berry::IWorkbenchPartReference::Pointer& ref) override
{
if (ref->GetId()=="org.mitk.views.imagenavigator")
{
imageNavigatorAction->setChecked(true);
}
}
void PartClosed(const berry::IWorkbenchPartReference::Pointer& ref) override
{
if (ref->GetId()=="org.mitk.views.imagenavigator")
{
imageNavigatorAction->setChecked(false);
}
}
void PartVisible(const berry::IWorkbenchPartReference::Pointer& ref) override
{
if (ref->GetId()=="org.mitk.views.imagenavigator")
{
imageNavigatorAction->setChecked(true);
}
}
void PartHidden(const berry::IWorkbenchPartReference::Pointer& ref) override
{
if (ref->GetId()=="org.mitk.views.imagenavigator")
{
imageNavigatorAction->setChecked(false);
}
}
private:
QAction* imageNavigatorAction;
};
class PerspectiveListenerForTitle: public berry::IPerspectiveListener
{
public:
PerspectiveListenerForTitle(QmitkExtWorkbenchWindowAdvisor* wa)
: windowAdvisor(wa)
, perspectivesClosed(false)
{
}
Events::Types GetPerspectiveEventTypes() const override
{
if (USE_EXPERIMENTAL_COMMAND_CONTRIBUTIONS)
{
return Events::ACTIVATED | Events::SAVED_AS | Events::DEACTIVATED;
}
else
{
return Events::ACTIVATED | Events::SAVED_AS | Events::DEACTIVATED
| Events::CLOSED | Events::OPENED;
}
}
void PerspectiveActivated(const berry::IWorkbenchPage::Pointer& /*page*/,
const berry::IPerspectiveDescriptor::Pointer& /*perspective*/) override
{
windowAdvisor->UpdateTitle(false);
}
void PerspectiveSavedAs(const berry::IWorkbenchPage::Pointer& /*page*/,
const berry::IPerspectiveDescriptor::Pointer& /*oldPerspective*/,
const berry::IPerspectiveDescriptor::Pointer& /*newPerspective*/) override
{
windowAdvisor->UpdateTitle(false);
}
void PerspectiveDeactivated(const berry::IWorkbenchPage::Pointer& /*page*/,
const berry::IPerspectiveDescriptor::Pointer& /*perspective*/) override
{
windowAdvisor->UpdateTitle(false);
}
void PerspectiveOpened(const berry::IWorkbenchPage::Pointer& /*page*/,
const berry::IPerspectiveDescriptor::Pointer& /*perspective*/) override
{
if (perspectivesClosed)
{
QListIterator i(windowAdvisor->viewActions);
while (i.hasNext())
{
i.next()->setEnabled(true);
}
//GetViewRegistry()->Find("org.mitk.views.imagenavigator");
- if(windowAdvisor->GetWindowConfigurer()->GetWindow()->GetWorkbench()->GetEditorRegistry()->FindEditor("org.mitk.editors.dicomeditor"))
+ if(windowAdvisor->GetWindowConfigurer()->GetWindow()->GetWorkbench()->GetEditorRegistry()->FindEditor("org.mitk.editors.dicombrowser"))
{
windowAdvisor->openDicomEditorAction->setEnabled(true);
}
if (windowAdvisor->GetWindowConfigurer()->GetWindow()->GetWorkbench()->GetEditorRegistry()->FindEditor("org.mitk.editors.stdmultiwidget"))
{
windowAdvisor->openStdMultiWidgetEditorAction->setEnabled(true);
}
if (windowAdvisor->GetWindowConfigurer()->GetWindow()->GetWorkbench()->GetEditorRegistry()->FindEditor("org.mitk.editors.mxnmultiwidget"))
{
windowAdvisor->openMxNMultiWidgetEditorAction->setEnabled(true);
}
windowAdvisor->fileSaveProjectAction->setEnabled(true);
windowAdvisor->closeProjectAction->setEnabled(true);
windowAdvisor->undoAction->setEnabled(true);
windowAdvisor->redoAction->setEnabled(true);
windowAdvisor->imageNavigatorAction->setEnabled(true);
windowAdvisor->viewNavigatorAction->setEnabled(true);
windowAdvisor->resetPerspAction->setEnabled(true);
if( windowAdvisor->GetShowClosePerspectiveMenuItem() )
{
windowAdvisor->closePerspAction->setEnabled(true);
}
}
perspectivesClosed = false;
}
void PerspectiveClosed(const berry::IWorkbenchPage::Pointer& /*page*/,
const berry::IPerspectiveDescriptor::Pointer& /*perspective*/) override
{
berry::IWorkbenchWindow::Pointer wnd = windowAdvisor->GetWindowConfigurer()->GetWindow();
bool allClosed = true;
if (wnd->GetActivePage())
{
QList perspectives(wnd->GetActivePage()->GetOpenPerspectives());
allClosed = perspectives.empty();
}
if (allClosed)
{
perspectivesClosed = true;
QListIterator i(windowAdvisor->viewActions);
while (i.hasNext())
{
i.next()->setEnabled(false);
}
- if(windowAdvisor->GetWindowConfigurer()->GetWindow()->GetWorkbench()->GetEditorRegistry()->FindEditor("org.mitk.editors.dicomeditor"))
+ if(windowAdvisor->GetWindowConfigurer()->GetWindow()->GetWorkbench()->GetEditorRegistry()->FindEditor("org.mitk.editors.dicombrowser"))
{
windowAdvisor->openDicomEditorAction->setEnabled(false);
}
if (windowAdvisor->GetWindowConfigurer()->GetWindow()->GetWorkbench()->GetEditorRegistry()->FindEditor("org.mitk.editors.stdmultiwidget"))
{
windowAdvisor->openStdMultiWidgetEditorAction->setEnabled(false);
}
if (windowAdvisor->GetWindowConfigurer()->GetWindow()->GetWorkbench()->GetEditorRegistry()->FindEditor("org.mitk.editors.mxnmultiwidget"))
{
windowAdvisor->openMxNMultiWidgetEditorAction->setEnabled(false);
}
windowAdvisor->fileSaveProjectAction->setEnabled(false);
windowAdvisor->closeProjectAction->setEnabled(false);
windowAdvisor->undoAction->setEnabled(false);
windowAdvisor->redoAction->setEnabled(false);
windowAdvisor->imageNavigatorAction->setEnabled(false);
windowAdvisor->viewNavigatorAction->setEnabled(false);
windowAdvisor->resetPerspAction->setEnabled(false);
if( windowAdvisor->GetShowClosePerspectiveMenuItem() )
{
windowAdvisor->closePerspAction->setEnabled(false);
}
}
}
private:
QmitkExtWorkbenchWindowAdvisor* windowAdvisor;
bool perspectivesClosed;
};
class PerspectiveListenerForMenu: public berry::IPerspectiveListener
{
public:
PerspectiveListenerForMenu(QmitkExtWorkbenchWindowAdvisor* wa)
: windowAdvisor(wa)
{
}
Events::Types GetPerspectiveEventTypes() const override
{
return Events::ACTIVATED | Events::DEACTIVATED;
}
void PerspectiveActivated(const berry::IWorkbenchPage::Pointer& /*page*/,
const berry::IPerspectiveDescriptor::Pointer& perspective) override
{
QAction* action = windowAdvisor->mapPerspIdToAction[perspective->GetId()];
if (action)
{
action->setChecked(true);
}
}
void PerspectiveDeactivated(const berry::IWorkbenchPage::Pointer& /*page*/,
const berry::IPerspectiveDescriptor::Pointer& perspective) override
{
QAction* action = windowAdvisor->mapPerspIdToAction[perspective->GetId()];
if (action)
{
action->setChecked(false);
}
}
private:
QmitkExtWorkbenchWindowAdvisor* windowAdvisor;
};
QmitkExtWorkbenchWindowAdvisor::QmitkExtWorkbenchWindowAdvisor(berry::WorkbenchAdvisor* wbAdvisor,
berry::IWorkbenchWindowConfigurer::Pointer configurer)
: berry::WorkbenchWindowAdvisor(configurer)
, lastInput(nullptr)
, wbAdvisor(wbAdvisor)
, showViewToolbar(true)
, showPerspectiveToolbar(false)
, showVersionInfo(true)
, showMitkVersionInfo(true)
, showViewMenuItem(true)
, showNewWindowMenuItem(false)
, showClosePerspectiveMenuItem(true)
, viewNavigatorFound(false)
, showMemoryIndicator(true)
, dropTargetListener(new QmitkDefaultDropTargetListener)
{
productName = QCoreApplication::applicationName();
viewExcludeList.push_back("org.mitk.views.viewnavigatorview");
}
QmitkExtWorkbenchWindowAdvisor::~QmitkExtWorkbenchWindowAdvisor()
{
}
berry::ActionBarAdvisor::Pointer QmitkExtWorkbenchWindowAdvisor::CreateActionBarAdvisor(berry::IActionBarConfigurer::Pointer configurer)
{
if (USE_EXPERIMENTAL_COMMAND_CONTRIBUTIONS)
{
berry::ActionBarAdvisor::Pointer actionBarAdvisor(new QmitkExtActionBarAdvisor(configurer));
return actionBarAdvisor;
}
else
{
return berry::WorkbenchWindowAdvisor::CreateActionBarAdvisor(configurer);
}
}
QWidget* QmitkExtWorkbenchWindowAdvisor::CreateEmptyWindowContents(QWidget* parent)
{
QWidget* parentWidget = static_cast(parent);
auto label = new QLabel(parentWidget);
label->setText("No perspectives are open. Open a perspective in the Window->Open Perspective menu.");
label->setContentsMargins(10,10,10,10);
label->setAlignment(Qt::AlignTop);
label->setEnabled(false);
parentWidget->layout()->addWidget(label);
return label;
}
void QmitkExtWorkbenchWindowAdvisor::ShowClosePerspectiveMenuItem(bool show)
{
showClosePerspectiveMenuItem = show;
}
bool QmitkExtWorkbenchWindowAdvisor::GetShowClosePerspectiveMenuItem()
{
return showClosePerspectiveMenuItem;
}
void QmitkExtWorkbenchWindowAdvisor::ShowMemoryIndicator(bool show)
{
showMemoryIndicator = show;
}
bool QmitkExtWorkbenchWindowAdvisor::GetShowMemoryIndicator()
{
return showMemoryIndicator;
}
void QmitkExtWorkbenchWindowAdvisor::ShowNewWindowMenuItem(bool show)
{
showNewWindowMenuItem = show;
}
void QmitkExtWorkbenchWindowAdvisor::ShowViewToolbar(bool show)
{
showViewToolbar = show;
}
void QmitkExtWorkbenchWindowAdvisor::ShowViewMenuItem(bool show)
{
showViewMenuItem = show;
}
void QmitkExtWorkbenchWindowAdvisor::ShowPerspectiveToolbar(bool show)
{
showPerspectiveToolbar = show;
}
void QmitkExtWorkbenchWindowAdvisor::ShowVersionInfo(bool show)
{
showVersionInfo = show;
}
void QmitkExtWorkbenchWindowAdvisor::ShowMitkVersionInfo(bool show)
{
showMitkVersionInfo = show;
}
void QmitkExtWorkbenchWindowAdvisor::SetProductName(const QString& product)
{
productName = product;
}
void QmitkExtWorkbenchWindowAdvisor::SetWindowIcon(const QString& wndIcon)
{
windowIcon = wndIcon;
}
void QmitkExtWorkbenchWindowAdvisor::PostWindowCreate()
{
// very bad hack...
berry::IWorkbenchWindow::Pointer window = this->GetWindowConfigurer()->GetWindow();
QMainWindow* mainWindow = qobject_cast (window->GetShell()->GetControl());
if (!windowIcon.isEmpty())
{
mainWindow->setWindowIcon(QIcon(windowIcon));
}
mainWindow->setContextMenuPolicy(Qt::PreventContextMenu);
// Load icon theme
QIcon::setThemeSearchPaths(QStringList() << QStringLiteral(":/org_mitk_icons/icons/"));
QIcon::setThemeName(QStringLiteral("awesome"));
// ==== Application menu ============================
QMenuBar* menuBar = mainWindow->menuBar();
menuBar->setContextMenuPolicy(Qt::PreventContextMenu);
#ifdef __APPLE__
menuBar->setNativeMenuBar(true);
#else
menuBar->setNativeMenuBar(false);
#endif
auto basePath = QStringLiteral(":/org_mitk_icons/icons/awesome/scalable/actions/");
auto fileOpenAction = new QmitkFileOpenAction(berry::QtStyleManager::ThemeIcon(basePath + "document-open.svg"), window);
fileOpenAction->setShortcut(QKeySequence::Open);
auto fileSaveAction = new QmitkFileSaveAction(berry::QtStyleManager::ThemeIcon(basePath + "document-save.svg"), window);
fileSaveAction->setShortcut(QKeySequence::Save);
fileSaveProjectAction = new QmitkExtFileSaveProjectAction(window);
fileSaveProjectAction->setIcon(berry::QtStyleManager::ThemeIcon(basePath + "document-save.svg"));
closeProjectAction = new QmitkCloseProjectAction(window);
closeProjectAction->setIcon(berry::QtStyleManager::ThemeIcon(basePath + "edit-delete.svg"));
auto perspGroup = new QActionGroup(menuBar);
std::map VDMap;
// sort elements (converting vector to map...)
QList::const_iterator iter;
berry::IViewRegistry* viewRegistry =
berry::PlatformUI::GetWorkbench()->GetViewRegistry();
const QList viewDescriptors = viewRegistry->GetViews();
bool skip = false;
for (iter = viewDescriptors.begin(); iter != viewDescriptors.end(); ++iter)
{
// if viewExcludeList is set, it contains the id-strings of view, which
// should not appear as an menu-entry in the menu
if (viewExcludeList.size() > 0)
{
for (int i=0; iGetId())
{
skip = true;
break;
}
}
if (skip)
{
skip = false;
continue;
}
}
if ((*iter)->GetId() == "org.blueberry.ui.internal.introview")
continue;
if ((*iter)->GetId() == "org.mitk.views.imagenavigator")
continue;
if ((*iter)->GetId() == "org.mitk.views.viewnavigatorview")
continue;
std::pair p((*iter)->GetLabel(), (*iter));
VDMap.insert(p);
}
std::map::const_iterator MapIter;
for (MapIter = VDMap.begin(); MapIter != VDMap.end(); ++MapIter)
{
berry::QtShowViewAction* viewAction = new berry::QtShowViewAction(window, (*MapIter).second);
viewActions.push_back(viewAction);
}
if (!USE_EXPERIMENTAL_COMMAND_CONTRIBUTIONS)
{
QMenu* fileMenu = menuBar->addMenu("&File");
fileMenu->setObjectName("FileMenu");
fileMenu->addAction(fileOpenAction);
fileMenu->addAction(fileSaveAction);
fileMenu->addAction(fileSaveProjectAction);
fileMenu->addAction(closeProjectAction);
fileMenu->addSeparator();
QAction* fileExitAction = new QmitkFileExitAction(window);
fileExitAction->setIcon(berry::QtStyleManager::ThemeIcon(basePath + "system-log-out.svg"));
fileExitAction->setShortcut(QKeySequence::Quit);
fileExitAction->setObjectName("QmitkFileExitAction");
fileMenu->addAction(fileExitAction);
// another bad hack to get an edit/undo menu...
QMenu* editMenu = menuBar->addMenu("&Edit");
undoAction = editMenu->addAction(berry::QtStyleManager::ThemeIcon(basePath + "edit-undo.svg"),
"&Undo",
QmitkExtWorkbenchWindowAdvisorHack::undohack, SLOT(onUndo()),
QKeySequence("CTRL+Z"));
undoAction->setToolTip("Undo the last action (not supported by all modules)");
redoAction = editMenu->addAction(berry::QtStyleManager::ThemeIcon(basePath + "edit-redo.svg"),
"&Redo",
QmitkExtWorkbenchWindowAdvisorHack::undohack, SLOT(onRedo()),
QKeySequence("CTRL+Y"));
redoAction->setToolTip("execute the last action that was undone again (not supported by all modules)");
// ==== Window Menu ==========================
QMenu* windowMenu = menuBar->addMenu("Window");
if (showNewWindowMenuItem)
{
windowMenu->addAction("&New Window", QmitkExtWorkbenchWindowAdvisorHack::undohack, SLOT(onNewWindow()));
windowMenu->addSeparator();
}
QMenu* perspMenu = windowMenu->addMenu("&Open Perspective");
QMenu* viewMenu = nullptr;
if (showViewMenuItem)
{
viewMenu = windowMenu->addMenu("Show &View");
viewMenu->setObjectName("Show View");
}
windowMenu->addSeparator();
resetPerspAction = windowMenu->addAction("&Reset Perspective",
QmitkExtWorkbenchWindowAdvisorHack::undohack, SLOT(onResetPerspective()));
if(showClosePerspectiveMenuItem)
closePerspAction = windowMenu->addAction("&Close Perspective", QmitkExtWorkbenchWindowAdvisorHack::undohack, SLOT(onClosePerspective()));
windowMenu->addSeparator();
windowMenu->addAction("&Preferences...",
QmitkExtWorkbenchWindowAdvisorHack::undohack, SLOT(onEditPreferences()),
QKeySequence("CTRL+P"));
// fill perspective menu
berry::IPerspectiveRegistry* perspRegistry =
window->GetWorkbench()->GetPerspectiveRegistry();
QList perspectives(
perspRegistry->GetPerspectives());
skip = false;
for (QList::iterator perspIt =
perspectives.begin(); perspIt != perspectives.end(); ++perspIt)
{
// if perspectiveExcludeList is set, it contains the id-strings of perspectives, which
// should not appear as an menu-entry in the perspective menu
if (perspectiveExcludeList.size() > 0)
{
for (int i=0; iGetId())
{
skip = true;
break;
}
}
if (skip)
{
skip = false;
continue;
}
}
QAction* perspAction = new berry::QtOpenPerspectiveAction(window, *perspIt, perspGroup);
mapPerspIdToAction.insert((*perspIt)->GetId(), perspAction);
}
perspMenu->addActions(perspGroup->actions());
if (showViewMenuItem)
{
for (auto viewAction : viewActions)
{
viewMenu->addAction(viewAction);
}
}
// ===== Help menu ====================================
QMenu* helpMenu = menuBar->addMenu("&Help");
helpMenu->addAction("&Welcome",this, SLOT(onIntro()));
helpMenu->addAction("&Open Help Perspective", this, SLOT(onHelpOpenHelpPerspective()));
helpMenu->addAction("&Context Help",this, SLOT(onHelp()), QKeySequence("F1"));
helpMenu->addAction("&About",this, SLOT(onAbout()));
// =====================================================
}
else
{
undoAction = new QmitkUndoAction(berry::QtStyleManager::ThemeIcon(basePath + "edit-undo.svg"), nullptr);
undoAction->setShortcut(QKeySequence::Undo);
redoAction = new QmitkRedoAction(berry::QtStyleManager::ThemeIcon(basePath + "edit-redo.svg"), nullptr);
redoAction->setShortcut(QKeySequence::Redo);
}
// toolbar for showing file open, undo, redo and other main actions
auto mainActionsToolBar = new QToolBar;
mainActionsToolBar->setObjectName("mainActionsToolBar");
mainActionsToolBar->setContextMenuPolicy(Qt::PreventContextMenu);
#ifdef __APPLE__
mainActionsToolBar->setToolButtonStyle ( Qt::ToolButtonTextUnderIcon );
#else
mainActionsToolBar->setToolButtonStyle ( Qt::ToolButtonTextBesideIcon );
#endif
basePath = QStringLiteral(":/org.mitk.gui.qt.ext/");
imageNavigatorAction = new QAction(berry::QtStyleManager::ThemeIcon(basePath + "image_navigator.svg"), "&Image Navigator", nullptr);
bool imageNavigatorViewFound = window->GetWorkbench()->GetViewRegistry()->Find("org.mitk.views.imagenavigator");
- if (this->GetWindowConfigurer()->GetWindow()->GetWorkbench()->GetEditorRegistry()->FindEditor("org.mitk.editors.dicomeditor"))
+ if (this->GetWindowConfigurer()->GetWindow()->GetWorkbench()->GetEditorRegistry()->FindEditor("org.mitk.editors.dicombrowser"))
{
openDicomEditorAction = new QmitkOpenDicomEditorAction(berry::QtStyleManager::ThemeIcon(basePath + "dicom.svg"), window);
}
if (this->GetWindowConfigurer()->GetWindow()->GetWorkbench()->GetEditorRegistry()->FindEditor("org.mitk.editors.stdmultiwidget"))
{
openStdMultiWidgetEditorAction = new QmitkOpenStdMultiWidgetEditorAction(QIcon(":/org.mitk.gui.qt.ext/Editor.png"), window);
}
if (this->GetWindowConfigurer()->GetWindow()->GetWorkbench()->GetEditorRegistry()->FindEditor("org.mitk.editors.mxnmultiwidget"))
{
openMxNMultiWidgetEditorAction = new QmitkOpenMxNMultiWidgetEditorAction(QIcon(":/org.mitk.gui.qt.ext/Editor.png"), window);
}
if (imageNavigatorViewFound)
{
QObject::connect(imageNavigatorAction, SIGNAL(triggered(bool)), QmitkExtWorkbenchWindowAdvisorHack::undohack, SLOT(onImageNavigator()));
imageNavigatorAction->setCheckable(true);
// add part listener for image navigator
imageNavigatorPartListener.reset(new PartListenerForImageNavigator(imageNavigatorAction));
window->GetPartService()->AddPartListener(imageNavigatorPartListener.data());
berry::IViewPart::Pointer imageNavigatorView = window->GetActivePage()->FindView("org.mitk.views.imagenavigator");
imageNavigatorAction->setChecked(false);
if (imageNavigatorView)
{
bool isImageNavigatorVisible = window->GetActivePage()->IsPartVisible(imageNavigatorView);
if (isImageNavigatorVisible)
imageNavigatorAction->setChecked(true);
}
imageNavigatorAction->setToolTip("Toggle image navigator for navigating through image");
}
viewNavigatorAction = new QAction(berry::QtStyleManager::ThemeIcon(QStringLiteral(":/org.mitk.gui.qt.ext/view-manager.svg")),"&View Navigator", nullptr);
viewNavigatorFound = window->GetWorkbench()->GetViewRegistry()->Find("org.mitk.views.viewnavigatorview");
if (viewNavigatorFound)
{
QObject::connect(viewNavigatorAction, SIGNAL(triggered(bool)), QmitkExtWorkbenchWindowAdvisorHack::undohack, SLOT(onViewNavigator()));
viewNavigatorAction->setCheckable(true);
// add part listener for view navigator
viewNavigatorPartListener.reset(new PartListenerForViewNavigator(viewNavigatorAction));
window->GetPartService()->AddPartListener(viewNavigatorPartListener.data());
berry::IViewPart::Pointer viewnavigatorview = window->GetActivePage()->FindView("org.mitk.views.viewnavigatorview");
viewNavigatorAction->setChecked(false);
if (viewnavigatorview)
{
bool isViewNavigatorVisible = window->GetActivePage()->IsPartVisible(viewnavigatorview);
if (isViewNavigatorVisible)
viewNavigatorAction->setChecked(true);
}
viewNavigatorAction->setToolTip("Toggle View Navigator");
}
mainActionsToolBar->addAction(fileOpenAction);
mainActionsToolBar->addAction(fileSaveProjectAction);
mainActionsToolBar->addAction(closeProjectAction);
mainActionsToolBar->addAction(undoAction);
mainActionsToolBar->addAction(redoAction);
- if(this->GetWindowConfigurer()->GetWindow()->GetWorkbench()->GetEditorRegistry()->FindEditor("org.mitk.editors.dicomeditor"))
+ if(this->GetWindowConfigurer()->GetWindow()->GetWorkbench()->GetEditorRegistry()->FindEditor("org.mitk.editors.dicombrowser"))
{
mainActionsToolBar->addAction(openDicomEditorAction);
}
if (this->GetWindowConfigurer()->GetWindow()->GetWorkbench()->GetEditorRegistry()->FindEditor("org.mitk.editors.stdmultiwidget"))
{
mainActionsToolBar->addAction(openStdMultiWidgetEditorAction);
}
if (this->GetWindowConfigurer()->GetWindow()->GetWorkbench()->GetEditorRegistry()->FindEditor("org.mitk.editors.mxnmultiwidget"))
{
mainActionsToolBar->addAction(openMxNMultiWidgetEditorAction);
}
if (imageNavigatorViewFound)
{
mainActionsToolBar->addAction(imageNavigatorAction);
}
if (viewNavigatorFound)
{
mainActionsToolBar->addAction(viewNavigatorAction);
}
mainWindow->addToolBar(mainActionsToolBar);
// ==== Perspective Toolbar ==================================
auto qPerspectiveToolbar = new QToolBar;
qPerspectiveToolbar->setObjectName("perspectiveToolBar");
if (showPerspectiveToolbar)
{
qPerspectiveToolbar->addActions(perspGroup->actions());
mainWindow->addToolBar(qPerspectiveToolbar);
}
else
delete qPerspectiveToolbar;
if (showViewToolbar)
{
auto prefService = berry::WorkbenchPlugin::GetDefault()->GetPreferencesService();
berry::IPreferences::Pointer stylePrefs = prefService->GetSystemPreferences()->Node(berry::QtPreferences::QT_STYLES_NODE);
bool showCategoryNames = stylePrefs->GetBool(berry::QtPreferences::QT_SHOW_TOOLBAR_CATEGORY_NAMES, true);
// Order view descriptors by category
QMultiMap categoryViewDescriptorMap;
for (auto labelViewDescriptorPair : VDMap)
{
auto viewDescriptor = labelViewDescriptorPair.second;
auto category = !viewDescriptor->GetCategoryPath().isEmpty()
? viewDescriptor->GetCategoryPath().back()
: QString();
categoryViewDescriptorMap.insert(category, viewDescriptor);
}
// Create a separate toolbar for each category
for (auto category : categoryViewDescriptorMap.uniqueKeys())
{
auto viewDescriptorsInCurrentCategory = categoryViewDescriptorMap.values(category);
if (!viewDescriptorsInCurrentCategory.isEmpty())
{
auto toolbar = new QToolBar;
toolbar->setObjectName(category + " View Toolbar");
mainWindow->addToolBar(toolbar);
if (showCategoryNames && !category.isEmpty())
{
auto categoryButton = new QToolButton;
categoryButton->setToolButtonStyle(Qt::ToolButtonTextOnly);
categoryButton->setText(category);
categoryButton->setStyleSheet("background: transparent; margin: 0; padding: 0;");
toolbar->addWidget(categoryButton);
connect(categoryButton, &QToolButton::clicked, [toolbar]()
{
for (QWidget* widget : toolbar->findChildren())
{
if (QStringLiteral("qt_toolbar_ext_button") == widget->objectName() && widget->isVisible())
{
QMouseEvent pressEvent(QEvent::MouseButtonPress, QPointF(0.0f, 0.0f), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPointF(0.0f, 0.0f), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
QApplication::sendEvent(widget, &pressEvent);
QApplication::sendEvent(widget, &releaseEvent);
}
}
});
}
for (auto viewDescriptor : viewDescriptorsInCurrentCategory)
{
auto viewAction = new berry::QtShowViewAction(window, viewDescriptor);
toolbar->addAction(viewAction);
}
}
}
}
QSettings settings(GetQSettingsFile(), QSettings::IniFormat);
mainWindow->restoreState(settings.value("ToolbarPosition").toByteArray());
auto qStatusBar = new QStatusBar();
//creating a QmitkStatusBar for Output on the QStatusBar and connecting it with the MainStatusBar
auto statusBar = new QmitkStatusBar(qStatusBar);
//disabling the SizeGrip in the lower right corner
statusBar->SetSizeGripEnabled(false);
auto progBar = new QmitkProgressBar();
qStatusBar->addPermanentWidget(progBar, 0);
progBar->hide();
// progBar->AddStepsToDo(2);
// progBar->Progress(1);
mainWindow->setStatusBar(qStatusBar);
if (showMemoryIndicator)
{
auto memoryIndicator = new QmitkMemoryUsageIndicatorView();
qStatusBar->addPermanentWidget(memoryIndicator, 0);
}
}
void QmitkExtWorkbenchWindowAdvisor::PreWindowOpen()
{
berry::IWorkbenchWindowConfigurer::Pointer configurer = GetWindowConfigurer();
// show the shortcut bar and progress indicator, which are hidden by
// default
//configurer->SetShowPerspectiveBar(true);
//configurer->SetShowFastViewBars(true);
//configurer->SetShowProgressIndicator(true);
// // add the drag and drop support for the editor area
// configurer.addEditorAreaTransfer(EditorInputTransfer.getInstance());
// configurer.addEditorAreaTransfer(ResourceTransfer.getInstance());
// configurer.addEditorAreaTransfer(FileTransfer.getInstance());
// configurer.addEditorAreaTransfer(MarkerTransfer.getInstance());
// configurer.configureEditorAreaDropListener(new EditorAreaDropAdapter(
// configurer.getWindow()));
this->HookTitleUpdateListeners(configurer);
menuPerspectiveListener.reset(new PerspectiveListenerForMenu(this));
configurer->GetWindow()->AddPerspectiveListener(menuPerspectiveListener.data());
configurer->AddEditorAreaTransfer(QStringList("text/uri-list"));
configurer->ConfigureEditorAreaDropListener(dropTargetListener.data());
}
void QmitkExtWorkbenchWindowAdvisor::PostWindowOpen()
{
berry::WorkbenchWindowAdvisor::PostWindowOpen();
// Force Rendering Window Creation on startup.
berry::IWorkbenchWindowConfigurer::Pointer configurer = GetWindowConfigurer();
ctkPluginContext* context = QmitkCommonExtPlugin::getContext();
ctkServiceReference serviceRef = context->getServiceReference();
if (serviceRef)
{
mitk::IDataStorageService *dsService = context->getService(serviceRef);
if (dsService)
{
mitk::IDataStorageReference::Pointer dsRef = dsService->GetDataStorage();
mitk::DataStorageEditorInput::Pointer dsInput(new mitk::DataStorageEditorInput(dsRef));
mitk::WorkbenchUtil::OpenEditor(configurer->GetWindow()->GetActivePage(),dsInput);
}
}
auto introPart = configurer->GetWindow()->GetWorkbench()->GetIntroManager()->GetIntro();
if (introPart.IsNotNull())
{
configurer->GetWindow()->GetWorkbench()->GetIntroManager()->ShowIntro(GetWindowConfigurer()->GetWindow(), false);
}
}
void QmitkExtWorkbenchWindowAdvisor::onIntro()
{
QmitkExtWorkbenchWindowAdvisorHack::undohack->onIntro();
}
void QmitkExtWorkbenchWindowAdvisor::onHelp()
{
QmitkExtWorkbenchWindowAdvisorHack::undohack->onHelp();
}
void QmitkExtWorkbenchWindowAdvisor::onHelpOpenHelpPerspective()
{
QmitkExtWorkbenchWindowAdvisorHack::undohack->onHelpOpenHelpPerspective();
}
void QmitkExtWorkbenchWindowAdvisor::onAbout()
{
QmitkExtWorkbenchWindowAdvisorHack::undohack->onAbout();
}
//--------------------------------------------------------------------------------
// Ugly hack from here on. Feel free to delete when command framework
// and undo buttons are done.
//--------------------------------------------------------------------------------
QmitkExtWorkbenchWindowAdvisorHack::QmitkExtWorkbenchWindowAdvisorHack()
: QObject()
{
}
QmitkExtWorkbenchWindowAdvisorHack::~QmitkExtWorkbenchWindowAdvisorHack()
{
}
void QmitkExtWorkbenchWindowAdvisorHack::onUndo()
{
mitk::UndoModel* model = mitk::UndoController::GetCurrentUndoModel();
if (model)
{
if (mitk::VerboseLimitedLinearUndo* verboseundo = dynamic_cast( model ))
{
mitk::VerboseLimitedLinearUndo::StackDescription descriptions = verboseundo->GetUndoDescriptions();
if (descriptions.size() >= 1)
{
MITK_INFO << "Undo " << descriptions.front().second;
}
}
model->Undo();
}
else
{
MITK_ERROR << "No undo model instantiated";
}
}
void QmitkExtWorkbenchWindowAdvisorHack::onRedo()
{
mitk::UndoModel* model = mitk::UndoController::GetCurrentUndoModel();
if (model)
{
if (mitk::VerboseLimitedLinearUndo* verboseundo = dynamic_cast( model ))
{
mitk::VerboseLimitedLinearUndo::StackDescription descriptions = verboseundo->GetRedoDescriptions();
if (descriptions.size() >= 1)
{
MITK_INFO << "Redo " << descriptions.front().second;
}
}
model->Redo();
}
else
{
MITK_ERROR << "No undo model instantiated";
}
}
// safe calls to the complete chain
// berry::PlatformUI::GetWorkbench()->GetActiveWorkbenchWindow()->GetActivePage()->FindView("org.mitk.views.imagenavigator");
// to cover for all possible cases of closed pages etc.
static void SafeHandleNavigatorView(QString view_query_name)
{
berry::IWorkbench* wbench = berry::PlatformUI::GetWorkbench();
if( wbench == nullptr )
return;
berry::IWorkbenchWindow::Pointer wbench_window = wbench->GetActiveWorkbenchWindow();
if( wbench_window.IsNull() )
return;
berry::IWorkbenchPage::Pointer wbench_page = wbench_window->GetActivePage();
if( wbench_page.IsNull() )
return;
auto wbench_view = wbench_page->FindView( view_query_name );
if( wbench_view.IsNotNull() )
{
bool isViewVisible = wbench_page->IsPartVisible( wbench_view );
if( isViewVisible )
{
wbench_page->HideView( wbench_view );
return;
}
}
wbench_page->ShowView( view_query_name );
}
void QmitkExtWorkbenchWindowAdvisorHack::onImageNavigator()
{
// show/hide ImageNavigatorView
SafeHandleNavigatorView("org.mitk.views.imagenavigator");
}
void QmitkExtWorkbenchWindowAdvisorHack::onViewNavigator()
{
// show/hide viewnavigatorView
SafeHandleNavigatorView("org.mitk.views.viewnavigatorview");
}
void QmitkExtWorkbenchWindowAdvisorHack::onEditPreferences()
{
QmitkPreferencesDialog _PreferencesDialog(QApplication::activeWindow());
_PreferencesDialog.exec();
}
void QmitkExtWorkbenchWindowAdvisorHack::onQuit()
{
berry::PlatformUI::GetWorkbench()->Close();
}
void QmitkExtWorkbenchWindowAdvisorHack::onResetPerspective()
{
berry::PlatformUI::GetWorkbench()->GetActiveWorkbenchWindow()->GetActivePage()->ResetPerspective();
}
void QmitkExtWorkbenchWindowAdvisorHack::onClosePerspective()
{
berry::IWorkbenchPage::Pointer page =
berry::PlatformUI::GetWorkbench()->GetActiveWorkbenchWindow()->GetActivePage();
page->ClosePerspective(page->GetPerspective(), true, true);
}
void QmitkExtWorkbenchWindowAdvisorHack::onNewWindow()
{
berry::PlatformUI::GetWorkbench()->OpenWorkbenchWindow(nullptr);
}
void QmitkExtWorkbenchWindowAdvisorHack::onIntro()
{
bool hasIntro =
berry::PlatformUI::GetWorkbench()->GetIntroManager()->HasIntro();
if (!hasIntro)
{
QRegExp reg("(.*)(\\n)*");
QRegExp reg2("(\\n)*(.*)");
QFile file(":/org.mitk.gui.qt.ext/index.html");
file.open(QIODevice::ReadOnly | QIODevice::Text); //text file only for reading
QString text = QString(file.readAll());
file.close();
QString title = text;
title.replace(reg, "");
title.replace(reg2, "");
std::cout << title.toStdString() << std::endl;
QMessageBox::information(nullptr, title,
text, "Close");
}
else
{
berry::PlatformUI::GetWorkbench()->GetIntroManager()->ShowIntro(
berry::PlatformUI::GetWorkbench()->GetActiveWorkbenchWindow(), false);
}
}
void QmitkExtWorkbenchWindowAdvisorHack::onHelp()
{
ctkPluginContext* context = QmitkCommonExtPlugin::getContext();
if (context == nullptr)
{
MITK_WARN << "Plugin context not set, unable to open context help";
return;
}
// Check if the org.blueberry.ui.qt.help plug-in is installed and started
QList > plugins = context->getPlugins();
foreach(QSharedPointer p, plugins)
{
if (p->getSymbolicName() == "org.blueberry.ui.qt.help")
{
if (p->getState() != ctkPlugin::ACTIVE)
{
// try to activate the plug-in explicitly
try
{
p->start(ctkPlugin::START_TRANSIENT);
}
catch (const ctkPluginException& pe)
{
MITK_ERROR << "Activating org.blueberry.ui.qt.help failed: " << pe.what();
return;
}
}
}
}
ctkServiceReference eventAdminRef = context->getServiceReference();
ctkEventAdmin* eventAdmin = nullptr;
if (eventAdminRef)
{
eventAdmin = context->getService(eventAdminRef);
}
if (eventAdmin == nullptr)
{
MITK_WARN << "ctkEventAdmin service not found. Unable to open context help";
}
else
{
ctkEvent ev("org/blueberry/ui/help/CONTEXTHELP_REQUESTED");
eventAdmin->postEvent(ev);
}
}
void QmitkExtWorkbenchWindowAdvisorHack::onHelpOpenHelpPerspective()
{
berry::PlatformUI::GetWorkbench()->ShowPerspective("org.blueberry.perspectives.help",
berry::PlatformUI::GetWorkbench()->GetActiveWorkbenchWindow());
}
void QmitkExtWorkbenchWindowAdvisorHack::onAbout()
{
auto aboutDialog = new QmitkAboutDialog(QApplication::activeWindow(),nullptr);
aboutDialog->open();
}
void QmitkExtWorkbenchWindowAdvisor::HookTitleUpdateListeners(berry::IWorkbenchWindowConfigurer::Pointer configurer)
{
// hook up the listeners to update the window title
titlePartListener.reset(new PartListenerForTitle(this));
titlePerspectiveListener.reset(new PerspectiveListenerForTitle(this));
editorPropertyListener.reset(new berry::PropertyChangeIntAdapter<
QmitkExtWorkbenchWindowAdvisor>(this,
&QmitkExtWorkbenchWindowAdvisor::PropertyChange));
// configurer.getWindow().addPageListener(new IPageListener() {
// public void pageActivated(IWorkbenchPage page) {
// updateTitle(false);
// }
//
// public void pageClosed(IWorkbenchPage page) {
// updateTitle(false);
// }
//
// public void pageOpened(IWorkbenchPage page) {
// // do nothing
// }
// });
configurer->GetWindow()->AddPerspectiveListener(titlePerspectiveListener.data());
configurer->GetWindow()->GetPartService()->AddPartListener(titlePartListener.data());
}
QString QmitkExtWorkbenchWindowAdvisor::ComputeTitle()
{
berry::IWorkbenchWindowConfigurer::Pointer configurer = GetWindowConfigurer();
berry::IWorkbenchPage::Pointer currentPage = configurer->GetWindow()->GetActivePage();
berry::IEditorPart::Pointer activeEditor;
if (currentPage)
{
activeEditor = lastActiveEditor.Lock();
}
QString title;
berry::IProduct::Pointer product = berry::Platform::GetProduct();
if (product.IsNotNull())
{
title = product->GetName();
}
if (title.isEmpty())
{
// instead of the product name, we use a custom variable for now
title = productName;
}
if(showMitkVersionInfo)
{
QString mitkVersionInfo = MITK_REVISION_DESC;
if(mitkVersionInfo.isEmpty())
mitkVersionInfo = MITK_VERSION_STRING;
title += " " + mitkVersionInfo;
}
if (showVersionInfo)
{
// add version informatioin
QString versions = QString(" (ITK %1.%2.%3 | VTK %4.%5.%6 | Qt %7)")
.arg(ITK_VERSION_MAJOR).arg(ITK_VERSION_MINOR).arg(ITK_VERSION_PATCH)
.arg(VTK_MAJOR_VERSION).arg(VTK_MINOR_VERSION).arg(VTK_BUILD_VERSION)
.arg(QT_VERSION_STR);
title += versions;
}
if (currentPage)
{
if (activeEditor)
{
lastEditorTitle = activeEditor->GetTitleToolTip();
if (!lastEditorTitle.isEmpty())
title = lastEditorTitle + " - " + title;
}
berry::IPerspectiveDescriptor::Pointer persp = currentPage->GetPerspective();
QString label = "";
if (persp)
{
label = persp->GetLabel();
}
berry::IAdaptable* input = currentPage->GetInput();
if (input && input != wbAdvisor->GetDefaultPageInput())
{
label = currentPage->GetLabel();
}
if (!label.isEmpty())
{
title = label + " - " + title;
}
}
title += " (Not for use in diagnosis or treatment of patients)";
return title;
}
void QmitkExtWorkbenchWindowAdvisor::RecomputeTitle()
{
berry::IWorkbenchWindowConfigurer::Pointer configurer = GetWindowConfigurer();
QString oldTitle = configurer->GetTitle();
QString newTitle = ComputeTitle();
if (newTitle != oldTitle)
{
configurer->SetTitle(newTitle);
}
}
void QmitkExtWorkbenchWindowAdvisor::UpdateTitle(bool editorHidden)
{
berry::IWorkbenchWindowConfigurer::Pointer configurer = GetWindowConfigurer();
berry::IWorkbenchWindow::Pointer window = configurer->GetWindow();
berry::IEditorPart::Pointer activeEditor;
berry::IWorkbenchPage::Pointer currentPage = window->GetActivePage();
berry::IPerspectiveDescriptor::Pointer persp;
berry::IAdaptable* input = nullptr;
if (currentPage)
{
activeEditor = currentPage->GetActiveEditor();
persp = currentPage->GetPerspective();
input = currentPage->GetInput();
}
if (editorHidden)
{
activeEditor = nullptr;
}
// Nothing to do if the editor hasn't changed
if (activeEditor == lastActiveEditor.Lock() && currentPage == lastActivePage.Lock()
&& persp == lastPerspective.Lock() && input == lastInput)
{
return;
}
if (!lastActiveEditor.Expired())
{
lastActiveEditor.Lock()->RemovePropertyListener(editorPropertyListener.data());
}
lastActiveEditor = activeEditor;
lastActivePage = currentPage;
lastPerspective = persp;
lastInput = input;
if (activeEditor)
{
activeEditor->AddPropertyListener(editorPropertyListener.data());
}
RecomputeTitle();
}
void QmitkExtWorkbenchWindowAdvisor::PropertyChange(const berry::Object::Pointer& /*source*/, int propId)
{
if (propId == berry::IWorkbenchPartConstants::PROP_TITLE)
{
if (!lastActiveEditor.Expired())
{
QString newTitle = lastActiveEditor.Lock()->GetPartName();
if (lastEditorTitle != newTitle)
{
RecomputeTitle();
}
}
}
}
void QmitkExtWorkbenchWindowAdvisor::SetPerspectiveExcludeList(const QList& v)
{
this->perspectiveExcludeList = v;
}
QList QmitkExtWorkbenchWindowAdvisor::GetPerspectiveExcludeList()
{
return this->perspectiveExcludeList;
}
void QmitkExtWorkbenchWindowAdvisor::SetViewExcludeList(const QList& v)
{
this->viewExcludeList = v;
}
QList QmitkExtWorkbenchWindowAdvisor::GetViewExcludeList()
{
return this->viewExcludeList;
}
void QmitkExtWorkbenchWindowAdvisor::PostWindowClose()
{
berry::IWorkbenchWindow::Pointer window = this->GetWindowConfigurer()->GetWindow();
QMainWindow* mainWindow = static_cast (window->GetShell()->GetControl());
QSettings settings(GetQSettingsFile(), QSettings::IniFormat);
settings.setValue("ToolbarPosition", mainWindow->saveState());
}
QString QmitkExtWorkbenchWindowAdvisor::GetQSettingsFile() const
{
QFileInfo settingsInfo = QmitkCommonExtPlugin::getContext()->getDataFile(QT_SETTINGS_FILENAME);
return settingsInfo.canonicalFilePath();
}
diff --git a/Plugins/org.mitk.gui.qt.ext/src/QmitkOpenDicomEditorAction.cpp b/Plugins/org.mitk.gui.qt.ext/src/QmitkOpenDicomEditorAction.cpp
index 05b5ed870a..cf328e3ec8 100644
--- a/Plugins/org.mitk.gui.qt.ext/src/QmitkOpenDicomEditorAction.cpp
+++ b/Plugins/org.mitk.gui.qt.ext/src/QmitkOpenDicomEditorAction.cpp
@@ -1,77 +1,77 @@
/*============================================================================
The Medical Imaging Interaction Toolkit (MITK)
Copyright (c) German Cancer Research Center (DKFZ)
All rights reserved.
Use of this source code is governed by a 3-clause BSD license that can be
found in the LICENSE file.
============================================================================*/
#include "QmitkOpenDicomEditorAction.h"
#include
#include
#include "mitkCoreObjectFactory.h"
#include "mitkSceneIO.h"
#include "mitkProgressBar.h"
#include
#include
#include
#include
#include
#include
#include
#include "mitkProperties.h"
#include "mitkNodePredicateData.h"
#include "mitkNodePredicateNot.h"
#include "mitkNodePredicateProperty.h"
QmitkOpenDicomEditorAction::QmitkOpenDicomEditorAction(berry::IWorkbenchWindow::Pointer window)
: QAction(nullptr)
{
this->init(window);
}
QmitkOpenDicomEditorAction::QmitkOpenDicomEditorAction(const QIcon & icon, berry::IWorkbenchWindow::Pointer window)
: QAction(nullptr)
{
this->setIcon(icon);
this->init(window);
}
void QmitkOpenDicomEditorAction::init(berry::IWorkbenchWindow::Pointer window)
{
m_Window = window;
this->setParent(static_cast(m_Window->GetShell()->GetControl()));
this->setText("&DICOM");
- this->setToolTip("Open dicom tool");
+ this->setToolTip("Open dicom browser");
berry::IPreferencesService* prefService = berry::Platform::GetPreferencesService();
m_GeneralPreferencesNode = prefService->GetSystemPreferences()->Node("/General");
this->connect(this, SIGNAL(triggered(bool)), this, SLOT(Run()));
}
void QmitkOpenDicomEditorAction::Run()
{
// check if there is an open perspective, if not open the default perspective
if (m_Window->GetActivePage().IsNull())
{
QString defaultPerspId = m_Window->GetWorkbench()->GetPerspectiveRegistry()->GetDefaultPerspective();
m_Window->GetWorkbench()->ShowPerspective(defaultPerspId, m_Window);
}
berry::IEditorInput::Pointer editorInput2(new berry::FileEditorInput(QString()));
- m_Window->GetActivePage()->OpenEditor(editorInput2, "org.mitk.editors.dicomeditor");
+ m_Window->GetActivePage()->OpenEditor(editorInput2, "org.mitk.editors.dicombrowser");
}
diff --git a/Plugins/org.mitk.gui.qt.radiomics/documentation/doxygen/tutorial_gui/RadiomicsTutorial_GUI_01_Basic.dox b/Plugins/org.mitk.gui.qt.radiomics/documentation/doxygen/tutorial_gui/RadiomicsTutorial_GUI_01_Basic.dox
index f7f73f09b7..157d1a3dd7 100644
--- a/Plugins/org.mitk.gui.qt.radiomics/documentation/doxygen/tutorial_gui/RadiomicsTutorial_GUI_01_Basic.dox
+++ b/Plugins/org.mitk.gui.qt.radiomics/documentation/doxygen/tutorial_gui/RadiomicsTutorial_GUI_01_Basic.dox
@@ -1,30 +1,30 @@
/**
\page org_mitk_views_radiomicstutorial_gui_01_basic GUI based Radiomics Tutorial - Basic handling of MITK
\subsection Basic handling of MITK
Open a MITK Workbench which also includes MITK Phenotyping. You should see something similar to figure 1. At the top you'll see a bar (1), (2) with different important operations like open and saving data, different important views (like DICOM Window, Image Navigator and View Navigator), and a list of all Views included in your version (2). Items are grouped, and depending on the width of your screen might be hidden behind small arrows.
The Data Manager (3) is usually placed at the left, although it could be also open at other positions. It is used to organize open images and other data items. Below it you see the Image Navigator (4) which helps to navigate through the 3D data. It allows to change the position within the data either in real-world coordinates (in mm) or by specifiying a slice number.
In the center of your application you should see the Displays (5), which will display the images. It usually consists of four views, showing axial, sagittal, coronal and a 3D view of the data. It is possible to rearange the single displays and configure them to your wishes with the three small buttons which will become visible if the mouse is in the upper right corner of display.
Beside these elements, there are various open views (6). You can close them with the cross and reopen them using the bar at the top (2). It is also possible to rearrange all Views to various positions left, right, above, or below the displays.
An important view is the "View Navigator". In figure 1 it is hidden behind the Data Manager (3) and could be made visible with a click on the corresponding bar left of the "Data Manager" bar. The View Navigator is an easy and straight forward tool to show all available views and open them. It allows to search through all views. Offering a search function it allows to find views using their name of just searching for a functionality you are looking for.
\imageMacro{RadiomicsTutorial_GUI_Step1_01_Overview.png,"Overview of MITK Workbench with active MITK Phenotyping",1}
\subsection Loading image data
In order to calculate the radiomics features using the graphical interface you first need to load the data into the graphical environment. This can be done in different ways. If you want to load an DICOM series, it is sufficient to load a single image if the other images of the series are within the same folder. MITK will then combine all Series DICOM Images to a single 3D Image.
\li Open an Image using the "Open File" menu item: If you click on the "Open File" item in the "File" menu or the "Open File" button in the top bar you will be presented a standard file dialog of your system. Select the image you want to load and click "Open".
\li Drag n' Drop: Select the image you want to load with your standard data managing tool, for example with the explorer on windows or finder on Mac. Drag and drop the file into the open MITK Workbench window, the image will then be loaded if possible. If you
-\li DICOM Browser: MITK offers the basic possibiliy to manage and handle DICOM images using the DICOM Browser. You can enable this view by clicking on "DICOM", right of the "Redo"-Button. Within the DICOM Browser, it is possible to read complete folders, and load specific series into the workbench. For more information see \ref org_mitk_gui_qt_dicom .
+\li DICOM Browser: MITK offers the basic possibiliy to manage and handle DICOM images using the DICOM Browser. You can enable this view by clicking on "DICOM", right of the "Redo"-Button. Within the DICOM Browser, it is possible to read complete folders, and load specific series into the workbench. For more information see \ref org_mitk_gui_qt_dicombrowser .
*/
\ No newline at end of file