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