Zuble QML Types   |  Zuble C++ Classes   |  Table of Contents

Zuble Framework Core Plugin

zblcore QML Extension Plugin

The Zuble core QML extension plugin is a shared library written in C++ that provides a set of low-level QML objects designed to support Zuble's QML stack. The plugin provides a number of application services including:

Zuble plugins can be used independently of the zbl runtime host and QML stack. It allows custom Qt applications to use the Zuble plugins. This feature also supports Zuble QML extension object unit testing. Be advised that the plugin exposes a number of QML and XML attack surfaces which are magnified when used outside the SNAP application environment and thus care must be taken in plugin deployment.

{Zuble Core Plugin Block Diagram}

Zbl Object

The Zbl object is the primary QML API to the core plugin. It is present in the global scope of QML documents that include the Zuble core plugin module. The Zbl object is a thread-based singleton, meaning there exists a separate, individual Zbl object in each Zuble script thread's global scope as well as in the main application GUI thread's global scope.

Logger

Zuble replaces the standard Qt application log handler with a custom designed handler that allows output in optional JSON format which can be read by Zuble's log reader application. The core plugin uses log categories to separate log output from individual QML extension objects for filtering purposes.

[link to logger page]

I/O Wrapper Objects

Zuble provides a set of QML wrappers to several of Qt's low-level I/O classes so that QML programs can use them to perform I/O operations, and a custom data model (ZTableModel) for passing data to visual objects and between threads. I/O operations should only be performed in background script threads since they can block, which interrupts user interaction with the application if performed in the main GUI thread.

Data Model

ZTableModel is a thread-safe data model that can be utilized to pass data between Zuble's background script threads and visual objects of the QML scene in the main GUI thread. It's used by Zuble's log manager and the log reader application.