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]>*
------------------------------------------------------------------------------
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