1 #include "action_catalog.hpp"
2 #include "core/tool_id.hpp"
3 #include "actions.hpp"
4 
5 namespace horizon {
6 const std::map<ActionToolID, ActionCatalogItem> action_catalog = {
7         {{ActionID::DISTRACTION_FREE, ToolID::NONE},
8          {"Toggle distraction free mode", ActionGroup::UNKNOWN, ActionCatalogItem::AVAILABLE_EVERYWHERE,
9           ActionCatalogItem::FLAGS_DEFAULT}},
10 
11         {{ActionID::SELECTION_FILTER, ToolID::NONE},
12          {"Selection filter", ActionGroup::UNKNOWN, ActionCatalogItem::AVAILABLE_EVERYWHERE,
13           ActionCatalogItem::FLAGS_DEFAULT}},
14 
15         {{ActionID::PREFERENCES, ToolID::NONE},
16          {"Preferences", ActionGroup::UNKNOWN, ActionCatalogItem::AVAILABLE_EVERYWHERE,
17           ActionCatalogItem::FLAGS_DEFAULT}},
18 
19         {{ActionID::HELP, ToolID::NONE},
20          {"Help", ActionGroup::UNKNOWN, ActionCatalogItem::AVAILABLE_EVERYWHERE, ActionCatalogItem::FLAGS_IN_TOOL}},
21 
22         {{ActionID::VIEW_ALL, ToolID::NONE},
23          {"View all", ActionGroup::VIEW, ActionCatalogItem::AVAILABLE_EVERYWHERE_3D, ActionCatalogItem::FLAGS_IN_TOOL}},
24 
25         {{ActionID::FLIP_VIEW, ToolID::NONE},
26          {"Flip view", ActionGroup::VIEW, ActionCatalogItem::AVAILABLE_IN_PACKAGE_AND_BOARD,
27           ActionCatalogItem::FLAGS_IN_TOOL}},
28 
29         {{ActionID::VIEW_TOP, ToolID::NONE},
30          {"View top", ActionGroup::VIEW, ActionCatalogItem::AVAILABLE_IN_PACKAGE_AND_BOARD,
31           ActionCatalogItem::FLAGS_IN_TOOL}},
32 
33         {{ActionID::VIEW_BOTTOM, ToolID::NONE},
34          {"View bottom", ActionGroup::VIEW, ActionCatalogItem::AVAILABLE_IN_PACKAGE_AND_BOARD,
35           ActionCatalogItem::FLAGS_IN_TOOL}},
36 
37         {{ActionID::LAYER_DOWN, ToolID::NONE},
38          {"Layer down", ActionGroup::LAYER, ActionCatalogItem::AVAILABLE_LAYERED, ActionCatalogItem::FLAGS_IN_TOOL}},
39 
40         {{ActionID::LAYER_UP, ToolID::NONE},
41          {"Layer up", ActionGroup::LAYER, ActionCatalogItem::AVAILABLE_LAYERED, ActionCatalogItem::FLAGS_IN_TOOL}},
42 
43         {{ActionID::LAYER_TOP, ToolID::NONE},
44          {"Layer top", ActionGroup::LAYER, ActionCatalogItem::AVAILABLE_LAYERED, ActionCatalogItem::FLAGS_IN_TOOL}},
45 
46         {{ActionID::LAYER_BOTTOM, ToolID::NONE},
47          {"Layer bottom", ActionGroup::LAYER, ActionCatalogItem::AVAILABLE_LAYERED, ActionCatalogItem::FLAGS_IN_TOOL}},
48 
49         {{ActionID::LAYER_INNER1, ToolID::NONE},
50          {"Layer inner 1", ActionGroup::LAYER, ActionCatalogItem::AVAILABLE_LAYERED, ActionCatalogItem::FLAGS_IN_TOOL}},
51 
52         {{ActionID::LAYER_INNER2, ToolID::NONE},
53          {"Layer inner 2", ActionGroup::LAYER, ActionCatalogItem::AVAILABLE_LAYERED, ActionCatalogItem::FLAGS_IN_TOOL}},
54 
55         {{ActionID::LAYER_INNER3, ToolID::NONE},
56          {"Layer inner 3", ActionGroup::LAYER, ActionCatalogItem::AVAILABLE_LAYERED, ActionCatalogItem::FLAGS_IN_TOOL}},
57 
58         {{ActionID::LAYER_INNER4, ToolID::NONE},
59          {"Layer inner 4", ActionGroup::LAYER, ActionCatalogItem::AVAILABLE_LAYERED, ActionCatalogItem::FLAGS_IN_TOOL}},
60 
61         {{ActionID::LAYER_INNER5, ToolID::NONE},
62          {"Layer inner 5", ActionGroup::LAYER, ActionCatalogItem::AVAILABLE_LAYERED, ActionCatalogItem::FLAGS_IN_TOOL}},
63 
64         {{ActionID::LAYER_INNER6, ToolID::NONE},
65          {"Layer inner 6", ActionGroup::LAYER, ActionCatalogItem::AVAILABLE_LAYERED, ActionCatalogItem::FLAGS_IN_TOOL}},
66 
67         {{ActionID::LAYER_INNER7, ToolID::NONE},
68          {"Layer inner 7", ActionGroup::LAYER, ActionCatalogItem::AVAILABLE_LAYERED, ActionCatalogItem::FLAGS_IN_TOOL}},
69 
70         {{ActionID::LAYER_INNER8, ToolID::NONE},
71          {"Layer inner 8", ActionGroup::LAYER, ActionCatalogItem::AVAILABLE_LAYERED, ActionCatalogItem::FLAGS_IN_TOOL}},
72 
73         {{ActionID::POPOVER, ToolID::NONE},
74          {"Popover", ActionGroup::UNKNOWN, ActionCatalogItem::AVAILABLE_EVERYWHERE,
75           ActionCatalogItem::FLAGS_NO_POPOVER | ActionCatalogItem::FLAGS_NO_MENU}},
76 
77         {{ActionID::TOOL, ToolID::PASTE},
78          {"Paste", ActionGroup::CLIPBOARD, ActionCatalogItem::AVAILABLE_EVERYWHERE, ActionCatalogItem::FLAGS_DEFAULT}},
79 
80         {{ActionID::COPY, ToolID::NONE},
81          {"Copy", ActionGroup::CLIPBOARD, ActionCatalogItem::AVAILABLE_EVERYWHERE, ActionCatalogItem::FLAGS_SPECIFIC}},
82 
83         {{ActionID::TOOL, ToolID::DUPLICATE},
84          {"Duplicate", ActionGroup::CLIPBOARD, ActionCatalogItem::AVAILABLE_EVERYWHERE,
85           ActionCatalogItem::FLAGS_DEFAULT}},
86 
87         {{ActionID::SAVE, ToolID::NONE},
88          {"Save", ActionGroup::UNKNOWN, ActionCatalogItem::AVAILABLE_EVERYWHERE, ActionCatalogItem::FLAGS_DEFAULT}},
89 
90         {{ActionID::RELOAD_NETLIST, ToolID::NONE},
91          {"Reload netlist", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_BOARD,
92           ActionCatalogItem::FLAGS_DEFAULT}},
93 
94         {{ActionID::SAVE_RELOAD_NETLIST, ToolID::NONE},
95          {"Save and reload netlist", ActionGroup::SCHEMATIC, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
96           ActionCatalogItem::FLAGS_DEFAULT}},
97 
98         {{ActionID::UNDO, ToolID::NONE},
99          {"Undo", ActionGroup::UNDO, ActionCatalogItem::AVAILABLE_EVERYWHERE, ActionCatalogItem::FLAGS_DEFAULT}},
100 
101         {{ActionID::REDO, ToolID::NONE},
102          {"Redo", ActionGroup::UNDO, ActionCatalogItem::AVAILABLE_EVERYWHERE, ActionCatalogItem::FLAGS_DEFAULT}},
103 
104         {{ActionID::VIEW_3D, ToolID::NONE},
105          {"3D View", ActionGroup::UNKNOWN, ActionCatalogItem::AVAILABLE_IN_PACKAGE_AND_BOARD,
106           ActionCatalogItem::FLAGS_DEFAULT}},
107 
108         {{ActionID::SELECTION_TOOL_BOX, ToolID::NONE},
109          {"Selection tool box", ActionGroup::SELECTION, ActionCatalogItem::AVAILABLE_EVERYWHERE,
110           ActionCatalogItem::FLAGS_DEFAULT}},
111 
112         {{ActionID::SELECTION_TOOL_LASSO, ToolID::NONE},
113          {"Selection tool lasso", ActionGroup::SELECTION, ActionCatalogItem::AVAILABLE_EVERYWHERE,
114           ActionCatalogItem::FLAGS_DEFAULT}},
115 
116         {{ActionID::SELECTION_TOOL_PAINT, ToolID::NONE},
117          {"Selection tool paint", ActionGroup::SELECTION, ActionCatalogItem::AVAILABLE_EVERYWHERE,
118           ActionCatalogItem::FLAGS_DEFAULT}},
119 
120         {{ActionID::SELECTION_QUALIFIER_AUTO, ToolID::NONE},
121          {"Selection qualifier auto", ActionGroup::SELECTION, ActionCatalogItem::AVAILABLE_EVERYWHERE,
122           ActionCatalogItem::FLAGS_DEFAULT}},
123 
124         {{ActionID::SELECTION_QUALIFIER_INCLUDE_BOX, ToolID::NONE},
125          {"Selection qualifier include box", ActionGroup::SELECTION, ActionCatalogItem::AVAILABLE_EVERYWHERE,
126           ActionCatalogItem::FLAGS_DEFAULT}},
127 
128         {{ActionID::SELECTION_QUALIFIER_INCLUDE_ORIGIN, ToolID::NONE},
129          {"Selection qualifier include origin", ActionGroup::SELECTION, ActionCatalogItem::AVAILABLE_EVERYWHERE,
130           ActionCatalogItem::FLAGS_DEFAULT}},
131 
132         {{ActionID::SELECTION_QUALIFIER_TOUCH_BOX, ToolID::NONE},
133          {"Selection qualifier touch box", ActionGroup::SELECTION, ActionCatalogItem::AVAILABLE_EVERYWHERE,
134           ActionCatalogItem::FLAGS_DEFAULT}},
135 
136         {{ActionID::TO_BOARD, ToolID::NONE},
137          {"Place on board", ActionGroup::SCHEMATIC, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
138           ActionCatalogItem::FLAGS_SPECIFIC}},
139 
140         {{ActionID::RULES, ToolID::NONE},
141          {"Rules", ActionGroup::RULES,
142           ActionCatalogItem::AVAILABLE_IN_SCHEMATIC_AND_BOARD | ActionCatalogItem::AVAILABLE_IN_PACKAGE,
143           ActionCatalogItem::FLAGS_DEFAULT}},
144 
145         {{ActionID::RULES_APPLY, ToolID::NONE},
146          {"Apply rules", ActionGroup::RULES, ActionCatalogItem::AVAILABLE_IN_BOARD, ActionCatalogItem::FLAGS_DEFAULT}},
147 
148         {{ActionID::RULES_RUN_CHECKS, ToolID::NONE},
149          {"Run checks", ActionGroup::RULES,
150           ActionCatalogItem::AVAILABLE_IN_SCHEMATIC_AND_BOARD | ActionCatalogItem::AVAILABLE_IN_PACKAGE
151                   | ActionCatalogItem::AVAILABLE_IN_SYMBOL,
152           ActionCatalogItem::FLAGS_DEFAULT}},
153 
154         {{ActionID::SHOW_IN_BROWSER, ToolID::NONE},
155          {"Show in browser", ActionGroup::SCHEMATIC, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
156           ActionCatalogItem::FLAGS_SPECIFIC}},
157 
158         {{ActionID::TUNING, ToolID::NONE},
159          {"Length tuning", ActionGroup::TUNING, ActionCatalogItem::AVAILABLE_IN_BOARD,
160           ActionCatalogItem::FLAGS_DEFAULT}},
161 
162         {{ActionID::TUNING_ADD_TRACKS, ToolID::NONE},
163          {"Measure track", ActionGroup::TUNING, ActionCatalogItem::AVAILABLE_IN_BOARD,
164           ActionCatalogItem::FLAGS_SPECIFIC}},
165 
166         {{ActionID::TUNING_ADD_TRACKS_ALL, ToolID::NONE},
167          {"Measure all tracks", ActionGroup::TUNING, ActionCatalogItem::AVAILABLE_IN_BOARD,
168           ActionCatalogItem::FLAGS_SPECIFIC}},
169 
170         {{ActionID::HIGHLIGHT_NET, ToolID::NONE},
171          {"Highlight net", ActionGroup::UNKNOWN, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC_AND_BOARD,
172           ActionCatalogItem::FLAGS_SPECIFIC}},
173 
174         {{ActionID::TOOL, ToolID::MOVE},
175          {"Move", ActionGroup::MOVE, ActionCatalogItem::AVAILABLE_EVERYWHERE, ActionCatalogItem::FLAGS_DEFAULT}},
176 
177         {{ActionID::TOOL, ToolID::MOVE_EXACTLY},
178          {"Move exactly", ActionGroup::MOVE, ActionCatalogItem::AVAILABLE_EVERYWHERE,
179           ActionCatalogItem::FLAGS_DEFAULT}},
180 
181         {{ActionID::TOOL, ToolID::ROTATE},
182          {"Rotate", ActionGroup::MOVE, ActionCatalogItem::AVAILABLE_EVERYWHERE, ActionCatalogItem::FLAGS_DEFAULT}},
183 
184         {{ActionID::TOOL, ToolID::MIRROR_X},
185          {"Mirror X", ActionGroup::MOVE, ActionCatalogItem::AVAILABLE_EVERYWHERE, ActionCatalogItem::FLAGS_DEFAULT}},
186 
187         {{ActionID::TOOL, ToolID::MIRROR_Y},
188          {"Mirror Y", ActionGroup::MOVE, ActionCatalogItem::AVAILABLE_EVERYWHERE, ActionCatalogItem::FLAGS_DEFAULT}},
189 
190         {{ActionID::TOOL, ToolID::ROTATE_ARBITRARY},
191          {"Rotate arbitrary", ActionGroup::MOVE, ActionCatalogItem::AVAILABLE_EVERYWHERE,
192           ActionCatalogItem::FLAGS_DEFAULT}},
193 
194         {{ActionID::TOOL, ToolID::SCALE},
195          {"Scale", ActionGroup::MOVE, ActionCatalogItem::AVAILABLE_EVERYWHERE, ActionCatalogItem::FLAGS_DEFAULT}},
196 
197         {{ActionID::TOOL, ToolID::ENTER_DATUM},
198          {"Enter datum", ActionGroup::UNKNOWN, ActionCatalogItem::AVAILABLE_EVERYWHERE,
199           ActionCatalogItem::FLAGS_DEFAULT}},
200 
201         {{ActionID::TOOL, ToolID::DELETE},
202          {"Delete", ActionGroup::UNKNOWN, ActionCatalogItem::AVAILABLE_EVERYWHERE, ActionCatalogItem::FLAGS_DEFAULT}},
203 
204         {{ActionID::TOOL, ToolID::ADD_COMPONENT},
205          {"Place component", ActionGroup::SCHEMATIC, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
206           ActionCatalogItem::FLAGS_DEFAULT}},
207 
208         {{ActionID::PLACE_PART, ToolID::NONE},
209          {"Place part", ActionGroup::SCHEMATIC, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
210           ActionCatalogItem::FLAGS_DEFAULT}},
211 
212         {{ActionID::TOOL, ToolID::ADD_PART},
213          {"Place part", ActionGroup::UNKNOWN, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
214           ActionCatalogItem::FLAGS_DEFAULT}},
215 
216         {{ActionID::TOOL, ToolID::BEND_LINE_NET},
217          {"Bend net line", ActionGroup::SCHEMATIC, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
218           ActionCatalogItem::FLAGS_DEFAULT}},
219 
220         {{ActionID::TOOL, ToolID::DISCONNECT},
221          {"Disconnect", ActionGroup::UNKNOWN, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC_AND_BOARD,
222           ActionCatalogItem::FLAGS_DEFAULT}},
223 
224         {{ActionID::TOOL, ToolID::DRAW_ARC},
225          {"Draw arc", ActionGroup::GRAPHICS, ActionCatalogItem::AVAILABLE_EVERYWHERE,
226           ActionCatalogItem::FLAGS_DEFAULT}},
227 
228         {{ActionID::TOOL, ToolID::DRAW_LINE},
229          {"Draw line", ActionGroup::GRAPHICS, ActionCatalogItem::AVAILABLE_EVERYWHERE,
230           ActionCatalogItem::FLAGS_DEFAULT}},
231 
232         {{ActionID::TOOL, ToolID::DRAW_NET},
233          {"Draw net line", ActionGroup::SCHEMATIC, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
234           ActionCatalogItem::FLAGS_DEFAULT}},
235 
236         {{ActionID::TOOL, ToolID::EDIT_SYMBOL_PIN_NAMES},
237          {"Edit symbol pin names", ActionGroup::SCHEMATIC, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
238           ActionCatalogItem::FLAGS_DEFAULT}},
239 
240         {{ActionID::TOOL, ToolID::MANAGE_BUSES},
241          {"Manage buses", ActionGroup::SCHEMATIC, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
242           ActionCatalogItem::FLAGS_DEFAULT}},
243 
244         {{ActionID::TOOL, ToolID::MANAGE_BUSES},
245          {"Manage buses", ActionGroup::SCHEMATIC, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
246           ActionCatalogItem::FLAGS_DEFAULT}},
247 
248         {{ActionID::TOOL, ToolID::MANAGE_NET_CLASSES},
249          {"Manage net classes", ActionGroup::SCHEMATIC, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
250           ActionCatalogItem::FLAGS_DEFAULT}},
251 
252         {{ActionID::TOOL, ToolID::MANAGE_POWER_NETS},
253          {"Manage power nets", ActionGroup::SCHEMATIC, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
254           ActionCatalogItem::FLAGS_DEFAULT}},
255 
256         {{ActionID::TOOL, ToolID::MAP_PIN},
257          {"Place pin", ActionGroup::SYMBOL, ActionCatalogItem::AVAILABLE_IN_SYMBOL, ActionCatalogItem::FLAGS_DEFAULT}},
258 
259         {{ActionID::TOOL, ToolID::SELECT_NET_SEGMENT},
260          {"Select net segment", ActionGroup::SCHEMATIC, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
261           ActionCatalogItem::FLAGS_DEFAULT}},
262 
263         {{ActionID::TOOL, ToolID::MOVE_NET_SEGMENT},
264          {"Move net segment to other net", ActionGroup::SCHEMATIC, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
265           ActionCatalogItem::FLAGS_DEFAULT}},
266 
267         {{ActionID::TOOL, ToolID::MOVE_NET_SEGMENT_NEW},
268          {"Move net segment to new net", ActionGroup::SCHEMATIC, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
269           ActionCatalogItem::FLAGS_DEFAULT}},
270 
271         {{ActionID::TOOL, ToolID::PLACE_BUS_LABEL},
272          {"Place bus label", ActionGroup::SCHEMATIC, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
273           ActionCatalogItem::FLAGS_DEFAULT}},
274 
275         {{ActionID::TOOL, ToolID::PLACE_BUS_RIPPER},
276          {"Place bus ripper", ActionGroup::SCHEMATIC, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
277           ActionCatalogItem::FLAGS_DEFAULT}},
278 
279         {{ActionID::TOOL, ToolID::PLACE_NET_LABEL},
280          {"Place net label", ActionGroup::SCHEMATIC, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
281           ActionCatalogItem::FLAGS_DEFAULT}},
282 
283         {{ActionID::TOOL, ToolID::ANNOTATE},
284          {"Annotate", ActionGroup::SCHEMATIC, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
285           ActionCatalogItem::FLAGS_DEFAULT}},
286 
287         {{ActionID::TOOL, ToolID::MAP_SYMBOL},
288          {"Place symbol", ActionGroup::SCHEMATIC, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
289           ActionCatalogItem::FLAGS_DEFAULT}},
290 
291         {{ActionID::MOVE_TO_OTHER_SHEET, ToolID::NONE},
292          {"Move to other sheet", ActionGroup::SCHEMATIC, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
293           ActionCatalogItem::FLAGS_SPECIFIC}},
294 
295         {{ActionID::TOOL, ToolID::SET_GROUP},
296          {"Set group", ActionGroup::GROUP_TAG, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
297           ActionCatalogItem::FLAGS_DEFAULT}},
298 
299         {{ActionID::TOOL, ToolID::SET_NEW_GROUP},
300          {"Set new group", ActionGroup::GROUP_TAG, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
301           ActionCatalogItem::FLAGS_DEFAULT}},
302 
303         {{ActionID::TOOL, ToolID::CLEAR_GROUP},
304          {"Clear group", ActionGroup::GROUP_TAG, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
305           ActionCatalogItem::FLAGS_DEFAULT}},
306 
307         {{ActionID::TOOL, ToolID::SET_TAG},
308          {"Set tag", ActionGroup::GROUP_TAG, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
309           ActionCatalogItem::FLAGS_DEFAULT}},
310 
311         {{ActionID::TOOL, ToolID::SET_NEW_TAG},
312          {"Set new tag", ActionGroup::GROUP_TAG, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
313           ActionCatalogItem::FLAGS_DEFAULT}},
314 
315         {{ActionID::TOOL, ToolID::CLEAR_TAG},
316          {"Clear tag", ActionGroup::GROUP_TAG, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
317           ActionCatalogItem::FLAGS_DEFAULT}},
318 
319         {{ActionID::TOOL, ToolID::RENAME_TAG},
320          {"Rename tag", ActionGroup::GROUP_TAG, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
321           ActionCatalogItem::FLAGS_DEFAULT}},
322 
323         {{ActionID::TOOL, ToolID::RENAME_GROUP},
324          {"Rename group", ActionGroup::GROUP_TAG, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
325           ActionCatalogItem::FLAGS_DEFAULT}},
326 
327         {{ActionID::TOOL, ToolID::TOGGLE_GROUP_TAG_VISIBLE},
328          {"Toggle group&tag visibility", ActionGroup::GROUP_TAG, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
329           ActionCatalogItem::FLAGS_DEFAULT}},
330 
331         {{ActionID::HIGHLIGHT_GROUP, ToolID::NONE},
332          {"Highlight group", ActionGroup::GROUP_TAG, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
333           ActionCatalogItem::FLAGS_SPECIFIC}},
334 
335         {{ActionID::HIGHLIGHT_TAG, ToolID::NONE},
336          {"Highlight tag", ActionGroup::GROUP_TAG, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
337           ActionCatalogItem::FLAGS_SPECIFIC}},
338 
339         {{ActionID::SEARCH, ToolID::NONE},
340          {"Search", ActionGroup::SEARCH,
341           ActionCatalogItem::AVAILABLE_IN_PACKAGE | ActionCatalogItem::AVAILABLE_IN_SYMBOL
342                   | ActionCatalogItem::AVAILABLE_IN_SCHEMATIC_AND_BOARD,
343           ActionCatalogItem::FLAGS_DEFAULT}},
344 
345         {{ActionID::SEARCH_NEXT, ToolID::NONE},
346          {"Search next", ActionGroup::SEARCH,
347           ActionCatalogItem::AVAILABLE_IN_PACKAGE | ActionCatalogItem::AVAILABLE_IN_SYMBOL
348                   | ActionCatalogItem::AVAILABLE_IN_SCHEMATIC_AND_BOARD,
349           ActionCatalogItem::FLAGS_DEFAULT}},
350 
351         {{ActionID::SEARCH_PREVIOUS, ToolID::NONE},
352          {"Search previous", ActionGroup::SEARCH,
353           ActionCatalogItem::AVAILABLE_IN_PACKAGE | ActionCatalogItem::AVAILABLE_IN_SYMBOL
354                   | ActionCatalogItem::AVAILABLE_IN_SCHEMATIC_AND_BOARD,
355           ActionCatalogItem::FLAGS_DEFAULT}},
356 
357         {{ActionID::TOOL, ToolID::COPY_PLACEMENT},
358          {"Copy placement", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_BOARD,
359           ActionCatalogItem::FLAGS_DEFAULT}},
360 
361         {{ActionID::TOOL, ToolID::COPY_TRACKS},
362          {"Copy tracks", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_BOARD, ActionCatalogItem::FLAGS_DEFAULT}},
363 
364         {{ActionID::TOOL, ToolID::SMASH},
365          {"Smash", ActionGroup::UNKNOWN, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC_AND_BOARD,
366           ActionCatalogItem::FLAGS_DEFAULT}},
367 
368         {{ActionID::TOOL, ToolID::UNSMASH},
369          {"Unsmash", ActionGroup::UNKNOWN, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC_AND_BOARD,
370           ActionCatalogItem::FLAGS_DEFAULT}},
371 
372         {{ActionID::TOOL, ToolID::PLACE_HOLE},
373          {"Place hole", ActionGroup::PADSTACK, ActionCatalogItem::AVAILABLE_IN_PADSTACK,
374           ActionCatalogItem::FLAGS_DEFAULT}},
375 
376         {{ActionID::TOOL, ToolID::PLACE_HOLE_SLOT},
377          {"Place slot hole", ActionGroup::PADSTACK, ActionCatalogItem::AVAILABLE_IN_PADSTACK,
378           ActionCatalogItem::FLAGS_DEFAULT}},
379 
380         {{ActionID::TOOL, ToolID::PLACE_SHAPE},
381          {"Place circular shape", ActionGroup::PADSTACK, ActionCatalogItem::AVAILABLE_IN_PADSTACK,
382           ActionCatalogItem::FLAGS_DEFAULT}},
383 
384         {{ActionID::TOOL, ToolID::PLACE_SHAPE_RECTANGLE},
385          {"Place rectangular shape", ActionGroup::PADSTACK, ActionCatalogItem::AVAILABLE_IN_PADSTACK,
386           ActionCatalogItem::FLAGS_DEFAULT}},
387 
388         {{ActionID::TOOL, ToolID::PLACE_SHAPE_OBROUND},
389          {"Place obround shape", ActionGroup::PADSTACK, ActionCatalogItem::AVAILABLE_IN_PADSTACK,
390           ActionCatalogItem::FLAGS_DEFAULT}},
391 
392         {{ActionID::TOOL, ToolID::EDIT_SHAPE},
393          {"Edit shape", ActionGroup::PADSTACK, ActionCatalogItem::AVAILABLE_IN_PADSTACK,
394           ActionCatalogItem::FLAGS_DEFAULT}},
395 
396         {{ActionID::TOOL, ToolID::IMPORT_DXF},
397          {"Import dxf", ActionGroup::EXPORT_IMPORT,
398           ActionCatalogItem::AVAILABLE_IN_BOARD | ActionCatalogItem::AVAILABLE_IN_PACKAGE
399                   | ActionCatalogItem::AVAILABLE_IN_FRAME | ActionCatalogItem::AVAILABLE_IN_DECAL,
400           ActionCatalogItem::FLAGS_DEFAULT}},
401 
402         {{ActionID::TOOL, ToolID::PLACE_JUNCTION},
403          {"Place junction", ActionGroup::UNKNOWN, ActionCatalogItem::AVAILABLE_EVERYWHERE,
404           ActionCatalogItem::FLAGS_DEFAULT}},
405 
406         {{ActionID::TOOL, ToolID::DRAW_POLYGON},
407          {"Draw polygon", ActionGroup::GRAPHICS, ActionCatalogItem::AVAILABLE_EVERYWHERE,
408           ActionCatalogItem::FLAGS_DEFAULT}},
409 
410         {{ActionID::TOOL, ToolID::DRAW_POLYGON_RECTANGLE},
411          {"Draw polygon rectangle", ActionGroup::GRAPHICS, ActionCatalogItem::AVAILABLE_EVERYWHERE,
412           ActionCatalogItem::FLAGS_DEFAULT}},
413 
414         {{ActionID::TOOL, ToolID::DRAW_LINE_RECTANGLE},
415          {"Draw line rectangle", ActionGroup::GRAPHICS, ActionCatalogItem::AVAILABLE_EVERYWHERE,
416           ActionCatalogItem::FLAGS_DEFAULT}},
417 
418         {{ActionID::TOOL, ToolID::EDIT_LINE_RECTANGLE},
419          {"Edit line rectangle", ActionGroup::GRAPHICS, ActionCatalogItem::AVAILABLE_EVERYWHERE,
420           ActionCatalogItem::FLAGS_DEFAULT}},
421 
422         {{ActionID::TOOL, ToolID::DRAW_LINE_CIRCLE},
423          {"Draw line circle", ActionGroup::GRAPHICS, ActionCatalogItem::AVAILABLE_EVERYWHERE,
424           ActionCatalogItem::FLAGS_DEFAULT}},
425 
426         {{ActionID::TOOL, ToolID::PLACE_PAD},
427          {"Place pad", ActionGroup::PACKAGE, ActionCatalogItem::AVAILABLE_IN_PACKAGE,
428           ActionCatalogItem::FLAGS_DEFAULT}},
429 
430         {{ActionID::TOOL, ToolID::EDIT_PAD_PARAMETER_SET},
431          {"Edit pad", ActionGroup::PACKAGE, ActionCatalogItem::AVAILABLE_IN_PACKAGE, ActionCatalogItem::FLAGS_DEFAULT}},
432 
433         {{ActionID::TOOL, ToolID::PLACE_POWER_SYMBOL},
434          {"Place power symbol", ActionGroup::SCHEMATIC, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
435           ActionCatalogItem::FLAGS_DEFAULT}},
436 
437         {{ActionID::TOOL, ToolID::PLACE_TEXT},
438          {"Place text", ActionGroup::GRAPHICS, ActionCatalogItem::AVAILABLE_EVERYWHERE,
439           ActionCatalogItem::FLAGS_DEFAULT}},
440 
441         {{ActionID::TOOL, ToolID::ASSIGN_PART},
442          {"Assign part", ActionGroup::SCHEMATIC, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
443           ActionCatalogItem::FLAGS_DEFAULT}},
444 
445         {{ActionID::TOOL, ToolID::EDIT_SCHEMATIC_PROPERTIES},
446          {"Edit schematic properties", ActionGroup::SCHEMATIC, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
447           ActionCatalogItem::FLAGS_DEFAULT}},
448 
449         {{ActionID::TOOL, ToolID::SET_DIFFPAIR},
450          {"Set diff. pair", ActionGroup::SCHEMATIC, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
451           ActionCatalogItem::FLAGS_DEFAULT}},
452 
453         {{ActionID::TOOL, ToolID::CLEAR_DIFFPAIR},
454          {"Clear diff. pair", ActionGroup::SCHEMATIC, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
455           ActionCatalogItem::FLAGS_DEFAULT}},
456 
457         {{ActionID::TOOL, ToolID::MAP_PACKAGE},
458          {"Place package", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_BOARD,
459           ActionCatalogItem::FLAGS_DEFAULT}},
460 
461         {{ActionID::TOOL, ToolID::PLACE_VIA},
462          {"Place via", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_BOARD, ActionCatalogItem::FLAGS_DEFAULT}},
463 
464         {{ActionID::TOOL, ToolID::EDIT_VIA},
465          {"Edit via", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_BOARD, ActionCatalogItem::FLAGS_DEFAULT}},
466 
467         {{ActionID::TOOL, ToolID::DRAW_TRACK},
468          {"Draw track", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_BOARD, ActionCatalogItem::FLAGS_DEFAULT}},
469 
470         {{ActionID::TOOL, ToolID::ROUTE_TRACK_INTERACTIVE},
471          {"Route track", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_BOARD, ActionCatalogItem::FLAGS_DEFAULT}},
472 
473         {{ActionID::TOOL, ToolID::ROUTE_DIFFPAIR_INTERACTIVE},
474          {"Route diff. pair", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_BOARD,
475           ActionCatalogItem::FLAGS_DEFAULT}},
476 
477         {{ActionID::TOOL, ToolID::DRAG_KEEP_SLOPE},
478          {"Drag and keep slope", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_BOARD,
479           ActionCatalogItem::FLAGS_DEFAULT}},
480 
481         {{ActionID::TOOL, ToolID::DRAG_TRACK_INTERACTIVE},
482          {"Drag track/via", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_BOARD,
483           ActionCatalogItem::FLAGS_DEFAULT}},
484 
485         {{ActionID::TOOL, ToolID::TUNE_TRACK},
486          {"Tune track", ActionGroup::TUNING, ActionCatalogItem::AVAILABLE_IN_BOARD, ActionCatalogItem::FLAGS_DEFAULT}},
487 
488         {{ActionID::TOOL, ToolID::TUNE_DIFFPAIR},
489          {"Tune diff. pair", ActionGroup::TUNING, ActionCatalogItem::AVAILABLE_IN_BOARD,
490           ActionCatalogItem::FLAGS_DEFAULT}},
491 
492         {{ActionID::TOOL, ToolID::TUNE_DIFFPAIR_SKEW},
493          {"Tune diff. pair skew", ActionGroup::TUNING, ActionCatalogItem::AVAILABLE_IN_BOARD,
494           ActionCatalogItem::FLAGS_DEFAULT}},
495 
496         {{ActionID::TOOL, ToolID::ADD_PLANE},
497          {"Add plane", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_BOARD, ActionCatalogItem::FLAGS_DEFAULT}},
498 
499         {{ActionID::TOOL, ToolID::EDIT_PLANE},
500          {"Edit plane", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_BOARD, ActionCatalogItem::FLAGS_DEFAULT}},
501 
502         {{ActionID::TOOL, ToolID::CLEAR_PLANE},
503          {"Clear plane", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_BOARD, ActionCatalogItem::FLAGS_DEFAULT}},
504 
505         {{ActionID::TOOL, ToolID::CLEAR_ALL_PLANES},
506          {"Clear all planes", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_BOARD,
507           ActionCatalogItem::FLAGS_DEFAULT}},
508 
509         {{ActionID::TOOL, ToolID::UPDATE_PLANE},
510          {"Update plane", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_BOARD, ActionCatalogItem::FLAGS_DEFAULT}},
511 
512         {{ActionID::TOOL, ToolID::UPDATE_ALL_PLANES},
513          {"Update all planes", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_BOARD,
514           ActionCatalogItem::FLAGS_DEFAULT}},
515 
516         {{ActionID::TOOL, ToolID::EDIT_STACKUP},
517          {"Edit stackup", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_BOARD, ActionCatalogItem::FLAGS_DEFAULT}},
518 
519         {{ActionID::TOOL, ToolID::DRAW_DIMENSION},
520          {"Draw dimension", ActionGroup::GRAPHICS, ActionCatalogItem::AVAILABLE_IN_PACKAGE_AND_BOARD,
521           ActionCatalogItem::FLAGS_DEFAULT}},
522 
523         {{ActionID::SELECT_MORE, ToolID::NONE},
524          {"Select more", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_BOARD, ActionCatalogItem::FLAGS_SPECIFIC}},
525 
526         {{ActionID::SELECT_MORE_NO_VIA, ToolID::NONE},
527          {"Select more (stop at vias)", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_BOARD,
528           ActionCatalogItem::FLAGS_SPECIFIC}},
529 
530         {{ActionID::TOOL, ToolID::SET_VIA_NET},
531          {"Set via net", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_BOARD, ActionCatalogItem::FLAGS_DEFAULT}},
532 
533         {{ActionID::TOOL, ToolID::CLEAR_VIA_NET},
534          {"Clear via net", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_BOARD,
535           ActionCatalogItem::FLAGS_DEFAULT}},
536 
537         {{ActionID::TOOL, ToolID::CLEAR_VIA_NET},
538          {"Clear via net", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_BOARD,
539           ActionCatalogItem::FLAGS_DEFAULT}},
540 
541         {{ActionID::TOOL, ToolID::LOCK},
542          {"Lock", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_BOARD, ActionCatalogItem::FLAGS_DEFAULT}},
543 
544         {{ActionID::TOOL, ToolID::UNLOCK},
545          {"Unlock", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_BOARD, ActionCatalogItem::FLAGS_DEFAULT}},
546 
547         {{ActionID::TOOL, ToolID::UNLOCK_ALL},
548          {"Unlock all", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_BOARD, ActionCatalogItem::FLAGS_DEFAULT}},
549 
550         {{ActionID::TOOL, ToolID::ADD_VERTEX},
551          {"Add vertex", ActionGroup::GRAPHICS, ActionCatalogItem::AVAILABLE_EVERYWHERE,
552           ActionCatalogItem::FLAGS_DEFAULT}},
553 
554         {{ActionID::TOOL, ToolID::PLACE_BOARD_HOLE},
555          {"Place hole", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_BOARD, ActionCatalogItem::FLAGS_DEFAULT}},
556 
557         {{ActionID::TOOL, ToolID::EDIT_BOARD_HOLE},
558          {"Edit hole", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_BOARD, ActionCatalogItem::FLAGS_DEFAULT}},
559 
560         {{ActionID::TOOL, ToolID::GENERATE_COURTYARD},
561          {"Generate courtyard", ActionGroup::PACKAGE, ActionCatalogItem::AVAILABLE_IN_PACKAGE,
562           ActionCatalogItem::FLAGS_DEFAULT}},
563 
564         {{ActionID::TOOL, ToolID::GENERATE_SILKSCREEN},
565          {"Generate silkscreen", ActionGroup::PACKAGE, ActionCatalogItem::AVAILABLE_IN_PACKAGE,
566           ActionCatalogItem::FLAGS_DEFAULT}},
567 
568         {{ActionID::TOOL, ToolID::MOVE_KEY},
569          {"Move by keyboard", ActionGroup::MOVE, ActionCatalogItem::AVAILABLE_EVERYWHERE,
570           ActionCatalogItem::FLAGS_DEFAULT}},
571 
572         {{ActionID::TOOL, ToolID::MOVE_KEY_UP},
573          {"Move up", ActionGroup::MOVE, ActionCatalogItem::AVAILABLE_EVERYWHERE,
574           ActionCatalogItem::FLAGS_NO_MENU | ActionCatalogItem::FLAGS_NO_POPOVER
575                   | ActionCatalogItem::FLAGS_NO_PREFERENCES}},
576 
577         {{ActionID::TOOL, ToolID::MOVE_KEY_DOWN},
578          {"Move down", ActionGroup::MOVE, ActionCatalogItem::AVAILABLE_EVERYWHERE,
579           ActionCatalogItem::FLAGS_NO_MENU | ActionCatalogItem::FLAGS_NO_POPOVER
580                   | ActionCatalogItem::FLAGS_NO_PREFERENCES}},
581 
582         {{ActionID::TOOL, ToolID::MOVE_KEY_LEFT},
583          {"Move left", ActionGroup::MOVE, ActionCatalogItem::AVAILABLE_EVERYWHERE,
584           ActionCatalogItem::FLAGS_NO_MENU | ActionCatalogItem::FLAGS_NO_POPOVER
585                   | ActionCatalogItem::FLAGS_NO_PREFERENCES}},
586 
587         {{ActionID::TOOL, ToolID::MOVE_KEY_RIGHT},
588          {"Move right", ActionGroup::MOVE, ActionCatalogItem::AVAILABLE_EVERYWHERE,
589           ActionCatalogItem::FLAGS_NO_MENU | ActionCatalogItem::FLAGS_NO_POPOVER
590                   | ActionCatalogItem::FLAGS_NO_PREFERENCES}},
591 
592         {{ActionID::TOOL, ToolID::MOVE_KEY_FINE_UP},
593          {"Move up fine", ActionGroup::MOVE, ActionCatalogItem::AVAILABLE_EVERYWHERE,
594           ActionCatalogItem::FLAGS_NO_MENU | ActionCatalogItem::FLAGS_NO_POPOVER
595                   | ActionCatalogItem::FLAGS_NO_PREFERENCES}},
596 
597         {{ActionID::TOOL, ToolID::MOVE_KEY_FINE_DOWN},
598          {"Move down fine", ActionGroup::MOVE, ActionCatalogItem::AVAILABLE_EVERYWHERE,
599           ActionCatalogItem::FLAGS_NO_MENU | ActionCatalogItem::FLAGS_NO_POPOVER
600                   | ActionCatalogItem::FLAGS_NO_PREFERENCES}},
601 
602         {{ActionID::TOOL, ToolID::MOVE_KEY_FINE_LEFT},
603          {"Move left fine", ActionGroup::MOVE, ActionCatalogItem::AVAILABLE_EVERYWHERE,
604           ActionCatalogItem::FLAGS_NO_MENU | ActionCatalogItem::FLAGS_NO_POPOVER
605                   | ActionCatalogItem::FLAGS_NO_PREFERENCES}},
606 
607         {{ActionID::TOOL, ToolID::MOVE_KEY_FINE_RIGHT},
608          {"Move right fine", ActionGroup::MOVE, ActionCatalogItem::AVAILABLE_EVERYWHERE,
609           ActionCatalogItem::FLAGS_NO_MENU | ActionCatalogItem::FLAGS_NO_POPOVER
610                   | ActionCatalogItem::FLAGS_NO_PREFERENCES}},
611 
612         {{ActionID::BOM_EXPORT_WINDOW, ToolID::NONE},
613          {"BOM export window", ActionGroup::EXPORT_IMPORT, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
614           ActionCatalogItem::FLAGS_DEFAULT}},
615 
616         {{ActionID::EXPORT_BOM, ToolID::NONE},
617          {"Export BOM", ActionGroup::EXPORT_IMPORT, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
618           ActionCatalogItem::FLAGS_DEFAULT}},
619 
620         {{ActionID::TOOL, ToolID::SWAP_NETS},
621          {"Swap nets", ActionGroup::SCHEMATIC, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
622           ActionCatalogItem::FLAGS_DEFAULT}},
623 
624         {{ActionID::TOOL, ToolID::LINE_LOOP_TO_POLYGON},
625          {"Line loop to polygon", ActionGroup::GRAPHICS, ActionCatalogItem::AVAILABLE_EVERYWHERE,
626           ActionCatalogItem::FLAGS_DEFAULT}},
627 
628         {{ActionID::RELOAD_POOL, ToolID::NONE},
629          {"Reload pool", ActionGroup::UNKNOWN,
630           ActionCatalogItem::AVAILABLE_IN_PACKAGE | ActionCatalogItem::AVAILABLE_IN_SYMBOL
631                   | ActionCatalogItem::AVAILABLE_IN_SCHEMATIC | ActionCatalogItem::AVAILABLE_IN_BOARD,
632           ActionCatalogItem::FLAGS_DEFAULT}},
633 
634         {{ActionID::EDIT_PADSTACK, ToolID::NONE},
635          {"Edit padstack", ActionGroup::PACKAGE, ActionCatalogItem::AVAILABLE_IN_PACKAGE,
636           ActionCatalogItem::FLAGS_SPECIFIC}},
637 
638         {{ActionID::EDIT_UNIT, ToolID::NONE},
639          {"Edit unit", ActionGroup::SYMBOL, ActionCatalogItem::AVAILABLE_IN_SYMBOL, ActionCatalogItem::FLAGS_DEFAULT}},
640 
641         {{ActionID::TOOL, ToolID::CHANGE_UNIT},
642          {"Change unit", ActionGroup::SYMBOL, ActionCatalogItem::AVAILABLE_IN_SYMBOL,
643           ActionCatalogItem::FLAGS_DEFAULT}},
644 
645         {{ActionID::TOOL, ToolID::EDIT_FRAME_PROPERTIES},
646          {"Edit frame properties", ActionGroup::FRAME, ActionCatalogItem::AVAILABLE_IN_FRAME,
647           ActionCatalogItem::FLAGS_DEFAULT}},
648 
649         {{ActionID::TOOL, ToolID::SET_ALL_NC},
650          {"Set all unconnected pins NC", ActionGroup::SCHEMATIC, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
651           ActionCatalogItem::FLAGS_DEFAULT}},
652 
653         {{ActionID::TOOL, ToolID::CLEAR_ALL_NC},
654          {"Clear all NC pins", ActionGroup::SCHEMATIC, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
655           ActionCatalogItem::FLAGS_DEFAULT}},
656 
657         {{ActionID::TOOL, ToolID::SET_NC},
658          {"Set pins NC", ActionGroup::SCHEMATIC, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
659           ActionCatalogItem::FLAGS_DEFAULT}},
660 
661         {{ActionID::TOOL, ToolID::CLEAR_NC},
662          {"Clear pins NC", ActionGroup::SCHEMATIC, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
663           ActionCatalogItem::FLAGS_DEFAULT}},
664 
665         {{ActionID::TOOL, ToolID::ADD_KEEPOUT},
666          {"Add keepout", ActionGroup::GRAPHICS, ActionCatalogItem::AVAILABLE_IN_PACKAGE_AND_BOARD,
667           ActionCatalogItem::FLAGS_DEFAULT}},
668 
669         {{ActionID::TOOL, ToolID::EDIT_KEEPOUT},
670          {"Edit keepout", ActionGroup::GRAPHICS, ActionCatalogItem::AVAILABLE_IN_PACKAGE_AND_BOARD,
671           ActionCatalogItem::FLAGS_DEFAULT}},
672 
673         {{ActionID::TOOL, ToolID::CHANGE_SYMBOL},
674          {"Change symbol", ActionGroup::SCHEMATIC, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
675           ActionCatalogItem::FLAGS_DEFAULT}},
676 
677         {{ActionID::TOOL, ToolID::PLACE_REFDES_AND_VALUE},
678          {"Place refdes and value", ActionGroup::SYMBOL, ActionCatalogItem::AVAILABLE_IN_SYMBOL,
679           ActionCatalogItem::FLAGS_DEFAULT}},
680 
681         {{ActionID::GO_TO_BOARD, ToolID::NONE},
682          {"Go to board", ActionGroup::SCHEMATIC, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
683           ActionCatalogItem::FLAGS_DEFAULT}},
684 
685         {{ActionID::GO_TO_SCHEMATIC, ToolID::NONE},
686          {"Go to schematic", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_BOARD,
687           ActionCatalogItem::FLAGS_DEFAULT}},
688 
689         {{ActionID::SHOW_IN_POOL_MANAGER, ToolID::NONE},
690          {"Show in pool manager", ActionGroup::UNKNOWN, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC_AND_BOARD,
691           ActionCatalogItem::FLAGS_SPECIFIC}},
692 
693         {{ActionID::SELECT_ALL, ToolID::NONE},
694          {"Select all", ActionGroup::UNKNOWN, ActionCatalogItem::AVAILABLE_EVERYWHERE,
695           ActionCatalogItem::FLAGS_DEFAULT}},
696 
697         {{ActionID::TOOL, ToolID::DRAW_POLYGON_CIRCLE},
698          {"Draw polygon circle", ActionGroup::GRAPHICS, ActionCatalogItem::AVAILABLE_EVERYWHERE,
699           ActionCatalogItem::FLAGS_DEFAULT}},
700 
701         {{ActionID::PDF_EXPORT_WINDOW, ToolID::NONE},
702          {"PDF export window", ActionGroup::EXPORT_IMPORT, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC_AND_BOARD,
703           ActionCatalogItem::FLAGS_DEFAULT}},
704 
705         {{ActionID::EXPORT_PDF, ToolID::NONE},
706          {"Export PDF", ActionGroup::EXPORT_IMPORT, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC_AND_BOARD,
707           ActionCatalogItem::FLAGS_DEFAULT}},
708 
709         {{ActionID::TOOL, ToolID::DRAW_CONNECTION_LINE},
710          {"Draw connection line", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_BOARD,
711           ActionCatalogItem::FLAGS_DEFAULT}},
712 
713         {{ActionID::BACKANNOTATE_CONNECTION_LINES, ToolID::NONE},
714          {"Backannotate connection lines", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_BOARD,
715           ActionCatalogItem::FLAGS_DEFAULT}},
716 
717         {{ActionID::TOOL, ToolID::BACKANNOTATE_CONNECTION_LINES},
718          {"Backannotate connection lines", ActionGroup::SCHEMATIC, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
719           ActionCatalogItem::FLAGS_NO_MENU | ActionCatalogItem::FLAGS_NO_POPOVER
720                   | ActionCatalogItem::FLAGS_NO_PREFERENCES}},
721 
722         {{ActionID::TOOL, ToolID::IMPORT_KICAD_PACKAGE},
723          {"Import KiCad package", ActionGroup::EXPORT_IMPORT,
724           ActionCatalogItem::AVAILABLE_IN_PACKAGE | ActionCatalogItem::AVAILABLE_IN_DECAL,
725           ActionCatalogItem::FLAGS_DEFAULT}},
726 
727         {{ActionID::TOOL, ToolID::SMASH_SILKSCREEN_GRAPHICS},
728          {"Smash silkscreen graphics", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_BOARD,
729           ActionCatalogItem::FLAGS_DEFAULT}},
730 
731         {{ActionID::TOOL, ToolID::RENUMBER_PADS},
732          {"Renumber pads", ActionGroup::PACKAGE, ActionCatalogItem::AVAILABLE_IN_PACKAGE,
733           ActionCatalogItem::FLAGS_DEFAULT}},
734 
735         {{ActionID::TOOL, ToolID::FIX},
736          {"Fix package", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_BOARD, ActionCatalogItem::FLAGS_DEFAULT}},
737 
738         {{ActionID::TOOL, ToolID::UNFIX},
739          {"Unfix package", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_BOARD,
740           ActionCatalogItem::FLAGS_DEFAULT}},
741 
742         {{ActionID::TOOL, ToolID::NOPOPULATE},
743          {"Mark do not populate", ActionGroup::SCHEMATIC, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
744           ActionCatalogItem::FLAGS_DEFAULT}},
745 
746         {{ActionID::TOOL, ToolID::POPULATE},
747          {"Mark populate", ActionGroup::SCHEMATIC, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
748           ActionCatalogItem::FLAGS_DEFAULT}},
749 
750         {{ActionID::TOOL, ToolID::POLYGON_TO_LINE_LOOP},
751          {"Polygon to line loop", ActionGroup::GRAPHICS, ActionCatalogItem::AVAILABLE_EVERYWHERE,
752           ActionCatalogItem::FLAGS_DEFAULT}},
753 
754         {{ActionID::STEP_EXPORT_WINDOW, ToolID::NONE},
755          {"STEP export window", ActionGroup::EXPORT_IMPORT, ActionCatalogItem::AVAILABLE_IN_BOARD,
756           ActionCatalogItem::FLAGS_DEFAULT}},
757 
758         {{ActionID::EXPORT_STEP, ToolID::NONE},
759          {"Export STEP", ActionGroup::EXPORT_IMPORT, ActionCatalogItem::AVAILABLE_IN_BOARD,
760           ActionCatalogItem::FLAGS_DEFAULT}},
761 
762         {{ActionID::PNP_EXPORT_WINDOW, ToolID::NONE},
763          {"Pick & place export window", ActionGroup::EXPORT_IMPORT, ActionCatalogItem::AVAILABLE_IN_BOARD,
764           ActionCatalogItem::FLAGS_DEFAULT}},
765 
766         {{ActionID::EXPORT_PNP, ToolID::NONE},
767          {"Export Pick & place", ActionGroup::EXPORT_IMPORT, ActionCatalogItem::AVAILABLE_IN_BOARD,
768           ActionCatalogItem::FLAGS_DEFAULT}},
769 
770         {{ActionID::AIRWIRE_FILTER_WINDOW, ToolID::NONE},
771          {"Nets window", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_BOARD, ActionCatalogItem::FLAGS_DEFAULT}},
772 
773         {{ActionID::RESET_AIRWIRE_FILTER, ToolID::NONE},
774          {"Reset airwire filter", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_BOARD,
775           ActionCatalogItem::FLAGS_DEFAULT}},
776 
777         {{ActionID::FILTER_AIRWIRES, ToolID::NONE},
778          {"Filter airwires", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_BOARD,
779           ActionCatalogItem::FLAGS_SPECIFIC}},
780 
781         {{ActionID::SELECT_POLYGON, ToolID::NONE},
782          {"Select polygon", ActionGroup::GRAPHICS, ActionCatalogItem::AVAILABLE_EVERYWHERE,
783           ActionCatalogItem::FLAGS_SPECIFIC}},
784 
785         {{ActionID::TOOL, ToolID::ROTATE_CURSOR},
786          {"Rotate around cursor", ActionGroup::MOVE, ActionCatalogItem::AVAILABLE_EVERYWHERE,
787           ActionCatalogItem::FLAGS_DEFAULT}},
788 
789         {{ActionID::TOOL, ToolID::MIRROR_CURSOR},
790          {"Mirror around cursor", ActionGroup::MOVE, ActionCatalogItem::AVAILABLE_EVERYWHERE,
791           ActionCatalogItem::FLAGS_DEFAULT}},
792 
793         {{ActionID::TOOL, ToolID::PLACE_BOARD_PANEL},
794          {"Place board panel", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_BOARD,
795           ActionCatalogItem::FLAGS_DEFAULT}},
796 
797         {{ActionID::TOOL, ToolID::MANAGE_INCLUDED_BOARDS},
798          {"Manage included boards", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_BOARD,
799           ActionCatalogItem::FLAGS_DEFAULT}},
800 
801         {{ActionID::TOOL, ToolID::SMASH_PANEL_OUTLINE},
802          {"Smash panel outline", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_BOARD,
803           ActionCatalogItem::FLAGS_DEFAULT}},
804 
805         {{ActionID::TOOL, ToolID::SMASH_PACKAGE_OUTLINE},
806          {"Smash package outline", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_BOARD,
807           ActionCatalogItem::FLAGS_DEFAULT}},
808 
809         {{ActionID::TOOL, ToolID::RESIZE_SYMBOL},
810          {"Resize symbol", ActionGroup::SYMBOL, ActionCatalogItem::AVAILABLE_IN_SYMBOL,
811           ActionCatalogItem::FLAGS_DEFAULT}},
812 
813         {{ActionID::TOOL, ToolID::ROUND_OFF_VERTEX},
814          {"Round off vertex", ActionGroup::GRAPHICS, ActionCatalogItem::AVAILABLE_EVERYWHERE,
815           ActionCatalogItem::FLAGS_DEFAULT}},
816 
817         {{ActionID::FAB_OUTPUT_WINDOW, ToolID::NONE},
818          {"Fab. output window", ActionGroup::EXPORT_IMPORT, ActionCatalogItem::AVAILABLE_IN_BOARD,
819           ActionCatalogItem::FLAGS_DEFAULT}},
820 
821         {{ActionID::GEN_FAB_OUTPUT, ToolID::NONE},
822          {"Generate fab. output", ActionGroup::EXPORT_IMPORT, ActionCatalogItem::AVAILABLE_IN_BOARD,
823           ActionCatalogItem::FLAGS_DEFAULT}},
824 
825         {{ActionID::TOOL, ToolID::SWAP_GATES},
826          {"Swap gates", ActionGroup::SCHEMATIC, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
827           ActionCatalogItem::FLAGS_DEFAULT}},
828 
829         {{ActionID::FOOTPRINT_GENERATOR, ToolID::NONE},
830          {"Footprint generator", ActionGroup::PACKAGE, ActionCatalogItem::AVAILABLE_IN_PACKAGE,
831           ActionCatalogItem::FLAGS_DEFAULT}},
832 
833         {{ActionID::TOOL, ToolID::PLACE_PICTURE},
834          {"Place picture", ActionGroup::GRAPHICS,
835           ActionCatalogItem::AVAILABLE_IN_SCHEMATIC_AND_BOARD | ActionCatalogItem::AVAILABLE_IN_PACKAGE,
836           ActionCatalogItem::FLAGS_DEFAULT}},
837 
838         {{ActionID::SET_GRID_ORIGIN, ToolID::NONE},
839          {"Set grid origin", ActionGroup::UNKNOWN, ActionCatalogItem::AVAILABLE_IN_PACKAGE_AND_BOARD,
840           ActionCatalogItem::FLAGS_DEFAULT}},
841 
842         {{ActionID::TOGGLE_SNAP_TO_TARGETS, ToolID::NONE},
843          {"Toggle snap to targets", ActionGroup::VIEW, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
844           ActionCatalogItem::FLAGS_IN_TOOL}},
845 
846         {{ActionID::PARTS_WINDOW, ToolID::NONE},
847          {"Parts window", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_BOARD, ActionCatalogItem::FLAGS_DEFAULT}},
848 
849         {{ActionID::TOOL, ToolID::ADD_TEXT},
850          {"Add text", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_BOARD, ActionCatalogItem::FLAGS_DEFAULT}},
851 
852         {{ActionID::PAN_LEFT, ToolID::NONE},
853          {"Pan left", ActionGroup::VIEW, ActionCatalogItem::AVAILABLE_EVERYWHERE_3D,
854           ActionCatalogItem::FLAGS_NO_POPOVER | ActionCatalogItem::FLAGS_IN_TOOL}},
855 
856         {{ActionID::PAN_RIGHT, ToolID::NONE},
857          {"Pan right", ActionGroup::VIEW, ActionCatalogItem::AVAILABLE_EVERYWHERE_3D,
858           ActionCatalogItem::FLAGS_NO_POPOVER | ActionCatalogItem::FLAGS_IN_TOOL}},
859 
860         {{ActionID::PAN_UP, ToolID::NONE},
861          {"Pan up", ActionGroup::VIEW, ActionCatalogItem::AVAILABLE_EVERYWHERE_3D,
862           ActionCatalogItem::FLAGS_NO_POPOVER | ActionCatalogItem::FLAGS_IN_TOOL}},
863 
864         {{ActionID::PAN_DOWN, ToolID::NONE},
865          {"Pan down", ActionGroup::VIEW, ActionCatalogItem::AVAILABLE_EVERYWHERE_3D,
866           ActionCatalogItem::FLAGS_NO_POPOVER | ActionCatalogItem::FLAGS_IN_TOOL}},
867 
868         {{ActionID::ZOOM_IN, ToolID::NONE},
869          {"Zoom in", ActionGroup::VIEW, ActionCatalogItem::AVAILABLE_EVERYWHERE_3D,
870           ActionCatalogItem::FLAGS_NO_POPOVER | ActionCatalogItem::FLAGS_IN_TOOL}},
871 
872         {{ActionID::ZOOM_OUT, ToolID::NONE},
873          {"Zoom out", ActionGroup::VIEW, ActionCatalogItem::AVAILABLE_EVERYWHERE_3D,
874           ActionCatalogItem::FLAGS_NO_POPOVER | ActionCatalogItem::FLAGS_IN_TOOL}},
875 
876         {{ActionID::TOOL, ToolID::PLACE_DECAL},
877          {"Place decal", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_BOARD, ActionCatalogItem::FLAGS_DEFAULT}},
878 
879         {{ActionID::CLICK_SELECT, ToolID::NONE},
880          {"Click select mode", ActionGroup::SELECTION, ActionCatalogItem::AVAILABLE_EVERYWHERE,
881           ActionCatalogItem::FLAGS_DEFAULT}},
882 
883         {{ActionID::HIGHLIGHT_NET_CLASS, ToolID::NONE},
884          {"Highlight net class", ActionGroup::UNKNOWN, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC_AND_BOARD,
885           ActionCatalogItem::FLAGS_SPECIFIC}},
886 
887         {{ActionID::TOOL, ToolID::DRAW_PLANE},
888          {"Draw plane", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_BOARD, ActionCatalogItem::FLAGS_DEFAULT}},
889 
890         {{ActionID::TOOL, ToolID::DRAW_KEEPOUT},
891          {"Draw keepout", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_PACKAGE_AND_BOARD,
892           ActionCatalogItem::FLAGS_DEFAULT}},
893 
894         {{ActionID::TOOL, ToolID::DRAG_POLYGON_EDGE},
895          {"Drag polygon edge", ActionGroup::GRAPHICS, ActionCatalogItem::AVAILABLE_EVERYWHERE,
896           ActionCatalogItem::FLAGS_DEFAULT}},
897 
898         {{ActionID::ROTATE_VIEW_LEFT, ToolID::NONE},
899          {"Rotate view left", ActionGroup::VIEW,
900           ActionCatalogItem::AVAILABLE_IN_PACKAGE_AND_BOARD | ActionCatalogItem::AVAILABLE_IN_3D,
901           ActionCatalogItem::FLAGS_IN_TOOL}},
902 
903         {{ActionID::ROTATE_VIEW_RIGHT, ToolID::NONE},
904          {"Rotate view right", ActionGroup::VIEW,
905           ActionCatalogItem::AVAILABLE_IN_PACKAGE_AND_BOARD | ActionCatalogItem::AVAILABLE_IN_3D,
906           ActionCatalogItem::FLAGS_IN_TOOL}},
907 
908         {{ActionID::ROTATE_VIEW_RESET, ToolID::NONE},
909          {"Reset view rotation", ActionGroup::VIEW, ActionCatalogItem::AVAILABLE_IN_PACKAGE_AND_BOARD,
910           ActionCatalogItem::FLAGS_IN_TOOL}},
911 
912         {{ActionID::ROTATE_VIEW, ToolID::NONE},
913          {"Rotate view", ActionGroup::VIEW, ActionCatalogItem::AVAILABLE_IN_PACKAGE_AND_BOARD,
914           ActionCatalogItem::FLAGS_IN_TOOL}},
915 
916         {{ActionID::TOOL, ToolID::MEASURE},
917          {"Measure", ActionGroup::GRAPHICS, ActionCatalogItem::AVAILABLE_LAYERED, ActionCatalogItem::FLAGS_DEFAULT}},
918 
919         {{ActionID::TOOL, ToolID::EDIT_CUSTOM_VALUE},
920          {"Edit custom value", ActionGroup::SCHEMATIC, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
921           ActionCatalogItem::FLAGS_DEFAULT}},
922 
923         {{ActionID::NEXT_SHEET, ToolID::NONE},
924          {"Next sheet", ActionGroup::VIEW, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
925           ActionCatalogItem::FLAGS_DEFAULT}},
926 
927         {{ActionID::PREV_SHEET, ToolID::NONE},
928          {"Previous sheet", ActionGroup::VIEW, ActionCatalogItem::AVAILABLE_IN_SCHEMATIC,
929           ActionCatalogItem::FLAGS_DEFAULT}},
930 
931         {{ActionID::TOOL, ToolID::PLACE_DOT},
932          {"Place dot", ActionGroup::SYMBOL, ActionCatalogItem::AVAILABLE_IN_SYMBOL, ActionCatalogItem::FLAGS_DEFAULT}},
933 
934         {{ActionID::VIEW_3D_PERSP, ToolID::NONE},
935          {"Perspective projection", ActionGroup::VIEW_3D, ActionCatalogItem::AVAILABLE_IN_3D,
936           ActionCatalogItem::FLAGS_DEFAULT}},
937 
938         {{ActionID::VIEW_3D_ORTHO, ToolID::NONE},
939          {"Orthographic projection", ActionGroup::VIEW_3D, ActionCatalogItem::AVAILABLE_IN_3D,
940           ActionCatalogItem::FLAGS_DEFAULT}},
941 
942         {{ActionID::VIEW_3D_TOP, ToolID::NONE},
943          {"View top", ActionGroup::VIEW_3D, ActionCatalogItem::AVAILABLE_IN_3D, ActionCatalogItem::FLAGS_DEFAULT}},
944 
945         {{ActionID::VIEW_3D_BOTTOM, ToolID::NONE},
946          {"View bottom", ActionGroup::VIEW_3D, ActionCatalogItem::AVAILABLE_IN_3D, ActionCatalogItem::FLAGS_DEFAULT}},
947 
948         {{ActionID::VIEW_3D_LEFT, ToolID::NONE},
949          {"View left", ActionGroup::VIEW_3D, ActionCatalogItem::AVAILABLE_IN_3D, ActionCatalogItem::FLAGS_DEFAULT}},
950 
951         {{ActionID::VIEW_3D_RIGHT, ToolID::NONE},
952          {"View right", ActionGroup::VIEW_3D, ActionCatalogItem::AVAILABLE_IN_3D, ActionCatalogItem::FLAGS_DEFAULT}},
953 
954         {{ActionID::VIEW_3D_FRONT, ToolID::NONE},
955          {"View font", ActionGroup::VIEW_3D, ActionCatalogItem::AVAILABLE_IN_3D, ActionCatalogItem::FLAGS_DEFAULT}},
956 
957         {{ActionID::VIEW_3D_BACK, ToolID::NONE},
958          {"View back", ActionGroup::VIEW_3D, ActionCatalogItem::AVAILABLE_IN_3D, ActionCatalogItem::FLAGS_DEFAULT}},
959 
960         {{ActionID::GRIDS_WINDOW, ToolID::NONE},
961          {"Grids window", ActionGroup::UNKNOWN, ActionCatalogItem::AVAILABLE_IN_PACKAGE_AND_BOARD,
962           ActionCatalogItem::FLAGS_DEFAULT}},
963 
964         {{ActionID::SELECT_GRID, ToolID::NONE},
965          {"Select grid", ActionGroup::UNKNOWN, ActionCatalogItem::AVAILABLE_IN_PACKAGE_AND_BOARD,
966           ActionCatalogItem::FLAGS_DEFAULT}},
967 
968         {{ActionID::TOOL, ToolID::SET_TRACK_WIDTH},
969          {"Set track width", ActionGroup::BOARD, ActionCatalogItem::AVAILABLE_IN_BOARD,
970           ActionCatalogItem::FLAGS_DEFAULT}},
971 };
972 
973 const std::vector<std::pair<ActionGroup, std::string>> action_group_catalog = {
974         {ActionGroup::CLIPBOARD, "Clipboard"},
975         {ActionGroup::GRAPHICS, "Graphics"},
976         {ActionGroup::MOVE, "Move"},
977         {ActionGroup::BOARD, "Board"},
978         {ActionGroup::SCHEMATIC, "Schematic"},
979         {ActionGroup::GROUP_TAG, "Group & Tag"},
980         {ActionGroup::SYMBOL, "Symbol"},
981         {ActionGroup::PADSTACK, "Padstack"},
982         {ActionGroup::PACKAGE, "Package"},
983         {ActionGroup::FRAME, "Frame"},
984         {ActionGroup::UNDO, "Undo"},
985         {ActionGroup::LAYER, "Layer"},
986         {ActionGroup::SELECTION, "Selection"},
987         {ActionGroup::RULES, "Rules"},
988         {ActionGroup::UNKNOWN, "Misc"},
989         {ActionGroup::VIEW, "View"},
990         {ActionGroup::EXPORT_IMPORT, "Export / import"},
991         {ActionGroup::SEARCH, "Search"},
992         {ActionGroup::TUNING, "Tuning"},
993         {ActionGroup::VIEW_3D, "3D Preview"},
994 
995 };
996 
997 #define ACTION_LUT_ITEM(x)                                                                                             \
998     {                                                                                                                  \
999 #x, ActionID::x                                                                                                \
1000     }
1001 
1002 const LutEnumStr<ActionID> action_lut = {
1003         ACTION_LUT_ITEM(TOOL),
1004         ACTION_LUT_ITEM(SELECTION_FILTER),
1005         ACTION_LUT_ITEM(DISTRACTION_FREE),
1006         ACTION_LUT_ITEM(SAVE),
1007         ACTION_LUT_ITEM(VIEW_3D),
1008         ACTION_LUT_ITEM(UNDO),
1009         ACTION_LUT_ITEM(REDO),
1010         ACTION_LUT_ITEM(COPY),
1011         ACTION_LUT_ITEM(PREFERENCES),
1012         ACTION_LUT_ITEM(PLACE_PART),
1013         ACTION_LUT_ITEM(HELP),
1014         ACTION_LUT_ITEM(RULES),
1015         ACTION_LUT_ITEM(RULES_APPLY),
1016         ACTION_LUT_ITEM(RULES_RUN_CHECKS),
1017         ACTION_LUT_ITEM(LAYER_UP),
1018         ACTION_LUT_ITEM(LAYER_DOWN),
1019         ACTION_LUT_ITEM(LAYER_INNER1),
1020         ACTION_LUT_ITEM(LAYER_INNER2),
1021         ACTION_LUT_ITEM(LAYER_INNER3),
1022         ACTION_LUT_ITEM(LAYER_INNER4),
1023         ACTION_LUT_ITEM(LAYER_INNER5),
1024         ACTION_LUT_ITEM(LAYER_INNER6),
1025         ACTION_LUT_ITEM(LAYER_INNER7),
1026         ACTION_LUT_ITEM(LAYER_INNER8),
1027         ACTION_LUT_ITEM(LAYER_TOP),
1028         ACTION_LUT_ITEM(LAYER_BOTTOM),
1029         ACTION_LUT_ITEM(POPOVER),
1030         ACTION_LUT_ITEM(VIEW_ALL),
1031         ACTION_LUT_ITEM(SELECTION_TOOL_BOX),
1032         ACTION_LUT_ITEM(SELECTION_TOOL_LASSO),
1033         ACTION_LUT_ITEM(SELECTION_TOOL_PAINT),
1034         ACTION_LUT_ITEM(SELECTION_QUALIFIER_AUTO),
1035         ACTION_LUT_ITEM(SELECTION_QUALIFIER_INCLUDE_ORIGIN),
1036         ACTION_LUT_ITEM(SELECTION_QUALIFIER_TOUCH_BOX),
1037         ACTION_LUT_ITEM(SELECTION_QUALIFIER_INCLUDE_BOX),
1038         ACTION_LUT_ITEM(TO_BOARD),
1039         ACTION_LUT_ITEM(MOVE_TO_OTHER_SHEET),
1040         ACTION_LUT_ITEM(SHOW_IN_BROWSER),
1041         ACTION_LUT_ITEM(TUNING),
1042         ACTION_LUT_ITEM(TUNING_ADD_TRACKS),
1043         ACTION_LUT_ITEM(TUNING_ADD_TRACKS_ALL),
1044         ACTION_LUT_ITEM(HIGHLIGHT_NET),
1045         ACTION_LUT_ITEM(RELOAD_NETLIST),
1046         ACTION_LUT_ITEM(SAVE_RELOAD_NETLIST),
1047         ACTION_LUT_ITEM(BOM_EXPORT_WINDOW),
1048         ACTION_LUT_ITEM(EXPORT_BOM),
1049         ACTION_LUT_ITEM(RELOAD_POOL),
1050         ACTION_LUT_ITEM(FLIP_VIEW),
1051         ACTION_LUT_ITEM(VIEW_TOP),
1052         ACTION_LUT_ITEM(VIEW_BOTTOM),
1053         ACTION_LUT_ITEM(EDIT_PADSTACK),
1054         ACTION_LUT_ITEM(EDIT_UNIT),
1055         ACTION_LUT_ITEM(HIGHLIGHT_GROUP),
1056         ACTION_LUT_ITEM(HIGHLIGHT_TAG),
1057         ACTION_LUT_ITEM(SELECT_GROUP),
1058         ACTION_LUT_ITEM(SELECT_TAG),
1059         ACTION_LUT_ITEM(SEARCH),
1060         ACTION_LUT_ITEM(SEARCH_NEXT),
1061         ACTION_LUT_ITEM(SEARCH_PREVIOUS),
1062         ACTION_LUT_ITEM(GO_TO_BOARD),
1063         ACTION_LUT_ITEM(GO_TO_SCHEMATIC),
1064         ACTION_LUT_ITEM(SHOW_IN_POOL_MANAGER),
1065         ACTION_LUT_ITEM(SELECT_ALL),
1066         ACTION_LUT_ITEM(PDF_EXPORT_WINDOW),
1067         ACTION_LUT_ITEM(EXPORT_PDF),
1068         ACTION_LUT_ITEM(BACKANNOTATE_CONNECTION_LINES),
1069         ACTION_LUT_ITEM(SELECT_MORE),
1070         ACTION_LUT_ITEM(SELECT_MORE_NO_VIA),
1071         ACTION_LUT_ITEM(EXPORT_STEP),
1072         ACTION_LUT_ITEM(STEP_EXPORT_WINDOW),
1073         ACTION_LUT_ITEM(EXPORT_PNP),
1074         ACTION_LUT_ITEM(PNP_EXPORT_WINDOW),
1075         ACTION_LUT_ITEM(RESET_AIRWIRE_FILTER),
1076         ACTION_LUT_ITEM(FILTER_AIRWIRES),
1077         ACTION_LUT_ITEM(AIRWIRE_FILTER_WINDOW),
1078         ACTION_LUT_ITEM(SELECT_POLYGON),
1079         ACTION_LUT_ITEM(FAB_OUTPUT_WINDOW),
1080         ACTION_LUT_ITEM(GEN_FAB_OUTPUT),
1081         ACTION_LUT_ITEM(FOOTPRINT_GENERATOR),
1082         ACTION_LUT_ITEM(SET_GRID_ORIGIN),
1083         ACTION_LUT_ITEM(TOGGLE_SNAP_TO_TARGETS),
1084         ACTION_LUT_ITEM(PARTS_WINDOW),
1085         ACTION_LUT_ITEM(PAN_UP),
1086         ACTION_LUT_ITEM(PAN_DOWN),
1087         ACTION_LUT_ITEM(PAN_LEFT),
1088         ACTION_LUT_ITEM(PAN_RIGHT),
1089         ACTION_LUT_ITEM(ZOOM_IN),
1090         ACTION_LUT_ITEM(ZOOM_OUT),
1091         ACTION_LUT_ITEM(CLICK_SELECT),
1092         ACTION_LUT_ITEM(HIGHLIGHT_NET_CLASS),
1093         ACTION_LUT_ITEM(ROTATE_VIEW_LEFT),
1094         ACTION_LUT_ITEM(ROTATE_VIEW_RIGHT),
1095         ACTION_LUT_ITEM(ROTATE_VIEW_RESET),
1096         ACTION_LUT_ITEM(ROTATE_VIEW),
1097         ACTION_LUT_ITEM(NEXT_SHEET),
1098         ACTION_LUT_ITEM(PREV_SHEET),
1099         ACTION_LUT_ITEM(VIEW_3D_PERSP),
1100         ACTION_LUT_ITEM(VIEW_3D_ORTHO),
1101         ACTION_LUT_ITEM(VIEW_3D_FRONT),
1102         ACTION_LUT_ITEM(VIEW_3D_BACK),
1103         ACTION_LUT_ITEM(VIEW_3D_TOP),
1104         ACTION_LUT_ITEM(VIEW_3D_BOTTOM),
1105         ACTION_LUT_ITEM(VIEW_3D_LEFT),
1106         ACTION_LUT_ITEM(VIEW_3D_RIGHT),
1107         ACTION_LUT_ITEM(GRIDS_WINDOW),
1108         ACTION_LUT_ITEM(SELECT_GRID),
1109 };
1110 
1111 #define TOOL_LUT_ITEM(x)                                                                                               \
1112     {                                                                                                                  \
1113 #x, ToolID::x                                                                                                  \
1114     }
1115 
1116 const LutEnumStr<ToolID> tool_lut = {
1117         TOOL_LUT_ITEM(EDIT_SCHEMATIC_PROPERTIES),
1118         TOOL_LUT_ITEM(NONE),
1119         TOOL_LUT_ITEM(MOVE),
1120         TOOL_LUT_ITEM(PLACE_JUNCTION),
1121         TOOL_LUT_ITEM(DRAW_LINE),
1122         TOOL_LUT_ITEM(DELETE),
1123         TOOL_LUT_ITEM(DRAW_ARC),
1124         TOOL_LUT_ITEM(ROTATE),
1125         {"MIRROR", ToolID::MIRROR_X},
1126         TOOL_LUT_ITEM(MIRROR_Y),
1127         TOOL_LUT_ITEM(MAP_PIN),
1128         TOOL_LUT_ITEM(MAP_SYMBOL),
1129         TOOL_LUT_ITEM(DRAW_NET),
1130         TOOL_LUT_ITEM(ADD_COMPONENT),
1131         TOOL_LUT_ITEM(PLACE_TEXT),
1132         TOOL_LUT_ITEM(PLACE_NET_LABEL),
1133         TOOL_LUT_ITEM(DISCONNECT),
1134         TOOL_LUT_ITEM(BEND_LINE_NET),
1135         TOOL_LUT_ITEM(SELECT_NET_SEGMENT),
1136         TOOL_LUT_ITEM(SELECT_NET),
1137         TOOL_LUT_ITEM(PLACE_POWER_SYMBOL),
1138         TOOL_LUT_ITEM(MOVE_NET_SEGMENT),
1139         TOOL_LUT_ITEM(MOVE_NET_SEGMENT_NEW),
1140         TOOL_LUT_ITEM(EDIT_SYMBOL_PIN_NAMES),
1141         TOOL_LUT_ITEM(PLACE_BUS_LABEL),
1142         TOOL_LUT_ITEM(PLACE_BUS_RIPPER),
1143         TOOL_LUT_ITEM(MANAGE_BUSES),
1144         TOOL_LUT_ITEM(DRAW_POLYGON),
1145         TOOL_LUT_ITEM(ENTER_DATUM),
1146         TOOL_LUT_ITEM(MOVE_EXACTLY),
1147         TOOL_LUT_ITEM(PLACE_HOLE),
1148         TOOL_LUT_ITEM(PLACE_HOLE_SLOT),
1149         TOOL_LUT_ITEM(PLACE_PAD),
1150         TOOL_LUT_ITEM(PASTE),
1151         TOOL_LUT_ITEM(ASSIGN_PART),
1152         TOOL_LUT_ITEM(MAP_PACKAGE),
1153         TOOL_LUT_ITEM(DRAW_TRACK),
1154         TOOL_LUT_ITEM(PLACE_VIA),
1155         TOOL_LUT_ITEM(DRAG_KEEP_SLOPE),
1156         TOOL_LUT_ITEM(ADD_PART),
1157         TOOL_LUT_ITEM(ANNOTATE),
1158         TOOL_LUT_ITEM(SMASH),
1159         TOOL_LUT_ITEM(UNSMASH),
1160         TOOL_LUT_ITEM(PLACE_SHAPE),
1161         TOOL_LUT_ITEM(PLACE_SHAPE_RECTANGLE),
1162         TOOL_LUT_ITEM(PLACE_SHAPE_OBROUND),
1163         TOOL_LUT_ITEM(EDIT_SHAPE),
1164         TOOL_LUT_ITEM(IMPORT_DXF),
1165         TOOL_LUT_ITEM(MANAGE_NET_CLASSES),
1166         TOOL_LUT_ITEM(EDIT_PAD_PARAMETER_SET),
1167         TOOL_LUT_ITEM(DRAW_POLYGON_RECTANGLE),
1168         TOOL_LUT_ITEM(DRAW_LINE_RECTANGLE),
1169         TOOL_LUT_ITEM(EDIT_LINE_RECTANGLE),
1170         TOOL_LUT_ITEM(ROUTE_TRACK_INTERACTIVE),
1171         TOOL_LUT_ITEM(EDIT_VIA),
1172         TOOL_LUT_ITEM(ROTATE_ARBITRARY),
1173         TOOL_LUT_ITEM(ADD_PLANE),
1174         TOOL_LUT_ITEM(EDIT_PLANE),
1175         TOOL_LUT_ITEM(UPDATE_PLANE),
1176         TOOL_LUT_ITEM(UPDATE_ALL_PLANES),
1177         TOOL_LUT_ITEM(CLEAR_PLANE),
1178         TOOL_LUT_ITEM(CLEAR_ALL_PLANES),
1179         TOOL_LUT_ITEM(EDIT_STACKUP),
1180         TOOL_LUT_ITEM(DRAW_DIMENSION),
1181         TOOL_LUT_ITEM(SET_DIFFPAIR),
1182         TOOL_LUT_ITEM(CLEAR_DIFFPAIR),
1183         TOOL_LUT_ITEM(ROUTE_DIFFPAIR_INTERACTIVE),
1184         TOOL_LUT_ITEM(SET_VIA_NET),
1185         TOOL_LUT_ITEM(CLEAR_VIA_NET),
1186         TOOL_LUT_ITEM(DRAG_TRACK_INTERACTIVE),
1187         TOOL_LUT_ITEM(LOCK),
1188         TOOL_LUT_ITEM(UNLOCK),
1189         TOOL_LUT_ITEM(UNLOCK_ALL),
1190         TOOL_LUT_ITEM(ADD_VERTEX),
1191         TOOL_LUT_ITEM(MANAGE_POWER_NETS),
1192         TOOL_LUT_ITEM(PLACE_BOARD_HOLE),
1193         TOOL_LUT_ITEM(EDIT_BOARD_HOLE),
1194         TOOL_LUT_ITEM(GENERATE_COURTYARD),
1195         TOOL_LUT_ITEM(GENERATE_SILKSCREEN),
1196         TOOL_LUT_ITEM(SET_GROUP),
1197         TOOL_LUT_ITEM(SET_NEW_GROUP),
1198         TOOL_LUT_ITEM(CLEAR_GROUP),
1199         TOOL_LUT_ITEM(RENAME_GROUP),
1200         TOOL_LUT_ITEM(SET_TAG),
1201         TOOL_LUT_ITEM(SET_NEW_TAG),
1202         TOOL_LUT_ITEM(CLEAR_TAG),
1203         TOOL_LUT_ITEM(RENAME_TAG),
1204         TOOL_LUT_ITEM(TOGGLE_GROUP_TAG_VISIBLE),
1205         TOOL_LUT_ITEM(COPY_PLACEMENT),
1206         TOOL_LUT_ITEM(COPY_TRACKS),
1207         TOOL_LUT_ITEM(TUNE_TRACK),
1208         TOOL_LUT_ITEM(TUNE_DIFFPAIR),
1209         TOOL_LUT_ITEM(TUNE_DIFFPAIR_SKEW),
1210         TOOL_LUT_ITEM(MOVE_KEY),
1211         TOOL_LUT_ITEM(MOVE_KEY_UP),
1212         TOOL_LUT_ITEM(MOVE_KEY_DOWN),
1213         TOOL_LUT_ITEM(MOVE_KEY_LEFT),
1214         TOOL_LUT_ITEM(MOVE_KEY_RIGHT),
1215         TOOL_LUT_ITEM(MOVE_KEY_FINE_UP),
1216         TOOL_LUT_ITEM(MOVE_KEY_FINE_DOWN),
1217         TOOL_LUT_ITEM(MOVE_KEY_FINE_LEFT),
1218         TOOL_LUT_ITEM(MOVE_KEY_FINE_RIGHT),
1219         TOOL_LUT_ITEM(SWAP_NETS),
1220         TOOL_LUT_ITEM(LINE_LOOP_TO_POLYGON),
1221         TOOL_LUT_ITEM(SCALE),
1222         TOOL_LUT_ITEM(CHANGE_UNIT),
1223         TOOL_LUT_ITEM(EDIT_FRAME_PROPERTIES),
1224         TOOL_LUT_ITEM(SET_ALL_NC),
1225         TOOL_LUT_ITEM(CLEAR_ALL_NC),
1226         TOOL_LUT_ITEM(SET_NC),
1227         TOOL_LUT_ITEM(CLEAR_NC),
1228         TOOL_LUT_ITEM(EDIT_KEEPOUT),
1229         TOOL_LUT_ITEM(ADD_KEEPOUT),
1230         TOOL_LUT_ITEM(CHANGE_SYMBOL),
1231         TOOL_LUT_ITEM(PLACE_REFDES_AND_VALUE),
1232         TOOL_LUT_ITEM(DRAW_POLYGON_CIRCLE),
1233         TOOL_LUT_ITEM(DRAW_CONNECTION_LINE),
1234         TOOL_LUT_ITEM(BACKANNOTATE_CONNECTION_LINES),
1235         TOOL_LUT_ITEM(IMPORT_KICAD_PACKAGE),
1236         TOOL_LUT_ITEM(DUPLICATE),
1237         TOOL_LUT_ITEM(SMASH_SILKSCREEN_GRAPHICS),
1238         TOOL_LUT_ITEM(RENUMBER_PADS),
1239         TOOL_LUT_ITEM(FIX),
1240         TOOL_LUT_ITEM(UNFIX),
1241         TOOL_LUT_ITEM(NOPOPULATE),
1242         TOOL_LUT_ITEM(POPULATE),
1243         TOOL_LUT_ITEM(POLYGON_TO_LINE_LOOP),
1244         TOOL_LUT_ITEM(ROTATE_CURSOR),
1245         TOOL_LUT_ITEM(MIRROR_CURSOR),
1246         TOOL_LUT_ITEM(PLACE_BOARD_PANEL),
1247         TOOL_LUT_ITEM(MANAGE_INCLUDED_BOARDS),
1248         TOOL_LUT_ITEM(RELOAD_INCLUDED_BOARDS),
1249         TOOL_LUT_ITEM(SMASH_PANEL_OUTLINE),
1250         TOOL_LUT_ITEM(SMASH_PACKAGE_OUTLINE),
1251         TOOL_LUT_ITEM(RESIZE_SYMBOL),
1252         TOOL_LUT_ITEM(ROUND_OFF_VERTEX),
1253         TOOL_LUT_ITEM(SWAP_GATES),
1254         TOOL_LUT_ITEM(PLACE_PICTURE),
1255         TOOL_LUT_ITEM(DRAW_LINE_CIRCLE),
1256         TOOL_LUT_ITEM(ADD_TEXT),
1257         TOOL_LUT_ITEM(PLACE_DECAL),
1258         TOOL_LUT_ITEM(DRAW_PLANE),
1259         TOOL_LUT_ITEM(DRAW_KEEPOUT),
1260         TOOL_LUT_ITEM(DRAG_POLYGON_EDGE),
1261         TOOL_LUT_ITEM(MEASURE),
1262         TOOL_LUT_ITEM(EDIT_CUSTOM_VALUE),
1263         TOOL_LUT_ITEM(PLACE_DOT),
1264         TOOL_LUT_ITEM(SET_TRACK_WIDTH),
1265 };
1266 } // namespace horizon
1267