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