Hello again, 
I have been trying to implement this in my plugin but I am encountering some 
issues.

step by step:

1) I added the xml files to the correct resoures/Interaction folder. 

2) on the files.cmake I added the following 

set(RESOURCE_FILES 
  Interactions/StatemachineTest.xml 
)

set(CPP_FILES )

usFunctionEmbedResources(CPP_FILES
  LIBRARY_NAME "org_my_plugin"
  ROOT_DIR resources
  FILES 
    Interactions/StatemachineTest.xml 
    Interactions/StatemachineTestConfig.xml
)

foreach(file ${SRC_CPP_FILES}) ....


3) on my org_mitk_plugin_Activator I added these lines with success: 
#include <usModuleInitialization.h>

US_INITIALIZE_MODULE("My Module", "org_mycompany_myplugin")

namespace mitk { ....

4) on my cpp file I dont know where to add the us::ModuleContext* moduleContext 
= us::GetModuleContext(); stuff...
Right now I have it on the CreateQtPartControl( QWidget *parent ){} method. 

Is this correct? 



5) I am not sure about the  someInteractor = mitk::MyOwnInteractor::New();
How do I define my own interactor for my QmitkRenderWindow? shouldn I just use


  m_Controls.m_window->GetInteractor(); ?


Thank you again for such fast replies, Sascha and Markus!
Your insights on this topic are invaluable!


On Monday, December 2, 2013 19:53 CET, Alyson Roger <[email protected]> 
wrote: 
 
> It worked!
> 
> I embedded the resources files into the CPP_FILES by declaring :
> 
> 
> set(CPP_FILES )
> 
> usFunctionEmbedResources(CPP_FILES
> LIBRARY_NAME "org_mycompany_myplugin"
> ROOT_DIR resources
> FILES Interactions/MyStateMachine.xml Interactions/MyStateMachineConfig.xml
> )
> 
> 
> then the SRC_CPP_FILES  extracts them from CPP_FILES.
> 
> Now the DataNode acts in the QmitkRenderWindows as I defined it in my own
> state machine.
> 
> 
> Thank you very everyone for the help!
> 
> 
> 
> 2013/12/2 Sascha Zelzer <[email protected]>
> 
> >  Hi,
> >
> > I added the mitk-users list CC so other people might benefit from the
> > discussion.
> >
> > As Markus wrote, the relative paths are important to keep, since the MITK
> > libraries will look at the resource tree of each loaded module and extract
> > all Interactions/*.xml files which are considered to contain interaction
> > state machine or event config xml files.
> >
> > Try the following:
> >
> > usFunctionEmbedResources(SRC_CPP_FILES
> >                          LIBRARY_NAME "org_mycompany_myplugin"
> >                          ROOT_DIR resources
> >                          FILES Interactions/MyStateMachine.xml 
> > Interactions/MyStateMachineConfig.xml
> >                         )
> >
> >
> > The generated C++ file will be appended to the SRC_CPP_FILES variable,
> > which generally holds all the cpp files for your plug-in (filled in the
> > files.cmake file). Do not clear it before calling the
> > usFunctionEmbedResources macro.
> >
> > Best,
> >
> > Sascha
> >
> >
> >
> > On 12/02/2013 07:14 PM, Alyson Roger wrote:
> >
> >  Thank you Sascha. I think that the third solution is the most convenient
> > for me. Where do I have to call the usFunctionEmbedResources() ?
> >
> >  I tried to use it into the files.cmake of my project this way :
> >
> > set(module_srcs)
> > usFunctionEmbedResources(module_srcs
> > LIBRARY_NAME "org_mycompany_myplugin"
> > ROOT_DIR resources/Interactions
> > FILES   MyStateMachine.xml  MyStateMachineConfig.xml
> > )
> >
> >  But it still doesn't find the resources.
> >
> >  Thanks,
> >
> >
> >
> > 2013/12/2 Sascha Zelzer <[email protected]>
> >
> >>  Hi,
> >>
> >> the explanations from Markus and Christian were tailored for MITK

> >> "Modules" which automatically get a module context via our CMake build
> >> system.
> >>
> >> In your case, you are developing a plug-in, which is not a traditional
> >> MITK Module and hence does not get a module context automatically and also
> >> does not evaluate the RESOURCE_FILES CMake variable in the files.cmake 
> >> file.
> >>
> >> You have three options:
> >>
> >> 1.) Split your code into a module and a plug-in. The module will contain
> >> the Qt independent interaction stuff.
> >>
> >> 2.) Embed your xml file as a Qt resource and nag the MITK developers to
> >> enhance the interaction API such that it can also handle std::istream
> >> objects to read xml files from.
> >>
> >> 3.) Make your plug-in a hybrid by manually adding "module capabilities".
> >> This is what you already did partially by giving it a module context. For
> >> embedding resources "the module way", you need to call the
> >> usFunctionEmbedResources() CMake function yourself to embed your xml files.
> >> See its documentation here:
> >>
> >>
> >> http://docs.mitk.org/nightly-qt4/group__MicroServicesCMake.html#ga28d86dce8ac374e6563ba3d5fbca225a
> >>
> >>
> >> Best,
> >> Sascha
> >>
> >>
> >>
> >> On 12/02/2013 05:51 PM, Alyson Roger wrote:
> >>
> >>  Thank you Markus. The problem I find now is that the linker does not
> >> find the definition of GetModuleContext() in my plugin. After reading a
> >> little more, I've tried to configure a module context in my plugin this 
> >> way:
> >>
> >> #include <usModuleInitialization.h>
> >>
> >> US_INITIALIZE_MODULE("My Module", "org_mycompany_myplugin")
> >>
> >>  I added those two lines in my plugin activator source file. Now the
> >> linked finds the definition of GetModuleContext, but following the code in
> >> debug mode I get to usModule.cpp line 269:
> >>
> >> if (d->resourceTreePtrs.empty())
> >>   {
> >>     return ModuleResource();
> >>   }
> >>
> >>  where it finds an empty resource tree.
> >>
> >>  I don't know if I'm not adding correctly the xml files (I'm doing it
> >> exactly as you specified) or I'm not defining the module in my plugin
> >> correctly in the activator.
> >>
> >>  Thanks,
> >>
> >> Aly
> >>
> >>
> >>
> >>
> >> 2013/12/2 Markus Engel <[email protected]>
> >>
> >>>  Hi Alyson and Miguel,
> >>>
> >>>
> >>>
> >>> In order for MITK to correctly find your statmachine patterns you need
> >>> to use the MITK resource mechanism as described in
> >>>
> >>> http://docs.mitk.org/nightly-qt4/InteractionMigration.html#IncludeFiles.
> >>>
> >>>
> >>>
> >>> What you basically have to do is put your XML file in a folder following
> >>> this pattern:
> >>>
> >>> <your-plugin-folder>/resources/Interactions/
> >>>
> >>> (By the way, the names of the folders have to be like that!)
> >>>
> >>>
> >>>
> >>> In your files.cmake of your plugin you need to put the following line:
> >>>
> >>> set(RESOURCE_FILES Interactions/dummyStatemachine.xml )
> >>>
> >>> Note that you must NOT add the ‘resources’ to this path!
> >>>
> >>>
> >>>
> >>> When you have instantiated your interactor and try to load the
> >>> statemachine you will use the method LoadStateMachine()
> >>>
> >>> that has two parameters. The first one is the name of the XML file, the
> >>> second one is the module in which the XML file is actually located.
> >>>
> >>> The code you posted below will look for the XML file in the Core as no
> >>> module has been given.
> >>>
> >>> The correct way to do it would be:
> >>>
> >>>
> >>>
> >>> us::ModuleContext* moduleContext = us::GetModuleContext();
> >>>
> >>> someInteractor = mitk::MyOwnInteractor::New();
> >>>
> >>> someInteractor->LoadStateMachine( “MyPattern.xml”,
> >>> moduleContext->GetModule() );
> >>>
> >>> someInteractor-> SetEventConfig ( “MyConfig.xml”,
> >>> moduleContext->GetModule() );
> >>>
> >>>
> >>>
> >>>
> >>>
> >>> In order for your interactor to receive events from the renderwindow you
> >>> need to register it with the cppMicroServices:
> >>>
> >>>
> >>>
> >>> us::GetModuleContext()->RegisterService<mitk::InteractionEventObserver>(
> >>> someInteractor.GetPointer(), us::ServiceProperties() );
> >>>
> >>>
> >>>
> >>> This should make your interactor work correctly.
> >>>
> >>>
> >>>
> >>> I hope this helps you on your way to your first interactor!
> >>>
> >>>
> >>>
> >>> Greets,
> >>>
> >>> Markus
> >>>
> >>>
> >>>
> >>> *Von:* Alyson Roger [mailto:[email protected]]
> >>> *Gesendet:* Montag, 2. Dezember 2013 14:55
> >>> *Cc:* [email protected]
> >>> *Betreff:* Re: [mitk-users] Add a new state machine
> >>>
> >>>
> >>>
> >>> Hello Mitk users,
> >>>
> >>> I have been through the mitk code and I can't find where the
> >>> PointSet.xml is referenced to be found in the Qt project.
> >>>
> >>> Does someone have a clue to help us solving this state machine issue?
> >>>
> >>> Thank you,
> >>>
> >>>
> >>>
> >>> 2013/11/29 Miguel Nunes <[email protected]>
> >>>
> >>> Hello MITK Team,
> >>>
> >>> I also have this problem, but unfortunately I haven't reach Alyson
> >>> stage.
> >>>
> >>> I have gone through the step10 example and the documentation but I have
> >>> no idea how to configure the interaction for my own QmitkRenderWindow. I
> >>> tried setting it up with a  VtkInteractor that I have in my stand alone 
> >>> vtk
> >>> application, but it seems mitk ignores that, and goes back in using the
> >>> interactor found in stdmultiwidget thing.
> >>>
> >>> so, my questions are:
> >>> 1) Where should the xml files be for my plugin?
> >>> 2) what have I to do to connect to those xml files?
> >>> 3) what have I to do to connect those interactions (mouse and keyboard)
> >>> with the qmitkrenderwindow of my plgin?
> >>>
> >>> Thank you,
> >>> Miguel
> >>>
> >>>  Em 29-11-2013 16:53, Alyson Roger escreveu:
> >>>
> >>>   Hi Mailing List,
> >>>
> >>> I am trying to do something simple : use my own State Machine in a .xml
> >>> file for my plug in in  the mitkWorkBench. A part in the tutorial that is
> >>> not clear to me is how I include my state machine into the
> >>> GlobalInteraction. I know the code must be in the form
> >>>
> >>> m_CurrentInteractor = mitk::PointSetDataInteractor::New();
> >>>
> >>> m_CurrentInteractor->LoadStateMachine("PointSet.xml");
> >>>
> >>> m_CurrentInteractor->SetEventConfig("PointSetConfig.xml");
> >>>
> >>>
> >>> As Step 10 of the tutorial.
> >>> But I would like to know where do I have to put my .xml file so the
> >>> LoadStateMachine does not crash when I run my Plug In with my state
> >>> machine. I intended to use InteractionEventHandler::AddEventConfig but it
> >>> didn't work.
> >>>
> >>> I really hope that someone will be able to help me because I have been
> >>> stuck during days with the interaction part, which is new for me.
> >>>
> >>> Thank you very much
> >>>
> >>>
> >>>
> >>> --
> >>>
> >>> *Alyson ROGER*
> >>>
> >>> *[email protected] <[email protected]>*
> >>>
> >>>
> >>>
> >>> ------------------------------------------------------------------------------
> >>>
> >>> Rapidly troubleshoot problems before they affect your business. Most IT
> >>>
> >>> organizations don't have a clear picture of how application performance
> >>>
> >>> affects their revenue. With AppDynamics, you get 100% visibility into your
> >>>
> >>> Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics 
> >>> Pro!
> >>>
> >>> http://pubads.g.doubleclick.net/gampad/clk?id=84349351&iu=/4140/ostg.clktrk
> >>>
> >>>
> >>>
> >>> _______________________________________________
> >>>
> >>> mitk-users mailing list
> >>>
> >>> [email protected]
> >>>
> >>> https://lists.sourceforge.net/lists/listinfo/mitk-users
> >>>
> >>>
> >>>
> >>>
> >>>
> >>> ------------------------------------------------------------------------------
> >>> Rapidly troubleshoot problems before they affect your business. Most IT
> >>> organizations don't have a clear picture of how application performance
> >>> affects their revenue. With AppDynamics, you get 100% visibility into
> >>> your
> >>> Java,.NET, & PHP application. Start your 15-day FREE TRIAL of
> >>> AppDynamics Pro!
> >>>
> >>> http://pubads.g.doubleclick.net/gampad/clk?id=84349351&iu=/4140/ostg.clktrk
> >>> _______________________________________________
> >>> mitk-users mailing list
> >>> [email protected]
> >>> https://lists.sourceforge.net/lists/listinfo/mitk-users
> >>>
> >>>
> >>>
> >>>
> >>>
> >>> --
> >>>
> >>> *Alyson ROGER*
> >>>
> >>> ingénieur diplômée INSA de Lyon
> >>> Génie Electronique
> >>>
> >>> 06 20 60 07 47
> >>>
> >>> *[email protected] <[email protected]>*
> >>>
> >>>
> >>
> >>
> >> --
> >> *Alyson ROGER*
> >>
> >> ingénieur diplômée INSA de Lyon
> >> Génie Electronique
> >>
> >> 06 20 60 07 47
> >>
> >> *[email protected] <[email protected]>*
> >>
> >>
> >>
> >>
> >
> >
> > --
> > *Alyson ROGER*
> >
> > ingénieur diplômée INSA de Lyon
> > Génie Electronique
> >
> > 06 20 60 07 47
> >
> > *[email protected] <[email protected]>*
> >
> >
> >
> >
> 
> 
> -- 
> *Alyson ROGER*
> 
> ingénieur diplômée INSA de Lyon
> Génie Electronique
> 
> 06 20 60 07 47
> 
> *[email protected] <[email protected]>*
 
 
 
-- 
VRVis Zentrum fuer Virtual Reality und Visualisierung 
Forschungs-GmbH                  FN: 195369h, HG Wien
Donau-City-Strasse 1              +43(0)1 20501 30100
A-1220 Wien, Austria        web:<http://www.vrvis.at> 


------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349351&iu=/4140/ostg.clktrk
_______________________________________________
mitk-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mitk-users

Reply via email to