Horizon
imp_schematic.hpp
1 #pragma once
2 #include "imp.hpp"
3 #include "core/core_schematic.hpp"
4 #include "search/searcher_schematic.hpp"
5 
6 namespace horizon {
7 class ImpSchematic : public ImpBase {
8 
9 public:
10  ImpSchematic(const std::string &blocks_filename, const std::string &pictures_dir, const PoolParams &params);
11 
12 protected:
13  void construct() override;
14  bool handle_broadcast(const json &j) override;
15  void handle_maybe_drag(bool ctrl) override;
16  void update_action_sensitivity() override;
17  void update_highlights() override;
18  void clear_highlights() override;
19 
20  ActionCatalogItem::Availability get_editor_type_for_action() const override
21  {
22  return ActionCatalogItem::AVAILABLE_IN_SCHEMATIC;
23  };
24 
25  std::string get_hud_text(std::set<SelectableRef> &sel) override;
26  void search_center(const Searcher::SearchResult &res) override;
27  ActionToolID get_doubleclick_action(ObjectType type, const UUID &uu) override;
28  void expand_selection_for_property_panel(std::set<SelectableRef> &sel_extra,
29  const std::set<SelectableRef> &sel) override;
30 
31  Searcher *get_searcher_ptr() override
32  {
33  return &searcher;
34  }
35 
36  ToolID get_tool_for_drag_move(bool ctrl, const std::set<SelectableRef> &sel) const override;
37 
38  void update_monitor() override;
39 
40  std::map<ObjectType, ImpBase::SelectionFilterInfo> get_selection_filter_info() const override;
41 
42 private:
43  void canvas_update() override;
44  CoreSchematic core_schematic;
45  const std::string project_dir;
46  SearcherSchematic searcher;
47 
48  int handle_ask_net_merge(class Net *net, class Net *into);
49  int handle_ask_delete_component(class Component *comp);
50  void handle_select_sheet(const UUID &sheet, const UUID &block, const UUIDVec &instance_path);
51  void handle_core_rebuilt();
52  void handle_tool_change(ToolID id) override;
53  void handle_move_to_other_sheet(const ActionConnection &conn);
54  void handle_highlight_group_tag(const ActionConnection &conn);
55  void handle_next_prev_sheet(const ActionConnection &conn);
56 
57  struct ViewInfo {
58  float scale;
59  Coordf offset;
60  std::set<SelectableRef> selection;
61  };
62  std::map<std::pair<UUID, UUID>, ViewInfo> view_infos;
63  class SheetBox *sheet_box;
64  UUID current_sheet;
65  void handle_selection_cross_probe() override;
66  bool cross_probing_enabled = false;
67 
68  Coordf cursor_pos_drag_begin;
69  Target target_drag_begin;
70 
71  class BOMExportWindow *bom_export_window;
72  class PDFExportWindow *pdf_export_window;
73  class UnplacedBox *unplaced_box = nullptr;
74  void update_unplaced();
75 
76  void handle_drag();
77 
78  void handle_extra_button(const GdkEventButton *button_event) override;
79 
80  Glib::RefPtr<Gio::SimpleAction> toggle_snap_to_targets_action;
81 
82  int get_board_pid();
83 
84  UUID net_from_selectable(const SelectableRef &sr);
85 
86  std::vector<class ActionButton *> action_buttons_schematic;
87  ActionButton &add_action_button_schematic(ActionToolID id);
88 
89  struct HighlightItem {
90  ObjectType type;
91  UUID uuid;
92  UUIDVec instance_path;
93  };
94 
95  std::vector<HighlightItem> highlights_hierarchical;
96 
97  void update_instance_path_bar();
98  UUIDVec instance_path_for_bar;
99 
100  const Block &get_block_for_group_tag_names() override;
101 
102  void handle_show_in_pool_manager(const ActionConnection &conn);
103 };
104 } // namespace horizon
Definition: action_button.hpp:33
Definition: action.hpp:87
Definition: bom_export_window.hpp:15
A block is one level of hierarchy in the netlist.
Definition: block.hpp:29
A Component is an instanced Entity in a Block.
Definition: component.hpp:41
Definition: core_schematic.hpp:14
Definition: imp.hpp:35
Definition: imp_schematic.hpp:7
Definition: net.hpp:11
Definition: pdf_export_window.hpp:12
Definition: imp.hpp:27
Definition: searcher_schematic.hpp:5
Definition: searcher.hpp:58
Definition: searcher.hpp:9
Definition: selectables.hpp:34
Definition: sheet_box.hpp:8
Definition: target.hpp:7
This class encapsulates a UUID and allows it to be uses as a value type.
Definition: uuid.hpp:16
Definition: unplaced_box.hpp:9
a class to store JSON values
Definition: json.hpp:177
Definition: action.hpp:13