blob: fe3bf3f9b1061565add523ca18f5693e2a6a5406 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
#pragma once
#include "Resource.hpp"
#include "cru/platform/gui/Menu.hpp"
namespace cru::platform::gui::osx {
namespace details {
struct OsxMenuItemPrivate;
struct OsxMenuPrivate;
} // namespace details
class OsxMenu;
class OsxMenuItem : public OsxGuiResource, public virtual IMenuItem {
friend OsxMenu;
friend details::OsxMenuPrivate;
private:
explicit OsxMenuItem(IUiApplication* ui_application);
public:
CRU_DELETE_COPY(OsxMenuItem)
CRU_DELETE_MOVE(OsxMenuItem)
~OsxMenuItem() override;
public:
String GetTitle() override;
void SetTitle(String title) override;
bool IsEnabled() override;
void SetEnabled(bool enabled) override;
IMenu* GetParentMenu() override;
IMenu* GetSubmenu() override;
void SetKeyboardShortcut(KeyCode key, KeyModifier modifiers) override;
void DeleteKeyboardShortcut() override;
void SetOnClickHandler(std::function<void()> handler) override;
private:
details::OsxMenuItemPrivate* p_;
};
class OsxMenu : public OsxGuiResource, public virtual IMenu {
friend OsxMenuItem;
friend details::OsxMenuPrivate;
friend details::OsxMenuItemPrivate;
private:
explicit OsxMenu(IUiApplication* ui_application);
public:
static OsxMenu* CreateOrGetApplicationMenu(IUiApplication* ui_application);
CRU_DELETE_COPY(OsxMenu)
CRU_DELETE_MOVE(OsxMenu)
~OsxMenu() override;
public:
IMenuItem* GetItemAt(int index) override;
int GetItemCount() override;
IMenuItem* CreateItemAt(int index) override;
void RemoveItemAt(int index) override;
private:
details::OsxMenuPrivate* p_;
};
} // namespace cru::platform::gui::osx
|