/
redgpu
/
ezEngine
Обзор
Документация
Войти
/
redgpu
/
ezEngine
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
Code/Tools/Libs/GuiFoundation/ActionViews/Implementation/MenuBarActionMapView.cpp
78 строк
2 KB
Sanakan8472
Adding parent mapping support for action maps (#1316)
04 июн 2024, 13:59
Не верифицирован
04 июн 2024, 13:59
4dcf115
Код
Авторство
О чём код?
#include <GuiFoundation/GuiFoundationPCH.h> #include <GuiFoundation/Action/ActionManager.h> #include <GuiFoundation/Action/ActionMapManager.h> #include <GuiFoundation/ActionViews/MenuActionMapView.moc.h> #include <GuiFoundation/ActionViews/MenuBarActionMapView.moc.h> #include <GuiFoundation/ActionViews/QtProxy.moc.h> ezQtMenuBarActionMapView::ezQtMenuBarActionMapView(QWidget* pParent) : QMenuBar(pParent) { } ezQtMenuBarActionMapView::~ezQtMenuBarActionMapView() { ClearView(); } void ezQtMenuBarActionMapView::SetActionContext(const ezActionContext& context) { auto pMap = ezActionMapManager::GetActionMap(context.m_sMapping); EZ_ASSERT_DEV(pMap != nullptr, "The given mapping '{0}' does not exist", context.m_sMapping); m_pActionMap = pMap; m_Context = context; CreateView(); } void ezQtMenuBarActionMapView::ClearView() { m_Proxies.Clear(); } void ezQtMenuBarActionMapView::CreateView() { ClearView(); auto pObject = m_pActionMap->BuildActionTree(); for (auto pChild : pObject->GetChildren()) { auto pDesc = m_pActionMap->GetDescriptor(pChild); QSharedPointer<ezQtProxy> pProxy = ezQtProxy::GetProxy(m_Context, pDesc->m_hAction); m_Proxies[pChild->GetGuid()] = pProxy; switch (pDesc->m_hAction.GetDescriptor()->m_Type) { case ezActionType::Action: { EZ_REPORT_FAILURE("Cannot map actions in a menubar view!"); } break; case ezActionType::Category: { EZ_REPORT_FAILURE("Cannot map category in a menubar view!"); } break; case ezActionType::Menu: { QMenu* pQtMenu = static_cast<ezQtMenuProxy*>(pProxy.data())->GetQMenu(); addMenu(pQtMenu); ezQtMenuActionMapView::AddDocumentObjectToMenu(m_Proxies, m_Context, m_pActionMap, pQtMenu, pChild); } break; case ezActionType::ActionAndMenu: { EZ_REPORT_FAILURE("Cannot map ActionAndMenu in a menubar view!"); } break; } } }