2 #include "canvas/selectables.hpp"
3 #include "common/object_descr.hpp"
4 #include "nlohmann/json_fwd.hpp"
5 #include <gdk/gdkkeysyms.h>
8 #include <sigc++/sigc++.h>
9 #include "tool_pub.hpp"
10 #include "document/document.hpp"
11 #include "util/placement.hpp"
44 class Block *get_top_block()
override
49 class Rules *get_rules()
override
59 class IPool &get_pool()
override
63 class IPool &get_pool_caching()
override
65 return m_pool_caching;
67 virtual ObjectType get_object_type()
const = 0;
73 void rebuild(
const std::string &comment);
76 std::pair<bool, bool> tool_can_begin(ToolID tool_id,
const std::set<SelectableRef> &selection);
79 virtual void delete_autosave() = 0;
84 bool can_undo()
const;
85 bool can_redo()
const;
87 const std::string &get_undo_comment()
const;
88 const std::string &get_redo_comment()
const;
90 void set_history_max(
unsigned int m);
92 inline bool tool_is_active()
94 return tool !=
nullptr;
97 virtual bool set_property(ObjectType type,
const UUID &uu, ObjectProperty::ID property,
99 virtual bool get_property(ObjectType type,
const UUID &uu, ObjectProperty::ID property,
class PropertyValue &value);
100 virtual bool get_property_meta(ObjectType type,
const UUID &uu, ObjectProperty::ID property,
103 void set_property_begin();
104 void set_property_commit();
105 bool get_property_transaction()
const;
113 virtual void update_rules()
117 virtual std::pair<Coordi, Coordi> get_bbox() = 0;
122 std::set<SelectableRef> &get_tool_selection();
123 std::set<InToolActionID> get_tool_actions()
const;
125 bool get_needs_save()
const;
126 void set_needs_save();
128 virtual const std::string &get_filename()
const = 0;
130 typedef sigc::signal<void, ToolID> type_signal_tool_changed;
131 type_signal_tool_changed signal_tool_changed()
133 return s_signal_tool_changed;
135 typedef sigc::signal<void> type_signal_rebuilt;
136 type_signal_rebuilt signal_rebuilt()
138 return s_signal_rebuilt;
147 return s_signal_save;
150 type_signal_rebuilt signal_modified()
152 return s_signal_modified;
155 type_signal_rebuilt signal_can_undo_redo()
157 return s_signal_can_undo_redo;
160 typedef sigc::signal<void, bool> type_signal_needs_save;
161 type_signal_needs_save signal_needs_save()
163 return s_signal_needs_save;
166 typedef sigc::signal<json, ToolID> type_signal_load_tool_settings;
167 type_signal_load_tool_settings signal_load_tool_settings()
169 return s_signal_load_tool_settings;
172 typedef sigc::signal<void, ToolID, json> type_signal_save_tool_settings;
173 type_signal_save_tool_settings signal_save_tool_settings()
175 return s_signal_save_tool_settings;
178 virtual void reload_pool()
183 Core(
class IPool &pool, IPool *m_pool_caching);
185 class IPool &m_pool_caching;
187 ToolID tool_id_current;
188 std::unique_ptr<ToolBase> tool =
nullptr;
189 type_signal_tool_changed s_signal_tool_changed;
190 type_signal_rebuilt s_signal_rebuilt;
191 type_signal_rebuilt s_signal_save;
192 type_signal_rebuilt s_signal_modified;
193 type_signal_rebuilt s_signal_can_undo_redo;
194 type_signal_needs_save s_signal_needs_save;
195 type_signal_load_tool_settings s_signal_load_tool_settings;
196 type_signal_save_tool_settings s_signal_save_tool_settings;
197 bool needs_save =
false;
198 void set_needs_save(
bool v);
200 void rebuild_finish(
bool from_undo,
const std::string &comment);
207 const std::string comment;
212 std::deque<std::unique_ptr<HistoryItem>> history;
213 int history_current = -1;
214 size_t history_max = 50;
215 virtual void history_push(
const std::string &comment) = 0;
216 virtual void history_load(
unsigned int i) = 0;
217 void history_clear();
220 bool property_transaction =
false;
226 virtual void save(
const std::string &suffix) = 0;
227 static const std::string autosave_suffix;
228 json get_meta_from_file(
const std::string &filename);
231 std::unique_ptr<ToolBase> create_tool(ToolID tool_id);
232 std::set<SelectableRef> tool_selection;
234 virtual void rebuild_internal(
bool from_undo,
const std::string &comment) = 0;
A block is one level of hierarchy in the netlist.
Definition: block.hpp:29
Where Tools and and documents meet.
Definition: core.hpp:42
virtual json get_meta()
Definition: core.cpp:265
void rebuild(const std::string &comment)
Expands the non-working document.
Definition: core.cpp:150
type_signal_rebuilt signal_save()
Gets emitted right before saving.
Definition: core.hpp:145
Definition: document.hpp:5
Definition: grid_settings.hpp:9
Definition: imp_interface.hpp:12
Definition: placement.hpp:8
Definition: core_properties.hpp:7
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