Horizon
|
Where Tools and and documents meet. More...
#include <core.hpp>
Classes | |
class | HistoryItem |
class | SearchQuery |
class | SearchResult |
Public Types | |
typedef sigc::signal< void, ToolID > | type_signal_tool_changed |
typedef sigc::signal< void > | type_signal_rebuilt |
typedef sigc::signal< json > | type_signal_request_save_meta |
typedef sigc::signal< void, bool > | type_signal_needs_save |
typedef sigc::signal< json, ToolID > | type_signal_load_tool_settings |
typedef sigc::signal< void, ToolID, json > | type_signal_save_tool_settings |
Public Member Functions | |
virtual bool | has_object_type (ObjectType ty) const |
virtual class Junction * | insert_junction (const UUID &uu, bool work=true) |
virtual class Junction * | get_junction (const UUID &uu, bool work=true) |
virtual void | delete_junction (const UUID &uu, bool work=true) |
virtual class Line * | insert_line (const UUID &uu, bool work=true) |
virtual class Line * | get_line (const UUID &uu, bool work=true) |
virtual void | delete_line (const UUID &uu, bool work=true) |
virtual class Arc * | insert_arc (const UUID &uu, bool work=true) |
virtual class Arc * | get_arc (const UUID &uu, bool work=true) |
virtual void | delete_arc (const UUID &uu, bool work=true) |
virtual class Text * | insert_text (const UUID &uu, bool work=true) |
virtual class Text * | get_text (const UUID &uu, bool work=true) |
virtual void | delete_text (const UUID &uu, bool work=true) |
virtual class Polygon * | insert_polygon (const UUID &uu, bool work=true) |
virtual class Polygon * | get_polygon (const UUID &uu, bool work=true) |
virtual void | delete_polygon (const UUID &uu, bool work=true) |
virtual class Hole * | insert_hole (const UUID &uu, bool work=true) |
virtual class Hole * | get_hole (const UUID &uu, bool work=true) |
virtual void | delete_hole (const UUID &uu, bool work=true) |
virtual class Dimension * | insert_dimension (const UUID &uu) |
virtual class Dimension * | get_dimension (const UUID &uu) |
virtual void | delete_dimension (const UUID &uu) |
virtual class Keepout * | insert_keepout (const UUID &uu) |
virtual class Keepout * | get_keepout (const UUID &uu) |
virtual void | delete_keepout (const UUID &uu) |
virtual std::vector< Line * > | get_lines (bool work=true) |
virtual std::vector< Arc * > | get_arcs (bool work=true) |
virtual std::vector< Keepout * > | get_keepouts () |
virtual class Block * | get_block (bool work=true) |
virtual void | rebuild (bool from_undo=false) |
Expands the non-working document. More... | |
ToolResponse | tool_begin (ToolID tool_id, const ToolArgs &args, class ImpInterface *imp, bool transient=false) |
ToolResponse | tool_update (const ToolArgs &args) |
std::pair< bool, bool > | tool_can_begin (ToolID tool_id, const std::set< SelectableRef > &selection) |
bool | tool_handles_esc () |
virtual void | commit ()=0 |
virtual void | revert ()=0 |
void | save () |
void | autosave () |
virtual void | delete_autosave ()=0 |
void | undo () |
void | redo () |
bool | can_undo () const |
bool | can_redo () const |
bool | tool_is_active () |
virtual bool | set_property (ObjectType type, const UUID &uu, ObjectProperty::ID property, const class PropertyValue &value) |
virtual bool | get_property (ObjectType type, const UUID &uu, ObjectProperty::ID property, class PropertyValue &value) |
virtual bool | get_property_meta (ObjectType type, const UUID &uu, ObjectProperty::ID property, class PropertyMeta &meta) |
virtual std::string | get_display_name (ObjectType type, const UUID &uu) |
virtual std::string | get_display_name (ObjectType type, const UUID &uu, const UUID &sheet) |
void | set_property_begin () |
void | set_property_commit () |
bool | get_property_transaction () const |
virtual class LayerProvider * | get_layer_provider () |
virtual json | get_meta () |
virtual class Rules * | get_rules () |
virtual void | update_rules () |
virtual bool | can_search_for_object_type (ObjectType type) const |
virtual std::list< SearchResult > | search (const SearchQuery &q) |
virtual std::pair< Coordi, Coordi > | get_bbox ()=0 |
bool | get_needs_save () const |
void | set_needs_save () |
virtual const std::string & | get_filename () const =0 |
type_signal_tool_changed | signal_tool_changed () |
type_signal_rebuilt | signal_rebuilt () |
type_signal_rebuilt | signal_save () |
Gets emitted right before saving. More... | |
type_signal_rebuilt | signal_modified () |
type_signal_rebuilt | signal_can_undo_redo () |
type_signal_request_save_meta | signal_request_save_meta () |
connect to this signal for providing meta information when the document is saved | |
type_signal_needs_save | signal_needs_save () |
type_signal_load_tool_settings | signal_load_tool_settings () |
type_signal_save_tool_settings | signal_save_tool_settings () |
virtual void | reload_pool () |
Public Attributes | |
std::set< SelectableRef > | selection |
Pool * | m_pool |
Protected Member Functions | |
virtual std::map< UUID, Junction > * | get_junction_map (bool work=true) |
virtual std::map< UUID, Line > * | get_line_map (bool work=true) |
virtual std::map< UUID, Arc > * | get_arc_map (bool work=true) |
virtual std::map< UUID, Text > * | get_text_map (bool work=true) |
virtual std::map< UUID, Polygon > * | get_polygon_map (bool work=true) |
virtual std::map< UUID, Hole > * | get_hole_map (bool work=true) |
virtual std::map< UUID, Dimension > * | get_dimension_map () |
virtual std::map< UUID, Keepout > * | get_keepout_map () |
void | set_needs_save (bool v) |
virtual void | history_push ()=0 |
virtual void | history_load (unsigned int i)=0 |
void | history_clear () |
void | layers_to_meta (class PropertyMeta &meta) |
void | get_placement (const Placement &placement, class PropertyValue &value, ObjectProperty::ID property) |
void | set_placement (Placement &placement, const class PropertyValue &value, ObjectProperty::ID property) |
void | sort_search_results (std::list< Core::SearchResult > &results, const SearchQuery &q) |
virtual void | save (const std::string &suffix)=0 |
Protected Attributes | |
bool | reverted = false |
std::unique_ptr< ToolBase > | tool = nullptr |
type_signal_tool_changed | s_signal_tool_changed |
type_signal_rebuilt | s_signal_rebuilt |
type_signal_rebuilt | s_signal_save |
type_signal_rebuilt | s_signal_modified |
type_signal_rebuilt | s_signal_can_undo_redo |
type_signal_request_save_meta | s_signal_request_save_meta |
type_signal_needs_save | s_signal_needs_save |
type_signal_load_tool_settings | s_signal_load_tool_settings |
type_signal_save_tool_settings | s_signal_save_tool_settings |
bool | needs_save = false |
std::deque< std::unique_ptr< HistoryItem > > | history |
int | history_current = -1 |
bool | property_transaction = false |
Static Protected Attributes | |
static const std::string | autosave_suffix = ".autosave" |
Where Tools and and documents meet.
The Core provides a unified interface for Tools to access the objects common to all documents (whatever is being edited). It also provides the property interface for the property editor.
A Core always stores to copies of the document, one of which is the working copy. Tools always operate on this one. Tools use Core::commit() to commit their changes by replacing the non-working document with the working document. Core::revert() does the opposite thing by replacing the working document with the non-working document, thereby discarding the changes made to the working copy. Usually, calling Core::commit() or Core::revert() is the last thing a Tool does before finishing.
After a Tool has finished its work by returning ToolResponse::end(), the Core will initiate a rebuild. For CoreSchematic, a rebuild will update the Schematic according to its Block.
The Core also handles undo/redo by storing a full copy for each step.
|
virtual |
Reimplemented in horizon::CoreBoard, and horizon::CorePackage.
|
virtual |
Expands the non-working document.
And copies the non-working document to the working document.
Reimplemented in horizon::CoreSchematic, horizon::CorePackage, horizon::CoreSymbol, horizon::CoreBoard, horizon::CoreFrame, and horizon::CorePadstack.
|
inline |
Gets emitted right before saving.
Gives the Imp an opportunity to write additional information to the document.