Hi,

yes, it works and I did it too at first. However, it is considered as the quick 
and dirty approach by our micro service guru.
The catch is that the service access cannot be logged correctly as it will 
appear as if the core itself requested the service.
You have to decide whether you can live with this minor flaw or not. ;)

Best,
Stefan
________________________________________
Von: [email protected] [[email protected]] im Auftrag von Miklos Espak 
[[email protected]]
Gesendet: Montag, 31. März 2014 06:09
An: Kislinskiy, Stefan
Cc: mitk-users
Betreff: Re: [mitk-users] registering property extensions from a plugin

Hi Stefan,

I made this initialisation in the plugin activator, so I have access to the 
plugin context.

Meanwhile I noticed that you can pass a specific module context to the 
CoreServices::GetPropertyExtensions() function. However, plugin context you 
cannot pass. This gives compile error:


void QmitkCommonAppsApplicationPlugin::start(ctkPluginContext* context)

{

  ...

  mitk::IPropertyExtensions* propertyExtensions = 
mitk::CoreServices::GetPropertyExtensions(context);

  ...

}


So I did this:


  // Get the MitkCore module context.

  us::ModuleContext* mitkCoreContext = 
us::ModuleRegistry::GetModule(1)->GetModuleContext();


  mitk::IPropertyExtensions* propertyExtensions = 
mitk::CoreServices::GetPropertyExtensions(mitkCoreContext);


and this worked for me.

Cheers,
Miklos


On 30 March 2014 22:55, Kislinskiy, Stefan 
<[email protected]<mailto:[email protected]>> wrote:
Hi Miklos,

wow, I'm really happy that finally someone is using the property services. Hope 
you'll like them. :)

It is not possible to call us::GetModuleContext() from a plugin. Instead, just 
use the ctkPluginContext. It is a parameter of the start() method of your 
plugin activator class. If you need access to the context from other classes in 
your plugin, you need to store the context in a static class variable and make 
it accessible through a static class function.

See the activator class of the properties plugin for an example. I wrote a 
little templated helper function for convenient access to the property services 
which you can find in mitkGetPropertyService.h (in the same folder as the 
properties view activator class files). Instead of using the mitk::CoreServices 
class you would write:

mitk::IPropertyExtensions* extensions = 
mitk::GetPropertyService<mitk::IPropertyExtensions>();

if (extensions != NULL)
{
  // ...
}

Best,
Stefan

PS (FYI): You can control how the properties view should use the property 
services in its preferences.
________________________________________
Von: Miklos Espak [[email protected]<mailto:[email protected]>]
Gesendet: Sonntag, 30. März 2014 21:37
An: mitk-users
Betreff: [mitk-users] registering property extensions from a plugin

Hi,

we'd like to add a [0.0, 1.0] range constraint for an opacity property.

We did this in our plugin that all our applications depend on:


   mitk::IPropertyExtensions* propertyExtensions = 
mitk::CoreServices::GetPropertyExtensions();

   mitk::FloatPropertyExtension::Pointer opacityPropertyExtension = 
mitk::FloatPropertyExtension::New(0.0, 1.0);

   propertyExtensions->AddExtension("Image Rendering.Lowest Value Opacity", 
opacityPropertyExtension.GetPointer());

   propertyExtensions->AddExtension("Image Rendering.Highest Value Opacity", 
opacityPropertyExtension.GetPointer());

   propertyExtensions->AddExtension("black opacity", 
opacityPropertyExtension.GetPointer());


But this causes the following linker error:


[ 90%] Building CXX object 
Code/Gui/MITK/Plugins/uk.ac.ucl.cmic.gui.qt.commonapps/CMakeFiles/uk_ac_ucl_cmic_gui_qt_commonapps.dir/src/QmitkCommonAppsApplicationPlugin.cxx.o

Linking CXX shared library 
../../../../../bin/plugins/libuk_ac_ucl_cmic_gui_qt_commonapps.dylib

Undefined symbols for architecture x86_64:

"us::GetModuleContext()", referenced from:

QmitkCommonAppsApplicationPlugin::QmitkCommonAppsApplicationPlugin()in 
QmitkCommonAppsApplicationPlugin.cxx.o

QmitkCommonAppsApplicationPlugin::QmitkCommonAppsApplicationPlugin()in 
QmitkCommonAppsApplicationPlugin.cxx.o

ld: symbol(s) not found for architecture x86_64

collect2: ld returned 1 exit status

make[2]: *** [bin/plugins/libuk_ac_ucl_cmic_gui_qt_commonapps.dylib] Error 1

make[1]: *** 
[Code/Gui/MITK/Plugins/uk.ac.ucl.cmic.gui.qt.commonapps/CMakeFiles/uk_ac_ucl_cmic_gui_qt_commonapps.dir/all]
 Error 2

make: *** [all] Error 2

20:34:02: The process "/usr/bin/make" exited with code 2.

Error while building/deploying project NIFTK (kit: Debug)

When executing step 'Make'


Is there a way to access the property extensions from a plugin?

Thanks,
Miklos


------------------------------------------------------------------------------
_______________________________________________
mitk-users mailing list
[email protected]<mailto:[email protected]>
https://lists.sourceforge.net/lists/listinfo/mitk-users


------------------------------------------------------------------------------
_______________________________________________
mitk-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mitk-users

Reply via email to