-
Notifications
You must be signed in to change notification settings - Fork 4
Description
I have been considering how to extract a full standalone igtl Client from the OpenIGTLinkIF repo, as discussed in Boston (http://wiki.na-mic.org/Wiki/index.php/2016_Winter_Project_Week/Projects/TrackedUltrasoundStandardization).
For testing and possibly for use in applications, we would like the GUI from OpenIGTLink as Slicer-independent code. There should also be possible to reuse more basic parts of the library, either the full Client (no GUI), or only the converter classes. Suggested dependencies below:

All the Slicer-independent code could ultimately be included in the OpenIGTLink repo itself, every module as a conditional build.
The Client itself can be separated from Slicer like shown in the diagram:

The main idea is to remove the inheritance from MRMLNode ( currently Connector, Converterts and Devices all are MRMLNodes), and instead use aggregation, i.e. Slicer will listen to the Client and create MRMLNodes wrapping the igtl devices/connectors as needed. The Converters could be an implementation detail hidden from external users. The Manager would contain much of the code currently present in vtkSlicerOpenIGTLinkIFLogic. A data layer duplicating some of MRML's features would have to be implemented (i.e. the Nodes), but this can be made as simple as possible, with no persistence (for now).
I am very interested in comments to this proposal, in particular:
- Do this (first) design outlined look sound, what can be improved?
- Who is interested in the resulting code, and at what level?
- Can the result eventually be merged back into Slicer? This determines whether or not we should refactor the Slicer binding layer or simply extract the code of interest.