ParaQ:API: Difference between revisions
(→Design) |
(→Goals) |
||
Line 8: | Line 8: | ||
* Provide a way for the GUI to update correctly if a scripting client is modifying the server. | * Provide a way for the GUI to update correctly if a scripting client is modifying the server. | ||
The above two points basically encapsulate a two way interaction. | The above two points basically encapsulate a two way interaction. | ||
* Be designed to minimize traffic with the server. | |||
* Decouple GUI from Server Manager to allow using of Qt Designer. | |||
* To provide functionality such that multiple inheritance of VTK & Qt objects is not necessary (toolkits have different object management schemes). | |||
* Allow GUI to control behavior. Meaning, Server Manager or API doesn't impose behavior on the GUI. | |||
=Design= | =Design= |
Revision as of 16:21, 21 October 2005
Overview
We need to establish the architecture for how the GUI code interacts with the Server Manager.
Goals
The goals of designing this architecture are:
- Establish a general method for how the GUI talks to the Server Manager.
- Provide a way for the GUI to update correctly if a scripting client is modifying the server.
The above two points basically encapsulate a two way interaction.
- Be designed to minimize traffic with the server.
- Decouple GUI from Server Manager to allow using of Qt Designer.
- To provide functionality such that multiple inheritance of VTK & Qt objects is not necessary (toolkits have different object management schemes).
- Allow GUI to control behavior. Meaning, Server Manager or API doesn't impose behavior on the GUI.
Design
The GUI will call the Server Manager directly. It is likely a set of "helper" or "convenience" functions that can serve multiple parts of the GUI will be made to help the GUI talk to the Server Manager.
The bulk of our design time was spent on how the Server Manager updates the GUI. An "Event Relay" will be used to relay events from the Server Manager, and present them to the GUI in the way the GUI likes.
The Event Relay presents the GUI with two classes of events:
- Server Manager Events
- Object Events
Server Manager Events includes these events:
- New Object instantiated
- Object deleted
- selection/pick
Object Events include these events:
- object property changed
- input/output object connection
- object progress
Assumptions
It is assumed that Compound Filters, Linked Views, and Histogram Data will be implemented in the Server Manager and the GUI can use the aforementioned events to get updated when those change.
Implementation Details
The Event Relay will contain Qt signals that Qt objects in the GUI can connect to. The signal signatures will be Qt friendly. For example, a property changed signal will have parameters of which property of an object changed and what the value of the property is. The Event Relay will translate events if necessary into a form the GUI would like. For example, if the Server Manager sends an event about object connections, the Event Relay will change that into an object input/output connection signal. In other words, Server Manager level events will be translated to object level events. The vtkEventQtSlotConnect class will be used by the Event Relay. It contains a generic signal signature to connect to. The Event Relay will change the parameters into ParaQ frirendly parameters.