libplasma2: split anything
Marco Martin
notmart at gmail.com
Sat Jul 2 16:30:27 CEST 2011
On Monday 27 June 2011, Aaron J. Seigo wrote:
> On Sunday, June 26, 2011 19:25:08 Marco Martin wrote:
> > now, when we do loadApplet it would be loaded this new thing, and the
> > trick unfortunately is just moved on how to selectively create a qml
> > object tree (and eventually load a c++ plugin on a Plasmoid* subclass)
> > OR load instead the old plugin of Applet* implementation
in the branch now an Abstractapplet that is just a qobject, from which i
understood some things:
> when the plugin is loaded, the reulsting object should be a subclass of the
> new Applet, which would be either a QML item or a QGraphicsItem.
>
> for a QGraphicsView based shell, it shouldn't really care, as i understand
> it. both can be popped onto the scene.
they can, but what i think it won't work is the following:
they have to have a common base class to work
but they can't inherit from qobject since both already are
so,
* are kde plugin base classes forced to be a qobject?
* and, how much we need the base to be a qobject in libplasma? (same goes for
corona and containment)
> for a QML-only shell, it will just need to discard any QGraphicsItem
> entries. it can also filter on the X-Plasma-API entry.
>
> i suppose the Big Question then becomes: will we support QML applets
> written in C++ (which then export their QML root time via some API)? if so
a specialized api not needed, alll their properties/slots would just become
available
> then we'll probably end up needing to add X-Plasma-API= entries to even
> the C++ widgets that are implemented in QML, and a special api name for
> it, e.g.
> C++Declarative that Applet can treat as "regular C++". then the C++ QML
> Applet subclass would need a virtual method by which to return the root
> item, which seems a bit messy. thoughts?
another thing is, since the qml based library would have only one way to have
anything on screen, that is qml, the concept of the qml script engine really
doesn't work anymore, since there would a single big qml engine and qml scene
where all applets would hook into, regardless of their language, and a big
part of the script engine would have to go straight in that library (or a
corona wouldn't work at all)
in the light of this, i'm starting to think that the applet/corona/containment
triplet should have a completely different implementation with no base class
whatsoever, in the desktop files Plasma/Applet, Plasma/Containment would mean
things using the qgraphicsview api, the qml ones would be something else like
lasma/Plasmoid Plasma/PlasmoidContainer or any other name doesn't really
matter.
a qml only one could maybe still have Plasma/Applet,Plasma/Plasmoid to be kept
working with both.
all what depends from Applet, like pluginLoader,AppletScript would have
specialized implmentations in the specialized libraries.
the only thing that depends from applet is every now and then classes
searching from the applet package or the applet plugin name, like Svg
doesn't look extremely difficult to make it working anyways (searching them
with a qproperty instead of methids?)
--
Marco Martin
More information about the Plasma-devel
mailing list