Skip to content

Commits on Source 6

......@@ -15,3 +15,6 @@ syntax: glob
# reject and backup file
*.rej
*.orig
# macos
.DS_Store
\ No newline at end of file
Please read this!
Before opening a new issue, verify the issue you're about to submit isn't a duplicate.
Please remove this notice if you're confident your issue isn't a duplicate.
------
### Summary
(Summarize the bug encountered concisely)
### Steps to reproduce
(How one can reproduce the issue - this is very important)
### Dev environment
* OS: (Linux, Windows, MacOS)
* CMake version: (cmake --version)
* Compiler: (gcc/clang/... & version)
* Build type: (debug/release)
* Commit: (current commit or tag)
* (Any related repository commit/tag e.g fw4spl-deps, fw4spl, fw4spl-ar ...)
### What is the current *bug* behavior?
(What actually happens)
### What is the expected *correct* behavior?
(What you should see instead)
### Relevant logs and/or screenshots
(Paste any relevant logs - please use code blocks (```) to format console output,
logs, and code as it's very hard to read otherwise.)
### Possible fixes
(If you can, link to the line of code that might be responsible for the problem)
/label ~bug
Please read this!
Before opening a new issue, verify the issue you're about to submit isn't a duplicate.
Please remove this notice if you're confident your issue isn't a duplicate.
------
### Description
(Include problem, use cases, benefits, and/or goals)
### Proposal
### Links / references
### Documentation blurb
(Write the start of the documentation of this feature here, include:
1. Why should someone use it; what's the underlying problem.
2. What is the solution.
3. How does someone use this
During implementation, this can then be copied and used as a starter for the documentation.)
/label ~feature
## What does this MR do?
(Briefly describe what this MR is about)
## How to test it?
(Describe how to test this feature step by step)
## Data
(link to the needed data)
## Some results
(Some interesting results, screenshot, perfs, ...)
## Additional tests to run
(If you need some specific test e.g Windows compilation...)
- [ ] Build on Windows
- [ ] ...
......@@ -13,6 +13,7 @@ addons:
branches:
only:
- dev
- master
compiler:
- gcc
before_script:
......@@ -34,7 +35,7 @@ before_script:
- git reset --hard
- git clean -f -d
- cd $TRAVIS_BUILD_DIR/build
- $CMAKE_BIN -DCMAKE_INSTALL_PREFIX:PATH=/tmp $TRAVIS_BUILD_DIR/ -DBUILD_DOCUMENTATION:BOOL=ON -DBUILD_TESTS:BOOL=OFF -DDOXYGEN_EXECUTABLE:FILEPATH=$DOXYGEN_BIN -DENABLE_PCH:BOOL=OFF
- $CMAKE_BIN -DCMAKE_INSTALL_PREFIX:PATH=/tmp $TRAVIS_BUILD_DIR/ -DCMAKE_BUILD_TYPE:STRING=Debug -DBUILD_DOCUMENTATION:BOOL=ON -DBUILD_TESTS:BOOL=OFF -DDOXYGEN_EXECUTABLE:FILEPATH=$DOXYGEN_BIN -DENABLE_PCH:BOOL=OFF
- cd $TRAVIS_BUILD_DIR
script:
- fw4spl-git/hooks/sheldon $TRAVIS_COMMIT_RANGE
......
......@@ -11,12 +11,10 @@ set( REQUIREMENTS
guiQt
activities
appXml2
appXml
memory
ctrlMemory
fwlauncher
io
ioAtoms
ioITK
ioVTK
......@@ -27,9 +25,9 @@ set( REQUIREMENTS
uiGenericQt
uiMedDataQt
2DVisualizationActivity2
3DVisualizationActivity2
volumeRenderingActivity2
2DVisualizationActivity
3DVisualizationActivity
volumeRenderingActivity
blendActivity
ioActivity
......@@ -52,7 +50,7 @@ bundleParam(guiQt
resource
stylesheet
PARAM_VALUES
${BUNDLE_PREFIX}/style_0-1/darkstyle.rcc
${BUNDLE_PREFIX}/style_0-1/darkstyle.qss
style-0.1/darkstyle.rcc
style-0.1/darkstyle.qss
)
bundleParam(appXml2 PARAM_LIST config parameters PARAM_VALUES VRRenderBase VRRenderAppBase)
bundleParam(appXml PARAM_LIST config parameters PARAM_VALUES VRRenderBase VRRenderAppBase)
<extension implements="::fwServices::registry::AppConfig2">
<extension implements="::fwServices::registry::AppConfig">
<id>VRRenderBase</id>
<parameters>
<param name="appName" />
......@@ -84,27 +84,27 @@
<service uid="action_quit" type="::gui::action::SQuit" />
<service uid="action_about" type="::uiGeneric::action::SShowAbout">
<filename id="@BUNDLE_PREFIX@/VRRender_${appVersion}/about/about.html" />
<service uid="action_about" type="::uiGenericQt::action::SShowAbout">
<filename id="VRRender-${appVersion}/about/about.html" />
</service>
<service uid="action_acknowledgments" type="::uiGeneric::action::SShowAbout">
<filename id="@BUNDLE_PREFIX@/VRRender_${appVersion}/documentations/ack.html"/>
<service uid="action_acknowledgments" type="::uiGenericQt::action::SShowAbout">
<filename id="VRRender-${appVersion}/documentations/ack.html"/>
<title>Acknowledgments</title>
<size width="500" height="600" />
</service>
<service uid="action_openBrowser" type="::uiGeneric::action::LaunchBrowserActionService">
<service uid="action_openBrowser" type="::uiGenericQt::action::LaunchBrowserActionService">
<url>http://www.ircad.fr/softwares/vr-render/Software.php</url>
</service>
<service uid="dynamicView" type="::guiQt::editor::SDynamicView" autoConnect="yes">
<mainActivity id="SDBVRRender" closable="false" />
<parameters>
<parameter replace="SERIESDB" uid="seriesDB" />
<parameter replace="SERIESDB" by="seriesDB" />
<parameter replace="ICON_PATH" by="${appIconPath}" />
<parameter replace="DYNAMICVIEW_CHANNEL" uid="dynamicViewChannel" />
<parameter replace="PROGRESS_CHANNEL" uid="progressStatus" />
<parameter replace="DYNAMICVIEW_CHANNEL" by="dynamicViewChannel" />
<parameter replace="PROGRESS_CHANNEL" by="progressStatus" />
</parameters>
</service>
......
<extension implements="::fwServices::registry::AppConfig2">
<extension implements="::fwServices::registry::AppConfig">
<id>SDBVRRender</id>
<parameters>
<param name="SERIESDB" />
......@@ -34,18 +34,18 @@
<service uid="toolBar" type="::gui::aspect::SDefaultToolBar">
<gui>
<layout>
<menuItem name="Import" icon="@BUNDLE_PREFIX@/media_0-1/icons/Import.svg" />
<menuItem name="Export" icon="@BUNDLE_PREFIX@/media_0-1/icons/Export.svg" />
<menuItem name="Launch activity" icon="@BUNDLE_PREFIX@/media_0-1/icons/Launch_activity.svg" />
<menuItem name="Create a new activity" icon="@BUNDLE_PREFIX@/media_0-1/icons/CreateActivity.svg" />
<menuItem name="Import" icon="media-0.1/icons/Import.svg" />
<menuItem name="Export" icon="media-0.1/icons/Export.svg" />
<menuItem name="Launch activity" icon="media-0.1/icons/Launch_activity.svg" />
<menuItem name="Create a new activity" icon="media-0.1/icons/CreateActivity.svg" />
<separator />
<menuItem name="2D visualization" icon="@BUNDLE_PREFIX@/media_0-1/icons/icon-2D.png" />
<menuItem name="3D visualization" icon="@BUNDLE_PREFIX@/media_0-1/icons/icon-3D.png" />
<menuItem name="Volume rendering" icon="@BUNDLE_PREFIX@/media_0-1/icons/icon-VR.png" />
<menuItem name="2D visualization" icon="media-0.1/icons/icon-2D.png" />
<menuItem name="3D visualization" icon="media-0.1/icons/icon-3D.png" />
<menuItem name="Volume rendering" icon="media-0.1/icons/icon-VR.png" />
<separator />
<menuItem name="DICOM PACS Reader" icon="@BUNDLE_PREFIX@/media_0-1/icons/Pull.svg" />
<menuItem name="DICOM PACS Writer" icon="@BUNDLE_PREFIX@/media_0-1/icons/Push.svg" />
<menuItem name="DICOM Filtering" icon="@BUNDLE_PREFIX@/media_0-1/icons/icon-DICOM-Filtering.svg" />
<menuItem name="DICOM PACS Reader" icon="media-0.1/icons/Pull.svg" />
<menuItem name="DICOM PACS Writer" icon="media-0.1/icons/Push.svg" />
<menuItem name="DICOM Filtering" icon="media-0.1/icons/icon-DICOM-Filtering.svg" />
</layout>
</gui>
<registry>
......@@ -66,21 +66,21 @@
<in key="seriesDB" uid="${SERIESDB}" />
<IOSelectorSrvConfig name="SDBReaderIOSelectorConfig" />
</service>
<service uid="selector" type="::uiMedData::editor::SSelector" autoConnect="yes">
<service uid="selector" type="::uiMedDataQt::editor::SSelector" autoConnect="yes">
<inout key="seriesDB" uid="${SERIESDB}" />
<inout key="selection" uid="selections" />
</service>
<service uid="activityCreator" type="::uiMedData::editor::SActivityWizard">
<service uid="activityCreator" type="::uiMedDataQt::editor::SActivityWizard">
<inout key="seriesDB" uid="${SERIESDB}" />
<ioSelectorConfig>FullSDBReaderIOSelectorConfig</ioSelectorConfig>
<icons>
<icon type="::fwMedData::ImageSeries" icon="@BUNDLE_PREFIX@/media_0-1/icons/ImageSeries.svg" />
<icon type="::fwMedData::ModelSeries" icon="@BUNDLE_PREFIX@/media_0-1/icons/ModelSeries.svg" />
<icon type="::fwMedData::ImageSeries" icon="media-0.1/icons/ImageSeries.svg" />
<icon type="::fwMedData::ModelSeries" icon="media-0.1/icons/ModelSeries.svg" />
</icons>
</service>
<service uid="seriesViewer" type="::uiMedData::SSeriesViewer" autoConnect="yes">
<service uid="seriesViewer" type="::uiMedDataQt::SSeriesViewer" autoConnect="yes">
<in key="series" uid="selections" />
<parentView wid="preview" />
<configs>
......@@ -89,7 +89,7 @@
</config>
<config id="3DSimpleConfig2" type="::fwMedData::ModelSeries" />
<config id="ActivityCreatorConfig" type="::fwMedData::ActivitySeries">
<parameter replace="SERIESDB" uid="${SERIESDB}" />
<parameter replace="SERIESDB" by="${SERIESDB}" />
</config>
</configs>
</service>
......@@ -97,13 +97,13 @@
<in key="series" uid="selections" />
<config>
<parameters>
<parameter replace="SERIESDB" uid="${SERIESDB}" />
<parameter replace="SERIESDB" by="${SERIESDB}" />
<parameter replace="ICON_PATH" by="${ICON_PATH}" />
</parameters>
<filter>
<mode>exclude</mode>
<id>ImageSeriesExport2</id>
<id>ModelSeriesExport2</id>
<id>ImageSeriesExport</id>
<id>ModelSeriesExport</id>
<id>SDBVRRender</id>
</filter>
</config>
......@@ -113,7 +113,7 @@
<in key="series" uid="selections" />
<config>
<parameters>
<parameter replace="SERIESDB" uid="${SERIESDB}" />
<parameter replace="SERIESDB" by="${SERIESDB}" />
<parameter replace="ICON_PATH" by="${ICON_PATH}" />
</parameters>
<filter>
......@@ -128,7 +128,7 @@
<in key="series" uid="selections" />
<config>
<parameters>
<parameter replace="SERIESDB" uid="${SERIESDB}" />
<parameter replace="SERIESDB" by="${SERIESDB}" />
<parameter replace="ICON_PATH" by="${ICON_PATH}" />
</parameters>
<filter>
......@@ -142,7 +142,7 @@
<in key="series" uid="selections" />
<config>
<parameters>
<parameter replace="SERIESDB" uid="${SERIESDB}" />
<parameter replace="SERIESDB" by="${SERIESDB}" />
<parameter replace="ICON_PATH" by="${ICON_PATH}" />
</parameters>
<filter>
......@@ -173,7 +173,7 @@
<parameters>
<parameter replace="ICON_PATH" by="${ICON_PATH}" />
<parameter replace="APP_NAME" by="VRRender" />
<parameter replace="PROGRESS_CHANNEL" uid="progressStatus" />
<parameter replace="PROGRESS_CHANNEL" by="${PROGRESS_CHANNEL}" />
</parameters>
<filter>
<mode>include</mode>
......@@ -188,7 +188,7 @@
<parameters>
<parameter replace="SERIESDB" by="${SERIESDB}" />
<parameter replace="ICON_PATH" by="${ICON_PATH}" />
<parameter replace="PROGRESS_CHANNEL" uid="progressStatus" />
<parameter replace="PROGRESS_CHANNEL" by="${PROGRESS_CHANNEL}" />
</parameters>
<filter>
<mode>include</mode>
......@@ -201,8 +201,8 @@
<in key="series" uid="selections" />
<filter>
<mode>exclude</mode>
<id>ImageSeriesExport2</id>
<id>ModelSeriesExport2</id>
<id>ImageSeriesExport</id>
<id>ModelSeriesExport</id>
<id>SDBVRRender</id>
</filter>
</service>
......@@ -215,8 +215,9 @@
</parameters>
<filter>
<mode>include</mode>
<id>ImageSeriesExport2</id>
<id>ModelSeriesExport2</id>
<id>ImageSeriesExport</id>
<id>ModelSeriesExport</id>
<id>DicomSeriesExport</id>
</filter>
</config>
</service>
......
<plugin id="VRRender" version="@DASH_VERSION@">
<plugin id="VRRender" version="@PROJECT_VERSION@">
<requirement id="servicesReg" />
<requirement id="dataReg" />
......@@ -14,8 +14,8 @@
<id>VRRenderAppBase</id>
<parameters>
<param name="appName" value="VRRender 0.9.7" />
<param name="appIconPath" value="@BUNDLE_PREFIX@/VRRender_0-9/vrrender.ico" />
<param name="appVersion" value="0-9" />
<param name="appIconPath" value="VRRender-@PROJECT_VERSION@/vrrender.ico" />
<param name="appVersion" value="@PROJECT_VERSION@" />
</parameters>
</extension>
......@@ -23,7 +23,7 @@
<id>SDBVRRender</id>
<title>SDB</title>
<desc>Series Selector</desc>
<icon>NONE</icon>
<icon>media-0.1/icons/selector.svg</icon>
<requirements />
<appConfig id="SDBVRRender">
<parameters />
......
set( NAME 2DVisualizationActivity )
set( VERSION 0.1 )
set( TYPE BUNDLE )
set( DEPENDENCIES )
set( REQUIREMENTS gui guiQt uiMeasurement uiMeasurementQt ctrlSelection uiImageQt uiVisu uiVisuQt visuVTKAdaptor media )
<extension implements="::fwServices::registry::AppConfig">
<id>2DNegato</id>
<parameters>
<param name="WID_PARENT" />
<param name="GENERIC_UID" />
<param name="imageUid" />
<param name="orientation" default="axial" /> <!-- axial, frontal, sagittal -->
<param name="patient_name" default="" />
<param name="IMAGE_LOCATIONS" default="" />
<param name="CrossTypeChannel" default="crossTypeChannel" />
</parameters>
<config>
<object type="::fwData::Composite">
<service uid="${GENERIC_UID}_mainView" type="::gui::view::IView" impl="::gui::view::SDefaultView" autoConnect="no">
<gui>
<layout type="::fwGui::LineLayoutManager">
<orientation value="vertical" />
<view proportion="1" />
<view proportion="0" minHeight="30" />
</layout>
</gui>
<registry>
<parent wid="${WID_PARENT}" />
<view sid="${GENERIC_UID}_negato" start="yes" />
<view sid="${GENERIC_UID}_multiView_negato_bottom" start="yes" />
</registry>
</service>
<service uid="${GENERIC_UID}_multiView_negato_bottom" type="::gui::view::IView" impl="::gui::view::SDefaultView" autoConnect="no">
<gui>
<layout type="::fwGui::LineLayoutManager">
<orientation value="horizontal" />
<view proportion="0" minWidth="30" />
<view proportion="1" />
<view proportion="0" minWidth="30" />
</layout>
</gui>
<registry>
<view sid="${GENERIC_UID}_snapshotNegatoEditor" start="yes" />
<view sid="${GENERIC_UID}_slider_negato" start="yes" />
<view sid="${GENERIC_UID}_distanceNegatoEditor" start="yes" />
</registry>
</service>
<service uid="${GENERIC_UID}_snapshotNegatoEditor" type="::gui::editor::IEditor" impl="::uiVisu::SnapshotEditor" autoConnect="no" />
<!-- GENERIC SCENE DEFINITION -->
<item key="visuConfig">
<object uid="${GENERIC_UID}_VisuComposite" type="::fwData::Composite">
<!-- Generic Scene Negato -->
<service uid="${GENERIC_UID}_negato" impl="::fwRenderVTK::SRender" type="::fwRender::IRender" autoConnect="yes">
<scene>
<picker id="negatodefault" vtkclass="fwVtkCellPicker" />
<renderer id="default" background="0.0" />
<adaptor id="snapshot" uid="${GENERIC_UID}_snapshotUID" class="::visuVTKAdaptor::Snapshot" objectId="self">
<config renderer="default" />
</adaptor>
<adaptor id="interactor" class="::visuVTKAdaptor::InteractorStyle" objectId="self">
<config renderer="default" style="InteractorStyle2DForNegato" />
</adaptor>
<adaptor id="MPRNegato" uid="${GENERIC_UID}_MPRNegato" class="::visuVTKAdaptor::NegatoMPR" objectId="imageKey">
<config renderer="default" picker="negatodefault" mode="2d" slices="1" sliceIndex="${orientation}" />
</adaptor>
<adaptor id="text" class="::visuVTKAdaptor::ImageText" objectId="imageKey">
<config renderer="default" picker="negatodefault" text="" />
</adaptor>
<adaptor id="imageSliceOrientationText" class="::visuVTKAdaptor::ImageSliceOrientationText" objectId="imageKey">
<config renderer="default">
<locations>${IMAGE_LOCATIONS}</locations>
<initialOrientation>${orientation}</initialOrientation>
</config>
</adaptor>
<adaptor id="multiDistances" uid="${GENERIC_UID}_multiDistancesUID" class="::visuVTKAdaptor::ImageMultiDistances" objectId="imageKey">
<config filter="true" renderer="default" picker="negatodefault" />
</adaptor>
<adaptor id="landmarksNegato" class="::visuVTKAdaptor::ImageLandmarks" objectId="imageKey">
<config renderer="default" picker="negatodefault" />
</adaptor>
<adaptor id="nameAdaptor" class="::visuVTKAdaptor::Text" objectId="imageKey">
<config renderer="default" text="${patient_name}" fontSize="15" hAlign="right" vAlign="top" />
</adaptor>
<connect>
<signal>${GENERIC_UID}_snapshotNegatoEditor/snapped</signal>
<slot>${GENERIC_UID}_snapshotUID/snap</slot>
</connect>
<connect waitForKey="imageKey">
<signal>${GENERIC_UID}_distanceNegatoEditor/distanceRequested</signal>
<slot>${GENERIC_UID}_multiDistancesUID/createDistance</slot>
</connect>
<proxy channel="${CrossTypeChannel}" waitForKey="imageKey">
<slot>${GENERIC_UID}_MPRNegato/setCrossScale</slot>
</proxy>
</scene>
</service>
<item key="imageKey">
<object uid="${imageUid}" src="ref" type="::fwData::Image">
<service uid="${GENERIC_UID}_LockImageSrv" impl="::ctrlMemory::LockDumpSrv" type="::fwServices::IController" autoConnect="no" />
<service uid="${GENERIC_UID}_slider_negato" impl="::uiImage::SliceIndexPositionEditor" type="::gui::editor::IEditor" autoConnect="yes">
<sliceIndex>${orientation}</sliceIndex>
</service>
<service uid="${GENERIC_UID}_distanceNegatoEditor" type="::gui::editor::IEditor" impl="::uiMeasurement::editor::Distance" autoConnect="no">
<placeInScene uid="${GENERIC_UID}_negato" />
</service>
</object>
</item>
</object>
</item>
<!-- START AND STOP SERVICES -->
<start uid="${GENERIC_UID}_LockImageSrv" />
<start uid="${GENERIC_UID}_mainView" />
</object>
</config>
</extension>
<extension implements="::fwServices::registry::AppConfig">
<id>2DNegatoWithTF</id>
<parameters>
<param name="WID_PARENT" />
<param name="GENERIC_UID" />
<param name="imageUid" />
<param name="selectedTFKey" />
<param name="TFSelectionsUid" />
<param name="patient_name" default="" />
<param name="orientation" default="axial" /> <!-- axial, frontal, sagittal -->
<param name="CrossTypeChannel" default="crossTypeChannel"/>
</parameters>
<config>
<object type="::fwData::Composite">
<service uid="${GENERIC_UID}_mainView" type="::gui::view::IView" impl="::gui::view::SDefaultView" autoConnect="no">
<gui>
<layout type="::fwGui::LineLayoutManager">
<orientation value="vertical" />
<view proportion="1" />
<view proportion="0" minHeight="30" />
</layout>
</gui>
<registry>
<parent wid="${WID_PARENT}" />
<view sid="${GENERIC_UID}_negato" start="yes" />
<view sid="${GENERIC_UID}_multiView_negato_bottom" start="yes" />
</registry>
</service>
<service uid="${GENERIC_UID}_multiView_negato_bottom" type="::gui::view::IView" impl="::gui::view::SDefaultView" autoConnect="no">
<gui>
<layout type="::fwGui::LineLayoutManager">
<orientation value="horizontal" />
<view proportion="0" minWidth="30" />
<view proportion="1" />
<view proportion="0" minWidth="30" />
</layout>
</gui>
<registry>
<view sid="${GENERIC_UID}_snapshotNegatoEditor" start="yes" />
<view sid="${GENERIC_UID}_slider_negato" start="yes" />
<view sid="${GENERIC_UID}_distanceNegatoEditor" start="yes" />
</registry>
</service>
<service uid="${GENERIC_UID}_snapshotNegatoEditor" type="::gui::editor::IEditor" impl="::uiVisu::SnapshotEditor" autoConnect="no" />
<!-- GENERIC SCENE DEFINITION -->
<item key="visuConfig">
<object uid="${GENERIC_UID}_VisuComposite" type="::fwData::Composite">
<!-- Generic Scene Negato -->
<service uid="${GENERIC_UID}_negato" impl="::fwRenderVTK::SRender" type="::fwRender::IRender" autoConnect="yes">
<scene>
<picker id="negatodefault" vtkclass="fwVtkCellPicker" />
<renderer id="default" background="0.0" />
<adaptor id="snapshot" uid="${GENERIC_UID}_snapshotUID" class="::visuVTKAdaptor::Snapshot" objectId="self">
<config renderer="default" />
</adaptor>
<adaptor id="interactor" class="::visuVTKAdaptor::InteractorStyle" objectId="self">
<config renderer="default" style="InteractorStyle2DForNegato" />
</adaptor>
<adaptor id="MPRNegato" uid="${GENERIC_UID}_negatoMPRUID" class="::visuVTKAdaptor::NegatoMPR" objectId="imageKey">
<config renderer="default" picker="negatodefault" mode="2d" slices="1" sliceIndex="${orientation}" selectedTFKey="${selectedTFKey}" tfSelectionFwID="${TFSelectionsUid}" />
</adaptor>
<adaptor id="text" class="::visuVTKAdaptor::ImageText" objectId="imageKey">
<config renderer="default" picker="negatodefault" text="" selectedTFKey="${selectedTFKey}" tfSelectionFwID="${TFSelectionsUid}" />
</adaptor>
<adaptor id="multiDistances" uid="${GENERIC_UID}_multiDistancesUID" class="::visuVTKAdaptor::ImageMultiDistances" objectId="imageKey">
<config filter="true" renderer="default" picker="negatodefault" />
</adaptor>
<adaptor id="landmarksNegato" class="::visuVTKAdaptor::ImageLandmarks" objectId="imageKey">
<config renderer="default" picker="negatodefault" />
</adaptor>
<adaptor id="nameAdaptor" class="::visuVTKAdaptor::Text" objectId="imageKey">
<config renderer="default" text="${patient_name}" fontSize="15" hAlign="right" vAlign="top" />
</adaptor>
<adaptor id="imageSliceOrientationText" class="::visuVTKAdaptor::ImageSliceOrientationText" objectId="imageKey">
<config renderer="default">
<locations>default</locations>
<initialOrientation>${orientation}</initialOrientation>
</config>
</adaptor>
<connect>
<signal>${GENERIC_UID}_snapshotNegatoEditor/snapped</signal>
<slot>${GENERIC_UID}_snapshotUID/snap</slot>
</connect>
<connect waitForKey="imageKey">
<signal>${GENERIC_UID}_distanceNegatoEditor/distanceRequested</signal>
<slot>${GENERIC_UID}_multiDistancesUID/createDistance</slot>
</connect>
<proxy channel="${CrossTypeChannel}" waitForKey="imageKey">
<slot>${GENERIC_UID}_negatoMPRUID/setCrossScale</slot>
</proxy>
</scene>
</service>
<item key="imageKey">
<object uid="${imageUid}" src="ref" type="::fwData::Image">
<service uid="${GENERIC_UID}_LockImageSrv" impl="::ctrlMemory::LockDumpSrv" type="::fwServices::IController" autoConnect="no" />
<service uid="${GENERIC_UID}_slider_negato" impl="::uiImage::SliceIndexPositionEditor" type="::gui::editor::IEditor" autoConnect="yes">
<sliceIndex>${orientation}</sliceIndex>
</service>
<service uid="${GENERIC_UID}_distanceNegatoEditor" type="::gui::editor::IEditor" impl="::uiMeasurement::editor::Distance" autoConnect="no">
<placeInScene uid="${GENERIC_UID}_negato" />
</service>
</object>
</item>
</object>
</item>
<!-- START AND STOP SERVICES -->
<start uid="${GENERIC_UID}_LockImageSrv" />
<start uid="${GENERIC_UID}_mainView" />
</object>
</config>
</extension>
<extension implements="::fwServices::registry::AppConfig">
<id>2DSimpleConfig</id>
<parameters>
<param name="GENERIC_UID" />
<param name="WID_PARENT" />
<param name="objectID" />
<param name="imageID" />
<param name="orientation" default="axial" /> <!-- axial, frontal, sagittal -->
</parameters>
<config>
<object type="::fwData::Composite">
<service uid="${GENERIC_UID}_mainview" type="::gui::view::IView" impl="::gui::view::SDefaultView" autoConnect="no">
<gui>
<layout type="::fwGui::CardinalLayoutManager">
<view align="center" />
<view align="bottom" minWidth="200" minHeight="30" resizable="no" />
</layout>
</gui>
<registry>
<parent wid="${WID_PARENT}" />
<view sid="${GENERIC_UID}_gs" start="yes" />
<view sid="${GENERIC_UID}_sliderIndexEditor" start="yes" />
</registry>
</service>
<service uid="${GENERIC_UID}_gs" impl="::fwRenderVTK::SRender" type="::fwRender::IRender" autoConnect="yes">
<scene>
<picker id="picker" vtkclass="fwVtkCellPicker" />
<renderer id="default" background="0.0" />
<adaptor id="interactor4Negato" class="::visuVTKAdaptor::InteractorStyle" objectId="self">
<config renderer="default" style="InteractorStyle2DForNegato" />
</adaptor>
<adaptor id="imageText" class="::visuVTKAdaptor::ImageText" objectId="image">
<config renderer="default" picker="picker" text="" color="#FFFFFF" />
</adaptor>
<adaptor id="seriesAdaptor" class="::visuVTKAdaptor::ImageSeries" objectId="imageSeries">
<config renderer="default" picker="picker" autoresetcamera="yes" mode="2D" slices="1" sliceIndex="${orientation}" />
</adaptor>
<adaptor id="nameAdaptor" class="::visuVTKAdaptor::Text" objectId="imageSeries">
<config renderer="default" text="@patient.name" fontSize="15" hAlign="right" vAlign="top" />
</adaptor>
<adaptor id="imageSliceOrientationText" class="::visuVTKAdaptor::ImageSliceOrientationText" objectId="image">
<config renderer="default">
<locations>default</locations>
<initialOrientation>${orientation}</initialOrientation>
</config>
</adaptor>
</scene>
</service>
<item key="imageSeries">
<object type="::fwMedData::ImageSeries" uid="${objectID}" src="ref">
</object>
</item>
<item key="image">
<object type="::fwData::Image" uid="${imageID}" src="ref">
<service uid="${GENERIC_UID}_imageDumpLocker" impl="::ctrlMemory::LockDumpSrv" type="::fwServices::IController" autoConnect="no" />
<service uid="${GENERIC_UID}_medicalImgConverter" impl="::ctrlSelection::MedicalImageSrv" type="::fwServices::IController" autoConnect="no" />
<service uid="${GENERIC_UID}_sliderIndexEditor" type="::gui::editor::IEditor" impl="::uiImage::SliceIndexPositionEditor" autoConnect="yes">
<sliceIndex>${orientation}</sliceIndex>
</service>
</object>
</item>
<start uid="${GENERIC_UID}_imageDumpLocker" />
<start uid="${GENERIC_UID}_medicalImgConverter" />
<start uid="${GENERIC_UID}_mainview" />
</object>
</config>
</extension>
<extension implements="::fwServices::registry::AppConfig">
<id>2DVisualization</id>
<parameters>
<param name="WID_PARENT" />
<param name="GENERIC_UID" />
<param name="SERIESDB" />
<param name="AS_UID" />
<param name="imageUid" />
</parameters>
<config>
<object type="::fwData::Composite">
<service uid="${GENERIC_UID}_mainView" type="::gui::view::IView" impl="::gui::view::SDefaultView" autoConnect="no">
<gui>
<layout type="::fwGui::CardinalLayoutManager">
<view caption="Negato1" align="center" />
<view caption="Negato2" align="right" minWidth="350" />
<view caption="Negato3" align="right" minWidth="350" />
</layout>
<toolBar />
</gui>
<registry>
<parent wid="${WID_PARENT}" />
<toolBar sid="${GENERIC_UID}_toolBar" start="yes" />
<view wid="${GENERIC_UID}_view_negato1" />
<view wid="${GENERIC_UID}_view_negato2" />
<view wid="${GENERIC_UID}_view_negato3" />
</registry>
</service>
<service uid="${GENERIC_UID}_toolBar" type="::fwGui::IToolBarSrv" impl="::gui::aspect::SDefaultToolBar" autoConnect="no">
<gui>
<layout>
<menuItem name="New landmark" icon="@BUNDLE_PREFIX@/media_0-1/icons/Add-landmark.png" />
<menuItem name="Remove landmark" icon="@BUNDLE_PREFIX@/media_0-1/icons/Remove-landmark.png" />
<menuItem name="Load landmark" icon="@BUNDLE_PREFIX@/media_0-1/icons/Load-landmark.png" />
<menuItem name="Save landmark" icon="@BUNDLE_PREFIX@/media_0-1/icons/Save-landmark.png" />
<menuItem name="Focus landmark" icon="@BUNDLE_PREFIX@/media_0-1/icons/Find-landmark.png" />
<menuItem name="Hide/Show landmark" icon="@BUNDLE_PREFIX@/media_0-1/icons/View-landmark.png" />
<separator />
<menuItem name="Add distance" icon="@BUNDLE_PREFIX@/media_0-1/icons/distance.png" />
<menuItem name="Remove distance" icon="@BUNDLE_PREFIX@/media_0-1/icons/RemoveDistance.png" />
<menuItem name="Hide distance" icon="@BUNDLE_PREFIX@/media_0-1/icons/HideDistance.png" style="check" />
<separator />
<menuItem name="Hide cross" icon="@BUNDLE_PREFIX@/media_0-1/icons/HideCross.png" style="radio" />
<menuItem name="Show normal cross" icon="@BUNDLE_PREFIX@/media_0-1/icons/NormalCross.png" style="radio" />
<menuItem name="Show full cross" icon="@BUNDLE_PREFIX@/media_0-1/icons/FullCross.png" style="radio" />
<separator />
<menuItem name="Export Activity" icon="@BUNDLE_PREFIX@/media_0-1/icons/Export.svg" />
</layout>
</gui>
<registry>
<menuItem sid="${GENERIC_UID}_ActionNewLandmark" start="yes" />
<menuItem sid="${GENERIC_UID}_ActionRemoveLandmark" start="yes" />
<menuItem sid="${GENERIC_UID}_ActionLoadLandmark" start="yes" />
<menuItem sid="${GENERIC_UID}_ActionSaveLandmark" start="yes" />
<menuItem sid="${GENERIC_UID}_ActionFocusLandmark" start="yes" />
<menuItem sid="${GENERIC_UID}_ActionHideLandmark" start="yes" />
<menuItem sid="${GENERIC_UID}_ActionAddDistance" start="yes" />
<menuItem sid="${GENERIC_UID}_ActionRemoveDistance" start="yes" />
<menuItem sid="${GENERIC_UID}_ActionHideDistance" start="yes" />
<menuItem sid="${GENERIC_UID}_ActionHideCross" start="yes" />
<menuItem sid="${GENERIC_UID}_ActionShowNormalCross" start="yes" />
<menuItem sid="${GENERIC_UID}_ActionShowFullCross" start="yes" />
<menuItem sid="${GENERIC_UID}_ActionExportActivity" start="yes" />
</registry>
</service>
<item key="seriesDB">
<object uid="${SERIESDB}" src="ref" type="::fwMedData::SeriesDB">
<service uid="${GENERIC_UID}_ActionExportActivity" type="::fwGui::IActionSrv" impl="::uiMedData::action::SExportSeries" autoConnect="yes">
<seriesId>${AS_UID}</seriesId>
</service>
</object>
</item>
<item key="activitySeries">
<object uid="${AS_UID}" src="ref" type="::fwMedData::ActivitySeries" />
</item>
<item key="imageKey">
<object uid="${imageUid}" src="ref" type="::fwData::Image">
<service uid="${GENERIC_UID}_MedicalImageSrv" impl="::ctrlSelection::MedicalImageSrv" type="::fwServices::IController" autoConnect="no" />
<service uid="${GENERIC_UID}_cfgNegato1" impl="::fwServices::SConfigController" autoConnect="no">
<config>
<appConfig id="2DNegato">
<parameters>
<parameter replace="imageUid" by="self" />
<parameter replace="orientation" by="axial" />
<parameter replace="WID_PARENT" by="${GENERIC_UID}_view_negato1" />
<parameter replace="CrossTypeChannel" by="crossTypeChannel" />
</parameters>
</appConfig>
</config>
</service>
<service uid="${GENERIC_UID}_cfgNegato2" impl="::fwServices::SConfigController" autoConnect="no">
<config>
<appConfig id="2DNegato">
<parameters>
<parameter replace="imageUid" by="self" />
<parameter replace="orientation" by="frontal" />
<parameter replace="WID_PARENT" by="${GENERIC_UID}_view_negato2" />
<parameter replace="CrossTypeChannel" by="crossTypeChannel" />
</parameters>
</appConfig>
</config>
</service>
<service uid="${GENERIC_UID}_cfgNegato3" impl="::fwServices::SConfigController" autoConnect="no">
<config>
<appConfig id="2DNegato">
<parameters>
<parameter replace="imageUid" by="self" />
<parameter replace="orientation" by="sagittal" />
<parameter replace="WID_PARENT" by="${GENERIC_UID}_view_negato3" />
<parameter replace="CrossTypeChannel" by="crossTypeChannel" />
</parameters>
</appConfig>
</config>
</service>
<service uid="${GENERIC_UID}_ActionFocusLandmark" type="::fwGui::IActionSrv" impl="::uiMeasurement::action::FocusLandmark" autoConnect="no" />
<service uid="${GENERIC_UID}_ActionNewLandmark" type="::fwGui::IActionSrv" impl="::uiMeasurement::action::AddLandmark" autoConnect="no" />
<service uid="${GENERIC_UID}_ActionRemoveLandmark" type="::fwGui::IActionSrv" impl="::uiMeasurement::action::RemoveLandmark" autoConnect="no" />
<service uid="${GENERIC_UID}_ActionLoadLandmark" type="::fwGui::IActionSrv" impl="::uiMeasurement::action::LoadLandmark" autoConnect="no" />
<service uid="${GENERIC_UID}_ActionSaveLandmark" type="::fwGui::IActionSrv" impl="::uiMeasurement::action::SaveLandmark" autoConnect="no" />
<service uid="${GENERIC_UID}_ActionHideLandmark" type="::fwGui::IActionSrv" impl="::uiMeasurement::action::ShowLandmark" autoConnect="yes" />
<service uid="${GENERIC_UID}_ActionAddDistance" type="::fwGui::IActionSrv" impl="::uiMeasurement::action::AddDistance" autoConnect="no" />
<service uid="${GENERIC_UID}_ActionRemoveDistance" type="::fwGui::IActionSrv" impl="::uiMeasurement::action::RemoveDistance" autoConnect="no" />
<service uid="${GENERIC_UID}_ActionHideDistance" type="::fwGui::IActionSrv" impl="::uiMeasurement::action::ShowDistance" autoConnect="yes" />
<service uid="${GENERIC_UID}_ActionHideCross" type="::fwGui::IActionSrv" impl="::uiVisu::action::CrossTypeAction" autoConnect="no">
<crossType>hide</crossType>
</service>
<service uid="${GENERIC_UID}_ActionShowNormalCross" type="::fwGui::IActionSrv" impl="::uiVisu::action::CrossTypeAction" autoConnect="no">
<crossType>half</crossType>
<state active="true" />
</service>
<service uid="${GENERIC_UID}_ActionShowFullCross" type="::fwGui::IActionSrv" impl="::uiVisu::action::CrossTypeAction" autoConnect="no">
<crossType>full</crossType>
</service>
</object>
</item>
<proxy channel="crossTypeChannel">
<signal>${GENERIC_UID}_ActionHideCross/crossTypeModified</signal>
<signal>${GENERIC_UID}_ActionShowNormalCross/crossTypeModified</signal>
<signal>${GENERIC_UID}_ActionShowFullCross/crossTypeModified</signal>
</proxy>
<!-- START AND STOP SERVICES -->
<start uid="${GENERIC_UID}_mainView" />
<start uid="${GENERIC_UID}_MedicalImageSrv" />
<start uid="${GENERIC_UID}_cfgNegato1" />
<start uid="${GENERIC_UID}_cfgNegato2" />
<start uid="${GENERIC_UID}_cfgNegato3" />
</object>
</config>
</extension>
<plugin id="2DVisualizationActivity" version="@DASH_VERSION@" >
<requirement id="servicesReg" />
<requirement id="gui" />
<requirement id="uiMeasurement" />
<requirement id="uiMeasurementQt" />
<requirement id="ctrlSelection" />
<requirement id="uiImageQt" />
<requirement id="uiVisu" />
<requirement id="uiVisuQt" />
<requirement id="visuVTKAdaptor" />
<requirement id="media" />
<xi:include href="configurations/2DVisualization.xml" xmlns:xi="http://www.w3.org/2003/XInclude" />
<xi:include href="configurations/2DNegato.xml" xmlns:xi="http://www.w3.org/2003/XInclude" />
<xi:include href="configurations/2DNegatoWithTF.xml" xmlns:xi="http://www.w3.org/2003/XInclude" />
<xi:include href="configurations/2DSimpleConfig.xml" xmlns:xi="http://www.w3.org/2003/XInclude" />
<extension implements="::fwActivities::registry::Activities">
<id>2DVisualization</id>
<title>2D Visu</title>
<desc>Activity to display an image in 2D.</desc>
<icon>@BUNDLE_PREFIX@/media_0-1/icons/icon-2D.png</icon>
<requirements>
<requirement name="imageSeries" type="::fwMedData::ImageSeries" minOccurs="1" maxOccurs="1">
<desc>Image to display.</desc>
</requirement>
</requirements>
<builder>::fwActivities::builder::ActivitySeries</builder>
<appConfig id="2DVisualization">
<parameters>
<parameter replace="imageUid" by="@values.imageSeries.image" />
</parameters>
</appConfig>
</extension>
</plugin>
<extension implements="::fwServices::registry::AppConfig">
<id>3DNegatoWithAcq</id>
<parameters>
<param name="WID_PARENT" />
<param name="GENERIC_UID" />
<param name="InputImageCompositeUID" />
<param name="modelSeriesUid" />
<param name="patient_name" default="" />
<param name="orientation" default="axial" /> <!-- axial, frontal, sagittal -->
<param name="ModelRepresentationChannel" />
<param name="ModelDisplayChannel" />
<param name="CrossTypeChannel" default="crossTypeChannel" />
<param name="Medical3DCameraUID" />
</parameters>
<config>
<object type="::fwData::Composite">
<service uid="${GENERIC_UID}_mainView" type="::gui::view::IView" impl="::gui::view::SDefaultView" autoConnect="no">
<gui>
<layout type="::fwGui::LineLayoutManager">
<orientation value="vertical" />
<view proportion="1" />
<view proportion="0" minHeight="30" />
</layout>
</gui>
<registry>
<parent wid="${WID_PARENT}" />
<view sid="${GENERIC_UID}_negato" start="yes" />
<view sid="${GENERIC_UID}_multiView_negato_bottom" start="yes" />
</registry>
</service>
<service uid="${GENERIC_UID}_multiView_negato_bottom" type="::gui::view::IView" impl="::gui::view::SDefaultView" autoConnect="no">
<gui>
<layout type="::fwGui::LineLayoutManager">
<orientation value="horizontal" />
<view proportion="0" minWidth="30" />
<view proportion="0" minWidth="30" />
<view proportion="1" />
<view proportion="0" minWidth="30" />
</layout>
</gui>
<registry>
<view sid="${GENERIC_UID}_sliceListNegatoEditor" start="no" />
<view sid="${GENERIC_UID}_snapshotNegatoEditor" start="yes" />
<view sid="${GENERIC_UID}_slider_negato" start="no" />
<view sid="${GENERIC_UID}_distanceNegatoEditor" start="no" />
</registry>
</service>
<service uid="${GENERIC_UID}_snapshotNegatoEditor" type="::gui::editor::IEditor" impl="::uiVisu::SnapshotEditor" autoConnect="no" />
<!-- GENERIC SCENE DEFINITION -->
<item key="visuConfig">
<object uid="${GENERIC_UID}_VisuComposite" type="::fwData::Composite">
<service uid="${GENERIC_UID}_VisuCompositeUpdater" impl="::ctrlSelection::updater::STranslate" type="::ctrlSelection::IUpdaterSrv" autoConnect="no">
<source>${InputImageCompositeUID}</source>
<translate fromKey="OptionalInputImageKey" toKey="imageKey" />
</service>
<!-- Generic Scene Negato -->
<service uid="${GENERIC_UID}_negato" impl="::fwRenderVTK::SRender" type="::fwRender::IRender" autoConnect="yes">
<scene>
<picker id="negatodefault" vtkclass="fwVtkCellPicker" />
<renderer id="default" background="0.0" />
<adaptor id="snapshot" uid="${GENERIC_UID}_snapshotUID" class="::visuVTKAdaptor::Snapshot" objectId="self">
<config renderer="default" />
</adaptor>
<adaptor id="orientationMarker" class="::visuVTKAdaptor::OrientationMarker" objectId="self">
<config renderer="default" hAlign="right" />
</adaptor>
<adaptor id="interactor" class="::visuVTKAdaptor::InteractorStyle" objectId="self">
<config renderer="default" style="InteractorStyle3DForNegato" />
</adaptor>
<adaptor id="medicalCamera" uid="${Medical3DCameraUID}" class="::visuVTKAdaptor::Medical3DCamera" objectId="self">
<config renderer="default" sliceIndex="${orientation}" resetAtStart="yes" />
</adaptor>
<adaptor uid="${GENERIC_UID}_MPRNegato" id="MPRNegato" class="::visuVTKAdaptor::NegatoMPR" objectId="imageKey">
<config renderer="default" picker="negatodefault" slices="3" sliceIndex="${orientation}" />
</adaptor>
<adaptor id="modelSeries" uid="${GENERIC_UID}_modelSeriesUid" class="::visuVTKAdaptor::ModelSeries" objectId="modelSeriesKey">
<config renderer="default" picker="negatodefault" autoresetcamera="yes" />
</adaptor>
<adaptor id="text" class="::visuVTKAdaptor::ImageText" objectId="imageKey">
<config renderer="default" picker="negatodefault" text="" />
</adaptor>
<adaptor id="multiDistances" uid="${GENERIC_UID}_multiDistancesUID" class="::visuVTKAdaptor::ImageMultiDistances" objectId="imageKey">
<config filter="true" renderer="default" picker="negatodefault" />
</adaptor>
<adaptor id="landmarksNegato" class="::visuVTKAdaptor::ImageLandmarks" objectId="imageKey">
<config renderer="default" picker="negatodefault" />
</adaptor>
<adaptor id="nameAdaptor" class="::visuVTKAdaptor::Text" objectId="modelSeriesKey">
<config renderer="default" text="${patient_name}" fontSize="15" hAlign="right" vAlign="top" />
</adaptor>
<proxy channel="${ModelRepresentationChannel}" waitForKey="modelSeriesKey">
<slot>${GENERIC_UID}_modelSeriesUid/updateNormalMode</slot>
</proxy>
<proxy channel="${ModelDisplayChannel}" waitForKey="modelSeriesKey">
<slot>${GENERIC_UID}_modelSeriesUid/showReconstructions</slot>
</proxy>
<connect>
<signal>${GENERIC_UID}_snapshotNegatoEditor/snapped</signal>
<slot>${GENERIC_UID}_snapshotUID/snap</slot>
</connect>
<connect waitForKey="imageKey">
<signal>${GENERIC_UID}_distanceNegatoEditor/distanceRequested</signal>
<slot>${GENERIC_UID}_multiDistancesUID/createDistance</slot>
</connect>
<proxy channel="${GENERIC_UID}_slice_mode" waitForKey="imageKey">
<slot>${GENERIC_UID}_MPRNegato/updateSliceMode</slot>
</proxy>
<proxy channel="${CrossTypeChannel}" waitForKey="imageKey">
<slot>${GENERIC_UID}_MPRNegato/setCrossScale</slot>
</proxy>
</scene>
</service>
<item key="OptionalInputImageCompositeKey">
<object uid="${InputImageCompositeUID}" src="ref" type="::fwData::Composite">
<service uid="${GENERIC_UID}_EditorManager" impl="::ctrlSelection::manager::SwapperSrv" autoConnect="yes">
<mode type="stop" />
<config>
<object id="OptionalInputImageKey" type="::fwData::Image">
<service uid="${GENERIC_UID}_LockImageSrv" impl="::ctrlMemory::LockDumpSrv" type="::fwServices::IController" autoConnect="no" />
<service uid="${GENERIC_UID}_slider_negato" impl="::uiImage::SliceIndexPositionEditor" type="::gui::editor::IEditor" autoConnect="yes">
<sliceIndex>${orientation}</sliceIndex>
</service>
<service uid="${GENERIC_UID}_distanceNegatoEditor" type="::gui::editor::IEditor" impl="::uiMeasurement::editor::Distance" autoConnect="no">
<placeInScene uid="${GENERIC_UID}_negato" />
</service>
<service uid="${GENERIC_UID}_sliceListNegatoEditor" type="::gui::editor::IEditor" impl="::guiQt::editor::SSelectionMenuButton" autoConnect="no">
<toolTip>Manage slice visibility</toolTip>
<selected>3</selected>
<items>
<item text="No slice" value="0" />
<item text="One slice" value="1" />
<item text="three slices" value="3" />
</items>
</service>
<proxy channel="${GENERIC_UID}_slice_mode">
<signal>${GENERIC_UID}_sliceListNegatoEditor/selected</signal>
</proxy>
</object>
</config>
</service>
</object>
</item>
<item key="modelSeriesKey">
<object uid="${modelSeriesUid}" src="ref" type="::fwMedData::ModelSeries">
</object>
</item>
</object>
</item>
<!-- START AND STOP SERVICES -->
<start uid="${GENERIC_UID}_mainView" />
<start uid="${GENERIC_UID}_EditorManager" />
<start uid="${GENERIC_UID}_VisuCompositeUpdater" />
</object>
</config>
</extension>
<extension implements="::fwServices::registry::AppConfig">
<id>3DSimpleConfig</id>
<parameters>
<param name="GENERIC_UID" />
<param name="WID_PARENT" />
<param name="objectID" />
</parameters>
<config>
<object type="::fwData::Composite">
<service uid="${GENERIC_UID}_gs" impl="::fwRenderVTK::SRender" type="::fwRender::IRender" autoConnect="yes">
<registry>
<parent wid="${WID_PARENT}" />
</registry>
<scene>
<picker id="picker" vtkclass="fwVtkCellPicker" />
<renderer id="default" background="0.0" />
<adaptor id="modelAdaptor" class="::visuVTKAdaptor::ModelSeries" objectId="modelSeries">
<config renderer="default" picker="picker" autoresetcamera="yes" />
</adaptor>
<adaptor id="nameAdaptor" class="::visuVTKAdaptor::Text" objectId="modelSeries">
<config renderer="default" text="@patient.name" fontSize="15" hAlign="right" vAlign="top" />
</adaptor>
<adaptor id="orientationMarker" class="::visuVTKAdaptor::OrientationMarker" objectId="self">
<config renderer="default" />
</adaptor>
</scene>
</service>
<item key="modelSeries">
<object type="::fwMedData::ModelSeries" uid="${objectID}" src="ref">
</object>
</item>
<start uid="${GENERIC_UID}_gs" />
</object>
</config>
</extension>
<extension implements="::fwServices::registry::AppConfig">
<id>3DVisualization</id>
<parameters>
<param name="WID_PARENT" />
<param name="GENERIC_UID" />
<param name="ICON_PATH" />
<param name="SERIESDB" />
<param name="AS_UID" />
<param name="modelSeriesUid" />
<param name="InputImageCompositeUID" />
<param name="patient_name" default="" />
</parameters>
<config>
<object type="::fwData::Composite">
<service uid="${GENERIC_UID}_mainView" type="::gui::view::IView" impl="::gui::view::SDefaultView" autoConnect="no">
<gui>
<layout type="::fwGui::CardinalLayoutManager">
<view caption="Negato1" align="center" />
<view caption="Negato2" align="right" minWidth="350" visible="no" />
<view caption="Negato3" align="right" minWidth="350" visible="no" />
</layout>
<toolBar />
</gui>
<registry>
<parent wid="${WID_PARENT}" />
<toolBar sid="${GENERIC_UID}_toolBar" start="yes" />
<view wid="${GENERIC_UID}_view_negato1" />
<view wid="${GENERIC_UID}_view_negato2" />
<view wid="${GENERIC_UID}_view_negato3" />
</registry>
</service>
<service uid="${GENERIC_UID}_toolBar" type="::fwGui::IToolBarSrv" impl="::gui::aspect::SDefaultToolBar" autoConnect="no">
<gui>
<layout>
<menuItem name="3D MPR Axial view" icon="@BUNDLE_PREFIX@/media_0-1/icons/icon-axial.png" />
<menuItem name="3D MPR Frontal view" icon="@BUNDLE_PREFIX@/media_0-1/icons/icon-frontal.png" />
<menuItem name="3D MPR Sagittal view" icon="@BUNDLE_PREFIX@/media_0-1/icons/icon-sagittal.png" />
<separator />
<menuItem name="New landmark" icon="@BUNDLE_PREFIX@/media_0-1/icons/Add-landmark.png" />
<menuItem name="Remove landmark" icon="@BUNDLE_PREFIX@/media_0-1/icons/Remove-landmark.png" />
<menuItem name="Load landmark" icon="@BUNDLE_PREFIX@/media_0-1/icons/Load-landmark.png" />
<menuItem name="Save landmark" icon="@BUNDLE_PREFIX@/media_0-1/icons/Save-landmark.png" />
<menuItem name="Focus landmark" icon="@BUNDLE_PREFIX@/media_0-1/icons/Find-landmark.png" />
<menuItem name="Hide/Show landmark" icon="@BUNDLE_PREFIX@/media_0-1/icons/View-landmark.png" />
<separator />
<menuItem name="Add distance" icon="@BUNDLE_PREFIX@/media_0-1/icons/distance.png" />
<menuItem name="Remove distance" icon="@BUNDLE_PREFIX@/media_0-1/icons/RemoveDistance.png" />
<menuItem name="Hide distance" icon="@BUNDLE_PREFIX@/media_0-1/icons/HideDistance.png" style="check" />
<separator />
<menuItem name="Hide cross" icon="@BUNDLE_PREFIX@/media_0-1/icons/HideCross.png" style="radio" />
<menuItem name="Show normal cross" icon="@BUNDLE_PREFIX@/media_0-1/icons/NormalCross.png" style="radio" />
<menuItem name="Show full cross" icon="@BUNDLE_PREFIX@/media_0-1/icons/FullCross.png" style="radio" />
<separator />
<menuItem name="Manage organs color" icon="@BUNDLE_PREFIX@/media_0-1/icons/ManageOrgan.png" style="check" />
<separator />
<menuItem name="Export Activity" icon="@BUNDLE_PREFIX@/media_0-1/icons/Export.svg" />
<spacer />
<menu name="Visu 3D" />
</layout>
</gui>
<registry>
<menuItem sid="${GENERIC_UID}_action_AxialViewMPR3D" start="no" />
<menuItem sid="${GENERIC_UID}_action_FrontalViewMPR3D" start="no" />
<menuItem sid="${GENERIC_UID}_action_SagittalViewMPR3D" start="no" />
<menuItem sid="${GENERIC_UID}_ActionNewLandmark" start="no" />
<menuItem sid="${GENERIC_UID}_ActionRemoveLandmark" start="no" />
<menuItem sid="${GENERIC_UID}_ActionLoadLandmark" start="no" />
<menuItem sid="${GENERIC_UID}_ActionSaveLandmark" start="no" />
<menuItem sid="${GENERIC_UID}_ActionFocusLandmark" start="no" />
<menuItem sid="${GENERIC_UID}_ActionHideLandmark" start="no" />
<menuItem sid="${GENERIC_UID}_ActionAddDistance" start="no" />
<menuItem sid="${GENERIC_UID}_ActionRemoveDistance" start="no" />
<menuItem sid="${GENERIC_UID}_ActionHideDistance" start="no" />
<menuItem sid="${GENERIC_UID}_ActionHideCross" start="no" />
<menuItem sid="${GENERIC_UID}_ActionShowNormalCross" start="no" />
<menuItem sid="${GENERIC_UID}_ActionShowFullCross" start="no" />
<menuItem sid="${GENERIC_UID}_action_organManager" start="no" />
<menuItem sid="${GENERIC_UID}_ActionExportActivity" start="yes" />
<menu sid="${GENERIC_UID}_menu" start="yes" />
</registry>
</service>
<service uid="${GENERIC_UID}_menu" type="::fwGui::IMenuSrv" impl="::gui::aspect::SDefaultMenu" autoConnect="no">
<gui>
<layout>
<menuItem name="Manage organs colors" style="check" shortcut="F9" icon="@BUNDLE_PREFIX@/media_0-1/icons/ManageOrgan.png" />
<separator />
<menuItem name="Axial view" icon="@BUNDLE_PREFIX@/media_0-1/icons/icon-axial.png" />
<menuItem name="Frontal view" icon="@BUNDLE_PREFIX@/media_0-1/icons/icon-frontal.png" />
<menuItem name="Sagittal view" icon="@BUNDLE_PREFIX@/media_0-1/icons/icon-sagittal.png" />
</layout>
</gui>
<registry>
<menuItem sid="${GENERIC_UID}_action_organManager" start="yes" />
<menuItem sid="${GENERIC_UID}_action_AxialViewMPR3D" start="yes" />
<menuItem sid="${GENERIC_UID}_action_FrontalViewMPR3D" start="yes" />
<menuItem sid="${GENERIC_UID}_action_SagittalViewMPR3D" start="yes" />
</registry>
</service>
<service uid="${GENERIC_UID}_action_organManager" type="::fwGui::IActionSrv" impl="::gui::action::SConfigLauncher" autoConnect="no">
<config>
<appConfig id="OrganManagerWithSeries">
<parameters>
<parameter replace="ORGAN_MANAGER_MODELSERIES" by="${modelSeriesUid}" />
<parameter replace="ICON_PATH" by="${ICON_PATH}" />
<parameter replace="ModelRepresentationChannel" by="ModelRepresentationChannel" />
<parameter replace="ModelDisplayChannel" by="ModelDisplayChannel" />
</parameters>
</appConfig>
</config>
</service>
<service uid="${GENERIC_UID}_cfgNegato1" impl="::fwServices::SConfigController" autoConnect="no">
<config>
<appConfig id="3DNegatoWithAcq">
<parameters>
<parameter replace="InputImageCompositeUID" by="@values.OptionalInputImageCompositeKey" />
<parameter replace="modelSeriesUid" by="@values.modelSeriesKey" />
<parameter replace="orientation" by="axial" />
<parameter replace="WID_PARENT" by="${GENERIC_UID}_view_negato1" />
<parameter replace="patient_name" by="${patient_name}" />
<parameter replace="ModelRepresentationChannel" by="ModelRepresentationChannel" />
<parameter replace="ModelDisplayChannel" by="ModelDisplayChannel" />
<parameter replace="Medical3DCameraUID" by="${GENERIC_UID}_Medical3DCameraUID" />
<parameter replace="CrossTypeChannel" by="crossTypeChannel" />
</parameters>
</appConfig>
</config>
</service>
<service uid="${GENERIC_UID}_action_SagittalViewMPR3D" type="::fwGui::IActionSrv" impl="::gui::action::SSlotCaller" autoConnect="no">
<slots>
<slot>${GENERIC_UID}_Medical3DCameraUID/setSagittal</slot>
</slots>
</service>
<service uid="${GENERIC_UID}_action_FrontalViewMPR3D" type="::fwGui::IActionSrv" impl="::gui::action::SSlotCaller" autoConnect="no">
<slots>
<slot>${GENERIC_UID}_Medical3DCameraUID/setFrontal</slot>
</slots>
</service>
<service uid="${GENERIC_UID}_action_AxialViewMPR3D" type="::fwGui::IActionSrv" impl="::gui::action::SSlotCaller" autoConnect="no">
<slots>
<slot>${GENERIC_UID}_Medical3DCameraUID/setAxial</slot>
</slots>
</service>
<item key="OptionalInputImageCompositeKey">
<object uid="${InputImageCompositeUID}" src="ref" type="::fwData::Composite">
<service uid="${GENERIC_UID}_2DViewManager" impl="::ctrlSelection::manager::SwapperSrv" autoConnect="yes">
<mode type="stop" />
<config>
<object id="OptionalInputImageKey" type="::fwData::Image">
<service uid="${GENERIC_UID}_LockImageSrv" impl="::ctrlMemory::LockDumpSrv" type="::fwServices::IController" autoConnect="no" />
<service uid="${GENERIC_UID}_cfgNegato2" type="::fwServices::IController" impl="::fwServices::SConfigController" autoConnect="no">
<config>
<appConfig id="2DNegato">
<parameters>
<parameter replace="imageUid" by="self" />
<parameter replace="orientation" by="frontal" />
<parameter replace="WID_PARENT" by="${GENERIC_UID}_view_negato2" />
<parameter replace="patient_name" by="${patient_name}" />
<parameter replace="CrossTypeChannel" by="crossTypeChannel" />
</parameters>
</appConfig>
</config>
</service>
<service uid="${GENERIC_UID}_cfgNegato3" type="::fwServices::IController" impl="::fwServices::SConfigController" autoConnect="no">
<config>
<appConfig id="2DNegato">
<parameters>
<parameter replace="imageUid" by="self" />
<parameter replace="orientation" by="sagittal" />
<parameter replace="WID_PARENT" by="${GENERIC_UID}_view_negato3" />
<parameter replace="patient_name" by="${patient_name}" />
<parameter replace="CrossTypeChannel" by="crossTypeChannel" />
</parameters>
</appConfig>
</config>
</service>
<service uid="${GENERIC_UID}_ActionFocusLandmark" type="::fwGui::IActionSrv" impl="::uiMeasurement::action::FocusLandmark" autoConnect="no" />
<service uid="${GENERIC_UID}_ActionNewLandmark" type="::fwGui::IActionSrv" impl="::uiMeasurement::action::AddLandmark" autoConnect="no" />
<service uid="${GENERIC_UID}_ActionRemoveLandmark" type="::fwGui::IActionSrv" impl="::uiMeasurement::action::RemoveLandmark" autoConnect="no" />
<service uid="${GENERIC_UID}_ActionLoadLandmark" type="::fwGui::IActionSrv" impl="::uiMeasurement::action::LoadLandmark" autoConnect="no" />
<service uid="${GENERIC_UID}_ActionSaveLandmark" type="::fwGui::IActionSrv" impl="::uiMeasurement::action::SaveLandmark" autoConnect="no" />
<service uid="${GENERIC_UID}_ActionHideLandmark" type="::fwGui::IActionSrv" impl="::uiMeasurement::action::ShowLandmark" autoConnect="yes" />
<service uid="${GENERIC_UID}_ActionAddDistance" type="::fwGui::IActionSrv" impl="::uiMeasurement::action::AddDistance" autoConnect="no" />
<service uid="${GENERIC_UID}_ActionRemoveDistance" type="::fwGui::IActionSrv" impl="::uiMeasurement::action::RemoveDistance" autoConnect="no" />
<service uid="${GENERIC_UID}_ActionHideDistance" type="::fwGui::IActionSrv" impl="::uiMeasurement::action::ShowDistance" autoConnect="yes" />
<service uid="${GENERIC_UID}_ActionHideCross" type="::fwGui::IActionSrv" impl="::uiVisu::action::CrossTypeAction" autoConnect="no">
<crossType>hide</crossType>
</service>
<service uid="${GENERIC_UID}_ActionShowNormalCross" type="::fwGui::IActionSrv" impl="::uiVisu::action::CrossTypeAction" autoConnect="no">
<crossType>half</crossType>
<state active="true" />
</service>
<service uid="${GENERIC_UID}_ActionShowFullCross" type="::fwGui::IActionSrv" impl="::uiVisu::action::CrossTypeAction" autoConnect="no">
<crossType>full</crossType>
</service>
<service uid="${GENERIC_UID}_MedicalImageSrv" impl="::ctrlSelection::MedicalImageSrv" type="::fwServices::IController" autoConnect="no" />
<proxy channel="crossTypeChannel">
<signal>${GENERIC_UID}_ActionHideCross/crossTypeModified</signal>
<signal>${GENERIC_UID}_ActionShowNormalCross/crossTypeModified</signal>
<signal>${GENERIC_UID}_ActionShowFullCross/crossTypeModified</signal>
</proxy>
</object>
</config>
</service>
<service uid="${GENERIC_UID}_2DLayoutManager" impl="::ctrlSelection::manager::SwapperSrv" autoConnect="yes">
<mode type="startAndUpdate" />
<config>
<object id="OptionalInputImageKey" type="::fwData::Image">
<service uid="${GENERIC_UID}_ModifyLayout" type="::fwGui::IActionSrv" impl="::gui::action::SModifyLayout" autoConnect="no">
<config>
<show wid="${GENERIC_UID}_view_negato2" />
<show wid="${GENERIC_UID}_view_negato3" />
</config>
</service>
</object>
</config>
</service>
</object>
</item>
<item key="seriesDB">
<object uid="${SERIESDB}" src="ref" type="::fwMedData::SeriesDB">
<service uid="${GENERIC_UID}_ActionExportActivity" type="::fwGui::IActionSrv" impl="::uiMedData::action::SExportSeries" autoConnect="yes">
<seriesId>${AS_UID}</seriesId>
</service>
</object>
</item>
<item key="activitySeries">
<object uid="${AS_UID}" src="ref" type="::fwMedData::ActivitySeries" />
</item>
<item key="modelSeriesKey">
<object uid="${modelSeriesUid}" src="ref" type="::fwMedData::ModelSeries" />
</item>
<!-- START AND STOP SERVICES -->
<start uid="${GENERIC_UID}_mainView" />
<start uid="${GENERIC_UID}_cfgNegato1" />
<start uid="${GENERIC_UID}_2DViewManager" />
<start uid="${GENERIC_UID}_2DLayoutManager" />
</object>
</config>
</extension>
<extension implements="::fwServices::registry::AppConfig">
<id>OrganManagerWithSeries</id>
<parameters>
<param name="GENERIC_UID" />
<param name="ORGAN_MANAGER_MODELSERIES" />
<param name="CLOSE_CONFIG_CHANNEL" default="DummyChannel" /><!-- defined by SConfigLauncher -->
<param name="ICON_PATH" />
<param name="ModelRepresentationChannel" />
<param name="ModelDisplayChannel" />
</parameters>
<config>
<object type="::fwData::Composite">
<!-- MAIN FRAME -->
<service uid="${GENERIC_UID}_organManagerFrame" type="::fwGui::IFrameSrv" impl="::gui::frame::SDefaultFrame" autoConnect="no">
<window onclose="notify" />
<gui>
<frame>
<name>Organs Manager</name>
<icon>${ICON_PATH}</icon>
<style mode="STAY_ON_TOP" />
</frame>
</gui>
<registry>
<view sid="${GENERIC_UID}_multiViewOrgans" start="yes" />
</registry>
</service>
<service uid="${GENERIC_UID}_multiViewOrgans" type="::gui::view::IView" impl="::gui::view::SDefaultView" autoConnect="no">
<gui>
<layout type="::fwGui::ToolboxLayoutManager">
<orientation value="vertical" />
<view caption="Organs" expanded="true" />
<view caption="Material" expanded="true" />
<view caption="Representation" />
</layout>
</gui>
<registry>
<view sid="${GENERIC_UID}_listOrganEditor" start="yes" />
<view sid="${GENERIC_UID}_organMaterialEditor" start="no" />
<view sid="${GENERIC_UID}_representationEditor" start="no" />
</registry>
</service>
<item key="selection">
<object type="::fwData::Composite">
<service uid="${GENERIC_UID}_myUpdaterReconst" impl="::ctrlSelection::updater::SObjFromSlot" type="::ctrlSelection::IUpdaterSrv" autoConnect="no">
<compositeKey>reconstruction</compositeKey>
</service>
<service uid="${GENERIC_UID}_myManagerForOrgansFrame" impl="::ctrlSelection::manager::SwapperSrv" type="::ctrlSelection::IManagerSrv" autoConnect="yes">
<mode type="dummy" />
<config>
<object id="reconstruction" type="::fwData::Reconstruction">
<service uid="${GENERIC_UID}_organMaterialEditor" impl="::uiReconstruction::OrganMaterialEditor" type="::gui::editor::IEditor" autoConnect="no" />
<service uid="${GENERIC_UID}_representationEditor" impl="::uiReconstruction::RepresentationEditor" type="::gui::editor::IEditor" autoConnect="no" />
<proxy channel="${ModelRepresentationChannel}">
<signal>${GENERIC_UID}_representationEditor/normalsModeModified</signal>
</proxy>
</object>
</config>
</service>
</object>
</item>
<item key="modelSeries">
<object uid="${ORGAN_MANAGER_MODELSERIES}" src="ref" type="::fwMedData::ModelSeries">
<service uid="${GENERIC_UID}_listOrganEditor" impl="::uiMedData::editor::SModelSeriesList" type="::gui::editor::IEditor" autoConnect="yes">
<columns>
<organ_name>@organ_name</organ_name>
<volume_cc view="positive">@volume</volume_cc>
</columns>
</service>
</object>
</item>
<connect>
<signal>${GENERIC_UID}_listOrganEditor/reconstructionSelected</signal>
<slot>${GENERIC_UID}_myUpdaterReconst/addOrSwap</slot>
</connect>
<proxy channel="${CLOSE_CONFIG_CHANNEL}">
<signal>${GENERIC_UID}_organManagerFrame/closed</signal>
</proxy>
<proxy channel="${ModelDisplayChannel}">
<signal>${GENERIC_UID}_listOrganEditor/recDisplayModified</signal>
<slot>${GENERIC_UID}_listOrganEditor/showReconstructions</slot>
</proxy>
<!-- START AND STOP SERVICES -->
<start uid="${GENERIC_UID}_organManagerFrame" />
<start uid="${GENERIC_UID}_myUpdaterReconst" />
<start uid="${GENERIC_UID}_myManagerForOrgansFrame" />
</object>
</config>
</extension>
<plugin id="3DVisualizationActivity" version="@DASH_VERSION@" >
<requirement id="servicesReg" />
<requirement id="2DVisualizationActivity" />
<requirement id="uiReconstructionQt" />
<requirement id="media" />
<xi:include href="configurations/3DVisualization.xml" xmlns:xi="http://www.w3.org/2003/XInclude" />
<xi:include href="configurations/ManageOrganWithSeries.xml" xmlns:xi="http://www.w3.org/2003/XInclude" />
<xi:include href="configurations/3DNegatoWithAcq.xml" xmlns:xi="http://www.w3.org/2003/XInclude" />
<xi:include href="configurations/3DSimpleConfig.xml" xmlns:xi="http://www.w3.org/2003/XInclude" />
<extension implements="::fwActivities::registry::Activities">
<id>3DVisualization</id>
<title>3D Visu</title>
<desc>Activity to display a 3D model (and eventually its associated image)</desc>
<icon>@BUNDLE_PREFIX@/media_0-1/icons/icon-3D.png</icon>
<requirements>
<requirement name="modelSeries" type="::fwMedData::ModelSeries" minOccurs="1" maxOccurs="1">
<desc>3D model.</desc>
</requirement>
<requirement name="imageSeries" type="::fwMedData::ImageSeries" minOccurs="0" maxOccurs="1" >
<desc>Image associated to the model.</desc>
<key path="@image" >OptionalInputImageKey</key>
</requirement>
</requirements>
<builder>::fwActivities::builder::ActivitySeries</builder>
<appConfig id="3DVisualization">
<parameters>
<parameter replace="InputImageCompositeUID" by="@values.imageSeries" />
<parameter replace="modelSeriesUid" by="@values.modelSeries" />
<parameter replace="orientation" by="frontal" />
</parameters>
</appConfig>
</extension>
</plugin>