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  FAB_OUTPUT_WINDOW,
89  GEN_FAB_OUTPUT,
90  FOOTPRINT_GENERATOR,
91  SET_GRID_ORIGIN,
92  DISTRACTION_FREE,
93  TOGGLE_SNAP_TO_TARGETS,
94  PARTS_WINDOW,
95  PAN_UP,
96  PAN_DOWN,
97  PAN_LEFT,
98  PAN_RIGHT,
99  ZOOM_IN,
100  ZOOM_OUT,
101  CLICK_SELECT,
102  HIGHLIGHT_NET_CLASS,
103  ROTATE_VIEW_LEFT,
104  ROTATE_VIEW_RIGHT,
105  ROTATE_VIEW_RESET,
106  ROTATE_VIEW,
107  NEXT_SHEET,
108  PREV_SHEET,
109 };
110 
111 using ActionToolID = std::pair<ActionID, ToolID>;
112 
113 enum class ActionGroup {
114  ALL,
115  UNKNOWN,
116  CLIPBOARD,
117  UNDO,
118  MOVE,
119  GRAPHICS,
120  SCHEMATIC,
121  SYMBOL,
122  PACKAGE,
123  PADSTACK,
124  BOARD,
125  LAYER,
126  SELECTION,
127  RULES,
128  VIEW,
129  FRAME,
130  GROUP_TAG,
131  SEARCH,
132  EXPORT_IMPORT,
133  TUNING,
134 };
135 
136 typedef std::vector<std::pair<unsigned int, GdkModifierType>> KeySequence;
137 
138 std::string key_sequence_to_string(const KeySequence &keys);
139 std::string key_sequence_to_string_short(const KeySequence &keys);
140 
141 std::string key_sequences_to_string(const std::vector<KeySequence> &seqs);
142 
144 public:
145  ActionConnection(ActionID aid, ToolID tid, std::function<void(const ActionConnection &)> c)
146  : action_id(aid), tool_id(tid), cb(c)
147  {
148  }
149 
150  const ActionID action_id;
151  const ToolID tool_id;
152  std::vector<KeySequence> key_sequences;
153  std::function<void(const ActionConnection &)> cb;
154 };
155 
156 ActionToolID make_action(ActionID id);
157 ActionToolID make_action(ToolID id);
158 
159 } // namespace horizon
Definition: action.hpp:143