slot 0.0.1
A real time UI render framework
载入中...
搜索中...
未找到
MenuNode.h
浏览该文件的文档.
1#pragma once
2
6
7#include <functional>
8
9namespace z8::ui {
10
11class MenuNode;
12
14class MenuItemNode final : public RectNode {
15private:
16 bool Armed = false;
17 bool ClickPending = false;
18
19public:
20 TextNode *LabelNode = nullptr;
21 bool Enabled = true;
22 std::function<void()> Clicked;
23
25
26 bool ConsumeClicked();
30 void OnPointerCaptureLost() override { Armed = false; }
31 void SetEnabled(bool enabled);
32 bool SetProperty(const std::string &name, const std::string &value) override;
33 void SetText(const std::string &text);
34 const char *TypeName() const override { return "MenuItem"; }
35
36private:
37 void Activate();
38 void CloseOwningMenu();
39 void OnVisualStateChanged() override;
40};
41
46class MenuNode final : public RectNode {
47private:
48 bool TopLevel = false;
49
50public:
51 TextNode *LabelNode = nullptr;
53 RectNode *PopupNode = nullptr;
54 bool Enabled = true;
55 bool Open = false;
56
57 MenuNode();
58
59 void CloseBranch();
60 void CloseHierarchy();
61 BaseNode *ContentHost() override { return PopupNode; }
62 bool IsTopLevel() const { return TopLevel; }
66 void OnAfterLayout() override;
68 void SetEnabled(bool enabled);
69 bool SetOpen(bool open);
70 bool SetProperty(const std::string &name, const std::string &value) override;
71 void SetText(const std::string &text);
72 void SetTopLevel(bool topLevel);
73 const char *TypeName() const override { return "Menu"; }
74
75private:
76 void CloseSiblingMenus();
77 bool HasOpenSibling() const;
78 void OnVisualStateChanged() override;
79 void OpenExclusive();
80 MenuNode *ParentMenu() const;
81 void RefreshGeometry();
82};
83
84} // namespace z8::ui
资源的强类型引用,同时覆盖持久化 ID 与运行时索引两种边界。
Definition ResourceRef.h:36
Definition BaseNode.h:25
Definition ImageNode.h:36
Definition MenuNode.h:14
EventReply OnKeyDown(KeyArgs args) override
Definition MenuNode.cpp:82
EventReply OnMouseUp(MouseMovArgs args) override
Definition MenuNode.cpp:97
const char * TypeName() const override
Definition MenuNode.h:34
bool Armed
Definition MenuNode.h:16
EventReply OnMouseDown(MouseMovArgs args) override
Definition MenuNode.cpp:90
std::function< void()> Clicked
Definition MenuNode.h:22
bool ConsumeClicked()
Definition MenuNode.cpp:76
void SetText(const std::string &text)
Definition MenuNode.cpp:140
void Activate()
Definition MenuNode.cpp:57
void OnPointerCaptureLost() override
Definition MenuNode.h:30
void SetEnabled(bool enabled)
Definition MenuNode.cpp:117
void OnVisualStateChanged() override
Definition MenuNode.cpp:105
TextNode * LabelNode
Definition MenuNode.h:20
bool Enabled
Definition MenuNode.h:21
void CloseOwningMenu()
Definition MenuNode.cpp:66
bool ClickPending
Definition MenuNode.h:17
bool SetProperty(const std::string &name, const std::string &value) override
Definition MenuNode.cpp:124
MenuItemNode()
Definition MenuNode.cpp:32
Definition MenuNode.h:46
MenuNode * RootMenu()
Definition MenuNode.cpp:347
TextNode * LabelNode
Definition MenuNode.h:51
void OnAfterLayout() override
Definition MenuNode.cpp:282
EventReply OnKeyDown(KeyArgs args) override
Definition MenuNode.cpp:235
void CloseHierarchy()
Definition MenuNode.cpp:209
void CloseBranch()
Definition MenuNode.cpp:207
const char * TypeName() const override
Definition MenuNode.h:73
bool HasOpenSibling() const
Definition MenuNode.cpp:222
RectNode * PopupNode
Definition MenuNode.h:53
bool SetOpen(bool open)
Definition MenuNode.cpp:361
EventReply OnMouseDown(MouseMovArgs args) override
Definition MenuNode.cpp:262
void OnVisualStateChanged() override
Definition MenuNode.cpp:300
bool SetProperty(const std::string &name, const std::string &value) override
Definition MenuNode.cpp:378
bool Open
Definition MenuNode.h:55
bool IsTopLevel() const
Definition MenuNode.h:62
void SetEnabled(bool enabled)
Definition MenuNode.cpp:354
ImageNode * ChevronNode
Definition MenuNode.h:52
void SetText(const std::string &text)
Definition MenuNode.cpp:398
void RefreshGeometry()
Definition MenuNode.cpp:329
BaseNode * ContentHost() override
Definition MenuNode.h:61
bool Enabled
Definition MenuNode.h:54
MenuNode * ParentMenu() const
Definition MenuNode.cpp:322
void CloseSiblingMenus()
Definition MenuNode.cpp:211
void OpenExclusive()
Definition MenuNode.cpp:315
void SetTopLevel(bool topLevel)
Definition MenuNode.cpp:404
bool TopLevel
Definition MenuNode.h:48
EventReply OnMouseMove(MouseMovArgs args) override
Definition MenuNode.cpp:272
MenuNode()
Definition MenuNode.cpp:145
Definition RectNode.h:10
Definition TextNode.h:20
Definition Application.h:18
EventReply
Definition Event.h:13
Definition Event.h:67
Definition Event.h:41