Horizon
Loading...
Searching...
No Matches
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
11namespace Gtk {
12class Window;
13}
14
15namespace horizon {
16class Dialogs {
17public:
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 std::optional<UUID> map_net_tie(const std::set<class NetTie *> &net_ties);
40 std::optional<UUID> select_via_definition(const class RuleViaDefinitions &rules, const class LayerProvider &lprv,
41 const class ViaDefinition &via_def_from_rules, class IPool &pool);
42
43 unsigned int ask_net_merge(class Net &net, class Net &into);
44 bool manage_buses(class Block &b);
45 bool manage_net_classes(class IBlockProvider &b);
46 bool manage_power_nets(class IBlockProvider &b);
47 bool manage_included_boards(class Board &b);
48 bool edit_board_hole(std::set<class BoardHole *> &holes, class IPool &pool, class IPool &pool_caching,
49 class Block &block);
50 bool annotate(class Schematic &s);
51 bool edit_keepout(class Keepout &keepout, class IDocument &c, bool add_mode);
52 bool edit_stackup(class IDocumentBoard &brd);
53 bool edit_schematic_properties(class IDocumentSchematicBlockSymbol &s, const UUID &block, const UUID &sheet);
54 bool edit_project_properties(class Block &b);
55 bool edit_frame_properties(class Frame &fr);
56 std::optional<int64_t> ask_datum(const std::string &label, int64_t def = 0);
57 std::optional<Coordi> ask_datum_coord(const std::string &label, Coordi def = Coordi());
58 std::optional<std::pair<Coordi, std::pair<bool, bool>>> ask_datum_coord2(const std::string &label,
59 Coordi def = Coordi());
60 std::optional<std::string> ask_datum_string(const std::string &label, const std::string &def);
61 std::optional<int> ask_datum_angle(const std::string &label, int def = 0);
62 bool edit_shapes(std::set<class Shape *> shapes);
63 bool edit_via(std::set<class Via *> &vias, class IPool &pool, IPool &pool_caching, const class LayerProvider &prv,
64 const class RuleViaDefinitions &defs);
65 bool edit_custom_value(class SchematicSymbol &sym);
66 std::optional<std::string> ask_dxf_filename();
67 std::optional<std::string> ask_kicad_package_filename();
68 std::optional<std::string> ask_picture_filename();
69 bool manage_ports(class Block &block);
70 bool update_plane(class Board &brd, class Plane *plane);
71
72 class SymbolPinNamesWindow *show_symbol_pin_names_window(class SchematicSymbol &symbol);
73 class RenumberPadsWindow *show_renumber_pads_window(class Package &pkg, const std::set<UUID> &pads);
74 class GenerateSilkscreenWindow *show_generate_silkscreen_window(class ToolSettings &settings);
75 class EnterDatumWindow *show_enter_datum_window(const std::string &label, int64_t def = 0);
76 class RouterSettingsWindow *show_router_settings_window(class ToolSettings &settings);
77 class EnterDatumAngleWindow *show_enter_datum_angle_window(const std::string &label, uint16_t def = 0);
78 class EnterDatumScaleWindow *show_enter_datum_scale_window(const std::string &label, double def = 1);
79 class PadParameterSetWindow *show_pad_parameter_set_window(std::set<class Pad *> &pads, class IPool &pool,
80 class Package &pkg);
81 class AlignAndDistributeWindow *show_align_and_distribute_window();
82 class EditPlaneWindow *show_edit_plane_window(class Plane &plane, class Board &brd);
83 class EditTextWindow *show_edit_text_window(class Text &text, bool use_ok);
84
85 void close_nonmodal();
86 class ToolWindow *get_nonmodal();
87
88private:
89 Gtk::Window *parent = nullptr;
90 class ImpInterface *interface = nullptr;
91 class ToolWindow *window_nonmodal = nullptr;
92};
93} // 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:47
Definition dialogs.hpp:16
Definition edit_plane_window.hpp:12
Definition edit_text_window.hpp:6
Definition enter_datum_angle_window.hpp:15
Definition enter_datum_scale_window.hpp:15
Definition enter_datum_window.hpp:15
Definition frame.hpp:18
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:15
Definition imp_interface.hpp:12
Definition keepout.hpp:8
Definition layer_provider.hpp:8
Definition net.hpp:11
Definition package.hpp:29
Definition pad_parameter_set_window.hpp:10
Definition plane.hpp:54
Definition renumber_pads_window.hpp:10
Definition router_settings_window.hpp:11
Definition rule_via_definitions.hpp:7
Definition schematic_symbol.hpp:15
A Schematic is the visual representation of a Block.
Definition schematic.hpp:29
Definition symbol_pin_names_window.hpp:8
Used wherever a user-editable text is needed.
Definition text.hpp:15
Definition tool_pub.hpp:82
Definition tool_window.hpp:7
Stores a sequence of up to 3 UUIDs.
Definition uuid_path.hpp:12
This class encapsulates a UUID and allows it to be uses as a value type.
Definition uuid.hpp:16
Definition via_definition.hpp:7