Horizon
action_catalog.hpp
1 #pragma once
2 #include "action.hpp"
3 #include "common/lut.hpp"
4 #include <map>
5 
6 namespace horizon {
8 public:
9  enum Availability {
10  AVAILABLE_IN_SYMBOL = (1 << 0),
11  AVAILABLE_IN_SCHEMATIC = (1 << 1),
12  AVAILABLE_IN_PADSTACK = (1 << 2),
13  AVAILABLE_IN_PACKAGE = (1 << 3),
14  AVAILABLE_IN_BOARD = (1 << 4),
15  AVAILABLE_IN_FRAME = (1 << 5),
16  AVAILABLE_IN_DECAL = (1 << 6),
17  AVAILABLE_EVERYWHERE = 0xff,
18  AVAILABLE_LAYERED = AVAILABLE_IN_PACKAGE | AVAILABLE_IN_PADSTACK | AVAILABLE_IN_BOARD | AVAILABLE_IN_DECAL,
19  AVAILABLE_IN_PACKAGE_AND_BOARD = AVAILABLE_IN_PACKAGE | AVAILABLE_IN_BOARD,
20  AVAILABLE_IN_SCHEMATIC_AND_BOARD = AVAILABLE_IN_SCHEMATIC | AVAILABLE_IN_BOARD
21  };
22 
23  enum Flags {
24  FLAGS_DEFAULT = 0,
25  FLAGS_IN_TOOL = (1 << 1),
26  FLAGS_NO_POPOVER = (1 << 2),
27  FLAGS_NO_MENU = (1 << 3),
28  FLAGS_SPECIFIC = (1 << 4),
29  FLAGS_NO_PREFERENCES = (1 << 5),
30  };
31 
32  ActionCatalogItem(const std::string &n, ActionGroup gr, int av, int fl = FLAGS_DEFAULT)
33  : name(n), group(gr), flags(static_cast<Flags>(fl)), availability(static_cast<Availability>(av)){};
34 
35  const std::string name;
36  ActionGroup group;
37  const Flags flags;
38  const Availability availability;
39 };
40 
41 extern const std::map<ActionToolID, ActionCatalogItem> action_catalog;
42 extern const LutEnumStr<ActionID> action_lut;
43 extern const LutEnumStr<ToolID> tool_lut;
44 
45 extern const std::vector<std::pair<ActionGroup, std::string>> action_group_catalog;
46 } // namespace horizon
Definition: action_catalog.hpp:7
Trivial bidirectional map for mapping strings to enums.
Definition: lut.hpp:11