Ruby applet dataEngine service operation call

Richard Dale richard.j.dale at gmail.com
Tue Aug 18 13:45:38 CEST 2009


On Tue, Aug 18, 2009 at 9:24 AM, Cédric<kde at xfou.com> wrote:
> Well,
>
> Thanks for your answer Aaron.
>
> I think your first suggestion is the write one. I tried to implement this
> code with the Javascript binding and in the tutorial page
> (http://techbase.kde.org/Development/Tutorials/Plasma/JavaScript/CheatSheet)
> they state this :
>
> DO NOT use plasmoid.dataEngine("engine name").serviceForSource("source
> name") - you will get a dummy service back (in 4.2 at least).
> Instead, use plasmoid.service("engine name", "source name")
>
> and so in javascript the second method works but in ruby the service method
> does not seems to exist.
As far as I can see serviceForSource() exists in the Ruby bindings and
should work:

$ rbqtapi -rplasma_applet -mserviceForSource
Plasma::Service* Plasma::DataEngineScript::serviceForSource(const QString&)
Plasma::Service* Plasma::DataEngine::serviceForSource(const QString&)

So we are calling in on an actual Plasma::DataEngine here, not a
DataEngineScript. If I this debugging print out the various items
created like this:

engine = dataEngine("tasks")
sources = engine.sources
pp engine
p sources
service = engine.serviceForSource(engine.sources[1])
pp service
p service.operationNames
close_description = service.operationDescription("close")
 pp close_description
service.startOperationCall(close_description)

I get:

#<Plasma::DataEngine:0xa8ef8f3c
  children=Array (15 element(s)),
  metaObject=#<Qt::MetaObject:0x0 className=TasksEngine,
superClass=#<Qt::MetaObject:0x0 className=Plasma::DataEngine>>,
  objectName=Window Information,
  sources=nil,
  valid=true,
  icon=user-desktop>

["71303776", "65011736", "52428825", "60817446", "16777241",
"67108924", "69206018", "44040217", "37748765", "27262978",
"46137441", "58720281", "62914562", "71303343", "56623131"]

#<Plasma::Service:0xa8ef69e4
  parent=#<TasksEngine:0x0 objectName="Window Information">,
  metaObject=#<Qt::MetaObject:0x0 className=Plasma::Service,
superClass=#<Qt::MetaObject:0x0 className=QObject>>,
  objectName=nil>

[]

#<KDE::ConfigGroup:0xa8ef52ec>

So is that Plasma::Service a dummy one? How can I tell? Is doesn't
seem to have got any operation names associated with it.

-- Richard


More information about the Plasma-devel mailing list