CuteHMI
|
CuteHMI is an open-source HMI (Human Machine Interface) software written in C++ and QML, using Qt libraries as a framework.
CuteHMI is essentially a collection of libraries, plugins and executables, referred to as "extensions" and "tools", glued together by Qbs components. To create custom project one creates his own first-class extension, which may depend on any number of other extensions and uses specific tool to load its components. This makes CuteHMI very flexible framework with many use cases.
Note: While most of the project uses GNU Lesser General Public License version 3, some files are distributed under different licenses.
Consecutive branch numbers denote successive iterations of the project. Iteration of the project is related to build framework (repository layout and Qbs items). Extensions and tools are versioned independently and they have their own development status.
Branch "master" is a development branch. Development branch may contain source code that is undergoing deep changes, rendering it unusable. Branch "master" is merged frequently into a branch, which has "alpha" status. This branch may also undergo deep modifications, but it should be usable. Branches with "perpetual beta" status are stable in a sense that no backward incompatible changes shall be made to them. For new projects it is recommended to use "alpha" branch. By the time the project is finished branch should also stabilize.
CuteHMI.qbs
file with QtCreator and simply build it.Remember that Qbs caches Probe items' results, so if the library is installed after the project has been configured with Qbs, it will not show up. You can use --force-probe-execution
option to force Qbs to not use cached results.
NOTE: Qbs versions 2.1.0-2.2.1 are affected by a bug, which will result in errors at project configuration stage. Please use unaffected Qbs version.
By default Qbs will compile all the products (tools and extension), even if they are not needed for a project. To build only specific product use --products | -p
build option. For example following command will build only CuteHMI.Examples.SimpleView.2
extension and its dependencies, using default configuration.
Find out more about build options on Qbs documentation website.
For an introduction you may want to run one of the existing examples. In CuteHMI everything is either a tool or an extension, therefore examples are also provided as extensions. Their names start with "CuteHMI.Examples" prefix. The most basic example CuteHMI.Examples.SimpleView.2
can be run with cutehmi.view.4
tool by issuing following command.
To create your own project you can simply copy one of the examples to your own subdirectory in extensions
directory (e.g. Me/MyExtension.0
) and edit project.qbs
file. Change name
property to match extension name (e.g. name: "Me.MyExtension.0"
)
After that you can use --force-probe-execution
Qbs option or delete build directory and rebuild whole project. Your extension should be installed and it can be run with cutehmi.view.4
tool.
More methodical approach is to use one of the templates. The process of creating custom extensions is described in more detail here.
Examples are listed in the documentation along with other extensions.
Directory structure of the project is organized as follows.
Two most important directories are extensions and tools. Extensions combine functionality of QML extensions and standard libraries. They can be utilized by end-user applications, but they can be also linked with each other. Some extensions may depend on external libraries.