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/6/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 | [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)      | alpha              |
0060 | [5](https://invent.kde.org/sdk/cutehmi/-/tree/5)| [![Build Status](https://invent.kde.org/sdk/cutehmi/badges/5/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 ### Building only specified products
0087 
0088 By default Qbs will compile all the products (tools and extension), even if they
0089 are not needed for a project. To build only specific product use
0090 `--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).
0091 For example following command will build only `CuteHMI.Examples.SimpleView.2`
0092 extension and its dependencies, using default configuration.
0093 
0094 ```
0095 qbs -f CuteHMI.qbs -p CuteHMI.Examples.SimpleView.2
0096 ```
0097 
0098 Find out more about build options on
0099 [Qbs documentation website](https://doc.qt.io/qbs/index.html).
0100 
0101 ## Getting started
0102 
0103 For an introduction you may want to run one of the existing examples. In CuteHMI
0104 everything is either a tool or an extension, therefore examples are also provided
0105 as extensions. Their names start with "CuteHMI.Examples" prefix. The most basic
0106 example `CuteHMI.Examples.SimpleView.2` can be run with `cutehmi.view.4` tool by
0107 issuing following command.
0108 
0109 ```
0110 cutehmi.view.4 CuteHMI.Examples.SimpleView.2
0111 ```
0112 
0113 To create your own project you can simply copy one of the examples to your own
0114 subdirectory in `extensions` directory (e.g. `Me/MyExtension.0`) and edit
0115 `project.qbs` file. Change `name` property to match extension name (e.g. `name:
0116 "Me.MyExtension.0"`)
0117 
0118 After that you can use `--force-probe-execution` Qbs option or delete build
0119 directory and rebuild whole project. Your extension should be installed and it
0120 can be run with `cutehmi.view.4` tool.
0121 
0122 ```
0123 cutehmi.view.4 Me.MyExtension.0
0124 ```
0125 
0126 More methodical approach is to use one of the templates. The process of creating
0127 custom extensions is described in more detail [here](extensions/).
0128 
0129 Examples are listed in the documentation along with other extensions.
0130 
0131 
0132 ## Internals
0133 
0134 Directory structure of the project is organized as follows.
0135 
0136 - *_sass*, *_layouts* - directories used by GitHub Pages.
0137 - *awkgward* - code maintanance scripts (don't bother).
0138 - *dev* - development notes (irrelevant).
0139 - [doc](doc/) - a place where documentation shall be.
0140 - [extensions](extensions/) - libraries and QML extensions.
0141 - [external](external/) - directory containing "external" libraries.
0142 - *extra* - various stuff related to the project, such as T-shirts.
0143 - *qbs* - Qbs modules and imports.
0144 - [tools](tools/) - executable programs.
0145 
0146 ![Dependencies between tools, extensions and external libraries](doc/images/general_dependencies.svg)
0147 
0148 Two most important directories are [extensions](extensions/) and
0149 [tools](tools/). Extensions combine functionality of QML extensions and
0150 standard libraries. They can be utilized by end-user applications, but they can
0151 be also linked with each other. Some extensions may depend on
0152 [external](external/) libraries.
0153 
0154 ## Quick links
0155 
0156 - [Repository](https://invent.kde.org/sdk/cutehmi)
0157 - [Website](https://cutehmi.kde.org/)
0158 - [Documentation](https://cutehmi.kde.org/docs/)
0159