Horizon
imp_board.hpp
1 #pragma once
2 #include "core/core_board.hpp"
3 #include "imp_layer.hpp"
4 #include "search/searcher_board.hpp"
5 
6 namespace horizon {
7 class ImpBoard : public ImpLayer {
8 public:
9  ImpBoard(const std::string &board_filename, const std::string &block_filename, const std::string &via_dir,
10  const std::string &pictures_dir, const PoolParams &params);
11 
12  const std::map<int, Layer> &get_layers();
13  void update_highlights() override;
14 
15  std::map<ObjectType, SelectionFilterInfo> get_selection_filter_info() const override;
16 
17  ~ImpBoard();
18 
19 protected:
20  void construct() override;
21  bool handle_broadcast(const json &j) override;
22  void handle_maybe_drag() override;
23  void update_action_sensitivity() override;
24  void apply_preferences() override;
25 
26  ActionCatalogItem::Availability get_editor_type_for_action() const override
27  {
28  return ActionCatalogItem::AVAILABLE_IN_BOARD;
29  };
30 
31  std::string get_hud_text(std::set<SelectableRef> &sel) override;
32  ActionToolID get_doubleclick_action(ObjectType type, const UUID &uu) override;
33 
34  void get_save_meta(json &j) override;
35  std::vector<std::string> get_view_hints() override;
36 
37  Searcher *get_searcher_ptr() override
38  {
39  return &searcher;
40  }
41 
42  ToolID get_tool_for_drag_move(bool ctrl, const std::set<SelectableRef> &sel) const override;
43 
44 private:
45  void canvas_update() override;
46  void handle_selection_cross_probe();
47 
48  CoreBoard core_board;
49  const std::string project_dir;
50  SearcherBoard searcher;
51 
52  class FabOutputWindow *fab_output_window = nullptr;
53  class View3DWindow *view_3d_window = nullptr;
54  class StepExportWindow *step_export_window = nullptr;
55  class TuningWindow *tuning_window = nullptr;
56  class PDFExportWindow *pdf_export_window = nullptr;
57  class BoardDisplayOptionsBox *board_display_options_box = nullptr;
58  class PnPExportWindow *pnp_export_window = nullptr;
59  class AirwireFilterWindow *airwire_filter_window = nullptr;
60  class PartsWindow *parts_window = nullptr;
61  bool cross_probing_enabled = false;
62 
63  Coordf cursor_pos_drag_begin;
64  Target target_drag_begin;
65 
66  void handle_drag();
67  void handle_measure_tracks(const ActionConnection &a);
68 
69  class CanvasAnnotation *text_owner_annotation = nullptr;
70  std::map<UUID, UUID> text_owners;
71  void update_text_owners();
72  void update_text_owner_annotation();
73 
74  void handle_select_more(const ActionConnection &conn);
75 
76  class UnplacedBox *unplaced_box = nullptr;
77  void update_unplaced();
78 
79  void update_airwires();
80 
81  int get_schematic_pid();
82 
83  class CanvasAnnotation *airwire_annotation = nullptr;
84  void update_airwire_annotation();
85  void update_net_colors();
86  void apply_net_colors();
87  std::map<UUID, uint8_t> net_color_map;
88 
89  Gtk::Popover *reload_netlist_popover = nullptr;
90  sigc::connection reload_netlist_delay_conn;
91 
92  UUID net_from_selectable(const SelectableRef &sr);
93 };
94 } // namespace horizon
nlohmann::basic_json
a class to store JSON values
Definition: json.hpp:166