Seite 1 von 1

Scriptausführung der QScriptEngine unterbrechen

Verfasst: 15. Juli 2010 14:57
von Haqim
Hallo zusammen,

ich möchte mein Programm an dem ich gerade arbeite scriptbar machen. Dazu verwende ich die JavaScript Anbindung von Qt also die QScriptEngine.

Das funktioniert soweit auch. Nur habe ich jetzt das Problem, dass ich aus dem Script heraus ein Popup/Meldungsfenster oder ähnliches öffnen möchte. Dies habe ich über einen Aufruf eines Slots meiner C++ Klasse geregelt.

Allerdings möchte ich sobald im Script dieser Slot aufgerufen wird die Scriptverarbeitung pausieren, solange bis der Popup vom User wieder weggeklickt wurde. Dies geht standardmässig leider nicht, ich sehe zwar den Popup aber der Rest vom Script läuft weiter.

Um dies zu realisieren habe etwas mit dem QScriptEngineDebugger herumgespielt. Dieser bietet zwar die Möglichkeit die Scriptverarbeitung zu unterbrechen, jedoch scheint die ScriptEngine in einem anderen Thread zu laufen als der Rest vom Programm, wodurch nicht gewährleistet ist, dass die Scriptverarbeitung auch unterbrochen wird sobald ich den Popup-Slot aufrufe.

Kennt evtl. jemand eine bessere Möglichkeit, wie ich dieses "Unterbrechen" der Scriptausführung realisieren kann?

Danke schoneinmal für eure Hilfe .....

Verfasst: 15. Juli 2010 16:01
von upsala
Nein, du möchtest keine Pause, sondern dein Slot schickt ein Signal wenn es wieder weitergeht deine Script arbeitet dann eine hierdurch gestartete Funktion ab.

Verfasst: 19. Juli 2010 08:56
von Haqim
Hallo,

danke für die Antwort, leider ist das von dir vorgeschlagene Vorgehen keine Option für mich.

Ich gebe den Benutzern von meinem Program einen festen Katalog an Script-Funktionen und Script-Objekten mit die in dem Script ausgeführt werden dürfen.

Welche Script-Funktion aufgerufen wird hängt von der Aktion des Users in der GUI bzw. dessen Eingaben ab. Jetzt soll es aber möglich sein, dass der User durch sein Script x solcher Popups auslösen kann, wenn er der Meinung ist dass er das braucht.

Dadurch ist es mir leider nicht möglich, wie von dir vorgeschlagen die Script-Funktion in mehrere aufzuteilen. Ganz einfach weil ich im C++ Teil nicht vorhersehen kann wie oft der User im Endeffekt den Popup aufruft.