Plasma Engine  2.0
Loading...
Searching...
No Matches
StandardMenus.h
1#pragma once
2
3#include <GuiFoundation/Action/BaseActions.h>
4#include <GuiFoundation/GuiFoundationDLL.h>
5
7{
8 using StorageType = plUInt32;
9
10 enum Enum
11 {
12 Project = PL_BIT(0),
13 File = PL_BIT(1),
14 Edit = PL_BIT(2),
15 Panels = PL_BIT(3),
16 Scene = PL_BIT(4),
17 View = PL_BIT(5),
18 Tools = PL_BIT(6),
19 Help = PL_BIT(7),
20
21 Default = Project | File | Panels | Tools | Help
22 };
23
24 struct Bits
25 {
26 StorageType Project : 1;
27 StorageType File : 1;
28 StorageType Edit : 1;
29 StorageType Panels : 1;
30 StorageType Scene : 1;
31 StorageType View : 1;
32 StorageType Tools : 1;
33 StorageType Help : 1;
34 };
35};
36
37PL_DECLARE_FLAGS_OPERATORS(plStandardMenuTypes);
38
40class PL_GUIFOUNDATION_DLL plStandardMenus
41{
42public:
43 static void RegisterActions();
44 static void UnregisterActions();
45
46 static void MapActions(plStringView sMapping, const plBitflags<plStandardMenuTypes>& menus);
47
48 static plActionDescriptorHandle s_hMenuProject;
49 static plActionDescriptorHandle s_hMenuFile;
50 static plActionDescriptorHandle s_hMenuEdit;
51 static plActionDescriptorHandle s_hMenuPanels;
52 static plActionDescriptorHandle s_hMenuScene;
53 static plActionDescriptorHandle s_hMenuView;
54 static plActionDescriptorHandle s_hMenuTools;
55 static plActionDescriptorHandle s_hMenuHelp;
56 static plActionDescriptorHandle s_hCheckForUpdates;
57 static plActionDescriptorHandle s_hReportProblem;
58};
59
61class PL_GUIFOUNDATION_DLL plApplicationPanelsMenuAction : public plDynamicMenuAction
62{
63 PL_ADD_DYNAMIC_REFLECTION(plApplicationPanelsMenuAction, plDynamicMenuAction);
64
65public:
66 plApplicationPanelsMenuAction(const plActionContext& context, const char* szName, const char* szIconPath)
67 : plDynamicMenuAction(context, szName, szIconPath)
68 {
69 }
70 virtual void GetEntries(plHybridArray<plDynamicMenuAction::Item, 16>& out_entries) override;
71 virtual void Execute(const plVariant& value) override;
72};
73
75
76class PL_GUIFOUNDATION_DLL plHelpActions : public plButtonAction
77{
78 PL_ADD_DYNAMIC_REFLECTION(plHelpActions, plButtonAction);
79
80public:
81 enum class ButtonType
82 {
83 CheckForUpdates,
84 ReportProblem,
85 };
86
87 plHelpActions(const plActionContext& context, const char* szName, ButtonType button);
89
90 virtual void Execute(const plVariant& value) override;
91
92private:
93 ButtonType m_ButtonType;
94};
Handle for a plAction.
Definition Action.h:27
Definition StandardMenus.h:62
Definition BaseActions.h:159
Definition BaseActions.h:69
Definition StandardMenus.h:77
A hybrid array uses in-place storage to handle the first few elements without any allocation....
Definition HybridArray.h:12
Definition StandardMenus.h:41
plStringView represent a read-only sub-string of a larger string, as it can store a dedicated string ...
Definition StringView.h:34
plVariant is a class that can store different types of variables, which is useful in situations where...
Definition Variant.h:44
Definition Action.h:67
The plBitflags class allows you to work with type-safe bitflags.
Definition Bitflags.h:82
Definition StandardMenus.h:25
Definition StandardMenus.h:7