Horizon
dialogs.hpp
1 #pragma once
2 #include <memory>
3 #include "util/uuid.hpp"
4 #include "common/common.hpp"
5 #include "util/uuid_path.hpp"
6 #include "parameter/set.hpp"
7 #include <map>
8 #include <set>
9 #include <optional>
10 
11 namespace Gtk {
12 class Window;
13 }
14 
15 namespace horizon {
16 class Dialogs {
17 public:
18  Dialogs(){};
19  void set_parent(Gtk::Window *w);
20  void set_interface(class ImpInterface *intf);
21 
22  std::optional<UUIDPath<2>> map_uuid_path(const std::string &title, const std::map<UUIDPath<2>, std::string> &gates);
23  std::optional<UUID> map_package(const std::vector<std::pair<class Component *, bool>> &components);
24  std::optional<UUID> select_symbol(class IPool &p, const UUID &unit_uuid, const UUID &sym_default = UUID());
25  std::optional<UUID> select_part(class IPool &p, const UUID &entity_uuid, const UUID &part_uuid,
26  bool show_none = false);
27  std::optional<UUID> select_entity(class IPool &pool);
28  std::optional<UUID> select_unit(class IPool &pool);
29  std::optional<UUID> select_padstack(class IPool &pool, const UUID &package_uuid);
30  std::optional<UUID> select_hole_padstack(class IPool &pool);
31  std::optional<UUID> select_via_padstack(class IPool &pool);
32  std::optional<UUID> select_net(const class Block &block, bool power_only, const UUID &net_default = UUID());
33  std::optional<UUID> select_bus(const class Block &block);
34  std::optional<UUID> select_bus_member(const class Block &block, const UUID &bus_uuid);
35  std::optional<UUID> select_group_tag(const class Block &block, bool tag_mode, const UUID &current);
36  std::optional<UUID> select_included_board(const class Board &brd);
37  std::optional<UUID> select_decal(class IPool &pool);
38  std::optional<UUID> select_block(const class BlocksSchematic &blocks);
39 
40  unsigned int ask_net_merge(class Net &net, class Net &into);
41  bool manage_buses(class Block &b);
42  bool manage_net_classes(class IBlockProvider &b);
43  bool manage_power_nets(class IBlockProvider &b);
44  bool manage_included_boards(class Board &b);
45  bool edit_board_hole(std::set<class BoardHole *> &holes, class IPool &pool, class IPool &pool_caching,
46  class Block &block);
47  bool annotate(class Schematic &s);
48  bool edit_plane(class Plane &plane, class Board &brd);
49  bool edit_keepout(class Keepout &keepout, class IDocument &c, bool add_mode);
50  bool edit_stackup(class IDocumentBoard &brd);
51  bool edit_schematic_properties(class IDocumentSchematicBlockSymbol &s);
52  bool edit_frame_properties(class Frame &fr);
53  std::optional<int64_t> ask_datum(const std::string &label, int64_t def = 0);
54  std::optional<Coordi> ask_datum_coord(const std::string &label, Coordi def = Coordi());
55  std::optional<std::pair<Coordi, std::pair<bool, bool>>> ask_datum_coord2(const std::string &label,
56  Coordi def = Coordi());
57  std::optional<std::string> ask_datum_string_multiline(const std::string &label, const std::string &def);
58  std::optional<std::string> ask_datum_string(const std::string &label, const std::string &def);
59  std::optional<int> ask_datum_angle(const std::string &label, int def = 0);
60  bool edit_shapes(std::set<class Shape *> shapes);
61  bool edit_via(std::set<class Via *> &vias, class IPool &pool, IPool &pool_caching);
62  bool edit_custom_value(class SchematicSymbol &sym);
63  std::optional<std::string> ask_dxf_filename();
64  std::optional<std::string> ask_kicad_package_filename();
65  std::optional<std::string> ask_picture_filename();
66  bool manage_ports(class Block &block);
67 
68  class SymbolPinNamesWindow *show_symbol_pin_names_window(class SchematicSymbol &symbol);
69  class RenumberPadsWindow *show_renumber_pads_window(class Package &pkg, const std::set<UUID> &pads);
70  class GenerateSilkscreenWindow *show_generate_silkscreen_window(class ToolSettings &settings);
71  class EnterDatumWindow *show_enter_datum_window(const std::string &label, int64_t def = 0);
72  class RouterSettingsWindow *show_router_settings_window(class ToolSettings &settings);
73  class EnterDatumAngleWindow *show_enter_datum_angle_window(const std::string &label, uint16_t def = 0);
74  class EnterDatumScaleWindow *show_enter_datum_scale_window(const std::string &label, double def = 1);
75  class PadParameterSetWindow *show_pad_parameter_set_window(std::set<class Pad *> &pads, class IPool &pool,
76  class Package &pkg);
77  class AlignAndDistributeWindow *show_align_and_distribute_window();
78 
79  void close_nonmodal();
80  class ToolWindow *get_nonmodal();
81 
82 private:
83  Gtk::Window *parent = nullptr;
84  class ImpInterface *interface = nullptr;
85  class ToolWindow *window_nonmodal = nullptr;
86 };
87 } // namespace horizon
Definition: align_and_distribute_window.hpp:16
A block is one level of hierarchy in the netlist.
Definition: block.hpp:29
Definition: blocks_schematic.hpp:8
Definition: board.hpp:43
Definition: dialogs.hpp:16
Definition: enter_datum_angle_window.hpp:15
Definition: enter_datum_scale_window.hpp:15
Definition: enter_datum_window.hpp:15
Definition: frame.hpp:21
Definition: generate_silkscreen_window.hpp:11
Definition: iblock_provider.hpp:5
Definition: idocument_board.hpp:5
Definition: idocument_schematic_block_symbol.hpp:5
Definition: idocument.hpp:5
Definition: ipool.hpp:14
Definition: imp_interface.hpp:12
Definition: keepout.hpp:8
Definition: net.hpp:11
Definition: package.hpp:30
Definition: pad_parameter_set_window.hpp:10
Definition: plane.hpp:39
Definition: renumber_pads_window.hpp:10
Definition: router_settings_window.hpp:11
Definition: schematic_symbol.hpp:17
A Schematic is the visual representation of a Block.
Definition: schematic.hpp:30
Definition: symbol_pin_names_window.hpp:8
Definition: tool_pub.hpp:82
Definition: tool_window.hpp:7
This class encapsulates a UUID and allows it to be uses as a value type.
Definition: uuid.hpp:16
zip_int64_t int64_t
zip_int64_t typedef.
Definition: zip.hpp:103
zip_uint16_t uint16_t
zip_uint16_t typedef.
Definition: zip.hpp:88