2#include "util/uuid.hpp"
3#include "nlohmann/json_fwd.hpp"
4#include "pool/unit.hpp"
5#include "block/block.hpp"
7#include "schematic_rules.hpp"
8#include "common/pdf_export_settings.hpp"
9#include <glibmm/regex.h>
12#include "util/file_version.hpp"
13#include "util/template_util.hpp"
31 unsigned int update_nets();
39 static unsigned int get_app_version();
47 void expand_connectivity(
bool carful =
false);
50 void operator=(
const Schematic &sch) =
delete;
88 void swap_gates(
const UUID &comp,
const UUID &g1,
const UUID &g2);
92 std::map<UUIDPath<2>, std::string> get_unplaced_gates()
const;
95 void delete_sheet(
const UUID &uu);
96 Sheet &get_sheet_at_index(
unsigned int index);
97 const Sheet &get_sheet_at_index(
unsigned int index)
const;
99 static Glib::RefPtr<Glib::Regex> get_sheetref_regex();
104 std::map<UUID, Sheet> sheets;
106 bool group_tag_visible =
false;
113 enum class Order { RIGHT_DOWN, DOWN_RIGHT };
114 Order order = Order::RIGHT_DOWN;
116 enum class Mode { SEQUENTIAL, SHEET_100, SHEET_1000 };
117 Mode mode = Mode::SHEET_100;
119 bool fill_gaps =
true;
121 bool ignore_unknown =
false;
122 json serialize()
const;
130 std::map<UUIDVec, unsigned int> sheet_numbers;
131 unsigned int sheet_total;
135 void update(
const Schematic &sch,
const UUIDVec &instance_path);
140 void update_sheet_mapping();
143 SheetItem(make_const_ref_t<c, Sheet> sh,
unsigned int i, make_const_ref_t<c, Schematic> sch,
const UUIDVec &p)
144 : sheet(sh), sheet_index(i), schematic(sch), instance_path(p)
147 make_const_ref_t<c, Sheet> sheet;
148 unsigned int sheet_index;
149 make_const_ref_t<c, Schematic> schematic;
150 UUIDVec instance_path;
153 std::vector<SheetItem<false>> get_all_sheets();
154 std::vector<SheetItem<true>> get_all_sheets()
const;
160 json serialize()
const;
161 void load_pictures(
const std::string &dir);
163 ItemSet get_pool_items_used()
const;
165 std::vector<Sheet *> get_sheets_sorted();
166 std::vector<const Sheet *> get_sheets_sorted()
const;
A block is one level of hierarchy in the netlist.
Definition block.hpp:29
Definition file_version.hpp:9
Definition iblock_symbol_and_schematic_provider.hpp:6
Definition iinstancce_mapping_provider.hpp:4
LineNet is similar to Line, except it denotes electrical connection.
Definition line_net.hpp:17
Definition pdf_export_settings.hpp:9
Definition schematic_block_symbol.hpp:12
Definition schematic_rules.hpp:10
Definition schematic_symbol.hpp:15
Definition schematic.hpp:109
Definition schematic.hpp:128
A Schematic is the visual representation of a Block.
Definition schematic.hpp:29
void smash_symbol(Sheet *sheet, SchematicSymbol *sym)
Turns sym's texts to regular text objects.
Definition schematic.cpp:331
void unsmash_symbol(Sheet *sheet, SchematicSymbol *sym)
Undoes what smash_symbol did.
Definition schematic.cpp:364
void autoconnect_symbol(Sheet *sheet, SchematicSymbol *sym)
Connects unconnected pins of sym to Nets specified by junctions coincident with pins.
Definition schematic.cpp:107
void update_refs()
objects owned by the Sheets may hold pointers to other objects of the same sheet or the Block associa...
Definition schematic.cpp:1319
void disconnect_symbol(Sheet *sheet, SchematicSymbol *sym)
Removes all connections from sym and connects the dangling net lines to junctions.
Definition schematic.cpp:268
void expand(bool careful=false, const class IInstanceMappingProvider *inst_map=nullptr)
This is where the magic happens.
Definition schematic.cpp:864
This class encapsulates a UUID and allows it to be uses as a value type.
Definition uuid.hpp:16
a class to store JSON values
Definition json.hpp:177
basic_json<> json
default JSON class
Definition json_fwd.hpp:62
Definition schematic.hpp:142