Part III MITK开发者手册
四、Blueberry——MITK应用程序框架
1. Blueberry Application Framework (关于工作台、视图、编辑器的概念)
(1)Workbench
(2)Workbench Window
(3)Workbench Page
(4)Workbench Part
<1> Editor
<2> View
(5)Perspective
2. Blueberry Examples
2-1 MinimalApplication
(1)插件的.h和.cpp文件
(2)Activator文件(org_mitk_example_gui_minimalapplication_Activator.h,
(3)org_mitk_example_gui_minimalapplication_Activator.cpp)(用于注册)
(4)扩展点(plugin.xml)
2-2 Multipleperspectives
2-3 SelectionService
(1)Qt Model/View selections
(2)MITK DataNode selections
2-4 ExtensionPointDefinition
(1)定义扩展点
1.在plugin.xml文件中,扩展点定义如下:
<extension-point id="org.mitk.example.extensionpointdefinition.changetext"
name="Change Text of Label" schema="schema/changetext.exsd"/>
指定了该扩展点的唯一标识id为org.mitk.example.extensionpointdefinition.changetext,在对该扩展点进行扩展时都需要声明该id。schema(即changetext.exsd)描述了此扩展点扩展的规则
2.在此插件的视图MinimalView中(MinimalView.h),通过ChangeTextRegistry来查找并注册所有可用的扩展
在CreateQtPartControl方法(MinimalView.cpp)中实现查找并注册可用扩展:
3.
这些根据扩展创建的按钮连接到ChangeText方法(槽函数),在该方法中去寻找扩展并创建对应的扩展处理实例,按照扩展类中定义的方式更改输入文本,并在另一个文本字段中输出更改后的文本。
(2)扩展扩展点
1.
在plugin.xml文件中,扩展定义如下,严格遵循changetext.exsd的扩展规则。
2.用两个类实现两个扩展
2-5 CustomerViewer
(1)创建CustomViewer应用程序插件
1.在Examples/Plugins中创建一个插件文件夹org.mitk.example.gui.customviewer,其中包含构成应用程序插件本身的所有文件。
(我们可以看到一个documentation和resources文件夹,一个包含所有源文件的src文件夹,一些与cmake相关的文件,以及一个与BlueBerry相关的插件扩展和扩展点声明的plugin.xml文件。)
2.在Examples/Plugins/PluginList.cmake中添加对应插件以进行插件注册。(注册自己)
3.在Examples/BlueBerryExampleLauncher/Configurations文件夹中创建文件CustomViewer.cmake,其中包含定义该应用程序所需的插件和描述。
4.
接下来,我们将一些源代码添加到我们的插件文件夹中。
1)
应用程序类berry::IApplication派生CustomViewer作为应用程序类,该类充当此应用程序运行时的入口点。它定义了应用程序在启动时和结束前的操作(start stop)。
Start()方法
在给定的display和WorkbenchAdvisor的情况下,创建并运行Blueberry工作台。
2)
从berry::QtWorkbenchAdvisor派生的CustomViewerWorkbenchAdvisor类
声明一个初始化窗口的perspective的ID字符串,并创建一个WorkbenchWindowAdvisor用于控制工作台主窗口的GUI创建
之后需要相应地自定义类CustomViewerWorkbenchWindowAdvisor。
3)
创建一个名为ViewerPerspective的类,该类派生自berry::IperspectiveFactory,是上述声明的由WorkbenchWindow显示的初始perspective
4)
需要一个ctkPluginActivator派生类,用于自定义插件的启动和停止
(插件还需要Activator文件来进行注册)
通过重写start()来注册给定ctkPluginContext的插件类。(包括application和perspective)
5.
为了将我们的应用程序及其透视图连接到BlueBerry框架中,我们必须在plugin.xml文件中声明相应的扩展点扩展。
(2)创建ViewerPerspective和DicomPerspective
1.自定义主窗口内容需要创建一个从berry::WorkbenchWindowAdvisor派生的自定义类CustomViewerWorkbenchWindowAdvisor,此类可控制WorkbenchWindow的布局,
2.
对于类似Tab-Widget切换透视图功能,我们定义了从QTabBar派生的QtPerspectiveSwitcherTabBar:
。。。
(3)完善相关功能
1)已有插件
对于数据管理器功能,我们直接使用已定义的插件视图org.mitk.views.datamanager,只需要将它添加到ViewerPerspective中的CreateInitialLayout()方法即可:
layout->AddStandaloneView("org.mitk.views.datamanager", false, berry::IPageLayout::LEFT, 0.3f, layout->GetEditorArea());
2)自定义插件
(4)自定义主窗口样式
为了自定义GUI,我们需要修改Blueberry应用程序使用的Qt-Stylesheets文件
我们必须处理berry::IQtStyleManager来告诉BlueBerry工作台使用特定的Qt-Stylesheet。这在CustomViewerWorkbenchAdvisor::Initialize()中完成:
。。。
2-6 ExamplePlugin
这说明,只要在主应用程序中通过指定扩展的应用程序ID以及通过相应的配置来组合不同的插件(plugin.xml中定义view),就可以很轻松地开发出属于我们自己的软件。
3. Blueberry Extension-Point Reference
(1)org.blueberry.osgi.applications
允许为BlueBerry平台扩展application
(2)org.blueberry.core.runtime.products
允许为Blueberry平台扩展一个或多个product。
(3)org.blueberry.ui.perspective
该扩展点用于将新的IperspectiveFactory类添加到工作台中
(4)org.blueberry.ui.views
该扩展点用于为工作台添加新的视图
(5)org.blueberry.ui.preferencePages
Workbench提供了一个通用的偏好设置对话框(在软件中以Ctrl+P打开),此扩展点用于在此对话框中添加和扩展偏好设置页面
(6)org.blueberry.ui.keywords
该扩展点定义了仅可被其他模式使用的关键词,如preferencePages
4. Blueberry Plugins
五、基于MitkWorkbench开发应用程序
1. 如何创建新的插件(Plugin)
1-1 插件生成器和插件
(1)MitkPluginGenerator命令
(2)使用插件生成器生成插件
1.定位到
M-install/MITK-build/bin/Release目录下会生成命令行工具MitkPluginGenerator.exe
2.
我们来运行命令:
MitkPluginGenerator -ps org.mitk.myplugin -vn "My View" -v HIT -o D:\MITK-tutorial\New_plugin
3.
直接将该插件复制到MITK-src/Plugins源码目录下
4.
并在PluginList.cmake中加入一句:
org.mitk.myplugin:ON
5.
然后我们就可以打开CMake-gui,点击Configure,随后就会出现编译myplugin的选项,继续Configure,然后Generate。
6.
从ctkPluginActivator派生
BERRY_REGISTER_EXTENSION_CLASS声明本插件中所有需要被插件框架识别和扩展的类,比如perspective、view等
1-2 MitkStep9:A New Plugin:RegionGrowing
1-3 编程提示