Horizon
action.hpp
1 #pragma once
2 #include <string>
3 #include <vector>
4 #include <gdk/gdk.h>
5 #include <functional>
6 
7 namespace horizon {
8 
9 enum class ToolID;
10 
11 enum class ActionID {
12  NONE,
13  TOOL,
14  UNDO,
15  REDO,
16  COPY,
17  PLACE_PART,
18  LAYER_UP,
19  LAYER_DOWN,
20  LAYER_TOP,
21  LAYER_BOTTOM,
22  LAYER_INNER1,
23  LAYER_INNER2,
24  LAYER_INNER3,
25  LAYER_INNER4,
26  LAYER_INNER5,
27  LAYER_INNER6,
28  LAYER_INNER7,
29  LAYER_INNER8,
30  SELECTION_FILTER,
31  SAVE,
32  VIEW_3D,
33  RULES,
34  RULES_RUN_CHECKS,
35  RULES_APPLY,
36  PREFERENCES,
37  POPOVER,
38  HELP,
39  VIEW_ALL,
40  SELECTION_TOOL_BOX,
41  SELECTION_TOOL_LASSO,
42  SELECTION_TOOL_PAINT,
43  SELECTION_QUALIFIER_AUTO,
44  SELECTION_QUALIFIER_INCLUDE_ORIGIN,
45  SELECTION_QUALIFIER_TOUCH_BOX,
46  SELECTION_QUALIFIER_INCLUDE_BOX,
47  TO_BOARD,
48  MOVE_TO_OTHER_SHEET,
49  SHOW_IN_BROWSER,
50  TUNING,
51  TUNING_ADD_TRACKS,
52  TUNING_ADD_TRACKS_ALL,
53  HIGHLIGHT_NET,
54  RELOAD_NETLIST,
55  SAVE_RELOAD_NETLIST,
56  BOM_EXPORT_WINDOW,
57  EXPORT_BOM,
58  RELOAD_POOL,
59  FLIP_VIEW,
60  VIEW_TOP,
61  VIEW_BOTTOM,
62  EDIT_PADSTACK,
63  EDIT_UNIT,
64  HIGHLIGHT_GROUP,
65  HIGHLIGHT_TAG,
66  SELECT_GROUP,
67  SELECT_TAG,
68  SEARCH,
69  SEARCH_NEXT,
70  SEARCH_PREVIOUS,
71  GO_TO_BOARD,
72  GO_TO_SCHEMATIC,
73  SHOW_IN_POOL_MANAGER,
74  SELECT_ALL,
75  PDF_EXPORT_WINDOW,
76  EXPORT_PDF,
77  BACKANNOTATE_CONNECTION_LINES,
78  SELECT_MORE,
79  SELECT_MORE_NO_VIA,
80  STEP_EXPORT_WINDOW,
81  EXPORT_STEP,
82  PNP_EXPORT_WINDOW,
83  EXPORT_PNP,
84  RESET_AIRWIRE_FILTER,
85  FILTER_AIRWIRES,
86  AIRWIRE_FILTER_WINDOW,
87  SELECT_POLYGON
88 };
89 
90 enum class ActionGroup {
91  ALL,
92  UNKNOWN,
93  CLIPBOARD,
94  UNDO,
95  MOVE,
96  GRAPHICS,
97  SCHEMATIC,
98  SYMBOL,
99  PACKAGE,
100  PADSTACK,
101  BOARD,
102  LAYER,
103  SELECTION,
104  RULES,
105  VIEW,
106  FRAME,
107  GROUP_TAG,
108  SEARCH
109 };
110 
111 typedef std::vector<std::pair<unsigned int, GdkModifierType>> KeySequence;
112 
113 std::string key_sequence_to_string(const KeySequence &keys);
114 
116 public:
117  ActionConnection(ActionID aid, ToolID tid, std::function<void(const ActionConnection &)> c)
118  : action_id(aid), tool_id(tid), cb(c)
119  {
120  }
121 
122  const ActionID action_id;
123  const ToolID tool_id;
124  std::vector<KeySequence> key_sequences;
125  std::function<void(const ActionConnection &)> cb;
126 };
127 
128 std::pair<ActionID, ToolID> make_action(ActionID id);
129 std::pair<ActionID, ToolID> make_action(ToolID id);
130 
131 } // namespace horizon
horizon::ActionConnection
Definition: action.hpp:115