Horizon
Loading...
Searching...
No Matches
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, TempMode temp_mode);
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 Glib::RefPtr<Gio::SimpleAction> snap_to_pad_bbox_action;
80
81 std::string ask_3d_model_filename(const std::string &current_filename = "");
82 void construct_3d();
83 void update_model_editors();
84 void reload_model_editor();
85
86 Gtk::ListBox *models_listbox = nullptr;
87 class LayerHelpBox *layer_help_box = nullptr;
88 UUID current_model;
89 class PlaceModelBox *place_model_box = nullptr;
90 Gtk::Stack *view_3d_stack = nullptr;
91
92 class HeaderButton *header_button = nullptr;
93 Gtk::Entry *entry_name = nullptr;
94 class PoolBrowserButton *browser_alt_button = nullptr;
95 void check_alt_pkg();
96
97 class ParameterWindow *parameter_window = nullptr;
98
99 void update_header();
100
101 bool set_filename() override;
102
103 void handle_convert_to_pad();
104 UUID converted_padstack;
105 std::set<UUID> converted_polygons;
106 Coordi converted_pad_position;
107
108 bool handle_broadcast(const json &j) override;
109};
110} // 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
a class to store JSON values
Definition json.hpp:177
Definition action.hpp:13