如何访问 CustusX 插件中的注册服务?

How to access a registrationService in a CustusX plugin?

在 custusX 的自定义插件中,我使用 mServices->patientModelService->getPatientLandmarks()->setLandmark 以编程方式更改一些地标。我想用已经存在的卷进行注册。

LandmarkPatientRegistrationWidgetorg.custusx.registration.method.landmarkperformRegistration()调用mServices.registrationService->doPatientRegistration()

但是,我不确定我获取 registrationService 实例的方法是否正确。

到目前为止,我已将 org_custusx_registration 添加到 CMakeLists.txt 文件,并添加了 "cxRegistrationService.h"<cxRegServices.h> 作为包含。

现在我可以定义一个 RegServices mRegServices 并在构造函数中用插件的 mContext 初始化它。

但是我是创建自己的注册服务还是访问现有的服务?我怎样才能访问已经 运行 的注册服务?

您的方法正确地重用了现有的 运行 注册服务。

CustusX 的默认设置注册了一个实现 cx::RegistrationService interface. The cx::RegServices helper class contains a cx::RegistrationServiceProxy 单个实例 (对象),它充当引用该对象的智能指针。服务对象仅由实现它们的插件创建:用户只需访问这些对象。

RegistrationServiceProxy 使用 ctkServiceTracker and related classes, see for example this tutorial on OSGi 第 5.4 节(在 java 中,但原则适用)来实现这一点。