Horizon
action.hpp
1 #pragma once
2 #include <string>
3 #include <vector>
4 #include <gdk/gdk.h>
5 #include "core/tool_id.hpp"
6 #include <functional>
7 
8 namespace horizon {
9 
10 enum class ActionID {
11  NONE,
12  TOOL,
13  UNDO,
14  REDO,
15  COPY,
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  SHOW_IN_BROWSER,
49  TUNING,
50  TUNING_ADD_TRACKS,
51  TUNING_ADD_TRACKS_ALL,
52  HIGHLIGHT_NET,
53  RELOAD_NETLIST,
54  SAVE_RELOAD_NETLIST,
55  BOM_EXPORT_WINDOW,
56  EXPORT_BOM,
57  RELOAD_POOL,
58  FLIP_VIEW,
59  VIEW_TOP,
60  VIEW_BOTTOM,
61  EDIT_PADSTACK,
62  EDIT_UNIT,
63  HIGHLIGHT_GROUP,
64  HIGHLIGHT_TAG,
65  SELECT_GROUP,
66  SELECT_TAG,
67  SEARCH,
68  SEARCH_NEXT,
69  SEARCH_PREVIOUS,
70  GO_TO_BOARD,
71  GO_TO_SCHEMATIC,
72  SHOW_IN_POOL_MANAGER,
73  SELECT_ALL,
74  PDF_EXPORT_WINDOW,
75  EXPORT_PDF,
76  BACKANNOTATE_CONNECTION_LINES,
77  SELECT_MORE,
78  SELECT_MORE_NO_VIA
79 };
80 
81 enum class ActionGroup {
82  ALL,
83  UNKNOWN,
84  CLIPBOARD,
85  UNDO,
86  MOVE,
87  GRAPHICS,
88  SCHEMATIC,
89  SYMBOL,
90  PACKAGE,
91  PADSTACK,
92  BOARD,
93  LAYER,
94  SELECTION,
95  RULES,
96  VIEW,
97  FRAME,
98  GROUP_TAG,
99  SEARCH
100 };
101 
102 typedef std::vector<std::pair<unsigned int, GdkModifierType>> KeySequence;
103 
104 std::string key_sequence_to_string(const KeySequence &keys);
105 
107 public:
108  ActionConnection(ActionID aid, ToolID tid, std::function<void(const ActionConnection &)> c)
109  : action_id(aid), tool_id(tid), cb(c)
110  {
111  }
112 
113  const ActionID action_id;
114  const ToolID tool_id;
115  std::vector<KeySequence> key_sequences;
116  std::function<void(const ActionConnection &)> cb;
117 };
118 
119 std::pair<ActionID, ToolID> make_action(ActionID id);
120 std::pair<ActionID, ToolID> make_action(ToolID id);
121 
122 } // namespace horizon
horizon::ActionConnection
Definition: action.hpp:106