This is a test case of using PMOC on OpenSceneGraph Libraries.
In order to edit qmls at runtime (using qtcreator) setup environment variable PMOC_NOCACHE (to disable qml caching)
| OSG>=3.4 | | Qt5.5 | | Qscintilla | | MSVC2013 x64 or x86 |
closed lib and dll (msvc2013 and linux gcc644.9.2) are in the lib directory: copy the good one in bin in order to make it work (may i free the sources? mmh, perhaps..)
pmoc aims toward C++ runtime graphical manipulation through QML and javascript. It generates stubs and skeletons of Qt Components to describe the logic of your libraries in a common graphical environment. Further, once customized, components can easily be reused in your own QtQuick application.
- Use pmoc on your headers
- Build a generic QtQuick development environment (editor) fitted for your targetted libraries
- Customized (if needed) generated components/boxes (C++)
- Skin components/boxes in the editor at runtime (QML+javascript method wrapping)
- Reuse boxes in your own products
###PMOC MetaLibrary: How to use the stuff (need some design improvement...:/)
- PMOCSAFEADDOBJECT(INOBJECTREF,OUTPMOCINSTANCE) : inject native in pmoc system
- PMOCINSTANCE.model->createQQModel(&PMOCINSTANCE) : embed instance in the associated manipulation box (no graphics)
- PMOCINSTANCE.model->getGuiComponent(QQuickView*,PMOCINSTANCE,PARENTITEM=0,RELATIONNAME="") : embed instance in the associated manipulation box and return qtquick item node (and set relation with its parent for us in editor mainly).
- see PMOCINSTANCE.model (MetaQQuickClass) for further methods
- Keep your libraries Qt free
- Load Qt plugin only when required
- Interact easily with native objects at runtime
- Pipelined
- QtQuick only
- Not multiview (only one QtQuick view per model)
- miss some wrapping when classes are forward declared (should move back to global even if it'd break the pipeline)
|Native object boxing (put native objects in QT boxes)| |Javascript/QML method wrapping| |Hierarchical QML composition pattern| |Nodal logic ( generates "Actions" :copy/paste+fx ambiguities leverage)|| |Pointer life cycle ( via config file,ex: handle ref_pointer/normalpointer)| |Multiple inheritance via delegation(seams to handle virtual inheritance)|
|No polymorphism in javascript| |No macro parsing (work on copies if you're using in headers)| |Templates, operators are not handled| |Static and namespace functions not handled yet|