aboutsummaryrefslogtreecommitdiffstats
path: root/doc/codesnippets/doc/src/snippets/scriptdebugger.cpp
blob: dcb81b5321191b96323da72b67172de504dd9b54 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64

#include <QtGui>
#include <QtScript>
#include <QtScriptTools>

// Perhaps shpw entire example for getting debugger up with script
int main(int argv, char **args)
{
    QApplication app(argv, args);

     QString fileName("helloscript.qs");
     QFile scriptFile(fileName);
     scriptFile.open(QIODevice::ReadOnly);
     QTextStream stream(&scriptFile);
     QString contents = stream.readAll();
     scriptFile.close();

    QScriptEngine *engine = new QScriptEngine();

    QScriptEngineDebugger *debugger = new QScriptEngineDebugger();
    debugger->attachTo(engine);

    // Set up configuration with only stack and code
    QWidget *widget = new QWidget;
//![0]
    codeWindow = debugger.widget(QScriptEngineDebugger.CodeWidget)
    stackWidget = debugger.widget(QScriptEngineDebugger.StackWidget)

    layout = QHBoxLayout()
    layout.addWidget(codeWindow)
    layout.addWidget(stackWidget)
//![0]

//![1]
    continueAction = debugger.action(QScriptEngineDebugger.ContinueAction)
    stepOverAction = debugger.action(QScriptEngineDebugger.StepOverAction)
    stepIntoAction = debugger.action(QScriptEngineDebugger.StepIntoAction)

    toolBar = QToolBar()
    toolBar.addAction(continueAction)
//![1]
    toolBar->addAction(stepOverAction);
    toolBar->addAction(stepIntoAction);

    layout->addWidget(toolBar);
    continueAction->setIcon(QIcon("copy.png"));

    debugger->setAutoShowStandardWindow(false);

    widget->setLayout(layout);
    widget->show();

     QPushButton button;
     QScriptValue scriptButton = engine->newQObject(&button);
     engine->globalObject().setProperty("button", scriptButton);

//![2]
     debugger.action(QScriptEngineDebugger.InterruptAction).trigger()
     engine.evaluate(contents, fileName)
//![2]

    return app.exec();
}