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_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 virtual void rebuild(
bool from_undo =
false);
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 inline bool tool_is_active()
89 return tool !=
nullptr;
92 virtual bool set_property(ObjectType type,
const UUID &uu, ObjectProperty::ID property,
94 virtual bool get_property(ObjectType type,
const UUID &uu, ObjectProperty::ID property,
class PropertyValue &value);
95 virtual bool get_property_meta(ObjectType type,
const UUID &uu, ObjectProperty::ID property,
98 void set_property_begin();
99 void set_property_commit();
100 bool get_property_transaction()
const;
108 virtual void update_rules()
112 virtual std::pair<Coordi, Coordi> get_bbox() = 0;
117 std::set<SelectableRef> &get_tool_selection();
118 std::set<InToolActionID> get_tool_actions()
const;
120 bool get_needs_save()
const;
121 void set_needs_save();
123 virtual const std::string &get_filename()
const = 0;
125 typedef sigc::signal<void, ToolID> type_signal_tool_changed;
126 type_signal_tool_changed signal_tool_changed()
128 return s_signal_tool_changed;
130 typedef sigc::signal<void> type_signal_rebuilt;
131 type_signal_rebuilt signal_rebuilt()
133 return s_signal_rebuilt;
142 return s_signal_save;
145 type_signal_rebuilt signal_modified()
147 return s_signal_modified;
150 type_signal_rebuilt signal_can_undo_redo()
152 return s_signal_can_undo_redo;
155 typedef sigc::signal<void, bool> type_signal_needs_save;
156 type_signal_needs_save signal_needs_save()
158 return s_signal_needs_save;
161 typedef sigc::signal<json, ToolID> type_signal_load_tool_settings;
162 type_signal_load_tool_settings signal_load_tool_settings()
164 return s_signal_load_tool_settings;
167 typedef sigc::signal<void, ToolID, json> type_signal_save_tool_settings;
168 type_signal_save_tool_settings signal_save_tool_settings()
170 return s_signal_save_tool_settings;
173 virtual void reload_pool()
178 Core(
class IPool &pool, IPool *m_pool_caching);
180 class IPool &m_pool_caching;
182 std::unique_ptr<ToolBase> tool =
nullptr;
183 type_signal_tool_changed s_signal_tool_changed;
184 type_signal_rebuilt s_signal_rebuilt;
185 type_signal_rebuilt s_signal_save;
186 type_signal_rebuilt s_signal_modified;
187 type_signal_rebuilt s_signal_can_undo_redo;
188 type_signal_needs_save s_signal_needs_save;
189 type_signal_load_tool_settings s_signal_load_tool_settings;
190 type_signal_save_tool_settings s_signal_save_tool_settings;
191 bool needs_save =
false;
192 void set_needs_save(
bool v);
203 std::deque<std::unique_ptr<HistoryItem>> history;
204 int history_current = -1;
205 virtual void history_push() = 0;
206 virtual void history_load(
unsigned int i) = 0;
207 void history_clear();
210 bool property_transaction =
false;
216 virtual void save(
const std::string &suffix) = 0;
217 static const std::string autosave_suffix;
218 json get_meta_from_file(
const std::string &filename);
221 std::unique_ptr<ToolBase> create_tool(ToolID tool_id);
222 std::set<SelectableRef> tool_selection;
A block is one level of hierarchy in the netlist.
Definition: block.hpp:26
Where Tools and and documents meet.
Definition: core.hpp:42
virtual json get_meta()
Definition: core.cpp:226
type_signal_rebuilt signal_save()
Gets emitted right before saving.
Definition: core.hpp:140
virtual void rebuild(bool from_undo=false)
Expands the non-working document.
Definition: core.cpp:141
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:170