StackPanel.cpp 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #include "StackPanel.hxx"
  9. #include <Source/LUA/moc_StackPanel.cpp>
  10. DHStackWidget::DHStackWidget(QWidget* parent)
  11. : QTableWidget(parent)
  12. {
  13. connect(this, SIGNAL(doubleClicked(const QModelIndex &)), this, SLOT(OnDoubleClicked(const QModelIndex &)));
  14. LUAStackTrackerMessages::Handler::BusConnect();
  15. }
  16. DHStackWidget::~DHStackWidget()
  17. {
  18. LUAStackTrackerMessages::Handler::BusDisconnect();
  19. clearContents();
  20. setRowCount(0);
  21. }
  22. void DHStackWidget::DeleteAll()
  23. {
  24. clearContents();
  25. setRowCount(0);
  26. }
  27. //////////////////////////////////////////////////////////////////////////
  28. //Debugger Messages, from the LUAEditor::LUABreakpointTrackerMessages::Bus
  29. void DHStackWidget::StackUpdate(const LUAEditor::StackList& stackList)
  30. {
  31. DeleteAll();
  32. for (LUAEditor::StackList::const_iterator it = stackList.begin(); it != stackList.end(); ++it)
  33. {
  34. AppendStackEntry(it->m_blob, it->m_blobLine);
  35. }
  36. }
  37. void DHStackWidget::StackClear()
  38. {
  39. DeleteAll();
  40. }
  41. void DHStackWidget::AppendStackEntry(const AZStd::string& debugName, int lineNumber)
  42. {
  43. int newRow = rowCount();
  44. insertRow(newRow);
  45. // magic number column #0 is the line number, 1 is the script file name
  46. QTableWidgetItem* newItem = new QTableWidgetItem(debugName.c_str());
  47. newItem->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
  48. setItem(newRow, 1, newItem);
  49. newItem = new QTableWidgetItem(QString().setNum(lineNumber + 1)); // +1 offset to match editor numbering
  50. newItem->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
  51. setItem(newRow, 0, newItem);
  52. }
  53. // QT table view messages
  54. void DHStackWidget::OnDoubleClicked(const QModelIndex& modelIdx)
  55. {
  56. // magic number column #0 is the line number, 1 is the script file name
  57. QTableWidgetItem* line = item(modelIdx.row(), 0);
  58. QTableWidgetItem* file = item(modelIdx.row(), 1);
  59. LUAEditor::LUAStackRequestMessages::Bus::Broadcast(
  60. &LUAEditor::LUAStackRequestMessages::Bus::Events::RequestStackClicked,
  61. AZStd::string(file->data(Qt::DisplayRole).toString().toUtf8().data()),
  62. line->data(Qt::DisplayRole).toInt());
  63. }