Q: Howto expose one QObject-inherited object to JS namespace ?
Ian Reinhart Geiser
geiseri at sourcextreme.com
Thu Aug 4 16:17:27 CEST 2005
On Thursday 04 August 2005 05:47 am, Kun Xi wrote:
> Hello Geiser,
>
> Sorry to bother you again. I have spend several hours in googling and
> digging into the kjsembed source code, tring to figure out how to
> expose the C++ object to JS namespace.
No problems what so ever.
> The background of this question is soc-kde-scripting project. I have
> exposed the KABCore instance mCore as "Contacts" and I found several
> interesting things:
>
> 1) Only public slot function can be accessed even the JSSecurityPolicy
> is set to CapabilityAll. Is this that designed deliberatedly ?
Yes, this is because the bindings access them without inheritance. There
currently is no good way to expose non-public slots with the bindings.
> 2) To access the addressBook in KABCore, I added the following lines
> in KABCore::publishObject() :
> {
> KJSEmbedPart *js = KPIM::KJSEngine::instance();
>
> JSSecurityPolicy::setDefaultPolicy( JSSecurityPolicy::CapabilityAll );
>
> KJS::Object root = js->addObject(this, "Contacts");
> js->addObject( mAddressBook, root, "addressBook" );
> }
There are some stupid problems with namespaces and QObjects currently. Is
this code up somewhere so I could take a look at it? This is a "funny" area,
and I might need to see more of the context of what is going on.
> The JS could access Contacts, but complains that the addressBook is
> unamed( KAB::AddressBook ). It is recoganized inherited from QObject.
>
> My question is: How could I expose mAddressBook ? Should I develop a
> wrapper class or use JSOpaqueProxy to delegate mAddressBook ? Could
> you be kind enough to provide some small examples ?
Hmm, I have to think about this. In v3 you can "extend" bindings, but I am
not sure if that part is public. I am trying to make it suck less in v4, but
I am not sure where the best route is. Basicly what happens is you crate the
QObject version of your bindings, and then add the non-slot methods manually.
Again this is somewhere I would need to see the current context, but I think
its possible. Verbose, and you may decide to hate me afterwords, but
possible :)
Cheers
-ian reinhart geiser
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://mail.kde.org/pipermail/kde-soc/attachments/20050805/e46eee32/attachment.pgp
More information about the Kde-soc
mailing list