Horizon
action.hpp
1 #pragma once
2 #include <string>
3 #include <vector>
4 #include <gdk/gdk.h>
5 #include "core/core.hpp"
6 
7 namespace horizon {
8 
9 enum class ActionID {
10  NONE,
11  TOOL,
12  UNDO,
13  REDO,
14  COPY,
15  DUPLICATE,
16  PLACE_PART,
17  LAYER_UP,
18  LAYER_DOWN,
19  LAYER_TOP,
20  LAYER_BOTTOM,
21  LAYER_INNER1,
22  LAYER_INNER2,
23  LAYER_INNER3,
24  LAYER_INNER4,
25  LAYER_INNER5,
26  LAYER_INNER6,
27  LAYER_INNER7,
28  LAYER_INNER8,
29  SELECTION_FILTER,
30  SAVE,
31  VIEW_3D,
32  RULES,
33  RULES_RUN_CHECKS,
34  RULES_APPLY,
35  PREFERENCES,
36  POPOVER,
37  HELP,
38  VIEW_ALL,
39  SELECTION_TOOL_BOX,
40  SELECTION_TOOL_LASSO,
41  SELECTION_TOOL_PAINT,
42  SELECTION_QUALIFIER_AUTO,
43  SELECTION_QUALIFIER_INCLUDE_ORIGIN,
44  SELECTION_QUALIFIER_TOUCH_BOX,
45  SELECTION_QUALIFIER_INCLUDE_BOX,
46  TO_BOARD,
47  MOVE_TO_OTHER_SHEET
48 };
49 
50 enum class ActionGroup {
51  ALL,
52  UNKNOWN,
53  CLIPBOARD,
54  UNDO,
55  MOVE,
56  GRAPHICS,
57  SCHEMATIC,
58  SYMBOL,
59  PACKAGE,
60  PADSTACK,
61  BOARD,
62  LAYER,
63  SELECTION,
64  RULES
65 };
66 
67 typedef std::vector<std::pair<int, GdkModifierType>> KeySequence2;
68 
69 std::string key_sequence_to_string(const KeySequence2 &keys);
70 
72 public:
73  ActionConnection(ActionID aid, ToolID tid, std::function<void(const ActionConnection &)> c)
74  : action_id(aid), tool_id(tid), cb(c)
75  {
76  }
77 
78  const ActionID action_id;
79  const ToolID tool_id;
80  std::vector<KeySequence2> key_sequences;
81  std::function<void(const ActionConnection &)> cb;
82 };
83 
84 std::pair<ActionID, ToolID> make_action(ActionID id);
85 std::pair<ActionID, ToolID> make_action(ToolID id);
86 
87 } // namespace horizon
Definition: action.hpp:71
Definition: block.cpp:7