Embedded scripting language in Qt application
-
Hi everyone. I'm currently in a research phase of building an application that will allow users to control objects using a scripting language, specially javascript.
To give you a small example of what I'm trying to do is a drawing application.
For example the user want to draw a circle with center in x,y , radius r and color c. Normally I can provide input fields for all this info and a push button to draw the object. But I want to provide an easy way to create 50 circles at different position without pushing the draw button 50 times. The best way I could think is using a scripting language(javascript). The user could do something like this:@
//javascript code
var y=10;
var r=3;
var c="#FF0000";
for(i=0;i<50;i++){
drawCircle(i+10,y,r,c);
}@where the function drawCircle(x,y,r,c) should appellate drawCircleCPP(x,y,r,c) in C++(Qt)
So what I'm looking, are some tutorials and more info about how should I implement this, what libraries do you recommend me, cause this is new to me and I need to start from something.
Thanks
-
As Andre say QtScript is the way to go here. Have a thorough read of the "scripting docs":http://doc.qt.nokia.com/latest/scripting.html.
The key to solving this is in the choice of what objects to expose form the C++ side and the environment in which they operate. We have done this for controlling some hardware devices and also for controlling the analysis of data from scripts.
-
[quote author="ZapB" date="1301566923"]It's just that QtScript now happens to use the same JS backend as WebKit. Although this is likely to be replaced with the V8 JS engine in the future.[/quote]
It will be interesting to see how V8 will do. Probably will help a lot with large script files where you need to execute a lot of actions.
-
ok. I've read some of the info in the documentation and some examples I think I made a cleat idea about how to implement this, but I have a new question.
Is there a javascript editor widget that I could implement in my application> I want to be able to change colors, show line numbers , similar to the one that Qt Creator is using??
-
thanks again Andre and ZapB. So far the best thing that I found is this post on qtcentre: http://www.qtcentre.org/threads/25501-QtScript-script-text-editor-for-Qt-4.4.3-with-Syntax-Highlighter?p=121992#post121992
I'll try and search on qt-interest mailing list . Let me know if you find something.
-
This is the "thread":http://lists.qt.nokia.com/pipermail/qt-interest/2010-November/029332.html I was thinking of. I have not tried the attached example, though it looks like it should work if you read the rest of that thread.
For some reason the thread seems to be split in the archives. Just search for "Generic Highlighter" in November 2010 to find all parts.
-
[quote author="ZapB" date="1301577716"]This is the "thread":http://lists.qt.nokia.com/pipermail/qt-interest/2010-November/029332.html I was thinking of. I have not tried the attached example, though it looks like it should work if you read the rest of that thread.
For some reason the thread seems to be split in the archives. Just search for "Generic Highlighter" in November 2010 to find all parts.[/quote]
Thanks again. I found something. It gave me a few errors. I will try later and see if I can manage to make it work. For those who are interested in the source code can be found in
@qt-creator/src/plugins/texteditor/generichighlighter@
-
2beers: You most likely want the QMLJSEditor code (in src/plugins/qmljseditor/), not the generic highlighter one... the first actually parses QML and Javascript while the latter does regexp matching only.