| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2012 Google Inc. | 2 * Copyright 2012 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include "SkDebuggerGUI.h" | 8 #include "SkDebuggerGUI.h" |
| 9 #include "PictureRenderer.h" | 9 #include "PictureRenderer.h" |
| 10 #include "SkPictureData.h" | 10 #include "SkPictureData.h" |
| (...skipping 14 matching lines...) Expand all Loading... |
| 25 #endif | 25 #endif |
| 26 | 26 |
| 27 | 27 |
| 28 SkDebuggerGUI::SkDebuggerGUI(QWidget *parent) : | 28 SkDebuggerGUI::SkDebuggerGUI(QWidget *parent) : |
| 29 QMainWindow(parent) | 29 QMainWindow(parent) |
| 30 , fCentralSplitter(this) | 30 , fCentralSplitter(this) |
| 31 , fStatusBar(this) | 31 , fStatusBar(this) |
| 32 , fToolBar(this) | 32 , fToolBar(this) |
| 33 , fActionOpen(this) | 33 , fActionOpen(this) |
| 34 , fActionBreakpoint(this) | 34 , fActionBreakpoint(this) |
| 35 , fActionToggleIndexStyle(this) | |
| 36 , fActionProfile(this) | 35 , fActionProfile(this) |
| 37 , fActionCancel(this) | 36 , fActionCancel(this) |
| 38 , fActionClearBreakpoints(this) | 37 , fActionClearBreakpoints(this) |
| 39 , fActionClearDeletes(this) | 38 , fActionClearDeletes(this) |
| 40 , fActionClose(this) | 39 , fActionClose(this) |
| 41 , fActionCreateBreakpoint(this) | 40 , fActionCreateBreakpoint(this) |
| 42 , fActionDelete(this) | 41 , fActionDelete(this) |
| 43 , fActionDirectory(this) | 42 , fActionDirectory(this) |
| 44 , fActionGoToLine(this) | 43 , fActionGoToLine(this) |
| 45 , fActionInspector(this) | 44 , fActionInspector(this) |
| (...skipping 26 matching lines...) Expand all Loading... |
| 72 connect(&fActionOpen, SIGNAL(triggered()), this, SLOT(openFile())); | 71 connect(&fActionOpen, SIGNAL(triggered()), this, SLOT(openFile())); |
| 73 connect(&fActionDirectory, SIGNAL(triggered()), this, SLOT(toggleDirectory()
)); | 72 connect(&fActionDirectory, SIGNAL(triggered()), this, SLOT(toggleDirectory()
)); |
| 74 connect(&fDirectoryWidget, SIGNAL(currentItemChanged(QListWidgetItem*, QList
WidgetItem*)), this, SLOT(loadFile(QListWidgetItem *))); | 73 connect(&fDirectoryWidget, SIGNAL(currentItemChanged(QListWidgetItem*, QList
WidgetItem*)), this, SLOT(loadFile(QListWidgetItem *))); |
| 75 connect(&fActionDelete, SIGNAL(triggered()), this, SLOT(actionDelete())); | 74 connect(&fActionDelete, SIGNAL(triggered()), this, SLOT(actionDelete())); |
| 76 connect(&fListWidget, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLO
T(toggleBreakpoint())); | 75 connect(&fListWidget, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLO
T(toggleBreakpoint())); |
| 77 connect(&fActionRewind, SIGNAL(triggered()), this, SLOT(actionRewind())); | 76 connect(&fActionRewind, SIGNAL(triggered()), this, SLOT(actionRewind())); |
| 78 connect(&fActionPlay, SIGNAL(triggered()), this, SLOT(actionPlay())); | 77 connect(&fActionPlay, SIGNAL(triggered()), this, SLOT(actionPlay())); |
| 79 connect(&fActionStepBack, SIGNAL(triggered()), this, SLOT(actionStepBack()))
; | 78 connect(&fActionStepBack, SIGNAL(triggered()), this, SLOT(actionStepBack()))
; |
| 80 connect(&fActionStepForward, SIGNAL(triggered()), this, SLOT(actionStepForwa
rd())); | 79 connect(&fActionStepForward, SIGNAL(triggered()), this, SLOT(actionStepForwa
rd())); |
| 81 connect(&fActionBreakpoint, SIGNAL(triggered()), this, SLOT(actionBreakpoint
s())); | 80 connect(&fActionBreakpoint, SIGNAL(triggered()), this, SLOT(actionBreakpoint
s())); |
| 82 connect(&fActionToggleIndexStyle, SIGNAL(triggered()), this, SLOT(actionTogg
leIndexStyle())); | |
| 83 connect(&fActionInspector, SIGNAL(triggered()), this, SLOT(actionInspector()
)); | 81 connect(&fActionInspector, SIGNAL(triggered()), this, SLOT(actionInspector()
)); |
| 84 connect(&fActionSettings, SIGNAL(triggered()), this, SLOT(actionSettings()))
; | 82 connect(&fActionSettings, SIGNAL(triggered()), this, SLOT(actionSettings()))
; |
| 85 connect(&fFilter, SIGNAL(activated(QString)), this, SLOT(toggleFilter(QStrin
g))); | 83 connect(&fFilter, SIGNAL(activated(QString)), this, SLOT(toggleFilter(QStrin
g))); |
| 86 connect(&fActionProfile, SIGNAL(triggered()), this, SLOT(actionProfile())); | 84 connect(&fActionProfile, SIGNAL(triggered()), this, SLOT(actionProfile())); |
| 87 connect(&fActionCancel, SIGNAL(triggered()), this, SLOT(actionCancel())); | 85 connect(&fActionCancel, SIGNAL(triggered()), this, SLOT(actionCancel())); |
| 88 connect(&fActionClearBreakpoints, SIGNAL(triggered()), this, SLOT(actionClea
rBreakpoints())); | 86 connect(&fActionClearBreakpoints, SIGNAL(triggered()), this, SLOT(actionClea
rBreakpoints())); |
| 89 connect(&fActionClearDeletes, SIGNAL(triggered()), this, SLOT(actionClearDel
etes())); | 87 connect(&fActionClearDeletes, SIGNAL(triggered()), this, SLOT(actionClearDel
etes())); |
| 90 connect(&fActionClose, SIGNAL(triggered()), this, SLOT(actionClose())); | 88 connect(&fActionClose, SIGNAL(triggered()), this, SLOT(actionClose())); |
| 91 #if SK_SUPPORT_GPU | 89 #if SK_SUPPORT_GPU |
| 92 connect(&fSettingsWidget, SIGNAL(glSettingsChanged()), this, SLOT(actionGLSe
ttingsChanged())); | 90 connect(&fSettingsWidget, SIGNAL(glSettingsChanged()), this, SLOT(actionGLSe
ttingsChanged())); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 119 } | 117 } |
| 120 | 118 |
| 121 void SkDebuggerGUI::actionBreakpoints() { | 119 void SkDebuggerGUI::actionBreakpoints() { |
| 122 bool breakpointsActivated = fActionBreakpoint.isChecked(); | 120 bool breakpointsActivated = fActionBreakpoint.isChecked(); |
| 123 for (int row = 0; row < fListWidget.count(); row++) { | 121 for (int row = 0; row < fListWidget.count(); row++) { |
| 124 QListWidgetItem *item = fListWidget.item(row); | 122 QListWidgetItem *item = fListWidget.item(row); |
| 125 item->setHidden(item->checkState() == Qt::Unchecked && breakpointsActiva
ted); | 123 item->setHidden(item->checkState() == Qt::Unchecked && breakpointsActiva
ted); |
| 126 } | 124 } |
| 127 } | 125 } |
| 128 | 126 |
| 129 void SkDebuggerGUI::actionToggleIndexStyle() { | |
| 130 bool indexStyleToggle = fActionToggleIndexStyle.isChecked(); | |
| 131 SkListWidget* list = (SkListWidget*) fListWidget.itemDelegate(); | |
| 132 list->setIndexStyle(indexStyleToggle ? SkListWidget::kOffset_IndexStyle | |
| 133 : SkListWidget::kIndex_IndexStyle); | |
| 134 fListWidget.update(); | |
| 135 } | |
| 136 | |
| 137 void SkDebuggerGUI::showDeletes() { | 127 void SkDebuggerGUI::showDeletes() { |
| 138 bool deletesActivated = fActionShowDeletes.isChecked(); | 128 bool deletesActivated = fActionShowDeletes.isChecked(); |
| 139 for (int row = 0; row < fListWidget.count(); row++) { | 129 for (int row = 0; row < fListWidget.count(); row++) { |
| 140 QListWidgetItem *item = fListWidget.item(row); | 130 QListWidgetItem *item = fListWidget.item(row); |
| 141 item->setHidden(fDebugger.isCommandVisible(row) && deletesActivated); | 131 item->setHidden(fDebugger.isCommandVisible(row) && deletesActivated); |
| 142 } | 132 } |
| 143 } | 133 } |
| 144 // This is a simplification of PictureBenchmark's run with the addition of | 134 // This is a simplification of PictureBenchmark's run with the addition of |
| 145 // clearing of the times after the first pass (in resetTimes) | 135 // clearing of the times after the first pass (in resetTimes) |
| 146 void SkDebuggerGUI::run(const SkPicture* pict, | 136 void SkDebuggerGUI::run(const SkPicture* pict, |
| (...skipping 329 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 476 fActionOpen.setText("Open"); | 466 fActionOpen.setText("Open"); |
| 477 | 467 |
| 478 QIcon breakpoint; | 468 QIcon breakpoint; |
| 479 breakpoint.addFile(QString::fromUtf8(":/breakpoint.png"), | 469 breakpoint.addFile(QString::fromUtf8(":/breakpoint.png"), |
| 480 QSize(), QIcon::Normal, QIcon::Off); | 470 QSize(), QIcon::Normal, QIcon::Off); |
| 481 fActionBreakpoint.setShortcut(QKeySequence(tr("Ctrl+B"))); | 471 fActionBreakpoint.setShortcut(QKeySequence(tr("Ctrl+B"))); |
| 482 fActionBreakpoint.setIcon(breakpoint); | 472 fActionBreakpoint.setIcon(breakpoint); |
| 483 fActionBreakpoint.setText("Breakpoints"); | 473 fActionBreakpoint.setText("Breakpoints"); |
| 484 fActionBreakpoint.setCheckable(true); | 474 fActionBreakpoint.setCheckable(true); |
| 485 | 475 |
| 486 fActionToggleIndexStyle.setShortcut(QKeySequence(tr("Ctrl+T"))); | |
| 487 fActionToggleIndexStyle.setText("Toggle Index Style"); | |
| 488 fActionToggleIndexStyle.setCheckable(true); | |
| 489 | |
| 490 QIcon cancel; | 476 QIcon cancel; |
| 491 cancel.addFile(QString::fromUtf8(":/reload.png"), QSize(), | 477 cancel.addFile(QString::fromUtf8(":/reload.png"), QSize(), |
| 492 QIcon::Normal, QIcon::Off); | 478 QIcon::Normal, QIcon::Off); |
| 493 fActionCancel.setIcon(cancel); | 479 fActionCancel.setIcon(cancel); |
| 494 fActionCancel.setText("Clear Filter"); | 480 fActionCancel.setText("Clear Filter"); |
| 495 | 481 |
| 496 fActionClearBreakpoints.setShortcut(QKeySequence(tr("Alt+B"))); | 482 fActionClearBreakpoints.setShortcut(QKeySequence(tr("Alt+B"))); |
| 497 fActionClearBreakpoints.setText("Clear Breakpoints"); | 483 fActionClearBreakpoints.setText("Clear Breakpoints"); |
| 498 | 484 |
| 499 fActionClearDeletes.setShortcut(QKeySequence(tr("Alt+X"))); | 485 fActionClearDeletes.setShortcut(QKeySequence(tr("Alt+X"))); |
| (...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 697 fMenuNavigate.addAction(&fActionRewind); | 683 fMenuNavigate.addAction(&fActionRewind); |
| 698 fMenuNavigate.addAction(&fActionStepBack); | 684 fMenuNavigate.addAction(&fActionStepBack); |
| 699 fMenuNavigate.addAction(&fActionStepForward); | 685 fMenuNavigate.addAction(&fActionStepForward); |
| 700 fMenuNavigate.addAction(&fActionPlay); | 686 fMenuNavigate.addAction(&fActionPlay); |
| 701 fMenuNavigate.addAction(&fActionPause); | 687 fMenuNavigate.addAction(&fActionPause); |
| 702 fMenuNavigate.addAction(&fActionGoToLine); | 688 fMenuNavigate.addAction(&fActionGoToLine); |
| 703 | 689 |
| 704 fMenuView.setTitle("View"); | 690 fMenuView.setTitle("View"); |
| 705 fMenuView.addAction(&fActionBreakpoint); | 691 fMenuView.addAction(&fActionBreakpoint); |
| 706 fMenuView.addAction(&fActionShowDeletes); | 692 fMenuView.addAction(&fActionShowDeletes); |
| 707 fMenuView.addAction(&fActionToggleIndexStyle); | |
| 708 fMenuView.addAction(&fActionZoomIn); | 693 fMenuView.addAction(&fActionZoomIn); |
| 709 fMenuView.addAction(&fActionZoomOut); | 694 fMenuView.addAction(&fActionZoomOut); |
| 710 | 695 |
| 711 fMenuWindows.setTitle("Window"); | 696 fMenuWindows.setTitle("Window"); |
| 712 fMenuWindows.addAction(&fActionInspector); | 697 fMenuWindows.addAction(&fActionInspector); |
| 713 fMenuWindows.addAction(&fActionSettings); | 698 fMenuWindows.addAction(&fActionSettings); |
| 714 fMenuWindows.addAction(&fActionDirectory); | 699 fMenuWindows.addAction(&fActionDirectory); |
| 715 | 700 |
| 716 fActionGoToLine.setText("Go to Line..."); | 701 fActionGoToLine.setText("Go to Line..."); |
| 717 fActionGoToLine.setDisabled(true); | 702 fActionGoToLine.setDisabled(true); |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 780 fActionSave.setDisabled(false); | 765 fActionSave.setDisabled(false); |
| 781 fActionSaveAs.setDisabled(false); | 766 fActionSaveAs.setDisabled(false); |
| 782 fActionPause.setChecked(false); | 767 fActionPause.setChecked(false); |
| 783 fDrawCommandGeometryWidget.setDrawCommandIndex(-1); | 768 fDrawCommandGeometryWidget.setDrawCommandIndex(-1); |
| 784 | 769 |
| 785 fLoading = false; | 770 fLoading = false; |
| 786 actionPlay(); | 771 actionPlay(); |
| 787 } | 772 } |
| 788 | 773 |
| 789 void SkDebuggerGUI::setupListWidget() { | 774 void SkDebuggerGUI::setupListWidget() { |
| 775 |
| 776 SkASSERT(!strcmp("Save", |
| 777 SkDrawCommand::GetCommandString(SkDrawCommand::kSave_OpType
))); |
| 778 SkASSERT(!strcmp("SaveLayer", |
| 779 SkDrawCommand::GetCommandString(SkDrawCommand::kSaveLayer_O
pType))); |
| 780 SkASSERT(!strcmp("Restore", |
| 781 SkDrawCommand::GetCommandString(SkDrawCommand::kRestore_OpT
ype))); |
| 782 SkASSERT(!strcmp("BeginCommentGroup", |
| 783 SkDrawCommand::GetCommandString(SkDrawCommand::kBeginCommen
tGroup_OpType))); |
| 784 SkASSERT(!strcmp("EndCommentGroup", |
| 785 SkDrawCommand::GetCommandString(SkDrawCommand::kEndCommentG
roup_OpType))); |
| 786 |
| 787 |
| 790 fListWidget.clear(); | 788 fListWidget.clear(); |
| 791 int counter = 0; | 789 int counter = 0; |
| 792 int indent = 0; | 790 int indent = 0; |
| 793 for (int i = 0; i < fDebugger.getSize(); i++) { | 791 for (int i = 0; i < fDebugger.getSize(); i++) { |
| 794 QListWidgetItem *item = new QListWidgetItem(); | 792 QListWidgetItem *item = new QListWidgetItem(); |
| 795 SkDrawCommand* command = fDebugger.getDrawCommandAt(i); | 793 SkDrawCommand* command = fDebugger.getDrawCommandAt(i); |
| 796 SkString commandString = command->toString(); | 794 SkString commandString = command->toString(); |
| 797 item->setData(Qt::DisplayRole, commandString.c_str()); | 795 item->setData(Qt::DisplayRole, commandString.c_str()); |
| 798 item->setData(Qt::UserRole + 1, counter++); | 796 item->setData(Qt::UserRole + 1, counter++); |
| 799 | 797 |
| 800 if (0 == strcmp("Restore", commandString.c_str()) || | 798 if (0 == strcmp("Restore", commandString.c_str()) || |
| 801 0 == strcmp("EndCommentGroup", commandString.c_str())) { | 799 0 == strcmp("EndCommentGroup", commandString.c_str())) { |
| 802 indent -= 10; | 800 indent -= 10; |
| 803 } | 801 } |
| 804 | 802 |
| 805 item->setData(Qt::UserRole + 3, indent); | 803 item->setData(Qt::UserRole + 3, indent); |
| 806 | 804 |
| 807 if (0 == strcmp("Save", commandString.c_str()) || | 805 if (0 == strcmp("Save", commandString.c_str()) || |
| 808 0 == strcmp("Save Layer", commandString.c_str()) || | 806 0 == strcmp("SaveLayer", commandString.c_str()) || |
| 809 0 == strcmp("BeginCommentGroup", commandString.c_str())) { | 807 0 == strcmp("BeginCommentGroup", commandString.c_str())) { |
| 810 indent += 10; | 808 indent += 10; |
| 811 } | 809 } |
| 812 | 810 |
| 813 item->setData(Qt::UserRole + 4, -1); | 811 item->setData(Qt::UserRole + 4, -1); |
| 814 item->setData(Qt::UserRole + 5, (int) command->offset()); | |
| 815 | 812 |
| 816 fListWidget.addItem(item); | 813 fListWidget.addItem(item); |
| 817 } | 814 } |
| 818 } | 815 } |
| 819 | 816 |
| 820 void SkDebuggerGUI::setupOverviewText(const SkTDArray<double>* typeTimes, | 817 void SkDebuggerGUI::setupOverviewText(const SkTDArray<double>* typeTimes, |
| 821 double totTime, | 818 double totTime, |
| 822 int numRuns) { | 819 int numRuns) { |
| 823 SkString overview; | 820 SkString overview; |
| 824 fDebugger.getOverviewText(typeTimes, totTime, &overview, numRuns); | 821 fDebugger.getOverviewText(typeTimes, totTime, &overview, numRuns); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 854 fCanvasWidget.drawTo(fPausedRow); | 851 fCanvasWidget.drawTo(fPausedRow); |
| 855 } else { | 852 } else { |
| 856 fCanvasWidget.drawTo(fListWidget.currentRow()); | 853 fCanvasWidget.drawTo(fListWidget.currentRow()); |
| 857 } | 854 } |
| 858 } | 855 } |
| 859 | 856 |
| 860 void SkDebuggerGUI::updateHit(int newHit) { | 857 void SkDebuggerGUI::updateHit(int newHit) { |
| 861 fCommandHitBox.setText(QString::number(newHit)); | 858 fCommandHitBox.setText(QString::number(newHit)); |
| 862 } | 859 } |
| 863 | 860 |
| OLD | NEW |