diff options
Diffstat (limited to 'src/scripttools/debugging/qscriptdebugger.cpp')
-rw-r--r-- | src/scripttools/debugging/qscriptdebugger.cpp | 320 |
1 files changed, 244 insertions, 76 deletions
diff --git a/src/scripttools/debugging/qscriptdebugger.cpp b/src/scripttools/debugging/qscriptdebugger.cpp index 5597db0..58d707f 100644 --- a/src/scripttools/debugging/qscriptdebugger.cpp +++ b/src/scripttools/debugging/qscriptdebugger.cpp @@ -75,10 +75,6 @@ #include "qscriptdebuggerjob_p_p.h" #include "qscriptxmlparser_p.h" -#include "qscriptenginedebuggerfrontend_p.h" -#include "qscriptdebuggerbackend_p.h" -#include <QtScript/qscriptengine.h> - #include "private/qobject_p.h" #include <QtScript/qscriptcontext.h> @@ -94,6 +90,9 @@ #include <QtGui/qevent.h> #include <QtGui/qicon.h> #include <QtGui/qinputdialog.h> +#include <QtGui/qmenu.h> +#include <QtGui/qtoolbar.h> +#include <QtGui/qtooltip.h> QT_BEGIN_NAMESPACE typedef QPair<QList<qint64>, QList<qint64> > QScriptScriptsDelta; @@ -137,8 +136,8 @@ static bool scriptDebuggerEventCallback(void **data) \brief The QScriptDebugger class provides a Qt Script debugger. - \ingroup scripttools - \mainclass + \ingroup script + */ class QScriptDebuggerPrivate @@ -171,8 +170,8 @@ public: QScriptCompletionTaskInterface *createCompletionTask( const QString &contents, int cursorPosition, int frameIndex, int options); - QString toolTip(int frameIndex, int lineNumber, - const QStringList &path); + void showToolTip(const QPoint &pos, int frameIndex, + int lineNumber, const QStringList &path); static QPixmap pixmap(const QString &path); @@ -633,11 +632,49 @@ bool QScriptDebuggerPrivate::debuggerEvent(const QScriptDebuggerEvent &event) return !interactive; } +class QScriptToolTipJob : public QScriptDebuggerCommandSchedulerJob +{ +public: + QScriptToolTipJob(const QPoint &pos, int frameIndex, + int lineNumber, const QStringList &path, + QScriptDebuggerCommandSchedulerInterface *scheduler) + : QScriptDebuggerCommandSchedulerJob(scheduler), m_pos(pos), + m_frameIndex(frameIndex), m_lineNumber(lineNumber), m_path(path) + {} + + void start() + { + QScriptDebuggerCommandSchedulerFrontend frontend(commandScheduler(), this); + frontend.scheduleGetPropertyExpressionValue(m_frameIndex, m_lineNumber, m_path); + } + void handleResponse(const QScriptDebuggerResponse &response, int /*commandId*/) + { + QString tip = response.result().toString(); + if (tip.indexOf(QLatin1Char('\n')) != -1) { + QStringList lines = tip.split(QLatin1Char('\n')); + int lineCount = lines.size(); + if (lineCount > 5) { + lines = lines.mid(0, 5); + lines.append(QString::fromLatin1("(... %0 more lines ...)").arg(lineCount - 5)); + } + tip = lines.join(QLatin1String("\n")); + } + QToolTip::showText(m_pos, tip); + finish(); + } + +private: + QPoint m_pos; + int m_frameIndex; + int m_lineNumber; + QStringList m_path; +}; + /*! \reimp */ -QString QScriptDebuggerPrivate::toolTip(int frameIndex, int lineNumber, - const QStringList &path) +void QScriptDebuggerPrivate::showToolTip(const QPoint &pos, int frameIndex, + int lineNumber, const QStringList &path) { if (frameIndex == -1) { if (stackWidget) @@ -645,40 +682,8 @@ QString QScriptDebuggerPrivate::toolTip(int frameIndex, int lineNumber, else frameIndex = console->currentFrameIndex(); } - // ### cheating for now, need to use async API - QScriptEngineDebuggerFrontend *edf = static_cast<QScriptEngineDebuggerFrontend*>(frontend); - QScriptDebuggerBackend *backend = edf->backend(); - QScriptContext *ctx = backend->context(frameIndex); - if (!ctx || path.isEmpty()) - return QString(); - QScriptContextInfo ctxInfo(ctx); - if (ctx->callee().isValid() - && ((lineNumber < ctxInfo.functionStartLineNumber()) - || (lineNumber > ctxInfo.functionEndLineNumber()))) { - return QString(); - } - QScriptValueList objects; - int pathIndex = 0; - if (path.at(0) == QLatin1String("this")) { - objects.append(ctx->thisObject()); - ++pathIndex; - } else { - objects << ctx->scopeChain(); - } - for (int i = 0; i < objects.size(); ++i) { - QScriptValue val = objects.at(i); - for (int j = pathIndex; val.isValid() && (j < path.size()); ++j) { - val = val.property(path.at(j)); - } - if (val.isValid()) { - bool hadException = (ctx->state() == QScriptContext::ExceptionState); - QString str = val.toString(); - if (!hadException && backend->engine()->hasUncaughtException()) - backend->engine()->clearExceptions(); - return str; - } - } - return QString(); + QScriptDebuggerJob *job = new QScriptToolTipJob(pos, frameIndex, lineNumber, path, this); + scheduleJob(job); } /*! @@ -688,7 +693,7 @@ QScriptCompletionTaskInterface *QScriptDebuggerPrivate::createCompletionTask( const QString &contents, int cursorPosition, int frameIndex, int options) { return new QScriptCompletionTask( - contents, cursorPosition, frameIndex, frontend, + contents, cursorPosition, frameIndex, this, this, (options & QScriptCompletionProviderInterface::ConsoleCommandCompletion) ? console : 0); } @@ -877,8 +882,8 @@ void QScriptDebuggerPrivate::_q_goToLine() if (!view) return; bool ok = false; - int lineNumber = QInputDialog::getInteger(0, QObject::tr("Go to Line"), - QObject::tr("Line:"), + int lineNumber = QInputDialog::getInteger(0, QScriptDebugger::tr("Go to Line"), + QScriptDebugger::tr("Line:"), view->cursorLineNumber(), 1, INT_MAX, 1, &ok); if (ok) @@ -988,7 +993,8 @@ public: m_debugger->scriptsModel->addScript(scriptId, data); // ### could be slow, might want to do this in a separate thread - QString xml = qt_scriptToXml(data.contents(), data.baseLineNumber()); +// Q_ASSERT_X(false, Q_FUNC_INFO, "implement me"); + QString xml; // = qt_scriptToXml(data.contents(), data.baseLineNumber()); QScriptXmlParser::Result extraInfo = QScriptXmlParser::parse(xml); m_debugger->scriptsModel->addExtraScriptInfo( scriptId, extraInfo.functionsInfo, extraInfo.executableLineNumbers); @@ -1072,7 +1078,7 @@ class LoadLocalsJob : public QScriptDebuggerCommandSchedulerJob public: LoadLocalsJob(QScriptDebuggerPrivate *debugger, int frameIndex) : QScriptDebuggerCommandSchedulerJob(debugger), - m_debugger(debugger), m_frameIndex(frameIndex), m_state(0) {} + m_debugger(debugger), m_frameIndex(frameIndex) {} void start() { @@ -1104,7 +1110,6 @@ public: private: QScriptDebuggerPrivate *m_debugger; int m_frameIndex; - int m_state; }; class EmitStoppedSignalJob : public QScriptDebuggerJob @@ -1331,6 +1336,122 @@ void QScriptDebugger::setFrontend(QScriptDebuggerFrontend *frontend) } } +QAction *QScriptDebugger::action(DebuggerAction action, QObject *parent) +{ + switch (action) { + case InterruptAction: + return interruptAction(parent); + case ContinueAction: + return continueAction(parent); + case StepIntoAction: + return stepIntoAction(parent); + case StepOverAction: + return stepOverAction(parent); + case StepOutAction: + return stepOutAction(parent); + case RunToCursorAction: + return runToCursorAction(parent); + case RunToNewScriptAction: + return runToNewScriptAction(parent); + case ToggleBreakpointAction: + return toggleBreakpointAction(parent); + case ClearDebugOutputAction: + return clearDebugOutputAction(parent); + case ClearErrorLogAction: + return clearErrorLogAction(parent); + case ClearConsoleAction: + return clearConsoleAction(parent); + case FindInScriptAction: + return findInScriptAction(parent); + case FindNextInScriptAction: + return findNextInScriptAction(parent); + case FindPreviousInScriptAction: + return findPreviousInScriptAction(parent); + case GoToLineAction: + return goToLineAction(parent); + } + return 0; +} + +QWidget *QScriptDebugger::widget(DebuggerWidget widget) +{ + switch (widget) { + case ConsoleWidget: { + QScriptDebuggerConsoleWidgetInterface *w = consoleWidget(); + if (!w && widgetFactory()) { + w = widgetFactory()->createConsoleWidget(); + setConsoleWidget(w); + } + return w; + } + case StackWidget: { + QScriptDebuggerStackWidgetInterface *w = stackWidget(); + if (!w && widgetFactory()) { + w = widgetFactory()->createStackWidget(); + setStackWidget(w); + } + return w; + } + case ScriptsWidget: { + QScriptDebuggerScriptsWidgetInterface *w = scriptsWidget(); + if (!w && widgetFactory()) { + w = widgetFactory()->createScriptsWidget(); + setScriptsWidget(w); + } + return w; + } + case LocalsWidget: { + QScriptDebuggerLocalsWidgetInterface *w = localsWidget(); + if (!w && widgetFactory()) { + w = widgetFactory()->createLocalsWidget(); + setLocalsWidget(w); + } + return w; + } + case CodeWidget: { + QScriptDebuggerCodeWidgetInterface *w = codeWidget(); + if (!w && widgetFactory()) { + w = widgetFactory()->createCodeWidget(); + setCodeWidget(w); + } + return w; + } + case CodeFinderWidget: { + QScriptDebuggerCodeFinderWidgetInterface *w = codeFinderWidget(); + if (!w && widgetFactory()) { + w = widgetFactory()->createCodeFinderWidget(); + setCodeFinderWidget(w); + } + return w; + } + case BreakpointsWidget: { + QScriptBreakpointsWidgetInterface *w = breakpointsWidget(); + if (!w && widgetFactory()) { + w = widgetFactory()->createBreakpointsWidget(); + setBreakpointsWidget(w); + } + return w; + } + case DebugOutputWidget: { + QScriptDebugOutputWidgetInterface *w = debugOutputWidget(); + if (!w && widgetFactory()) { + w = widgetFactory()->createDebugOutputWidget(); + setDebugOutputWidget(w); + } + return w; + } + case ErrorLogWidget: { + QScriptErrorLogWidgetInterface *w = errorLogWidget(); + if (!w && widgetFactory()) { + w = widgetFactory()->createErrorLogWidget(); + setErrorLogWidget(w); + } + return w; + } + } + return 0; +} + QScriptDebuggerConsoleWidgetInterface *QScriptDebugger::consoleWidget() const { Q_D(const QScriptDebugger); @@ -1553,9 +1674,9 @@ QAction *QScriptDebugger::interruptAction(QObject *parent) const interruptIcon.addPixmap(d->pixmap(QString::fromLatin1("interrupt.png")), QIcon::Normal); interruptIcon.addPixmap(d->pixmap(QString::fromLatin1("d_interrupt.png")), QIcon::Disabled); QScriptDebugger *that = const_cast<QScriptDebugger*>(this); - that->d_func()->interruptAction = new QAction(interruptIcon, QObject::tr("Interrupt"), parent); + that->d_func()->interruptAction = new QAction(interruptIcon, QScriptDebugger::tr("Interrupt"), parent); d->interruptAction->setEnabled(!d->interactive); - d->interruptAction->setShortcut(QObject::tr("Shift+F5")); + d->interruptAction->setShortcut(QScriptDebugger::tr("Shift+F5")); QObject::connect(d->interruptAction, SIGNAL(triggered()), that, SLOT(_q_interrupt())); } @@ -1570,9 +1691,9 @@ QAction *QScriptDebugger::continueAction(QObject *parent) const continueIcon.addPixmap(d->pixmap(QString::fromLatin1("play.png")), QIcon::Normal); continueIcon.addPixmap(d->pixmap(QString::fromLatin1("d_play.png")), QIcon::Disabled); QScriptDebugger *that = const_cast<QScriptDebugger*>(this); - that->d_func()->continueAction = new QAction(continueIcon, QObject::tr("Continue"), parent); + that->d_func()->continueAction = new QAction(continueIcon, QScriptDebugger::tr("Continue"), parent); d->continueAction->setEnabled(d->interactive); - d->continueAction->setShortcut(QObject::tr("F5")); + d->continueAction->setShortcut(QScriptDebugger::tr("F5")); QObject::connect(d->continueAction, SIGNAL(triggered()), that, SLOT(_q_continue())); } @@ -1587,9 +1708,9 @@ QAction *QScriptDebugger::stepIntoAction(QObject *parent) const stepIntoIcon.addPixmap(d->pixmap(QString::fromLatin1("stepinto.png")), QIcon::Normal); stepIntoIcon.addPixmap(d->pixmap(QString::fromLatin1("d_stepinto.png")), QIcon::Disabled); QScriptDebugger *that = const_cast<QScriptDebugger*>(this); - that->d_func()->stepIntoAction = new QAction(stepIntoIcon, QObject::tr("Step Into"), parent); + that->d_func()->stepIntoAction = new QAction(stepIntoIcon, QScriptDebugger::tr("Step Into"), parent); d->stepIntoAction->setEnabled(d->interactive); - d->stepIntoAction->setShortcut(QObject::tr("F11")); + d->stepIntoAction->setShortcut(QScriptDebugger::tr("F11")); QObject::connect(d->stepIntoAction, SIGNAL(triggered()), that, SLOT(_q_stepInto())); } @@ -1604,9 +1725,9 @@ QAction *QScriptDebugger::stepOverAction(QObject *parent) const stepOverIcon.addPixmap(d->pixmap(QString::fromLatin1("stepover.png")), QIcon::Normal); stepOverIcon.addPixmap(d->pixmap(QString::fromLatin1("d_stepover.png")), QIcon::Disabled); QScriptDebugger *that = const_cast<QScriptDebugger*>(this); - that->d_func()->stepOverAction = new QAction(stepOverIcon, QObject::tr("Step Over"), parent); + that->d_func()->stepOverAction = new QAction(stepOverIcon, QScriptDebugger::tr("Step Over"), parent); d->stepOverAction->setEnabled(d->interactive); - d->stepOverAction->setShortcut(QObject::tr("F10")); + d->stepOverAction->setShortcut(QScriptDebugger::tr("F10")); QObject::connect(d->stepOverAction, SIGNAL(triggered()), that, SLOT(_q_stepOver())); } @@ -1621,9 +1742,9 @@ QAction *QScriptDebugger::stepOutAction(QObject *parent) const stepOutIcon.addPixmap(d->pixmap(QString::fromLatin1("stepout.png")), QIcon::Normal); stepOutIcon.addPixmap(d->pixmap(QString::fromLatin1("d_stepout.png")), QIcon::Disabled); QScriptDebugger *that = const_cast<QScriptDebugger*>(this); - that->d_func()->stepOutAction = new QAction(stepOutIcon, QObject::tr("Step Out"), parent); + that->d_func()->stepOutAction = new QAction(stepOutIcon, QScriptDebugger::tr("Step Out"), parent); d->stepOutAction->setEnabled(d->interactive); - d->stepOutAction->setShortcut(QObject::tr("Shift+F11")); + d->stepOutAction->setShortcut(QScriptDebugger::tr("Shift+F11")); QObject::connect(d->stepOutAction, SIGNAL(triggered()), that, SLOT(_q_stepOut())); } @@ -1638,9 +1759,9 @@ QAction *QScriptDebugger::runToCursorAction(QObject *parent) const runToCursorIcon.addPixmap(d->pixmap(QString::fromLatin1("runtocursor.png")), QIcon::Normal); runToCursorIcon.addPixmap(d->pixmap(QString::fromLatin1("d_runtocursor.png")), QIcon::Disabled); QScriptDebugger *that = const_cast<QScriptDebugger*>(this); - that->d_func()->runToCursorAction = new QAction(runToCursorIcon, QObject::tr("Run to Cursor"), parent); + that->d_func()->runToCursorAction = new QAction(runToCursorIcon, QScriptDebugger::tr("Run to Cursor"), parent); d->runToCursorAction->setEnabled(d->interactive); - d->runToCursorAction->setShortcut(QObject::tr("Ctrl+F10")); + d->runToCursorAction->setShortcut(QScriptDebugger::tr("Ctrl+F10")); QObject::connect(d->runToCursorAction, SIGNAL(triggered()), that, SLOT(_q_runToCursor())); } @@ -1656,7 +1777,7 @@ QAction *QScriptDebugger::runToNewScriptAction(QObject *parent) const runToNewScriptIcon.addPixmap(d->pixmap(QString::fromLatin1("d_breakonscriptload.png")), QIcon::Disabled); QScriptDebugger *that = const_cast<QScriptDebugger*>(this); that->d_func()->runToNewScriptAction = new QAction(runToNewScriptIcon, - QObject::tr("Run to New Script"), parent); + QScriptDebugger::tr("Run to New Script"), parent); d->runToNewScriptAction->setEnabled(d->interactive); QObject::connect(d->runToNewScriptAction, SIGNAL(triggered()), that, SLOT(_q_runToNewScript())); @@ -1671,8 +1792,8 @@ QAction *QScriptDebugger::toggleBreakpointAction(QObject *parent) const QIcon toggleBreakpointIcon; QScriptDebugger *that = const_cast<QScriptDebugger*>(this); that->d_func()->toggleBreakpointAction = new QAction(toggleBreakpointIcon, - QObject::tr("Toggle Breakpoint"), parent); - d->toggleBreakpointAction->setShortcut(QObject::tr("F9")); + QScriptDebugger::tr("Toggle Breakpoint"), parent); + d->toggleBreakpointAction->setShortcut(QScriptDebugger::tr("F9")); d->toggleBreakpointAction->setEnabled((d->codeWidget != 0) && (d->codeWidget->currentView() != 0)); QObject::connect(d->toggleBreakpointAction, SIGNAL(triggered()), that, SLOT(_q_toggleBreakpoint())); @@ -1686,7 +1807,7 @@ QAction *QScriptDebugger::clearDebugOutputAction(QObject *parent) const if (!d->clearDebugOutputAction) { QIcon clearDebugOutputIcon; QScriptDebugger *that = const_cast<QScriptDebugger*>(this); - that->d_func()->clearDebugOutputAction = new QAction(clearDebugOutputIcon, QObject::tr("Clear Debug Output"), parent); + that->d_func()->clearDebugOutputAction = new QAction(clearDebugOutputIcon, QScriptDebugger::tr("Clear Debug Output"), parent); QObject::connect(d->clearDebugOutputAction, SIGNAL(triggered()), that, SLOT(_q_clearDebugOutput())); } @@ -1699,7 +1820,7 @@ QAction *QScriptDebugger::clearErrorLogAction(QObject *parent) const if (!d->clearErrorLogAction) { QIcon clearErrorLogIcon; QScriptDebugger *that = const_cast<QScriptDebugger*>(this); - that->d_func()->clearErrorLogAction = new QAction(clearErrorLogIcon, QObject::tr("Clear Error Log"), parent); + that->d_func()->clearErrorLogAction = new QAction(clearErrorLogIcon, QScriptDebugger::tr("Clear Error Log"), parent); QObject::connect(d->clearErrorLogAction, SIGNAL(triggered()), that, SLOT(_q_clearErrorLog())); } @@ -1712,7 +1833,7 @@ QAction *QScriptDebugger::clearConsoleAction(QObject *parent) const if (!d->clearConsoleAction) { QIcon clearConsoleIcon; QScriptDebugger *that = const_cast<QScriptDebugger*>(this); - that->d_func()->clearConsoleAction = new QAction(clearConsoleIcon, QObject::tr("Clear Console"), parent); + that->d_func()->clearConsoleAction = new QAction(clearConsoleIcon, QScriptDebugger::tr("Clear Console"), parent); QObject::connect(d->clearConsoleAction, SIGNAL(triggered()), that, SLOT(_q_clearConsole())); } @@ -1726,8 +1847,8 @@ QAction *QScriptDebugger::findInScriptAction(QObject *parent) const QIcon findInScriptIcon; findInScriptIcon.addPixmap(d->pixmap(QString::fromLatin1("find.png")), QIcon::Normal); QScriptDebugger *that = const_cast<QScriptDebugger*>(this); - that->d_func()->findInScriptAction = new QAction(findInScriptIcon, QObject::tr("&Find in Script..."), parent); - d->findInScriptAction->setShortcut(QObject::tr("Ctrl+F")); + that->d_func()->findInScriptAction = new QAction(findInScriptIcon, QScriptDebugger::tr("&Find in Script..."), parent); + d->findInScriptAction->setShortcut(QScriptDebugger::tr("Ctrl+F")); d->findInScriptAction->setEnabled( (d->codeFinderWidget != 0) && (d->codeWidget != 0) @@ -1744,9 +1865,9 @@ QAction *QScriptDebugger::findNextInScriptAction(QObject *parent) const if (!d->findNextInScriptAction) { QIcon findNextInScriptIcon; QScriptDebugger *that = const_cast<QScriptDebugger*>(this); - that->d_func()->findNextInScriptAction = new QAction(findNextInScriptIcon, QObject::tr("Find &Next"), parent); + that->d_func()->findNextInScriptAction = new QAction(findNextInScriptIcon, QScriptDebugger::tr("Find &Next"), parent); d->findNextInScriptAction->setEnabled(d->codeFinderWidget && !d->codeFinderWidget->text().isEmpty()); - d->findNextInScriptAction->setShortcut(QObject::tr("F3")); + d->findNextInScriptAction->setShortcut(QScriptDebugger::tr("F3")); QObject::connect(d->findNextInScriptAction, SIGNAL(triggered()), that, SLOT(_q_findNextInScript())); } @@ -1759,9 +1880,9 @@ QAction *QScriptDebugger::findPreviousInScriptAction(QObject *parent) const if (!d->findPreviousInScriptAction) { QIcon findPreviousInScriptIcon; QScriptDebugger *that = const_cast<QScriptDebugger*>(this); - that->d_func()->findPreviousInScriptAction = new QAction(findPreviousInScriptIcon, QObject::tr("Find &Previous"), parent); + that->d_func()->findPreviousInScriptAction = new QAction(findPreviousInScriptIcon, QScriptDebugger::tr("Find &Previous"), parent); d->findPreviousInScriptAction->setEnabled(d->codeFinderWidget && !d->codeFinderWidget->text().isEmpty()); - d->findPreviousInScriptAction->setShortcut(QObject::tr("Shift+F3")); + d->findPreviousInScriptAction->setShortcut(QScriptDebugger::tr("Shift+F3")); QObject::connect(d->findPreviousInScriptAction, SIGNAL(triggered()), that, SLOT(_q_findPreviousInScript())); } @@ -1774,8 +1895,8 @@ QAction *QScriptDebugger::goToLineAction(QObject *parent) const if (!d->goToLineAction) { QIcon goToLineIcon; QScriptDebugger *that = const_cast<QScriptDebugger*>(this); - that->d_func()->goToLineAction = new QAction(goToLineIcon, QObject::tr("Go to Line"), parent); - d->goToLineAction->setShortcut(QObject::tr("Ctrl+G")); + that->d_func()->goToLineAction = new QAction(goToLineIcon, QScriptDebugger::tr("Go to Line"), parent); + d->goToLineAction->setShortcut(QScriptDebugger::tr("Ctrl+G")); d->goToLineAction->setEnabled((d->codeWidget != 0) && (d->codeWidget->currentView() != 0)); QObject::connect(d->goToLineAction, SIGNAL(triggered()), that, SLOT(_q_goToLine())); @@ -1783,6 +1904,53 @@ QAction *QScriptDebugger::goToLineAction(QObject *parent) const return d->goToLineAction; } +QMenu *QScriptDebugger::createStandardMenu(QWidget *widgetParent, QObject *actionParent) +{ + QMenu *menu = new QMenu(widgetParent); + menu->setTitle(QScriptDebugger::tr("Debug")); + menu->addAction(action(ContinueAction, actionParent)); + menu->addAction(action(InterruptAction, actionParent)); + menu->addAction(action(StepIntoAction, actionParent)); + menu->addAction(action(StepOverAction, actionParent)); + menu->addAction(action(StepOutAction, actionParent)); + menu->addAction(action(RunToCursorAction, actionParent)); + menu->addAction(action(RunToNewScriptAction, actionParent)); + + menu->addSeparator(); + menu->addAction(action(ToggleBreakpointAction, actionParent)); + + menu->addSeparator(); + menu->addAction(action(ClearDebugOutputAction, actionParent)); + menu->addAction(action(ClearErrorLogAction, actionParent)); + menu->addAction(action(ClearConsoleAction, actionParent)); + + return menu; +} + +#ifndef QT_NO_TOOLBAR +QToolBar *QScriptDebugger::createStandardToolBar(QWidget *widgetParent, QObject *actionParent) +{ + QToolBar *tb = new QToolBar(widgetParent); + tb->setObjectName(QLatin1String("qtscriptdebugger_standardToolBar")); + tb->addAction(action(ContinueAction, actionParent)); + tb->addAction(action(InterruptAction, actionParent)); + tb->addAction(action(StepIntoAction, actionParent)); + tb->addAction(action(StepOverAction, actionParent)); + tb->addAction(action(StepOutAction, actionParent)); + tb->addAction(action(RunToCursorAction, actionParent)); + tb->addAction(action(RunToNewScriptAction, actionParent)); + tb->addSeparator(); + tb->addAction(action(FindInScriptAction, actionParent)); + return tb; +} +#endif + +bool QScriptDebugger::isInteractive() const +{ + Q_D(const QScriptDebugger); + return d->interactive; +} + /*! \reimp */ |