/
redgpu
/
ezEngine
Обзор
Документация
Войти
/
redgpu
/
ezEngine
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
Code/Tools/Inspector/SubsystemsWidget.cpp
163 строки
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/MainWindow.moc.h> #include <Inspector/SubsystemsWidget.moc.h> ezQtSubsystemsWidget* ezQtSubsystemsWidget::s_pWidget = nullptr; ezQtSubsystemsWidget::ezQtSubsystemsWidget(ads::CDockManager* pDockManager, QWidget* pParent) : ads::CDockWidget(pDockManager, "Subsystem Widget", pParent) { s_pWidget = this; setupUi(this); setWidget(TableSubsystems); setIcon(QIcon(":/Icons/Icons/Subsystem.svg")); ResetStats(); } void ezQtSubsystemsWidget::ResetStats() { m_bUpdateSubsystems = true; m_Subsystems.Clear(); } void ezQtSubsystemsWidget::UpdateStats() { UpdateSubSystems(); } void ezQtSubsystemsWidget::UpdateSubSystems() { if (!m_bUpdateSubsystems) return; m_bUpdateSubsystems = false; ezQtScopedUpdatesDisabled _1(TableSubsystems); TableSubsystems->clear(); TableSubsystems->setRowCount(m_Subsystems.GetCount()); QStringList Headers; Headers.append(""); Headers.append(" SubSystem "); Headers.append(" Plugin "); Headers.append(" Startup Done "); Headers.append(" Dependencies "); TableSubsystems->setColumnCount(static_cast<int>(Headers.size())); TableSubsystems->setHorizontalHeaderLabels(Headers); { ezStringBuilder sTemp; ezInt32 iRow = 0; for (ezMap<ezString, SubsystemData>::Iterator it = m_Subsystems.GetIterator(); it.IsValid(); ++it) { const SubsystemData& ssd = it.Value(); QLabel* pIcon = new QLabel(); QIcon icon = ezQtUiServices::GetCachedIconResource(":/Icons/Icons/Subsystem.svg"); pIcon->setPixmap(icon.pixmap(QSize(24, 24))); pIcon->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter); TableSubsystems->setCellWidget(iRow, 0, pIcon); sTemp.SetFormat(" {0} ", it.Key()); TableSubsystems->setCellWidget(iRow, 1, new QLabel(sTemp.GetData())); sTemp.SetFormat(" {0} ", ssd.m_sPlugin); TableSubsystems->setCellWidget(iRow, 2, new QLabel(sTemp.GetData())); if (ssd.m_bStartupDone[ezStartupStage::HighLevelSystems]) TableSubsystems->setCellWidget(iRow, 3, new QLabel("<p><span style=\"font-weight:600; color:#00aa00;\"> Engine </span></p>")); else if (ssd.m_bStartupDone[ezStartupStage::CoreSystems]) TableSubsystems->setCellWidget(iRow, 3, new QLabel("<p><span style=\"font-weight:600; color:#5555ff;\"> Core </span></p>")); else if (ssd.m_bStartupDone[ezStartupStage::BaseSystems]) TableSubsystems->setCellWidget(iRow, 3, new QLabel("<p><span style=\"font-weight:600; color:#cece00;\"> Base </span></p>")); else TableSubsystems->setCellWidget(iRow, 3, new QLabel("<p><span style=\"font-weight:600; color:#ff0000;\">Not Initialized</span></p>")); ((QLabel*)TableSubsystems->cellWidget(iRow, 3))->setAlignment(Qt::AlignHCenter); sTemp.SetFormat(" {0} ", ssd.m_sDependencies); TableSubsystems->setCellWidget(iRow, 4, new QLabel(sTemp.GetData())); ++iRow; } } TableSubsystems->resizeColumnsToContents(); } void ezQtSubsystemsWidget::ProcessTelemetry(void* pUnuseed) { if (!s_pWidget) return; ezTelemetryMessage Msg; while (ezTelemetry::RetrieveMessage('STRT', Msg) == EZ_SUCCESS) { switch (Msg.GetMessageID()) { case ' CLR': { s_pWidget->m_Subsystems.Clear(); s_pWidget->m_bUpdateSubsystems = true; } break; case 'SYST': { ezString sGroup, sSystem; Msg.GetReader() >> sGroup; Msg.GetReader() >> sSystem; ezStringBuilder sFinalName = sGroup.GetData(); sFinalName.Append("::"); sFinalName.Append(sSystem.GetData()); SubsystemData& ssd = s_pWidget->m_Subsystems[sFinalName.GetData()]; Msg.GetReader() >> ssd.m_sPlugin; for (ezUInt32 i = 0; i < ezStartupStage::ENUM_COUNT; ++i) Msg.GetReader() >> ssd.m_bStartupDone[i]; ezUInt8 uiDependencies = 0; Msg.GetReader() >> uiDependencies; ezStringBuilder sAllDeps; ezString sDep; for (ezUInt8 i = 0; i < uiDependencies; ++i) { Msg.GetReader() >> sDep; if (sAllDeps.IsEmpty()) sAllDeps = sDep.GetData(); else { sAllDeps.Append(" | "); sAllDeps.Append(sDep.GetData()); } } ssd.m_sDependencies = sAllDeps.GetData(); s_pWidget->m_bUpdateSubsystems = true; } break; } } }