/
redgpu
/
ezEngine
Обзор
Документация
Войти
/
redgpu
/
ezEngine
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
Code/Tools/Inspector/GlobalEventsWidget.cpp
155 строк
4 KB
Jan Krassnigg
Updated ADS and fixed document layout restoration (#1497)
28 фев 2025, 12:35
Не верифицирован
28 фев 2025, 12:35
2e065c5
Код
Авторство
О чём код?
#include <Inspector/InspectorPCH.h> #include <Foundation/Communication/Telemetry.h> #include <GuiFoundation/GuiFoundationDLL.h> #include <GuiFoundation/UIServices/UIServices.moc.h> #include <Inspector/GlobalEventsWidget.moc.h> #include <Inspector/MainWindow.moc.h> #include <qlistwidget.h> ezQtGlobalEventsWidget* ezQtGlobalEventsWidget::s_pWidget = nullptr; ezQtGlobalEventsWidget::ezQtGlobalEventsWidget(ads::CDockManager* pDockManager, QWidget* pParent) : ads::CDockWidget(pDockManager, "Global Events", pParent) { s_pWidget = this; setupUi(this); setWidget(GlobalEventsFrame); setIcon(QIcon(":/Icons/Icons/GlobalEvent.svg")); ResetStats(); } void ezQtGlobalEventsWidget::ResetStats() { m_Events.Clear(); TableEvents->clear(); { QStringList Headers; Headers.append(" Event "); Headers.append(" Times Fired "); Headers.append(" # Handlers "); Headers.append(" # Handlers Once "); TableEvents->setColumnCount(static_cast<int>(Headers.size())); TableEvents->setHorizontalHeaderLabels(Headers); TableEvents->horizontalHeader()->show(); } } void ezQtGlobalEventsWidget::ProcessTelemetry(void* pUnuseed) { if (!s_pWidget) return; ezTelemetryMessage msg; bool bUpdateTable = false; bool bFillTable = false; while (ezTelemetry::RetrieveMessage('EVNT', msg) == EZ_SUCCESS) { if (msg.GetMessageID() == ' CLR') { s_pWidget->m_Events.Clear(); } if (msg.GetMessageID() == 'DATA') { ezString sName; msg.GetReader() >> sName; GlobalEventsData& sd = s_pWidget->m_Events[sName]; msg.GetReader() >> sd.m_uiTimesFired; msg.GetReader() >> sd.m_uiNumHandlers; msg.GetReader() >> sd.m_uiNumHandlersOnce; if (sd.m_iTableRow == -1) bUpdateTable = true; bFillTable = true; } } if (bUpdateTable) s_pWidget->UpdateTable(true); else if (bFillTable) s_pWidget->UpdateTable(false); } void ezQtGlobalEventsWidget::UpdateTable(bool bRecreate) { ezQtScopedUpdatesDisabled _1(TableEvents); if (bRecreate) { TableEvents->clear(); TableEvents->setRowCount(m_Events.GetCount()); QStringList Headers; Headers.append(" "); Headers.append(" Event "); Headers.append(" Times Fired "); Headers.append(" # Handlers "); Headers.append(" # Handlers Once "); TableEvents->setColumnCount(static_cast<int>(Headers.size())); TableEvents->setHorizontalHeaderLabels(Headers); TableEvents->horizontalHeader()->show(); ezStringBuilder sTemp; ezInt32 iRow = 0; for (ezMap<ezString, GlobalEventsData>::Iterator it = m_Events.GetIterator(); it.IsValid(); ++it) { it.Value().m_iTableRow = iRow; QLabel* pIcon = new QLabel(); QIcon icon = ezQtUiServices::GetCachedIconResource(":/Icons/Icons/GlobalEvent.svg"); pIcon->setPixmap(icon.pixmap(QSize(24, 24))); pIcon->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter); TableEvents->setCellWidget(iRow, 0, pIcon); sTemp.SetFormat(" {0} ", it.Key()); TableEvents->setCellWidget(iRow, 1, new QLabel(sTemp.GetData())); // Event sTemp.SetFormat(" {0} ", it.Value().m_uiTimesFired); TableEvents->setCellWidget(iRow, 2, new QLabel(sTemp.GetData())); sTemp.SetFormat(" {0} ", it.Value().m_uiNumHandlers); TableEvents->setCellWidget(iRow, 3, new QLabel(sTemp.GetData())); sTemp.SetFormat(" {0} ", it.Value().m_uiNumHandlersOnce); TableEvents->setCellWidget(iRow, 4, new QLabel(sTemp.GetData())); ++iRow; } TableEvents->resizeColumnsToContents(); } else { ezStringBuilder sTemp; ezInt32 iRow = 0; for (ezMap<ezString, GlobalEventsData>::Iterator it = m_Events.GetIterator(); it.IsValid(); ++it) { sTemp.SetFormat(" {0} ", it.Value().m_uiTimesFired); ((QLabel*)TableEvents->cellWidget(iRow, 2))->setText(sTemp.GetData()); sTemp.SetFormat(" {0} ", it.Value().m_uiNumHandlers); ((QLabel*)TableEvents->cellWidget(iRow, 3))->setText(sTemp.GetData()); sTemp.SetFormat(" {0} ", it.Value().m_uiNumHandlersOnce); ((QLabel*)TableEvents->cellWidget(iRow, 4))->setText(sTemp.GetData()); ++iRow; } } }