Covellite++  Version: 2.3.0 Revision: 2580 Platform: x64 Build: 15:23 16.10.2020
Кроссплатформенный фреймворк для разработки приложений на С++
Events.hpp
1 
2 #pragma once
3 #include <string>
4 
5 namespace covellite
6 {
7 
8 namespace events
9 {
10 
26 class Gui
27 {
28 public:
29  using TypeId_t = ::std::string;
30 
35  class Document
36  {
37  public:
42  class Element
43  {
44  public:
45  const TypeId_t m_Id;
46 
47  public:
48  explicit Element(const TypeId_t & _Id) : m_Id(_Id) { }
49  };
50 
51  public:
52  Element ElementId(const TypeId_t & _Id) const
53  {
54  return Element{ m_Id + "::" + _Id };
55  }
56 
57  public:
58  const TypeId_t m_Id;
59 
60  public:
61  explicit Document(const TypeId_t & _Id) : m_Id(_Id) { }
62  };
63 
64 public:
72  Document DocumentId(const TypeId_t & _Id) const
73  {
74  return Document{ m_EventType + "::" + _Id };
75  }
76 
77 public:
78  const TypeId_t m_EventType;
79 
80 public:
81  explicit Gui(const TypeId_t & _EventType) : m_EventType(_EventType) { }
82 };
83 
101 class Click_t final :
102  public Gui
103 {
104 public:
105  Click_t(void) : Gui("click") {}
106 };
107 
108 namespace { Click_t Click; }
109 
125 class Press_t final :
126  public Gui
127 {
128 public:
129  Press_t(void) : Gui("mousedown") {}
130 };
131 
132 namespace { Press_t Press; }
133 
149 class Change_t final :
150  public Gui
151 {
152 public:
153  Change_t(void) : Gui("change") {}
154 };
155 
156 namespace { Change_t Change; }
157 
158 } // namespace events
159 
160 } // namespace covellite
161 
162 namespace std
163 {
164 
165 template<>
167 {
169 
170 public:
171  inline size_t operator()(const Element_t & _Id) const
172  {
173  return ::std::hash<::covellite::events::Gui::TypeId_t>{}(_Id.m_Id);
174  }
175 };
176 
177 }
covellite::events::Gui
Класс входит в проект Covellite.Gui Базовый класс для событий панели GUI.
Definition: Events.hpp:27
covellite::events::Gui::DocumentId
Document DocumentId(const TypeId_t &_Id) const
Вспомогательная функция для построения уникального идентификатора элемента.
Definition: Events.hpp:72
covellite::events::Press_t
Класс входит в проект Covellite.Gui Класс событий нажатия элемента управления.
Definition: Events.hpp:127
covellite::events::Gui::Document::Element
Вспомогательный класс для создания уникального идентификатора элемента.
Definition: Events.hpp:43
covellite::events::Change_t
Класс входит в проект Covellite.Gui Класс событий изменения состояния элемента управления.
Definition: Events.hpp:151
covellite::events::Click_t
Класс входит в проект Covellite.Gui Класс событий клика по элементу управления.
Definition: Events.hpp:103
covellite::events::Gui::Document
Вспомогательный класс для создания уникального идентификатора элемента.
Definition: Events.hpp:36