-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmain_menu.hpp
134 lines (100 loc) · 3.09 KB
/
main_menu.hpp
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
//@ {"targets":[{"name":"main_menu.hpp","type":"include"}]}
#ifndef TEXPAINTER_APP_MAINMENU_HPP
#define TEXPAINTER_APP_MAINMENU_HPP
#include "./app_menu.hpp"
#include "./workspace_action.hpp"
#include "./document_menu.hpp"
#include "./image_menu.hpp"
#include "./palette_menu.hpp"
#include "ui/menu_item.hpp"
#include "ui/menu_builder.hpp"
namespace Texpainter
{
enum class MainMenuItem : int
{
Application,
Workspace,
Document,
Image,
Palette
};
constexpr auto begin(Enum::Empty<MainMenuItem>) { return MainMenuItem::Application; }
constexpr auto end(Enum::Empty<MainMenuItem>)
{
return static_cast<MainMenuItem>(static_cast<int>(MainMenuItem::Palette) + 1);
}
template<MainMenuItem>
struct MainMenuItemTraits;
template<>
struct MainMenuItemTraits<MainMenuItem::Application>
{
static constexpr char const* displayName() { return "Application"; }
static constexpr char const* description()
{
return "This menu contains options not related a document, such as exiting the "
"application, or showing the online help.";
}
using Action = AppAction;
template<auto action>
using Traits = AppActionTraits<action>;
using type = Ui::SubmenuBuilder<Action, Traits>;
};
template<>
struct MainMenuItemTraits<MainMenuItem::Workspace>
{
static constexpr char const* displayName() { return "Workspace"; }
static constexpr char const* description()
{
return "This menu contains options related to the workspace, such as showing different "
"windows and rearranging them.";
}
using Action = WorkspaceAction;
template<auto action>
using Traits = WorkspaceActionMenuTraits<action>;
using type = Ui::SubmenuBuilder<Action, Traits>;
};
template<>
struct MainMenuItemTraits<MainMenuItem::Document>
{
static constexpr char const* displayName() { return "Document"; }
static constexpr char const* description()
{
return "This menu contains document-related options, such as Open, Save and export.";
}
using Action = DocumentAction;
template<auto action>
using Traits = DocumentActionTraits<action>;
using type = Ui::SubmenuBuilder<Action, Traits>;
};
template<>
struct MainMenuItemTraits<MainMenuItem::Image>
{
static constexpr char const* displayName() { return "Image"; }
static constexpr char const* description()
{
return "This menu contains image-related options, such as creating a new image, or "
"deleting an existing one.";
}
using Action = ImageAction;
template<auto action>
using Traits = ImageActionTraits<action>;
using type = Ui::SubmenuBuilder<Action, Traits>;
};
template<>
struct MainMenuItemTraits<MainMenuItem::Palette>
{
static constexpr char const* displayName() { return "Palette"; }
static constexpr char const* description()
{
return "This menu contains palette-related options, such as creating a new image, or "
"deleting an existing one.";
}
using Action = PaletteAction;
template<auto action>
using Traits = PaletteActionTraits<action>;
using type = Ui::SubmenuBuilder<Action, Traits>;
};
template<PaletteAction>
struct PaletteActionTraits;
}
#endif