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>
10 #include "document/document.hpp"
11 #include "util/placement.hpp"
44 class Block *get_block()
override
49 class Rules *get_rules()
override
54 class IPool &get_pool()
override
58 class IPool &get_pool_caching()
override
60 return m_pool_caching;
62 virtual ObjectType get_object_type()
const = 0;
68 virtual void rebuild(
bool from_undo =
false);
71 std::pair<bool, bool> tool_can_begin(ToolID tool_id,
const std::set<SelectableRef> &selection);
74 virtual void delete_autosave() = 0;
79 bool can_undo()
const;
80 bool can_redo()
const;
82 inline bool tool_is_active()
84 return tool !=
nullptr;
87 virtual bool set_property(ObjectType type,
const UUID &uu, ObjectProperty::ID property,
89 virtual bool get_property(ObjectType type,
const UUID &uu, ObjectProperty::ID property,
class PropertyValue &value);
90 virtual bool get_property_meta(ObjectType type,
const UUID &uu, ObjectProperty::ID property,
93 void set_property_begin();
94 void set_property_commit();
95 bool get_property_transaction()
const;
103 virtual void update_rules()
107 virtual std::pair<Coordi, Coordi> get_bbox() = 0;
112 std::set<SelectableRef> &get_tool_selection();
113 std::set<InToolActionID> get_tool_actions()
const;
115 bool get_needs_save()
const;
116 void set_needs_save();
118 virtual const std::string &get_filename()
const = 0;
120 typedef sigc::signal<void, ToolID> type_signal_tool_changed;
121 type_signal_tool_changed signal_tool_changed()
123 return s_signal_tool_changed;
125 typedef sigc::signal<void> type_signal_rebuilt;
126 type_signal_rebuilt signal_rebuilt()
128 return s_signal_rebuilt;
137 return s_signal_save;
140 type_signal_rebuilt signal_modified()
142 return s_signal_modified;
145 type_signal_rebuilt signal_can_undo_redo()
147 return s_signal_can_undo_redo;
150 typedef sigc::signal<void, bool> type_signal_needs_save;
151 type_signal_needs_save signal_needs_save()
153 return s_signal_needs_save;
156 typedef sigc::signal<json, ToolID> type_signal_load_tool_settings;
157 type_signal_load_tool_settings signal_load_tool_settings()
159 return s_signal_load_tool_settings;
162 typedef sigc::signal<void, ToolID, json> type_signal_save_tool_settings;
163 type_signal_save_tool_settings signal_save_tool_settings()
165 return s_signal_save_tool_settings;
168 virtual void reload_pool()
173 Core(
class IPool &pool, IPool *m_pool_caching);
175 class IPool &m_pool_caching;
177 std::unique_ptr<ToolBase> tool =
nullptr;
178 type_signal_tool_changed s_signal_tool_changed;
179 type_signal_rebuilt s_signal_rebuilt;
180 type_signal_rebuilt s_signal_save;
181 type_signal_rebuilt s_signal_modified;
182 type_signal_rebuilt s_signal_can_undo_redo;
183 type_signal_needs_save s_signal_needs_save;
184 type_signal_load_tool_settings s_signal_load_tool_settings;
185 type_signal_save_tool_settings s_signal_save_tool_settings;
186 bool needs_save =
false;
187 void set_needs_save(
bool v);
198 std::deque<std::unique_ptr<HistoryItem>> history;
199 int history_current = -1;
200 virtual void history_push() = 0;
201 virtual void history_load(
unsigned int i) = 0;
202 void history_clear();
205 bool property_transaction =
false;
211 virtual void save(
const std::string &suffix) = 0;
212 static const std::string autosave_suffix;
213 json get_meta_from_file(
const std::string &filename);
216 std::unique_ptr<ToolBase> create_tool(ToolID tool_id);
217 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:227
type_signal_rebuilt signal_save()
Gets emitted right before saving.
Definition: core.hpp:135
virtual void rebuild(bool from_undo=false)
Expands the non-working document.
Definition: core.cpp:142
Definition: document.hpp:5
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