Ignore:
Timestamp:
Feb 11, 2010, 11:19:06 PM (15 years ago)
Author:
Dmitry A. Kuminov
Message:

trunk: Merged in qt 4.6.1 sources.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/src/scripttools/debugging/qscriptenginedebugger.cpp

    r2 r561  
    22**
    33** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
    4 ** Contact: Qt Software Information (qt-info@nokia.com)
     4** All rights reserved.
     5** Contact: Nokia Corporation (qt-info@nokia.com)
    56**
    67** This file is part of the QtSCriptTools module of the Qt Toolkit.
     
    2122** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
    2223**
    23 ** In addition, as a special exception, Nokia gives you certain
    24 ** additional rights. These rights are described in the Nokia Qt LGPL
    25 ** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
    26 ** package.
     24** In addition, as a special exception, Nokia gives you certain additional
     25** rights.  These rights are described in the Nokia Qt LGPL Exception
     26** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
    2727**
    2828** GNU General Public License Usage
     
    3434** met: http://www.gnu.org/copyleft/gpl.html.
    3535**
    36 ** If you are unsure which license is appropriate for your use, please
    37 ** contact the sales department at qt-sales@nokia.com.
     36** If you have questions regarding the use of this file, please contact
     37** Nokia at qt-info@nokia.com.
    3838** $QT_END_LICENSE$
    3939**
     
    4343#include "qscriptdebugger_p.h"
    4444#include "qscriptenginedebuggerfrontend_p.h"
    45 #include "qscriptdebuggerconsolewidget_p.h"
    46 #include "qscriptdebuggerstackwidget_p.h"
    47 #include "qscriptdebuggerscriptswidget_p.h"
    48 #include "qscriptdebuggerlocalswidget_p.h"
    49 #include "qscriptdebuggercodewidget_p.h"
    50 #include "qscriptdebuggercodefinderwidget_p.h"
    51 #include "qscriptbreakpointswidget_p.h"
    52 #include "qscriptdebugoutputwidget_p.h"
    53 #include "qscripterrorlogwidget_p.h"
    54 #include "qscriptdebuggerwidgetfactoryinterface_p.h"
     45#include "qscriptdebuggerstandardwidgetfactory_p.h"
    5546#include <private/qobject_p.h>
    5647
     
    5950#include <QtGui/qdockwidget.h>
    6051#include <QtGui/qmainwindow.h>
    61 #include <QtGui/qmenu.h>
    6252#include <QtGui/qmenubar.h>
    63 #include <QtGui/qtoolbar.h>
    6453#include <QtGui/qboxlayout.h>
     54
     55// this has to be outside the namespace
     56static void initScriptEngineDebuggerResources()
     57{
     58    Q_INIT_RESOURCE(scripttools_debugging);
     59}
     60
     61QT_BEGIN_NAMESPACE
    6562
    6663class QtScriptDebuggerResourceInitializer
     
    6865public:
    6966    QtScriptDebuggerResourceInitializer() {
    70         Q_INIT_RESOURCE(scripttools_debugging);
     67        // call outside-the-namespace function
     68        initScriptEngineDebuggerResources();
    7169    }
    7270};
    7371
    74 QT_BEGIN_NAMESPACE
    75 
    7672/*!
    7773  \since 4.5
     
    8076  \brief The QScriptEngineDebugger class provides a QScriptEngine debugger.
    8177
    82   \ingroup scripttools
    83   \mainclass
     78  \ingroup script
     79
    8480
    8581  The QScriptEngineDebugger class provides a debugger that can be
     
    131127  evaluationResumed() signal is emitted when script evaluation is
    132128  resumed, i.e, when execution control is given back to the script
    133   engine.
     129  engine. The state() function returns the debugger's current state.
    134130
    135131  When calling QScriptEngine::evaluate() it is useful to pass a
     
    231227*/
    232228
     229/*!
     230    \enum QScriptEngineDebugger::DebuggerState
     231    \since 4.6
     232
     233    This enum specifies the current state of the debugger.
     234
     235    \value RunningState   The debugger is running.  (Script evaluation is allowed.)
     236    \value SuspendedState The debugger has suspended script evaluation.
     237*/
     238
    233239class QScriptEngineDebuggerPrivate
    234     : public QObjectPrivate,
    235       public QScriptDebuggerWidgetFactoryInterface
     240    : public QObjectPrivate
    236241{
    237242    Q_DECLARE_PUBLIC(QScriptEngineDebugger)
     
    240245    ~QScriptEngineDebuggerPrivate();
    241246
    242     QScriptDebugOutputWidgetInterface *createDebugOutputWidget();
    243     QScriptDebuggerConsoleWidgetInterface *createConsoleWidget();
    244     QScriptErrorLogWidgetInterface *createErrorLogWidget();
    245     QScriptDebuggerCodeFinderWidgetInterface *createCodeFinderWidget();
    246 
    247247    // private slots
    248248    void _q_showStandardWindow();
     
    252252    QScriptDebugger *debugger;
    253253    QScriptEngineDebuggerFrontend *frontend;
     254#ifndef QT_NO_MAINWINDOW
    254255    QMainWindow *standardWindow;
     256#endif
    255257    bool autoShow;
    256258
     
    295297    debugger = 0;
    296298    frontend = 0;
     299#ifndef QT_NO_MAINWINDOW
    297300    standardWindow = 0;
     301#endif
    298302    autoShow = true;
    299303}
     
    303307    delete debugger;
    304308    delete frontend;
     309#ifndef QT_NO_MAINWINDOW
    305310    if (standardWindow) {
    306311        QSettings settings(QSettings::UserScope, QLatin1String("Trolltech"));
     
    312317            delete standardWindow;
    313318    }
    314 }
    315 
    316 QScriptDebugOutputWidgetInterface *QScriptEngineDebuggerPrivate::createDebugOutputWidget()
    317 {
    318     return new QScriptDebugOutputWidget();
    319 }
    320 
    321 QScriptDebuggerConsoleWidgetInterface *QScriptEngineDebuggerPrivate::createConsoleWidget()
    322 {
    323     return new QScriptDebuggerConsoleWidget();
    324 }
    325 
    326 QScriptErrorLogWidgetInterface *QScriptEngineDebuggerPrivate::createErrorLogWidget()
    327 {
    328     return new QScriptErrorLogWidget();
    329 }
    330 
    331 QScriptDebuggerCodeFinderWidgetInterface *QScriptEngineDebuggerPrivate::createCodeFinderWidget()
    332 {
    333     return new QScriptDebuggerCodeFinderWidget();
    334 }
    335 
     319#endif
     320}
     321
     322#ifndef QT_NO_MAINWINDOW
    336323void QScriptEngineDebuggerPrivate::_q_showStandardWindow()
    337324{
     
    340327    standardWindow->show();
    341328}
     329#endif
    342330
    343331void QScriptEngineDebuggerPrivate::createDebugger()
     
    346334    if (!debugger) {
    347335        debugger = new QScriptDebugger();
    348         debugger->setWidgetFactory(this);
     336        debugger->setWidgetFactory(new QScriptDebuggerStandardWidgetFactory(q));
    349337        QObject::connect(debugger, SIGNAL(started()),
    350338                         q, SIGNAL(evaluationResumed()));
     
    418406
    419407/*!
     408  \since 4.6
     409
     410  Returns the current state of the debugger.
     411
     412  \sa evaluationResumed()
     413  \sa evaluationSuspended()
     414*/
     415QScriptEngineDebugger::DebuggerState QScriptEngineDebugger::state() const
     416{
     417    Q_D(const QScriptEngineDebugger);
     418    return !d->debugger || !d->debugger->isInteractive() ? SuspendedState : RunningState;
     419}
     420
     421/*!
    420422
    421423    Returns a pointer to the instance of the specified standard \a
     
    441443    Q_D(const QScriptEngineDebugger);
    442444    const_cast<QScriptEngineDebuggerPrivate*>(d)->createDebugger();
    443     switch (widget) {
    444     case ConsoleWidget: {
    445         QScriptDebuggerConsoleWidgetInterface *w = d->debugger->consoleWidget();
    446         if (!w) {
    447             w = new QScriptDebuggerConsoleWidget();
    448             d->debugger->setConsoleWidget(w);
    449         }
    450         return w;
    451     }
    452     case StackWidget: {
    453         QScriptDebuggerStackWidgetInterface *w = d->debugger->stackWidget();
    454         if (!w) {
    455             w = new QScriptDebuggerStackWidget();
    456             d->debugger->setStackWidget(w);
    457         }
    458         return w;
    459     }
    460     case ScriptsWidget: {
    461         QScriptDebuggerScriptsWidgetInterface *w = d->debugger->scriptsWidget();
    462         if (!w) {
    463             w = new QScriptDebuggerScriptsWidget();
    464             d->debugger->setScriptsWidget(w);
    465         }
    466         return w;
    467     }
    468     case LocalsWidget: {
    469         QScriptDebuggerLocalsWidgetInterface *w = d->debugger->localsWidget();
    470         if (!w) {
    471             w = new QScriptDebuggerLocalsWidget();
    472             d->debugger->setLocalsWidget(w);
    473         }
    474         return w;
    475     }
    476     case CodeWidget: {
    477         QScriptDebuggerCodeWidgetInterface *w = d->debugger->codeWidget();
    478         if (!w) {
    479             w = new QScriptDebuggerCodeWidget();
    480             d->debugger->setCodeWidget(w);
    481         }
    482         return w;
    483     }
    484     case CodeFinderWidget: {
    485         QScriptDebuggerCodeFinderWidgetInterface *w = d->debugger->codeFinderWidget();
    486         if (!w) {
    487             w = new QScriptDebuggerCodeFinderWidget();
    488             d->debugger->setCodeFinderWidget(w);
    489         }
    490         return w;
    491     }
    492     case BreakpointsWidget: {
    493         QScriptBreakpointsWidgetInterface *w = d->debugger->breakpointsWidget();
    494         if (!w) {
    495             w = new QScriptBreakpointsWidget();
    496             d->debugger->setBreakpointsWidget(w);
    497         }
    498         return w;
    499     }
    500     case DebugOutputWidget: {
    501         QScriptDebugOutputWidgetInterface *w = d->debugger->debugOutputWidget();
    502         if (!w) {
    503             w = new QScriptDebugOutputWidget();
    504             d->debugger->setDebugOutputWidget(w);
    505         }
    506         return w;
    507     }
    508     case ErrorLogWidget: {
    509         QScriptErrorLogWidgetInterface *w = d->debugger->errorLogWidget();
    510         if (!w) {
    511             w = new QScriptErrorLogWidget();
    512             d->debugger->setErrorLogWidget(w);
    513         }
    514         return w;
    515     }
    516     }
    517     return 0;
     445    return d->debugger->widget(static_cast<QScriptDebugger::DebuggerWidget>(static_cast<int>(widget)));
    518446}
    519447
     
    539467    QScriptEngineDebugger *that = const_cast<QScriptEngineDebugger*>(this);
    540468    that->d_func()->createDebugger();
    541     switch (action) {
    542     case InterruptAction:
    543         return d->debugger->interruptAction(that);
    544     case ContinueAction:
    545         return d->debugger->continueAction(that);
    546     case StepIntoAction:
    547         return d->debugger->stepIntoAction(that);
    548     case StepOverAction:
    549         return d->debugger->stepOverAction(that);
    550     case StepOutAction:
    551         return d->debugger->stepOutAction(that);
    552     case RunToCursorAction:
    553         return d->debugger->runToCursorAction(that);
    554     case RunToNewScriptAction:
    555         return d->debugger->runToNewScriptAction(that);
    556     case ToggleBreakpointAction:
    557         return d->debugger->toggleBreakpointAction(that);
    558     case ClearDebugOutputAction:
    559         return d->debugger->clearDebugOutputAction(that);
    560     case ClearErrorLogAction:
    561         return d->debugger->clearErrorLogAction(that);
    562     case ClearConsoleAction:
    563         return d->debugger->clearConsoleAction(that);
    564     case FindInScriptAction:
    565         return d->debugger->findInScriptAction(that);
    566     case FindNextInScriptAction:
    567         return d->debugger->findNextInScriptAction(that);
    568     case FindPreviousInScriptAction:
    569         return d->debugger->findPreviousInScriptAction(that);
    570     case GoToLineAction:
    571         return d->debugger->goToLineAction(that);
    572     }
    573     return 0;
     469    return d->debugger->action(static_cast<QScriptDebugger::DebuggerAction>(static_cast<int>(action)), that);
    574470}
    575471
     
    612508  \sa createStandardMenu(), createStandardToolBar()
    613509*/
     510#ifndef QT_NO_MAINWINDOW
    614511QMainWindow *QScriptEngineDebugger::standardWindow() const
    615512{
     
    624521    QDockWidget *scriptsDock = new QDockWidget(win);
    625522    scriptsDock->setObjectName(QLatin1String("qtscriptdebugger_scriptsDockWidget"));
    626     scriptsDock->setWindowTitle(QObject::tr("Loaded Scripts"));
     523    scriptsDock->setWindowTitle(tr("Loaded Scripts"));
    627524    scriptsDock->setWidget(widget(ScriptsWidget));
    628525    win->addDockWidget(Qt::LeftDockWidgetArea, scriptsDock);
     
    630527    QDockWidget *breakpointsDock = new QDockWidget(win);
    631528    breakpointsDock->setObjectName(QLatin1String("qtscriptdebugger_breakpointsDockWidget"));
    632     breakpointsDock->setWindowTitle(QObject::tr("Breakpoints"));
     529    breakpointsDock->setWindowTitle(tr("Breakpoints"));
    633530    breakpointsDock->setWidget(widget(BreakpointsWidget));
    634531    win->addDockWidget(Qt::LeftDockWidgetArea, breakpointsDock);
     
    636533    QDockWidget *stackDock = new QDockWidget(win);
    637534    stackDock->setObjectName(QLatin1String("qtscriptdebugger_stackDockWidget"));
    638     stackDock->setWindowTitle(QObject::tr("Stack"));
     535    stackDock->setWindowTitle(tr("Stack"));
    639536    stackDock->setWidget(widget(StackWidget));
    640537    win->addDockWidget(Qt::RightDockWidgetArea, stackDock);
     
    642539    QDockWidget *localsDock = new QDockWidget(win);
    643540    localsDock->setObjectName(QLatin1String("qtscriptdebugger_localsDockWidget"));
    644     localsDock->setWindowTitle(QObject::tr("Locals"));
     541    localsDock->setWindowTitle(tr("Locals"));
    645542    localsDock->setWidget(widget(LocalsWidget));
    646543    win->addDockWidget(Qt::RightDockWidgetArea, localsDock);
     
    648545    QDockWidget *consoleDock = new QDockWidget(win);
    649546    consoleDock->setObjectName(QLatin1String("qtscriptdebugger_consoleDockWidget"));
    650     consoleDock->setWindowTitle(QObject::tr("Console"));
     547    consoleDock->setWindowTitle(tr("Console"));
    651548    consoleDock->setWidget(widget(ConsoleWidget));
    652549    win->addDockWidget(Qt::BottomDockWidgetArea, consoleDock);
     
    654551    QDockWidget *debugOutputDock = new QDockWidget(win);
    655552    debugOutputDock->setObjectName(QLatin1String("qtscriptdebugger_debugOutputDockWidget"));
    656     debugOutputDock->setWindowTitle(QObject::tr("Debug Output"));
     553    debugOutputDock->setWindowTitle(tr("Debug Output"));
    657554    debugOutputDock->setWidget(widget(DebugOutputWidget));
    658555    win->addDockWidget(Qt::BottomDockWidgetArea, debugOutputDock);
     
    660557    QDockWidget *errorLogDock = new QDockWidget(win);
    661558    errorLogDock->setObjectName(QLatin1String("qtscriptdebugger_errorLogDockWidget"));
    662     errorLogDock->setWindowTitle(QObject::tr("Error Log"));
     559    errorLogDock->setWindowTitle(tr("Error Log"));
    663560    errorLogDock->setWidget(widget(ErrorLogWidget));
    664561    win->addDockWidget(Qt::BottomDockWidgetArea, errorLogDock);
     
    672569    win->menuBar()->addMenu(that->createStandardMenu(win));
    673570
    674     QMenu *editMenu = win->menuBar()->addMenu(QObject::tr("Search"));
     571    QMenu *editMenu = win->menuBar()->addMenu(tr("Search"));
    675572    editMenu->addAction(action(FindInScriptAction));
    676573    editMenu->addAction(action(FindNextInScriptAction));
     
    679576    editMenu->addAction(action(GoToLineAction));
    680577
    681     QMenu *viewMenu = win->menuBar()->addMenu(QObject::tr("View"));
     578    QMenu *viewMenu = win->menuBar()->addMenu(tr("View"));
    682579    viewMenu->addAction(scriptsDock->toggleViewAction());
    683580    viewMenu->addAction(breakpointsDock->toggleViewAction());
     
    697594    win->setCentralWidget(central);
    698595
    699     win->setWindowTitle(QObject::tr("Qt Script Debugger"));
     596    win->setWindowTitle(tr("Qt Script Debugger"));
    700597    win->setUnifiedTitleAndToolBarOnMac(true);
    701598
     
    715612    return win;
    716613}
     614#endif // QT_NO_MAINWINDOW
    717615
    718616/*!
     
    724622QMenu *QScriptEngineDebugger::createStandardMenu(QWidget *parent)
    725623{
    726     QMenu *menu = new QMenu(parent);
    727     menu->setTitle(QObject::tr("Debug"));
    728     menu->addAction(action(ContinueAction));
    729     menu->addAction(action(InterruptAction));
    730     menu->addAction(action(StepIntoAction));
    731     menu->addAction(action(StepOverAction));
    732     menu->addAction(action(StepOutAction));
    733     menu->addAction(action(RunToCursorAction));
    734     menu->addAction(action(RunToNewScriptAction));
    735 
    736     menu->addSeparator();
    737     menu->addAction(action(ToggleBreakpointAction));
    738 
    739     menu->addSeparator();
    740     menu->addAction(action(ClearDebugOutputAction));
    741     menu->addAction(action(ClearErrorLogAction));
    742     menu->addAction(action(ClearConsoleAction));
    743 
    744     return menu;
     624    Q_D(QScriptEngineDebugger);
     625    d->createDebugger();
     626    return d->debugger->createStandardMenu(parent, this);
    745627}
    746628
     
    751633  \sa createStandardMenu()
    752634*/
     635#ifndef QT_NO_TOOLBAR
    753636QToolBar *QScriptEngineDebugger::createStandardToolBar(QWidget *parent)
    754637{
    755     QToolBar *tb = new QToolBar(parent);
    756     tb->setObjectName(QLatin1String("qtscriptdebugger_standardToolBar"));
    757     tb->addAction(action(ContinueAction));
    758     tb->addAction(action(InterruptAction));
    759     tb->addAction(action(StepIntoAction));
    760     tb->addAction(action(StepOverAction));
    761     tb->addAction(action(StepOutAction));
    762     tb->addAction(action(RunToCursorAction));
    763     tb->addAction(action(RunToNewScriptAction));
    764     tb->addSeparator();
    765     tb->addAction(action(FindInScriptAction));
    766     return tb;
    767 }
     638    Q_D(QScriptEngineDebugger);
     639    d->createDebugger();
     640    return d->debugger->createStandardToolBar(parent, this);
     641}
     642#endif
    768643
    769644/*!
Note: See TracChangeset for help on using the changeset viewer.