Documentation/Labs/ModulesAndEvents
From Slicer Wiki
Home < Documentation < Labs < ModulesAndEvents
This page keeps track of Greg's notes on how to hook up module events
Motivation
- Getting things working in Slicer can be hairy
- There is not always the right kind of documentation for what you want to do.
- The goal of this page is to take some notes on this process for eventual inclusion in the developer documentation.
- Scope is limited to C++ development
MRML nodes
- MRML nodes are used to store persistent state. You need to use MRML nodes if you want to save and restore slicer scenes.
- MRML nodes can emit events. To emit an event, do ??
- MRML nodes can receive events. To receive an event, define a function called ProcessMRMLEvents(). This function receives all requested events as an (object, event id) pair. The event id might or might not be unique.
Logic classes
- Logic classes implement processes. They serve purposes such as:
- Implement helper logic for widget classes, so that all business logic can be performed without the need of a GUI
- Implement filter-type logic, which manipulates MRML nodes without need for persistent state
- There may be multiple logic classes associated with a single MRML node
MRML nodes and multithreading
- Slicer is implemented as a single threaded process
- Therefore, there is no need to implement transaction logic to ensure atomicity when modifying multiple MRML nodes