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 "SkForceLinking.h" | 9 #include "SkForceLinking.h" |
10 #include <QListWidgetItem> | 10 #include <QListWidgetItem> |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
59 , fCanvasWidget(this, &fDebugger) | 59 , fCanvasWidget(this, &fDebugger) |
60 , fDrawCommandGeometryWidget(&fDebugger) | 60 , fDrawCommandGeometryWidget(&fDebugger) |
61 , fMenuBar(this) | 61 , fMenuBar(this) |
62 , fMenuFile(this) | 62 , fMenuFile(this) |
63 , fMenuNavigate(this) | 63 , fMenuNavigate(this) |
64 , fMenuView(this) | 64 , fMenuView(this) |
65 , fLoading(false) | 65 , fLoading(false) |
66 { | 66 { |
67 setupUi(this); | 67 setupUi(this); |
68 fListWidget.setSelectionMode(QAbstractItemView::ExtendedSelection); | 68 fListWidget.setSelectionMode(QAbstractItemView::ExtendedSelection); |
69 connect(&fListWidget, SIGNAL(currentItemChanged(QListWidgetItem*, QListWidge tItem*)), this, SLOT(registerListClick(QListWidgetItem *))); | 69 connect(&fListWidget, SIGNAL(currentItemChanged(QListWidgetItem*, QListWidge tItem*)), this, |
70 SLOT(updateDrawCommandInfo())); | |
70 connect(&fActionOpen, SIGNAL(triggered()), this, SLOT(openFile())); | 71 connect(&fActionOpen, SIGNAL(triggered()), this, SLOT(openFile())); |
71 connect(&fActionDirectory, SIGNAL(triggered()), this, SLOT(toggleDirectory() )); | 72 connect(&fActionDirectory, SIGNAL(triggered()), this, SLOT(toggleDirectory() )); |
72 connect(&fDirectoryWidget, SIGNAL(currentItemChanged(QListWidgetItem*, QList WidgetItem*)), this, SLOT(loadFile(QListWidgetItem *))); | 73 connect(&fDirectoryWidget, SIGNAL(currentItemChanged(QListWidgetItem*, QList WidgetItem*)), this, SLOT(loadFile(QListWidgetItem *))); |
73 connect(&fActionDelete, SIGNAL(triggered()), this, SLOT(actionDelete())); | 74 connect(&fActionDelete, SIGNAL(triggered()), this, SLOT(actionDelete())); |
74 connect(&fListWidget, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLO T(toggleBreakpoint())); | 75 connect(&fListWidget, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLO T(toggleBreakpoint())); |
75 connect(&fActionRewind, SIGNAL(triggered()), this, SLOT(actionRewind())); | 76 connect(&fActionRewind, SIGNAL(triggered()), this, SLOT(actionRewind())); |
76 connect(&fActionPlay, SIGNAL(triggered()), this, SLOT(actionPlay())); | 77 connect(&fActionPlay, SIGNAL(triggered()), this, SLOT(actionPlay())); |
77 connect(&fActionStepBack, SIGNAL(triggered()), this, SLOT(actionStepBack())) ; | 78 connect(&fActionStepBack, SIGNAL(triggered()), this, SLOT(actionStepBack())) ; |
78 connect(&fActionStepForward, SIGNAL(triggered()), this, SLOT(actionStepForwa rd())); | 79 connect(&fActionStepForward, SIGNAL(triggered()), this, SLOT(actionStepForwa rd())); |
79 connect(&fActionBreakpoint, SIGNAL(triggered()), this, SLOT(actionBreakpoint s())); | 80 connect(&fActionBreakpoint, SIGNAL(triggered()), this, SLOT(actionBreakpoint s())); |
(...skipping 11 matching lines...) Expand all Loading... | |
91 #endif | 92 #endif |
92 connect(&fSettingsWidget, SIGNAL(rasterSettingsChanged()), this, SLOT(action RasterSettingsChanged())); | 93 connect(&fSettingsWidget, SIGNAL(rasterSettingsChanged()), this, SLOT(action RasterSettingsChanged())); |
93 connect(&fSettingsWidget, SIGNAL(visualizationsChanged()), this, SLOT(action VisualizationsChanged())); | 94 connect(&fSettingsWidget, SIGNAL(visualizationsChanged()), this, SLOT(action VisualizationsChanged())); |
94 connect(&fSettingsWidget, SIGNAL(texFilterSettingsChanged()), this, SLOT(act ionTextureFilter())); | 95 connect(&fSettingsWidget, SIGNAL(texFilterSettingsChanged()), this, SLOT(act ionTextureFilter())); |
95 connect(&fActionPause, SIGNAL(toggled(bool)), this, SLOT(pauseDrawing(bool)) ); | 96 connect(&fActionPause, SIGNAL(toggled(bool)), this, SLOT(pauseDrawing(bool)) ); |
96 connect(&fActionCreateBreakpoint, SIGNAL(activated()), this, SLOT(toggleBrea kpoint())); | 97 connect(&fActionCreateBreakpoint, SIGNAL(activated()), this, SLOT(toggleBrea kpoint())); |
97 connect(&fActionShowDeletes, SIGNAL(triggered()), this, SLOT(showDeletes())) ; | 98 connect(&fActionShowDeletes, SIGNAL(triggered()), this, SLOT(showDeletes())) ; |
98 connect(&fCanvasWidget, SIGNAL(hitChanged(int)), this, SLOT(selectCommand(in t))); | 99 connect(&fCanvasWidget, SIGNAL(hitChanged(int)), this, SLOT(selectCommand(in t))); |
99 connect(&fCanvasWidget, SIGNAL(hitChanged(int)), this, SLOT(updateHit(int))) ; | 100 connect(&fCanvasWidget, SIGNAL(hitChanged(int)), this, SLOT(updateHit(int))) ; |
100 connect(&fCanvasWidget, SIGNAL(scaleFactorChanged(float)), this, SLOT(action Scale(float))); | 101 connect(&fCanvasWidget, SIGNAL(scaleFactorChanged(float)), this, SLOT(action Scale(float))); |
101 connect(&fCanvasWidget, SIGNAL(commandChanged(int)), this, SLOT(updateComman d(int))); | |
102 connect(&fCanvasWidget, SIGNAL(commandChanged(int)), &fDrawCommandGeometryWi dget, SLOT(updateImage())); | |
103 | 102 |
104 connect(&fActionSaveAs, SIGNAL(triggered()), this, SLOT(actionSaveAs())); | 103 connect(&fActionSaveAs, SIGNAL(triggered()), this, SLOT(actionSaveAs())); |
105 connect(&fActionSave, SIGNAL(triggered()), this, SLOT(actionSave())); | 104 connect(&fActionSave, SIGNAL(triggered()), this, SLOT(actionSave())); |
106 | 105 |
107 fMapper.setMapping(&fActionZoomIn, SkCanvasWidget::kIn_ZoomCommand); | 106 fMapper.setMapping(&fActionZoomIn, SkCanvasWidget::kIn_ZoomCommand); |
108 fMapper.setMapping(&fActionZoomOut, SkCanvasWidget::kOut_ZoomCommand); | 107 fMapper.setMapping(&fActionZoomOut, SkCanvasWidget::kOut_ZoomCommand); |
109 | 108 |
110 connect(&fActionZoomIn, SIGNAL(triggered()), &fMapper, SLOT(map())); | 109 connect(&fActionZoomIn, SIGNAL(triggered()), &fMapper, SLOT(map())); |
111 connect(&fActionZoomOut, SIGNAL(triggered()), &fMapper, SLOT(map())); | 110 connect(&fActionZoomOut, SIGNAL(triggered()), &fMapper, SLOT(map())); |
112 connect(&fMapper, SIGNAL(mapped(int)), &fCanvasWidget, SLOT(zoom(int))); | 111 connect(&fMapper, SIGNAL(mapped(int)), &fCanvasWidget, SLOT(zoom(int))); |
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
397 fDirectoryWidgetActive = true; | 396 fDirectoryWidgetActive = true; |
398 } | 397 } |
399 | 398 |
400 void SkDebuggerGUI::pauseDrawing(bool isPaused) { | 399 void SkDebuggerGUI::pauseDrawing(bool isPaused) { |
401 fPausedRow = fListWidget.currentRow(); | 400 fPausedRow = fListWidget.currentRow(); |
402 if (!fLoading) { | 401 if (!fLoading) { |
403 fCanvasWidget.drawTo(fPausedRow); | 402 fCanvasWidget.drawTo(fPausedRow); |
404 } | 403 } |
405 } | 404 } |
406 | 405 |
407 void SkDebuggerGUI::registerListClick(QListWidgetItem *item) { | 406 void SkDebuggerGUI::updateDrawCommandInfo() { |
408 if(!fLoading) { | 407 int currentRow = -1; |
409 int currentRow = fListWidget.currentRow(); | 408 if (!fLoading) { |
409 currentRow = fListWidget.currentRow(); | |
410 } | |
411 if (currentRow == -1) { | |
412 fInspectorWidget.setText("", SkInspectorWidget::kDetail_TabType); | |
413 fInspectorWidget.setText("", SkInspectorWidget::kClipStack_TabType); | |
414 fCurrentCommandBox.setText(""); | |
415 fDrawCommandGeometryWidget.setDrawCommandIndex(-1); | |
416 } else { | |
417 fInspectorWidget.setDisabled(false); | |
418 fViewStateFrame.setDisabled(false); | |
410 | 419 |
robertphillips
2015/01/05 19:14:09
Don't we no longer need this "currentRow != -1" te
Kimmo Kinnunen
2015/01/07 07:33:48
Done. (Sorry, that was a rebase error, too many pa
| |
411 if (currentRow != -1) { | 420 if (currentRow != -1) { |
412 if (!this->isPaused()) { | 421 if (!this->isPaused()) { |
413 fCanvasWidget.drawTo(currentRow); | 422 fCanvasWidget.drawTo(currentRow); |
414 } | 423 } |
415 const SkTDArray<SkString*> *currInfo = fDebugger.getCommandInfo(curr entRow); | 424 const SkTDArray<SkString*> *currInfo = fDebugger.getCommandInfo(curr entRow); |
416 | 425 |
417 /* TODO(chudy): Add command type before parameters. Rename v | 426 /* TODO(chudy): Add command type before parameters. Rename v |
418 * to something more informative. */ | 427 * to something more informative. */ |
419 if (currInfo) { | 428 if (currInfo) { |
420 QString info; | 429 QString info; |
421 info.append("<b>Parameters: </b><br/>"); | 430 info.append("<b>Parameters: </b><br/>"); |
422 for (int i = 0; i < currInfo->count(); i++) { | 431 for (int i = 0; i < currInfo->count(); i++) { |
423 | 432 |
424 info.append(QString((*currInfo)[i]->c_str())); | 433 info.append(QString((*currInfo)[i]->c_str())); |
425 info.append("<br/>"); | 434 info.append("<br/>"); |
426 } | 435 } |
427 fInspectorWidget.setText(info, SkInspectorWidget::kDetail_TabTyp e); | 436 fInspectorWidget.setText(info, SkInspectorWidget::kDetail_TabTyp e); |
428 fInspectorWidget.setDisabled(false); | 437 fInspectorWidget.setDisabled(false); |
429 fViewStateFrame.setDisabled(false); | 438 fViewStateFrame.setDisabled(false); |
430 } | 439 } |
431 setupClipStackText(); | 440 } else { |
441 fInspectorWidget.setText("", SkInspectorWidget::kDetail_TabType); | |
432 } | 442 } |
433 | 443 |
444 SkString clipStack; | |
445 fDebugger.getClipStackText(&clipStack); | |
446 fInspectorWidget.setText(clipStack.c_str(), SkInspectorWidget::kClipStac k_TabType); | |
447 | |
448 fCurrentCommandBox.setText(QString::number(currentRow)); | |
449 | |
450 fDrawCommandGeometryWidget.setDrawCommandIndex(currentRow); | |
434 } | 451 } |
435 } | 452 } |
436 | 453 |
437 void SkDebuggerGUI::selectCommand(int command) { | 454 void SkDebuggerGUI::selectCommand(int command) { |
438 if (this->isPaused()) { | 455 if (this->isPaused()) { |
439 fListWidget.setCurrentRow(command); | 456 fListWidget.setCurrentRow(command); |
440 } | 457 } |
441 } | 458 } |
442 | 459 |
443 void SkDebuggerGUI::toggleBreakpoint() { | 460 void SkDebuggerGUI::toggleBreakpoint() { |
(...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
776 this->setupOverviewText(NULL, 0.0, 1); | 793 this->setupOverviewText(NULL, 0.0, 1); |
777 fInspectorWidget.setDisabled(false); | 794 fInspectorWidget.setDisabled(false); |
778 fViewStateFrame.setDisabled(false); | 795 fViewStateFrame.setDisabled(false); |
779 fSettingsWidget.setDisabled(false); | 796 fSettingsWidget.setDisabled(false); |
780 fMenuEdit.setDisabled(false); | 797 fMenuEdit.setDisabled(false); |
781 fMenuNavigate.setDisabled(false); | 798 fMenuNavigate.setDisabled(false); |
782 fMenuView.setDisabled(false); | 799 fMenuView.setDisabled(false); |
783 fActionSave.setDisabled(false); | 800 fActionSave.setDisabled(false); |
784 fActionSaveAs.setDisabled(false); | 801 fActionSaveAs.setDisabled(false); |
785 fActionPause.setChecked(false); | 802 fActionPause.setChecked(false); |
803 fDrawCommandGeometryWidget.setDrawCommandIndex(-1); | |
804 | |
786 fLoading = false; | 805 fLoading = false; |
787 actionPlay(); | 806 actionPlay(); |
788 } | 807 } |
789 | 808 |
790 void SkDebuggerGUI::setupListWidget() { | 809 void SkDebuggerGUI::setupListWidget() { |
791 fListWidget.clear(); | 810 fListWidget.clear(); |
792 int counter = 0; | 811 int counter = 0; |
793 int indent = 0; | 812 int indent = 0; |
794 for (int i = 0; i < fDebugger.getSize(); i++) { | 813 for (int i = 0; i < fDebugger.getSize(); i++) { |
795 QListWidgetItem *item = new QListWidgetItem(); | 814 QListWidgetItem *item = new QListWidgetItem(); |
(...skipping 23 matching lines...) Expand all Loading... | |
819 } | 838 } |
820 | 839 |
821 void SkDebuggerGUI::setupOverviewText(const SkTDArray<double>* typeTimes, | 840 void SkDebuggerGUI::setupOverviewText(const SkTDArray<double>* typeTimes, |
822 double totTime, | 841 double totTime, |
823 int numRuns) { | 842 int numRuns) { |
824 SkString overview; | 843 SkString overview; |
825 fDebugger.getOverviewText(typeTimes, totTime, &overview, numRuns); | 844 fDebugger.getOverviewText(typeTimes, totTime, &overview, numRuns); |
826 fInspectorWidget.setText(overview.c_str(), SkInspectorWidget::kOverview_TabT ype); | 845 fInspectorWidget.setText(overview.c_str(), SkInspectorWidget::kOverview_TabT ype); |
827 } | 846 } |
828 | 847 |
829 void SkDebuggerGUI::setupClipStackText() { | |
830 SkString clipStack; | |
831 fDebugger.getClipStackText(&clipStack); | |
832 fInspectorWidget.setText(clipStack.c_str(), SkInspectorWidget::kClipStack_Ta bType); | |
833 } | |
834 | 848 |
835 void SkDebuggerGUI::setupComboBox() { | 849 void SkDebuggerGUI::setupComboBox() { |
836 fFilter.clear(); | 850 fFilter.clear(); |
837 fFilter.addItem("--Filter By Available Commands--"); | 851 fFilter.addItem("--Filter By Available Commands--"); |
838 | 852 |
839 std::map<std::string, int> map; | 853 std::map<std::string, int> map; |
840 for (int i = 0; i < fDebugger.getSize(); i++) { | 854 for (int i = 0; i < fDebugger.getSize(); i++) { |
841 map[fDebugger.getDrawCommandAt(i)->toString().c_str()]++; | 855 map[fDebugger.getDrawCommandAt(i)->toString().c_str()]++; |
842 } | 856 } |
843 | 857 |
844 for (std::map<std::string, int>::iterator it = map.begin(); it != map.end(); | 858 for (std::map<std::string, int>::iterator it = map.begin(); it != map.end(); |
845 ++it) { | 859 ++it) { |
846 fFilter.addItem((it->first).c_str()); | 860 fFilter.addItem((it->first).c_str()); |
847 } | 861 } |
848 | 862 |
849 // NOTE(chudy): Makes first item unselectable. | 863 // NOTE(chudy): Makes first item unselectable. |
850 QStandardItemModel* model = qobject_cast<QStandardItemModel*>( | 864 QStandardItemModel* model = qobject_cast<QStandardItemModel*>( |
851 fFilter.model()); | 865 fFilter.model()); |
852 QModelIndex firstIndex = model->index(0, fFilter.modelColumn(), | 866 QModelIndex firstIndex = model->index(0, fFilter.modelColumn(), |
853 fFilter.rootModelIndex()); | 867 fFilter.rootModelIndex()); |
854 QStandardItem* firstItem = model->itemFromIndex(firstIndex); | 868 QStandardItem* firstItem = model->itemFromIndex(firstIndex); |
855 firstItem->setSelectable(false); | 869 firstItem->setSelectable(false); |
856 } | 870 } |
857 | 871 |
858 void SkDebuggerGUI::updateCommand(int newCommand) { | |
859 fCurrentCommandBox.setText(QString::number(newCommand)); | |
860 } | |
861 | |
862 void SkDebuggerGUI::updateHit(int newHit) { | 872 void SkDebuggerGUI::updateHit(int newHit) { |
863 fCommandHitBox.setText(QString::number(newHit)); | 873 fCommandHitBox.setText(QString::number(newHit)); |
864 } | 874 } |
865 | 875 |
OLD | NEW |