Yes, but it’s not only for the interactor resources. Splitting your code into a
module and a plugin is a good design decision in general (reusability and so
on, you name it). Unfortunately we have lots of anti-examples in MITK, but
ideally you would place as much as possible in modules (even GUI stuff) and
keep the plugins as minimal as possible, i.e., they are just the “run-time
dynamic interface” with the BlueBerry framework.
Best,
Stefan
From: Nathan Lay [mailto:[email protected]]
Sent: Dienstag, 11. April 2017 00:39
To: Dinkelacker, Stefan
Subject: Re: [mitk-users] How to load StateMachine and Config?
Hi Stefan,
Thanks for the prompt response. So does that mean that I need to create a
module just so my plugin can load its interactor XML files from a Module?
I just want to make a plugin. I don't want to make a module. But the source
code says that the XML files for interactors are loaded via Modules.
Best regards,
Nathan Lay
On Mon, Apr 10, 2017 at 5:51 PM, Dinkelacker, Stefan
<[email protected]<mailto:[email protected]>>
wrote:
Hi Nathan,
it seems like you're confusing modules with plugins. See the simulation module
and plugin for a working example. The XML files are located in the *module*
(see [1]). The interactor is created in the org.mitk.gui.qt.simulation *plugin*
though, by loading the resources from the simulation module (see [2]).
GetModuleContext() is intended for modules.
Best,
Stefan
[1]
https://github.com/MITK/MITK/blob/master/Modules/Simulation/files.cmake#L27-L30
[2]
https://github.com/MITK/MITK/blob/master/Plugins/org.mitk.gui.qt.simulation/src/internal/QmitkSimulationView.cpp#L44-L53
________________________________
Von: Nathan Lay <[email protected]<mailto:[email protected]>>
Gesendet: Montag, 10. April 2017 22:37
An: [email protected]<mailto:[email protected]>
Betreff: [mitk-users] How to load StateMachine and Config?
Hello list,
I'm having trouble convincing MITK to load the StateMachine and Config XML
files owing to what appears to be issues with pulling resources from Modules.
I get this error in particular: "Resource not valid. State machine pattern not
found:BoxInteractions.xml"
I've read the 2-3 different Wiki articles from the MITK Wiki covering
interactors. None of them describes anything having to do with Modules and
never mentions that MITK treats the XML file names as keys to some resource
backend. I haven't been able to find how to package my interactor XML files
into a Module and looking at other plugins with interactors doesn't seem to
reveal anything terribly obvious. I see that the echotrack plugin uses a module
named MitkUS and multilabelsegmentation uses
us::GetModuleContext()->GetModule() to load its interactor XML files. The
default behavior of these loading functions seem to use GetModuleContext().
All I know is that us::GetModuleContext() returns NULL for my module. I thought
it was because of my chosen name is org.mitk.boxannotator ... so I re-made the
plugin and named it org.mitk.core.boxannotator. No luck there. And it doesn't
work when trying to pass one of the various modules stored in
us::ModuleRegistry (e.g. MitkCore, CppMicroServices, etc... names that don't
seem to be listed anywhere on the wiki).
I wish I could just change StateMachineContainer::LoadBehavior to fallback to
simple std::fstream but with MITK having its own special stream class
ModuleResourceStream and something called ModuleResource, it's not obvious to
me how to do this.
Any ideas?
I really appreciate the extensive documentation of MITK on the Wiki and it
seems to be one of the few extensible platforms with an acceptably fast DICOM
image loader. No offense to Slicer3D, but it's very slow with loading DICOMs!
ITK-SNAP seems to be the fastest, but it is not extensible (not visibly
documented anyway). But I do currently feel that some aspects of MITK are
overdesigned. This may be a newbie's impression, but I have to say that I feel
very cheated when I try to tell my interactor to load some XML files by file
name (or even absolute path) only to find that it doesn't work because MITK is
trying to do something clever with some kind of Module resource backend.
Also, I see that there is a QmitkBoundingObjectWidget. I would very much like
to re-use this widget for placing and modifying bounding cuboids (since it
already lets you place them), but it doesn't seem to want you to inherit it and
it's not obvious to me how to attach an interactor to the BoundingObjects it
places so that I can do things like resize or move them. Is there any hope here
or am I better off just ignoring this widget and sticking with interactors? I'm
currently (trying) sticking a BoundingObjectGroup into DataStorage with my
interactor attached to its DataNode.
Best regards,
Nathan Lay
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
mitk-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mitk-users