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#include "canvas3d/point.hpp"
8#include <mutex>
9
10namespace horizon {
11namespace STEPImporter {
12class STEPImporter;
13}
14
15class ImpPackage : public ImpLayer {
16 class ImportCanvas3D;
17 friend class ModelEditor;
18 friend class PlaceModelBox;
19 friend class ImportCanvas3D;
20
21public:
22 ImpPackage(const std::string &package_filename, const std::string &pool_path);
23
24 std::map<ObjectType, SelectionFilterInfo> get_selection_filter_info() const override;
25
27
28protected:
29 void construct() override;
30 void apply_preferences() override;
31 void update_highlights() override;
32
33 ActionCatalogItem::Availability get_editor_type_for_action() const override
34 {
35 return ActionCatalogItem::AVAILABLE_IN_PACKAGE;
36 };
37
38 std::string get_hud_text(std::set<SelectableRef> &sel) override;
39 void update_action_sensitivity() override;
40 void update_monitor() override;
41 ActionToolID get_doubleclick_action(ObjectType type, const UUID &uu) override;
42
43 Searcher *get_searcher_ptr() override
44 {
45 return &searcher;
46 }
47
48 std::vector<std::string> get_view_hints() override;
49
50private:
51 void canvas_update() override;
52 CorePackage core_package;
53 Package &package;
54 SearcherPackage searcher;
55
56 Block fake_block;
57 Board fake_board;
58 void update_fake_board();
59 void update_points();
60
61 class FootprintGeneratorWindow *footprint_generator_window = nullptr;
62 class View3DWindow *view_3d_window = nullptr;
63 class ModelInfo {
64 public:
65 std::vector<Point3D> points;
66 std::unique_ptr<STEPImporter::STEPImporter> importer;
67
68 ~ModelInfo();
69 };
70 void project_model(const Package::Model &model);
71
72 std::map<std::string, ModelInfo> model_info;
73 std::mutex model_info_mutex;
74
75 class CanvasAnnotation *projection_annotation = nullptr;
76 std::vector<Coordi> projection_targets;
77 Glib::RefPtr<Gio::SimpleAction> show_projection_action;
78
79 std::string ask_3d_model_filename(const std::string &current_filename = "");
80 void construct_3d();
81 void update_model_editors();
82 void reload_model_editor();
83
84 Gtk::ListBox *models_listbox = nullptr;
85 class LayerHelpBox *layer_help_box = nullptr;
86 UUID current_model;
87 class PlaceModelBox *place_model_box = nullptr;
88 Gtk::Stack *view_3d_stack = nullptr;
89
90 class HeaderButton *header_button = nullptr;
91 Gtk::Entry *entry_name = nullptr;
92 class PoolBrowserButton *browser_alt_button = nullptr;
93 void check_alt_pkg();
94
95 class ParameterWindow *parameter_window = nullptr;
96
97
98 void update_header();
99};
100} // namespace horizon
A block is one level of hierarchy in the netlist.
Definition: block.hpp:29
Definition: board.hpp:47
Definition: annotation.hpp:7
Definition: core_package.hpp:7
Definition: footprint_generator_window.hpp:9
Definition: header_button.hpp:5
Definition: imp_layer.hpp:5
Definition: import_canvas_3d.hpp:5
Definition: imp_package.hpp:15
Definition: layer_help_box.hpp:7
Definition: model_editor.hpp:12
Definition: package.hpp:44
Definition: package.hpp:29
Definition: parameter_window.hpp:11
Definition: place_model_box.hpp:10
Definition: pool_browser_button.hpp:9
Definition: searcher_package.hpp:5
Definition: searcher.hpp:9
This class encapsulates a UUID and allows it to be uses as a value type.
Definition: uuid.hpp:16
Definition: 3d_view.hpp:11
Definition: action.hpp:13