Commit 0bf96ffc authored by Leander Schulten's avatar Leander Schulten

Hot Reload: Add support for Folgo Hot Reload. Add documentation how to install...

Hot Reload: Add support for Folgo Hot Reload. Add documentation how to install and run Felgo Hot Reload
parent 765540d2
Pipeline #259272 passed with stage
in 12 minutes and 15 seconds
......@@ -26,6 +26,9 @@ Features:
8. Linux only: Die folgenden Pakete werden zum Bauen der Lichtsteuerung benötigt: `gcc make cmake autoconf libtool automake libasound2-dev libgl1-mesa-dev mesa-common-dev`. Man kann sie z.B. durch den Befehl `sudo apt install gcc make cmake ...` installieren.
9. Im Ordner `src/lib` das Script `build_libs.sh` ausführen.
#### Felgo Hot Reload
Mit [Felgo Hot Reload](https://felgo.com/updates/release-3-4-0-qml-hot-reload-with-felgo-live) aktualisiert sich die Oberfläche automatisch, wenn man die QML Dateien (in diesen wird die Oberfläche beschrieben) ändert, sodass das Entwickeln von Oberflächen beschleunigt wird, da nicht immer die ganze Lichtsteuerung neu kompiliert und gestartet werden muss, um sich die Änderungen aus den QML Dateien anzusehen. Zum Einrichten von Felgo Hot Reload siehe [hier](documentation/FelgoHotReload.md).
##### Git Branches
Kleinere Sachen und Bugfixes werden direkt auf den `master` Branch committed. Soll etwas released werden, wird der `master` Branch in den `windows-release` Branch gemerged. Dann wird automatisch eine neue Version gebaut und die Lichtsteuerung updated sich selber.
Im `windows-release` Branch kann der Code auch für den Release angepasst werden (keine Tests, Treiber immer laden, ...).
......
# Felgo Hot Reload
Only works on Linux and Mac, not on Windows (because Felgo distributes only 32 Bit binaries, but all dependencies are in 64 Bit)
## Installation and Use
1. Visit the [Felgo Download Page](https://felgo.com/download) and click _Download_. You have to create an account if you don't have one :(
2. Install Felgo
3. Open Felgo and login with your account
4. Multiple Windows will open. Go to the main window (QtCreator) and open the Lichtsteuerung Project (If you have enabled _File_ -> _Sessions_ -> _Restore last session on startup_ the project is maybe already there).
5. Go to the _Projects_ tab, select the _Lichtsteuerung_ project in the upper left corner. A _Configure Project_ page should now appear. Select the _Felgo Desktop_ item and click _Configure Project_.
6. Open the _Lichtsteuerung.pro_ file in the Qt Creator, uncomment the line `DEFINES += WITH_FELGO` (remove the `#` at the beginning of the line) and save the file.
7. Switch to the _FelgoLiveServer_ Window (if there is no _FelgoLiveServer_ window, hit the _Live_ button on the left side of the Qt Creator Window). If a window with the name _FelgoLiveClient_ opens or exists, close that window.
8. Disable the option _Auto Start_ in the _FelgoLiveServer_ Window
9. Now click the _Run_ button in the Qt Creator window (the _Lichtsteuerung_ target should be selected in the display symbol over the _Run_ button). The _Lichtsteuerung_ should now gets builded and start with hot reloading (you first see a window with a connect button, do nothing until you see the Lichtsteuerung)
10. Now you can edit the QML files. If you save a file, the UI gets automatically updated (it can took up to 10 seconds if the Lichtsteuerungs window is not in focus)
QT += qml quick networkauth network websockets
# DEFINES += WITH_FELGO
contains(DEFINES, WITH_FELGO) {
message("Run with Felgo")
CONFIG += felgo felgo-live
}
CONFIG += c++1z force_debug_info
TARGET = Lichtsteuerung
......
......@@ -57,6 +57,11 @@
#include <id.h>
#include <limits>
#ifdef WITH_FELGO
#include <FelgoApplication>
#include <FelgoLiveClient>
#endif
#ifdef Q_OS_WIN
#include <winuser.h>
#endif
......@@ -244,6 +249,10 @@ int main(int argc, char *argv[]) {
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
CatchingErrorApplication app(argc, argv);
QQmlApplicationEngine engine;
#ifdef WITH_FELGO
FelgoApplication felgo;
felgo.initialize(&engine);
#endif
ControlPanel::setQmlEngine(&engine);
ProgramBlockEditor::engine = &engine;
Driver::dmxValueModel.setQMLEngineThread(engine.thread());
......@@ -409,8 +418,10 @@ int main(int argc, char *argv[]) {
engine.rootContext()->setContextProperty(QStringLiteral("SlideShow"), &SlideShow::get());
engine.rootContext()->setContextProperty(QStringLiteral("SettingsFile"), &settingsFileWrapper);
engine.rootContext()->setContextProperty(QStringLiteral("System"), &SystemVolume::get());
#ifndef WITH_FELGO
engine.load(QUrl(QStringLiteral("qrc:/qml/main.qml")));
engine.load(QUrl(QStringLiteral("qrc:/qml/SlideShowWindow.qml")));
#endif
// laden erst nach dem laden des qml ausführen
......@@ -451,5 +462,8 @@ int main(int argc, char *argv[]) {
Modules::ModuleManager::singletone()->controller().start();
//ControlPanel::getLastCreated()->addDimmerGroupControl();
#ifdef WITH_FELGO
FelgoLiveClient liveClient(&engine);
#endif
return CatchingErrorApplication::exec();
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment