Horizon
Loading...
Searching...
No Matches
horizon::Core Class Referenceabstract

Where Tools and and documents meet. More...

#include <core.hpp>

Inheritance diagram for horizon::Core:
horizon::Document horizon::IDocument horizon::CoreBoard horizon::CoreDecal horizon::CoreFrame horizon::CorePackage horizon::CorePadstack horizon::CoreSchematic horizon::CoreSymbol

Public Types

typedef sigc::signal< void, ToolID > type_signal_tool_changed
typedef sigc::signal< void > type_signal_rebuilt
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

class Blockget_top_block () override
class Rulesget_rules () override
class GridSettingsget_grid_settings () override
class IPoolget_pool () override
class IPoolget_pool_caching () override
virtual ObjectType get_object_type () const =0
void rebuild (const std::string &comment)
 Expands the non-working document.
ToolResponse tool_begin (ToolID tool_id, const ToolArgs &args, class ImpInterface *imp, bool transient=false)
ToolResponse tool_update (ToolArgs &args)
std::optional< ToolArgsget_pending_tool_args ()
std::pair< bool, bool > tool_can_begin (ToolID tool_id, const std::set< SelectableRef > &selection)
void save ()
void autosave ()
virtual void delete_autosave ()=0
void undo ()
void redo ()
bool can_undo () const
bool can_redo () const
const std::string & get_undo_comment () const
const std::string & get_redo_comment () const
void set_history_max (unsigned int m)
void set_history_never_forgets (bool x)
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)
void set_property_begin ()
void set_property_commit ()
bool get_property_transaction () const
virtual json get_meta ()
virtual void update_rules ()
virtual std::pair< Coordi, Coordi > get_bbox ()=0
std::set< SelectableRef > & get_tool_selection ()
std::set< InToolActionID > get_tool_actions () const
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.
type_signal_rebuilt signal_modified ()
type_signal_rebuilt signal_can_undo_redo ()
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 Member Functions inherited from horizon::Document
class Junctioninsert_junction (const class UUID &uu) override
class Junctionget_junction (const UUID &uu) override
void delete_junction (const UUID &uu) override
class Lineinsert_line (const UUID &uu) override
class Lineget_line (const UUID &uu) override
void delete_line (const UUID &uu) override
class Arcinsert_arc (const UUID &uu) override
class Arcget_arc (const UUID &uu) override
void delete_arc (const UUID &uu) override
class Textinsert_text (const UUID &uu) override
class Textget_text (const UUID &uu) override
void delete_text (const UUID &uu) override
class Polygoninsert_polygon (const UUID &uu) override
class Polygonget_polygon (const UUID &uu) override
void delete_polygon (const UUID &uu) override
class Holeinsert_hole (const UUID &uu) override
class Holeget_hole (const UUID &uu) override
void delete_hole (const UUID &uu) override
class Dimensioninsert_dimension (const UUID &uu) override
class Dimensionget_dimension (const UUID &uu) override
void delete_dimension (const UUID &uu) override
class Keepoutinsert_keepout (const UUID &uu) override
class Keepoutget_keepout (const UUID &uu) override
void delete_keepout (const UUID &uu) override
class Pictureinsert_picture (const UUID &uu) override
class Pictureget_picture (const UUID &uu) override
void delete_picture (const UUID &uu) override
std::vector< Line * > get_lines () override
std::vector< Arc * > get_arcs () override
std::vector< Keepout * > get_keepouts () override
std::string get_display_name (ObjectType type, const UUID &uu) override
std::string get_display_name (ObjectType type, const UUID &uu, const UUID &sheet) override
Public Member Functions inherited from horizon::IDocument
virtual bool has_object_type (ObjectType ty) const =0
virtual class LayerProviderget_layer_provider ()=0
virtual const class FileVersionget_version () const =0

Protected Member Functions

 Core (class IPool &pool, IPool *m_pool_caching)
void set_needs_save (bool v)
void rebuild_finish (bool from_undo, const std::string &comment)
virtual std::unique_ptr< HistoryManager::HistoryItemmake_history_item (const std::string &comment)=0
virtual void history_load (const HistoryManager::HistoryItem &it)=0
virtual std::string get_history_comment_context () const
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)
virtual void save (const std::string &suffix)=0
json get_meta_from_file (const std::string &filename)
Protected Member Functions inherited from horizon::Document
virtual std::map< UUID, Junction > * get_junction_map ()
virtual std::map< UUID, Line > * get_line_map ()
virtual std::map< UUID, Arc > * get_arc_map ()
virtual std::map< UUID, Text > * get_text_map ()
virtual std::map< UUID, Polygon > * get_polygon_map ()
virtual std::map< UUID, Hole > * get_hole_map ()
virtual std::map< UUID, Dimension > * get_dimension_map ()
virtual std::map< UUID, Keepout > * get_keepout_map ()
virtual std::map< UUID, Picture > * get_picture_map ()

Protected Attributes

class IPoolm_pool
class IPoolm_pool_caching
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_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
HistoryManager history_manager
bool property_transaction = false

Static Protected Attributes

static const std::string autosave_suffix = ".autosave"

Detailed Description

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.

Member Function Documentation

◆ get_grid_settings()

class GridSettings * horizon::Core::get_grid_settings ( )
inlineoverridevirtual

Implements horizon::IDocument.

◆ get_meta()

json horizon::Core::get_meta ( )
virtual
Returns
the current document's meta information. Meta information contains grid spacing and layer setup.

Reimplemented in horizon::CoreBoard, and horizon::CorePackage.

◆ get_pool()

class IPool & horizon::Core::get_pool ( )
inlineoverridevirtual

Implements horizon::IDocument.

◆ get_pool_caching()

class IPool & horizon::Core::get_pool_caching ( )
inlineoverridevirtual

Implements horizon::IDocument.

◆ get_rules()

class Rules * horizon::Core::get_rules ( )
inlineoverridevirtual

Implements horizon::IDocument.

◆ get_top_block()

class Block * horizon::Core::get_top_block ( )
inlineoverridevirtual

Implements horizon::IDocument.

◆ rebuild()

void horizon::Core::rebuild ( const std::string & comment)

Expands the non-working document.

And copies the non-working document to the working document.

◆ signal_save()

type_signal_rebuilt horizon::Core::signal_save ( )
inline

Gets emitted right before saving.

Gives the Imp an opportunity to write additional information to the document.


The documentation for this class was generated from the following files: