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