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 };
96 
97 using ActionToolID = std::pair<ActionID, ToolID>;
98 
99 enum class ActionGroup {
100  ALL,
101  UNKNOWN,
102  CLIPBOARD,
103  UNDO,
104  MOVE,
105  GRAPHICS,
106  SCHEMATIC,
107  SYMBOL,
108  PACKAGE,
109  PADSTACK,
110  BOARD,
111  LAYER,
112  SELECTION,
113  RULES,
114  VIEW,
115  FRAME,
116  GROUP_TAG,
117  SEARCH,
118  EXPORT_IMPORT,
119  TUNING,
120 };
121 
122 typedef std::vector<std::pair<unsigned int, GdkModifierType>> KeySequence;
123 
124 std::string key_sequence_to_string(const KeySequence &keys);
125 std::string key_sequence_to_string_short(const KeySequence &keys);
126 
127 std::string key_sequences_to_string(const std::vector<KeySequence> &seqs);
128 
130 public:
131  ActionConnection(ActionID aid, ToolID tid, std::function<void(const ActionConnection &)> c)
132  : action_id(aid), tool_id(tid), cb(c)
133  {
134  }
135 
136  const ActionID action_id;
137  const ToolID tool_id;
138  std::vector<KeySequence> key_sequences;
139  std::function<void(const ActionConnection &)> cb;
140 };
141 
142 ActionToolID make_action(ActionID id);
143 ActionToolID make_action(ToolID id);
144 
145 } // namespace horizon
horizon::ActionConnection
Definition: action.hpp:129