This is a test case of using PMOC on OpenSceneGraph Libraries. In order to edit qmls at runtime (using qtcreator) you will have to disable cache (plugins managment menu)
| OSG>=3.4 | | Qt5.5 | | Qscintilla | | MSVC2013 x64 or x86 |
https://drive.google.com/file/d/0BxIH-jcsgYDdTkxlR1ppUFBXVmM/view?usp=sharing
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
(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|
|polymorphism is simulated| |No macro parsing (work on copies if you're using in headers)| |Templates, operators are not handled|