Manager and updater services¶
In the FW4SPL architecture, there are container objects like ::fwData::Composite
, ::fwData::Vector
and
::fwMedData::SeriesDB
. The ::fwData::Composite
is also an Object and represents a map
which associates a string with an Object. The architecture provides a service to manage these objects ::ctrlSelection::SManage
.
We also need services to extract the sub-objects from the containers and add the object in the application configuration (AppConfig)
SManage¶
This service manages an object (add/swap/remove) into a container object (composite, vector, seriesDB) or into any object’s fields.
Available operations on composite are:
- Adding an object
- Swapping an object
- Removing an object
- Removing an object if present
- Adding or swapping an object
<object uid="composite" type="::fwData::Composite" />
<object uid="image" type="::fwData::Image" />
<service uid="manager" type="::ctrlSelection::SManage">
<inout key="object" uid="image" />
<inout key="composite" uid="composite" />
<compositeKey>myImage</compositeKey>
</service>
<!-- Add the image in the composite when it is modified -->
<connect>
<signal>image/modified</signal>
<slot>manager/addOrSwap</slot>
</connect>
<start uid="manager" />
SObjFromSlots¶
This service allows to add or remove an object in the Object-Service registry (OSR) when calling the slots.
<object uid="modelSeries" type="::fwMedData::ModelSeries" />
<object uid="reconstruction" type="::fwData::Reconstruction" src="deferred" />
<service uid="listOrganEditor" type="::uiMedDataQt::editor::SModelSeriesList" autoConnect="yes">
<inout key="modelSeries" uid="modelSeries" />
</service>
<service uid="myUpdater" type="::ctrlSelection::updater::SObjFromSlot">
<out key="object" uid="reconstruction" />
</service>
<!-- Add the selected reconstruction -->
<connect>
<signal>listOrganEditor/reconstructionSelected</signal>
<slot>myUpdater/add</slot>
</connect>
<!-- Remove the reconstruction -->
<connect>
<signal>listOrganEditor/emptiedSelection</signal>
<slot>myUpdater/remove</slot>
</connect>
<start uid="listOrganEditor" />
<start uid="myUpdater" />
SExtractObj¶
This service get objects from a source object and expose them as new objects. It uses “camp path” to extract the object (see What is a camp path ?).
<object uid="composite" type="::fwData::Composite" />
<object uid="image" type="::fwData::Image" src="deferred" />
<object uid="mesh" type="::fwData::Mesh" src="deferred" />
<service uid="extractor" type="::ctrlCamp::SExtractObj" >
<inout key="source" uid="composite">
<extract from="@values.myImage" />
<extract from="@values.myMesh" />
</inout>
<out group="target">
<key uid="image"/>
<key uid="mesh"/>
</out>
</service>
<start uid="extractor" />
<update uid="extractor" />