Warning, /sdk/cutehmi/README.md is written in an unsupported language. File is not indexed.

0001 # CuteHMI
0002 
0003 <!-- CUT HERE -->
0004 <!-- TravisCI badge hack that kills Doxygen (1.8.14) warning "Unexpected html tag <img> found within <a href=...> context". -->
0005 <div class="doxygen_github_hack" style="font-size: 0px">
0006 
0007 [//]: # (\htmlonly)
0008 
0009 [![License: LGPL 3.0](https://img.shields.io/badge/license-LGPL%203.0-blue.svg)](https://opensource.org/licenses/LGPL-3.0)
0010 [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT)
0011 [![Build Status](https://invent.kde.org/sdk/cutehmi/badges/7/pipeline.svg)](https://invent.kde.org/sdk/cutehmi/pipelines)
0012 [![Coverity Scan Build Status](https://scan.coverity.com/projects/20988/badge.svg)](https://scan.coverity.com/projects/cutehmi)
0013 [![CodeFactor Grade](https://img.shields.io/codefactor/grade/github/michpolicht/CuteHMI)](https://www.codefactor.io/repository/github/michpolicht/cutehmi/overview/master)
0014 [![Matrix](https://img.shields.io/matrix/cutehmi:kde.org?server_fqdn=kde.modular.im)](https://webchat.kde.org/#/room/#cutehmi:kde.org)
0015 [![OpenSSF Best Practices](https://bestpractices.coreinfrastructure.org/projects/6733/badge)](https://bestpractices.coreinfrastructure.org/projects/6733)
0016 
0017 [//]: # (\endhtmlonly)
0018 </div>
0019 <!-- CUT HERE -->
0020 
0021 CuteHMI is an open-source HMI (Human Machine Interface) software written in C++
0022 and QML, using Qt libraries as a framework.
0023 
0024 CuteHMI is essentially a collection of libraries, plugins and executables,
0025 referred to as "extensions" and "tools", glued together by Qbs components. To
0026 create custom project one creates his own first-class extension, which may
0027 depend on any number of other extensions and uses specific tool to load its
0028 components. This makes CuteHMI very flexible framework with many use cases.
0029 
0030 ![Sample application built with CuteHMI](doc/images/demo.png)
0031 
0032 Note: While most of the project uses GNU Lesser General Public License version
0033 3, some files are distributed under different licenses.
0034 
0035 ## Branches
0036 
0037 Consecutive branch numbers denote successive iterations of the project.
0038 Iteration of the project is related to build framework (repository layout and
0039 Qbs items). Extensions and tools are versioned independently and they have their
0040 own [development status](doc/development-statuses.md).
0041 
0042 Branch "master" is a development branch. Development branch may contain source
0043 code that is undergoing deep changes, rendering it unusable. Branch "master" is
0044 merged frequently into a branch, which has "alpha" status. This branch may also
0045 undergo deep modifications, but it should be usable. Branches with
0046 "perpetual beta" status are stable in a sense that no backward incompatible
0047 changes shall be made to them. For new projects it is recommended to use "alpha"
0048 branch. By the time the project is finished branch should also stabilize.
0049 
0050 <!-- CUT HERE -->
0051 <!-- TravisCI badge hack that kills Doxygen (1.8.14) warning "Unexpected html tag <img> found within <a href=...> context". -->
0052 <div class="doxygen_github_hack" style="font-size: 0px">
0053 
0054 [//]: # (\htmlonly)
0055 
0056 | Branch                                          | Build status                                                                                                                   | Development status |
0057 |-------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------|--------------------|
0058 | [master](https://invent.kde.org/sdk/cutehmi)    | [![Build Status](https://invent.kde.org/sdk/cutehmi/badges/master/pipeline.svg)](https://invent.kde.org/sdk/cutehmi/pipelines) | pre-alpha          |
0059 | [7](https://invent.kde.org/sdk/cutehmi/-/tree/7)| [![Build Status](https://invent.kde.org/sdk/cutehmi/badges/7/pipeline.svg)](https://invent.kde.org/sdk/cutehmi/pipelines)      | alpha              |
0060 | [6](https://invent.kde.org/sdk/cutehmi/-/tree/6)| [![Build Status](https://invent.kde.org/sdk/cutehmi/badges/6/pipeline.svg)](https://invent.kde.org/sdk/cutehmi/pipelines)      | perpetual beta     |
0061 
0062 [//]: # (\endhtmlonly)
0063 </div>
0064 <!-- CUT HERE -->
0065 
0066 
0067 ## Compiling
0068 
0069 1. Get the Qt toolkit. Open-source and commercial editions can be obtained from
0070 https://www.qt.io/. Qt can also be shipped with Linux distribution.
0071 
0072 2. Open `CuteHMI.qbs` file with QtCreator and simply build it.
0073 
0074 3. All extensions dependent on external libraries will be disabled, if these
0075 libraries could not be found. To make the process of finding the libraries
0076 and installing them under Windows easier, a set of Makefiles is provided, which
0077 allows the libraries to be build from sources. Check out
0078 [external](external/) libraries for more details. Each extension may
0079 provide individual documentation on how to build it.
0080 
0081 Remember that Qbs caches [Probe](http://doc.qt.io/qbs/qml-qbslanguageitems-probe.html)
0082 items' results, so if the library is installed after the project has been
0083 configured with Qbs, it will not show up. You can use `--force-probe-execution`
0084 option to force Qbs to not use cached results.
0085 
0086 __NOTE__: Qbs versions 2.1.0-2.2.1 are affected by a
0087 [bug](https://bugreports.qt.io/projects/QBS/issues/QBS-1772?filter=allissues), which
0088 will result in errors at project configuration stage. Please use unaffected Qbs
0089 version.
0090 
0091 ### Building only specified products
0092 
0093 By default Qbs will compile all the products (tools and extension), even if they
0094 are not needed for a project. To build only specific product use
0095 `--products | -p` [build option](https://doc.qt.io/qbs/cli-build.html#op-op-op-op-products-op-op-op-op-p-op-lt-op-name-op-gt-op-op-op-op-op-op-lt-op-name-op-gt-op-op-op-op-op-op-op-op-op).
0096 For example following command will build only `CuteHMI.Examples.SimpleView.2`
0097 extension and its dependencies, using default configuration.
0098 
0099 ```
0100 qbs -f CuteHMI.qbs -p CuteHMI.Examples.SimpleView.2
0101 ```
0102 
0103 Find out more about build options on
0104 [Qbs documentation website](https://doc.qt.io/qbs/index.html).
0105 
0106 ## Getting started
0107 
0108 For an introduction you may want to run one of the existing examples. In CuteHMI
0109 everything is either a tool or an extension, therefore examples are also provided
0110 as extensions. Their names start with "CuteHMI.Examples" prefix. The most basic
0111 example `CuteHMI.Examples.SimpleView.2` can be run with `cutehmi.view.4` tool by
0112 issuing following command.
0113 
0114 ```
0115 cutehmi.view.4 CuteHMI.Examples.SimpleView.2
0116 ```
0117 
0118 To create your own project you can simply copy one of the examples to your own
0119 subdirectory in `extensions` directory (e.g. `Me/MyExtension.0`) and edit
0120 `project.qbs` file. Change `name` property to match extension name (e.g. `name:
0121 "Me.MyExtension.0"`)
0122 
0123 After that you can use `--force-probe-execution` Qbs option or delete build
0124 directory and rebuild whole project. Your extension should be installed and it
0125 can be run with `cutehmi.view.4` tool.
0126 
0127 ```
0128 cutehmi.view.4 Me.MyExtension.0
0129 ```
0130 
0131 More methodical approach is to use one of the templates. The process of creating
0132 custom extensions is described in more detail [here](extensions/).
0133 
0134 Examples are listed in the documentation along with other extensions.
0135 
0136 
0137 ## Internals
0138 
0139 Directory structure of the project is organized as follows.
0140 
0141 - *_sass*, *_layouts* - directories used by GitHub Pages.
0142 - *awkgward* - code maintanance scripts (don't bother).
0143 - *dev* - development notes (irrelevant).
0144 - [doc](doc/) - a place where documentation shall be.
0145 - [extensions](extensions/) - libraries and QML extensions.
0146 - [external](external/) - directory containing "external" libraries.
0147 - *extra* - various stuff related to the project, such as T-shirts.
0148 - *qbs* - Qbs modules and imports.
0149 - [tools](tools/) - executable programs.
0150 
0151 ![Dependencies between tools, extensions and external libraries](doc/images/general_dependencies.svg)
0152 
0153 Two most important directories are [extensions](extensions/) and
0154 [tools](tools/). Extensions combine functionality of QML extensions and
0155 standard libraries. They can be utilized by end-user applications, but they can
0156 be also linked with each other. Some extensions may depend on
0157 [external](external/) libraries.
0158 
0159 ## Quick links
0160 
0161 - [Repository](https://invent.kde.org/sdk/cutehmi)
0162 - [Website](https://cutehmi.kde.org/)
0163 - [Documentation](https://cutehmi.kde.org/docs/)
0164