model.push_back(newCodeCompletionEntry("setDmxValueForRotation(float rotation, unsigned char dmxValue)","void","Für den Motor der die Rotation nach links oder rechts des Spiegels bestimmt. Wenn der Spiegel nicht nach links oder rechts gedreht ist entspricht dies einenm dmxWert von 128 und einer Rotation von 0 Grad. Rotation nach rechts entspricht positiven graden und nach links negativen. Aus einem Winkel und den dazugehörigen DMX-Wert lassen sich alle anderen DMX-Werte berechnen."));
model.push_back(newCodeCompletionEntry("computeDmxValuesForPointTo(float x, float y, float z = 0)","PointToResult","Diese Methode bestimmt die DMX-Werte für die beiden Motoren wenn der Scanner auf einen bestimmten Pnkte auf der Karte zeigen soll. Diese Funktion gibt ein PointToResult Objekt zurück."));
}
if(type=="PointToResult"){
model.push_back(newCodeCompletionEntry("dmxValueForTilt","brightness_t","Der DMX-Wert den der Motor der für die Neigung zuständig ist annehmen soll, um auf den Punkt zu leuchtet, wenn canBeReached true ist."));
model.push_back(newCodeCompletionEntry("dmxValueForRotation","brightness_t","Der DMX-Wert den der Motor der für die Rotation zuständig ist annehmen soll, um auf den Punkt zu leuchtet, wenn canBeReached true ist."));
model.push_back(newCodeCompletionEntry("canBeReached","bool","Dieser Boolean gibt an, ob der Punkt vom Scanner überhaupt erreicht werden kann."));
"Der DMX-Wert den der Motor der für die Rotation zuständig ist annehmen soll, um auf den Punkt zu leuchtet, wenn canBeReached true ist."));
model.push_back(newCodeCompletionEntry("canBeReached","bool","Dieser Boolean gibt an, ob der Punkt vom Scanner überhaupt erreicht werden kann."));
}
if(type=="MqttClient"||type=="Mqtt"){
model.push_back(newCodeCompletionEntry("connect(\"example.com\", 1883 /*port*/);","void","Verbindet sich mit dem Server host am angegebenen Port."));
model.push_back(newCodeCompletionEntry("publishMessage(\"your/topic\", message);","void","Veröffentlicht unter der gegebenen Topic einen Wert."));
model.push_back(newCodeCompletionEntry("publishValue(\"your/topic\", value);","void","Veröffentlicht unter der gegebenen Topic einen Wert. Der Wert wird auf dem Mqtt Server gespeichert."));
"Abboniert eine Topic, jedes mal, wenn dort eine Nachricht veröffentlich wird, wird das Callback aufgerufen"));
model.push_back(newCodeCompletionEntry("subscribe<int /* or float or bool */>(\"your/topic\", [this](auto value){\n\n });","void",
"Abboniert eine Topic, jedes mal, wenn dort eine Nachricht veröffentlich wird, wird das Callback aufgerufen. Das Callback wird mit dem angegeben Typ "
"aufgerufen. Kann die Nachricht nicht zu diesem konvertiert werden, wird das Callback nicht aufgerufen."));
model.push_back(newCodeCompletionEntry("subscribe<int /* or float or bool */>(\"your/topic\", [this](auto message, bool hasValue, auto value){\n\n });","void",
"Abboniert eine Topic, jedes mal, wenn dort eine Nachricht veröffentlich wird, wird das Callback aufgerufen. Das Callback wird mit dem angegeben Typ "
"aufgerufen. hasValue ist wahr, wenn die Konvertierung erfolgreich war."));
model.push_back(newCodeCompletionEntry("spotify->","SpotifyState","Ein Object, dass alle zu Spotify gehörigen Daten enthält."));
model.push_back(newCodeCompletionEntry("controlPoint->","ControlPoint","Der ControlPoint der in dem Map View gesetzt werden kann."));
model.push_back(newCodeCompletionEntry("Scanner::getByName(\"yourName\")","IScanner","Mit dieser Funktion kann man sich ein Scanner Objekt für einen bestimmten Name geben lassen. Dieses ist über alle Modules das Selbe."));
model.push_back(newCodeCompletionEntry("Scanner::getByNameOrCreate(\"yourName\")","IScanner","Mit dieser Funktion kann man sich ein Scanner Objekt für einen bestimmten Name geben lassen, bzw. wenn es dieses nicht gibt, wird eins erzeugt. Dieses ist dann über alle Modules das Selbe."));
model.push_back(newCodeCompletionEntry("IScanner * scanner = Scanner::getByName(\"yourName\")","IScanner","Deklariert eine Scanner Variable die einen per Namen referenzierten Scanner speichert."));
"Mit dieser Funktion kann man sich ein Scanner Objekt für einen bestimmten Name geben lassen, bzw. wenn es dieses nicht gibt, wird eins erzeugt. Dieses "
"ist dann über alle Modules das Selbe."));
model.push_back(
newCodeCompletionEntry("IScanner * scanner = Scanner::getByName(\"yourName\")","IScanner","Deklariert eine Scanner Variable die einen per Namen referenzierten Scanner speichert."));
model.push_back(newCodeCompletionEntry("MqttClient mqtt{\"test.com\", 1883}","MqqtClient","Deklariert einen Mqtt Klienten der sich mit dem Server test.com auf dem Port 1883 verbindet."));
"Deklariert einen Mqtt Klienten mit einer last will message, diese wird gesendet, falls die Verbindung verloren geht. Mit der connnect Methode kann man "
"sich dann später mit den Server verbinden."));
}
voidskipWhitespaces(int&cursor,QTextDocument*d){
...
...
@@ -582,10 +607,10 @@ QString CodeEditorHelper::getType(QString variable, int pos){
* @brief runInController executes the func in the controller thread, if the controller thread is stopped, the controller thread must be started to execute the function