Covellite++  Version: 2.3.0 Revision: ??? Platform: x64 Build: 23:13 04.01.2025
Кроссплатформенный фреймворк для разработки приложений на С++
Загрузка...
Поиск...
Не найдено
EventListener.cpp
1
2#include "stdafx.h"
3#include <Covellite/Gui/EventListener.hpp>
4#include <alicorn/std/exception.hpp>
5#include <Covellite/Events/Events.hpp>
6#include <Covellite/Events.hpp>
7#include <Covellite/Gui/Events.hpp>
8
9using namespace covellite::gui;
10
11Window::EventListener::EventListener(const Events_t & _Events) :
12 m_Events(_Events)
13{
14}
15
16void Window::EventListener::ProcessEvent(Event_t & _Event) /*override*/
17{
18 try
19 {
20 auto * const pTargetElement = _Event.GetTargetElement();
21 if (pTargetElement == nullptr)
22 {
23 throw STD_EXCEPTION << "Target element null pointer.";
24 }
25
26 const auto * const pDocument = pTargetElement->GetOwnerDocument();
27 if (pDocument == nullptr)
28 {
29 throw STD_EXCEPTION << "Owner document null pointer.";
30 }
31
32 const auto Id =
33 events::Gui{ CovelliteGuiStringToUtf8(_Event.GetType()) }
34 .DocumentId(CovelliteGuiStringToUtf8(pDocument->GetId()))
35 .ElementId(CovelliteGuiStringToUtf8(pTargetElement->GetId()));
36
37 m_Events[Id]();
38 }
39 catch (const ::std::exception & _Ex)
40 {
41 m_Events[events::Error.Exception](_Ex.what());
42 }
43}
44
45/*static*/ auto Window::EventListener::Make(const Events_t & _Events) -> EventListenerPtr_t
46{
47 return ::std::make_shared<EventListener>(_Events);
48}
Класс входит в проект Covellite.Gui Базовый класс для событий панели GUI.
Definition Events.hpp:27
Document DocumentId(const TypeId_t &_Id) const
Вспомогательная функция для построения уникального идентификатора элемента.
Definition Events.hpp:72