Changeset 561 for trunk/src/scripttools/debugging/qscriptenginedebugger.cpp
- Timestamp:
- Feb 11, 2010, 11:19:06 PM (15 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk
-
Property svn:mergeinfo
set to (toggle deleted branches)
/branches/vendor/nokia/qt/4.6.1 merged eligible /branches/vendor/nokia/qt/current merged eligible /branches/vendor/trolltech/qt/current 3-149
-
Property svn:mergeinfo
set to (toggle deleted branches)
-
trunk/src/scripttools/debugging/qscriptenginedebugger.cpp
r2 r561 2 2 ** 3 3 ** 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) 5 6 ** 6 7 ** This file is part of the QtSCriptTools module of the Qt Toolkit. … … 21 22 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. 22 23 ** 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. 27 27 ** 28 28 ** GNU General Public License Usage … … 34 34 ** met: http://www.gnu.org/copyleft/gpl.html. 35 35 ** 36 ** If you are unsure which license is appropriate for your use, please37 ** 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. 38 38 ** $QT_END_LICENSE$ 39 39 ** … … 43 43 #include "qscriptdebugger_p.h" 44 44 #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" 55 46 #include <private/qobject_p.h> 56 47 … … 59 50 #include <QtGui/qdockwidget.h> 60 51 #include <QtGui/qmainwindow.h> 61 #include <QtGui/qmenu.h>62 52 #include <QtGui/qmenubar.h> 63 #include <QtGui/qtoolbar.h>64 53 #include <QtGui/qboxlayout.h> 54 55 // this has to be outside the namespace 56 static void initScriptEngineDebuggerResources() 57 { 58 Q_INIT_RESOURCE(scripttools_debugging); 59 } 60 61 QT_BEGIN_NAMESPACE 65 62 66 63 class QtScriptDebuggerResourceInitializer … … 68 65 public: 69 66 QtScriptDebuggerResourceInitializer() { 70 Q_INIT_RESOURCE(scripttools_debugging); 67 // call outside-the-namespace function 68 initScriptEngineDebuggerResources(); 71 69 } 72 70 }; 73 71 74 QT_BEGIN_NAMESPACE75 76 72 /*! 77 73 \since 4.5 … … 80 76 \brief The QScriptEngineDebugger class provides a QScriptEngine debugger. 81 77 82 \ingroup script tools83 \mainclass 78 \ingroup script 79 84 80 85 81 The QScriptEngineDebugger class provides a debugger that can be … … 131 127 evaluationResumed() signal is emitted when script evaluation is 132 128 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. 134 130 135 131 When calling QScriptEngine::evaluate() it is useful to pass a … … 231 227 */ 232 228 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 233 239 class QScriptEngineDebuggerPrivate 234 : public QObjectPrivate, 235 public QScriptDebuggerWidgetFactoryInterface 240 : public QObjectPrivate 236 241 { 237 242 Q_DECLARE_PUBLIC(QScriptEngineDebugger) … … 240 245 ~QScriptEngineDebuggerPrivate(); 241 246 242 QScriptDebugOutputWidgetInterface *createDebugOutputWidget();243 QScriptDebuggerConsoleWidgetInterface *createConsoleWidget();244 QScriptErrorLogWidgetInterface *createErrorLogWidget();245 QScriptDebuggerCodeFinderWidgetInterface *createCodeFinderWidget();246 247 247 // private slots 248 248 void _q_showStandardWindow(); … … 252 252 QScriptDebugger *debugger; 253 253 QScriptEngineDebuggerFrontend *frontend; 254 #ifndef QT_NO_MAINWINDOW 254 255 QMainWindow *standardWindow; 256 #endif 255 257 bool autoShow; 256 258 … … 295 297 debugger = 0; 296 298 frontend = 0; 299 #ifndef QT_NO_MAINWINDOW 297 300 standardWindow = 0; 301 #endif 298 302 autoShow = true; 299 303 } … … 303 307 delete debugger; 304 308 delete frontend; 309 #ifndef QT_NO_MAINWINDOW 305 310 if (standardWindow) { 306 311 QSettings settings(QSettings::UserScope, QLatin1String("Trolltech")); … … 312 317 delete standardWindow; 313 318 } 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 336 323 void QScriptEngineDebuggerPrivate::_q_showStandardWindow() 337 324 { … … 340 327 standardWindow->show(); 341 328 } 329 #endif 342 330 343 331 void QScriptEngineDebuggerPrivate::createDebugger() … … 346 334 if (!debugger) { 347 335 debugger = new QScriptDebugger(); 348 debugger->setWidgetFactory( this);336 debugger->setWidgetFactory(new QScriptDebuggerStandardWidgetFactory(q)); 349 337 QObject::connect(debugger, SIGNAL(started()), 350 338 q, SIGNAL(evaluationResumed())); … … 418 406 419 407 /*! 408 \since 4.6 409 410 Returns the current state of the debugger. 411 412 \sa evaluationResumed() 413 \sa evaluationSuspended() 414 */ 415 QScriptEngineDebugger::DebuggerState QScriptEngineDebugger::state() const 416 { 417 Q_D(const QScriptEngineDebugger); 418 return !d->debugger || !d->debugger->isInteractive() ? SuspendedState : RunningState; 419 } 420 421 /*! 420 422 421 423 Returns a pointer to the instance of the specified standard \a … … 441 443 Q_D(const QScriptEngineDebugger); 442 444 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))); 518 446 } 519 447 … … 539 467 QScriptEngineDebugger *that = const_cast<QScriptEngineDebugger*>(this); 540 468 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); 574 470 } 575 471 … … 612 508 \sa createStandardMenu(), createStandardToolBar() 613 509 */ 510 #ifndef QT_NO_MAINWINDOW 614 511 QMainWindow *QScriptEngineDebugger::standardWindow() const 615 512 { … … 624 521 QDockWidget *scriptsDock = new QDockWidget(win); 625 522 scriptsDock->setObjectName(QLatin1String("qtscriptdebugger_scriptsDockWidget")); 626 scriptsDock->setWindowTitle( QObject::tr("Loaded Scripts"));523 scriptsDock->setWindowTitle(tr("Loaded Scripts")); 627 524 scriptsDock->setWidget(widget(ScriptsWidget)); 628 525 win->addDockWidget(Qt::LeftDockWidgetArea, scriptsDock); … … 630 527 QDockWidget *breakpointsDock = new QDockWidget(win); 631 528 breakpointsDock->setObjectName(QLatin1String("qtscriptdebugger_breakpointsDockWidget")); 632 breakpointsDock->setWindowTitle( QObject::tr("Breakpoints"));529 breakpointsDock->setWindowTitle(tr("Breakpoints")); 633 530 breakpointsDock->setWidget(widget(BreakpointsWidget)); 634 531 win->addDockWidget(Qt::LeftDockWidgetArea, breakpointsDock); … … 636 533 QDockWidget *stackDock = new QDockWidget(win); 637 534 stackDock->setObjectName(QLatin1String("qtscriptdebugger_stackDockWidget")); 638 stackDock->setWindowTitle( QObject::tr("Stack"));535 stackDock->setWindowTitle(tr("Stack")); 639 536 stackDock->setWidget(widget(StackWidget)); 640 537 win->addDockWidget(Qt::RightDockWidgetArea, stackDock); … … 642 539 QDockWidget *localsDock = new QDockWidget(win); 643 540 localsDock->setObjectName(QLatin1String("qtscriptdebugger_localsDockWidget")); 644 localsDock->setWindowTitle( QObject::tr("Locals"));541 localsDock->setWindowTitle(tr("Locals")); 645 542 localsDock->setWidget(widget(LocalsWidget)); 646 543 win->addDockWidget(Qt::RightDockWidgetArea, localsDock); … … 648 545 QDockWidget *consoleDock = new QDockWidget(win); 649 546 consoleDock->setObjectName(QLatin1String("qtscriptdebugger_consoleDockWidget")); 650 consoleDock->setWindowTitle( QObject::tr("Console"));547 consoleDock->setWindowTitle(tr("Console")); 651 548 consoleDock->setWidget(widget(ConsoleWidget)); 652 549 win->addDockWidget(Qt::BottomDockWidgetArea, consoleDock); … … 654 551 QDockWidget *debugOutputDock = new QDockWidget(win); 655 552 debugOutputDock->setObjectName(QLatin1String("qtscriptdebugger_debugOutputDockWidget")); 656 debugOutputDock->setWindowTitle( QObject::tr("Debug Output"));553 debugOutputDock->setWindowTitle(tr("Debug Output")); 657 554 debugOutputDock->setWidget(widget(DebugOutputWidget)); 658 555 win->addDockWidget(Qt::BottomDockWidgetArea, debugOutputDock); … … 660 557 QDockWidget *errorLogDock = new QDockWidget(win); 661 558 errorLogDock->setObjectName(QLatin1String("qtscriptdebugger_errorLogDockWidget")); 662 errorLogDock->setWindowTitle( QObject::tr("Error Log"));559 errorLogDock->setWindowTitle(tr("Error Log")); 663 560 errorLogDock->setWidget(widget(ErrorLogWidget)); 664 561 win->addDockWidget(Qt::BottomDockWidgetArea, errorLogDock); … … 672 569 win->menuBar()->addMenu(that->createStandardMenu(win)); 673 570 674 QMenu *editMenu = win->menuBar()->addMenu( QObject::tr("Search"));571 QMenu *editMenu = win->menuBar()->addMenu(tr("Search")); 675 572 editMenu->addAction(action(FindInScriptAction)); 676 573 editMenu->addAction(action(FindNextInScriptAction)); … … 679 576 editMenu->addAction(action(GoToLineAction)); 680 577 681 QMenu *viewMenu = win->menuBar()->addMenu( QObject::tr("View"));578 QMenu *viewMenu = win->menuBar()->addMenu(tr("View")); 682 579 viewMenu->addAction(scriptsDock->toggleViewAction()); 683 580 viewMenu->addAction(breakpointsDock->toggleViewAction()); … … 697 594 win->setCentralWidget(central); 698 595 699 win->setWindowTitle( QObject::tr("Qt Script Debugger"));596 win->setWindowTitle(tr("Qt Script Debugger")); 700 597 win->setUnifiedTitleAndToolBarOnMac(true); 701 598 … … 715 612 return win; 716 613 } 614 #endif // QT_NO_MAINWINDOW 717 615 718 616 /*! … … 724 622 QMenu *QScriptEngineDebugger::createStandardMenu(QWidget *parent) 725 623 { 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); 745 627 } 746 628 … … 751 633 \sa createStandardMenu() 752 634 */ 635 #ifndef QT_NO_TOOLBAR 753 636 QToolBar *QScriptEngineDebugger::createStandardToolBar(QWidget *parent) 754 637 { 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 768 643 769 644 /*!
Note:
See TracChangeset
for help on using the changeset viewer.