Horizon
imp_package.hpp
1 #pragma once
2 #include "core/core_package.hpp"
3 #include "block/block.hpp"
4 #include "board/board.hpp"
5 #include "imp_layer.hpp"
6 #include "search/searcher_package.hpp"
7 
8 namespace horizon {
9 class ImpPackage : public ImpLayer {
10  friend class ModelEditor;
11 
12 public:
13  ImpPackage(const std::string &package_filename, const std::string &pool_path);
14 
15  std::map<ObjectType, SelectionFilterInfo> get_selection_filter_info() const override;
16 
17 protected:
18  void construct() override;
19  void apply_preferences() override;
20  void update_highlights() override;
21 
22  ActionCatalogItem::Availability get_editor_type_for_action() const override
23  {
24  return ActionCatalogItem::AVAILABLE_IN_PACKAGE;
25  };
26  ObjectType get_editor_type() const override
27  {
28  return ObjectType::PACKAGE;
29  }
30 
31  std::string get_hud_text(std::set<SelectableRef> &sel) override;
32  void update_action_sensitivity() override;
33  void update_monitor() override;
34  std::pair<ActionID, ToolID> get_doubleclick_action(ObjectType type, const UUID &uu) override;
35 
36  Searcher *get_searcher_ptr() override
37  {
38  return &searcher;
39  }
40 
41 private:
42  void canvas_update() override;
43  CorePackage core_package;
44  SearcherPackage searcher;
45 
46  Block fake_block;
47  Board fake_board;
48 
49  class FootprintGeneratorWindow *footprint_generator_window;
50  class View3DWindow *view_3d_window = nullptr;
51  std::string ask_3d_model_filename(const std::string &current_filename = "");
52  void construct_3d();
53 
54  Gtk::ListBox *models_listbox = nullptr;
55  class LayerHelpBox *layer_help_box = nullptr;
56  UUID current_model;
57 
58  class HeaderButton *header_button = nullptr;
59  Gtk::Entry *entry_name = nullptr;
60 
61  void update_header();
62 };
63 } // namespace horizon
horizon::HeaderButton
Definition: header_button.hpp:5
horizon::SearcherPackage
Definition: searcher_package.hpp:5
horizon::Board
Definition: board.hpp:43
horizon::ModelEditor
Definition: imp_package_3d.cpp:10
horizon::Block
A block is one level of hierarchy in the netlist.
Definition: block.hpp:26
horizon::CorePackage
Definition: core_package.hpp:12
horizon::LayerHelpBox
Definition: layer_help_box.hpp:8
horizon::Searcher
Definition: searcher.hpp:8
horizon::UUID
This class encapsulates a UUID and allows it to be uses as a value type.
Definition: uuid.hpp:16
horizon::View3DWindow
Definition: 3d_view.hpp:9
horizon::ImpPackage
Definition: imp_package.hpp:9
horizon::ImpLayer
Definition: imp_layer.hpp:5
horizon::FootprintGeneratorWindow
Definition: footprint_generator_window.hpp:10