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<UUID> map_pin(const std::vector<std::pair<const class Pin *, bool>> &pins);
23  std::optional<UUIDPath<2>> map_symbol(const std::map<UUIDPath<2>, std::string> &gates);
24  std::optional<UUID> map_package(const std::vector<std::pair<class Component *, bool>> &components);
25  std::optional<UUID> select_symbol(class IPool &p, const UUID &unit_uuid);
26  std::optional<UUID> select_part(class IPool &p, const UUID &entity_uuid, const UUID &part_uuid,
27  bool show_none = false);
28  std::optional<UUID> select_entity(class IPool &pool);
29  std::optional<UUID> select_unit(class IPool &pool);
30  std::optional<UUID> select_padstack(class IPool &pool, const UUID &package_uuid);
31  std::optional<UUID> select_hole_padstack(class IPool &pool);
32  std::optional<UUID> select_via_padstack(class ViaPadstackProvider &vpp);
33  std::optional<UUID> select_net(const class Block &block, bool power_only, const UUID &net_default = UUID());
34  std::optional<UUID> select_bus(const class Block &block);
35  std::optional<UUID> select_bus_member(const class Block &block, const UUID &bus_uuid);
36  std::optional<UUID> select_group_tag(const class Block &block, bool tag_mode, const UUID &current);
37  std::optional<UUID> select_included_board(const class Board &brd);
38  std::optional<UUID> select_decal(class IPool &pool);
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 Block &b);
43  bool manage_power_nets(class Block &b);
44  bool manage_via_templates(class Board &b, class ViaPadstackProvider &vpp);
45  bool manage_included_boards(class Board &b);
46  bool edit_pad_parameter_set(std::set<class Pad *> &pads, class IPool &pool, class Package &pkg);
47  bool edit_board_hole(std::set<class BoardHole *> &holes, class IPool &pool, class Block &block);
48  bool annotate(class Schematic &s);
49  bool edit_plane(class Plane &plane, class Board &brd);
50  bool edit_keepout(class Keepout &keepout, class IDocument &c, bool add_mode);
51  bool edit_stackup(class IDocumentBoard &brd);
52  bool edit_schematic_properties(class Schematic &s, class IPool &pool);
53  bool edit_frame_properties(class Frame &fr);
54  std::optional<int64_t> ask_datum(const std::string &label, int64_t def = 0);
55  std::optional<Coordi> ask_datum_coord(const std::string &label, Coordi def = Coordi());
56  std::optional<std::pair<Coordi, std::pair<bool, bool>>> ask_datum_coord2(const std::string &label,
57  Coordi def = Coordi());
58  std::optional<std::string> ask_datum_string_multiline(const std::string &label, const std::string &def);
59  std::optional<std::string> ask_datum_string(const std::string &label, const std::string &def);
60  std::optional<int> ask_datum_angle(const std::string &label, int def = 0);
61  bool edit_shapes(std::set<class Shape *> shapes);
62  bool edit_via(std::set<class Via *> &vias, class ViaPadstackProvider &vpp);
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 
67  class SymbolPinNamesWindow *show_symbol_pin_names_window(class SchematicSymbol &symbol);
68  class RenumberPadsWindow *show_renumber_pads_window(class Package &pkg, const std::set<UUID> &pads);
69  class GenerateSilkscreenWindow *show_generate_silkscreen_window(class ToolSettings &settings);
70  class EnterDatumWindow *show_enter_datum_window(const std::string &label, int64_t def = 0);
71  class RouterSettingsWindow *show_router_settings_window(class ToolSettings &settings);
72 
73  void close_nonmodal();
74  class ToolWindow *get_nonmodal();
75 
76 private:
77  Gtk::Window *parent = nullptr;
78  class ImpInterface *interface = nullptr;
79  class ToolWindow *window_nonmodal = nullptr;
80 };
81 } // namespace horizon
horizon::ToolSettings
Definition: tool.hpp:84
horizon::IDocument
Definition: idocument.hpp:5
horizon::SymbolPinNamesWindow
Definition: symbol_pin_names_window.hpp:8
horizon::Dialogs
Definition: dialogs.hpp:16
horizon::ImpInterface
Definition: imp_interface.hpp:12
horizon::Board
Definition: board.hpp:42
horizon::ViaPadstackProvider
Definition: via_padstack_provider.hpp:13
horizon::GenerateSilkscreenWindow
Definition: generate_silkscreen_window.hpp:11
horizon::Net
Definition: net.hpp:15
horizon::Keepout
Definition: keepout.hpp:9
horizon::Block
A block is one level of hierarchy in the netlist.
Definition: block.hpp:25
horizon::SchematicSymbol
Definition: schematic_symbol.hpp:17
horizon::Coord< int64_t >
libzip::int64_t
zip_int64_t int64_t
zip_int64_t typedef.
Definition: zip.hpp:103
horizon::ToolWindow
Definition: tool_window.hpp:7
horizon::IPool
Definition: ipool.hpp:12
horizon::Schematic
A Schematic is the visual representation of a Block.
Definition: schematic.hpp:29
horizon::UUIDPath< 2 >
horizon::EnterDatumWindow
Definition: enter_datum_window.hpp:15
horizon::Frame
Definition: frame.hpp:21
horizon::Package
Definition: package.hpp:29
horizon::UUID
This class encapsulates a UUID and allows it to be uses as a value type.
Definition: uuid.hpp:16
horizon::RouterSettingsWindow
Definition: router_settings_window.hpp:11
horizon::IDocumentBoard
Definition: idocument_board.hpp:5
horizon::RenumberPadsWindow
Definition: renumber_pads_window.hpp:10
horizon::Plane
Definition: plane.hpp:39