Inkscape
Vector Graphics Editor
Loading...
Searching...
No Matches
Inkscape::UI::Tools::NodeTool Class Reference

#include <node-tool.h>

Inheritance diagram for Inkscape::UI::Tools::NodeTool:
Inkscape::UI::Tools::ToolBase

Public Member Functions

 NodeTool (SPDesktop *desktop)
 
 ~NodeTool () override
 
void set (Preferences::Entry const &val) override
 Called by our pref_observer if a preference has been changed.
 
bool root_handler (CanvasEvent const &event) override
 
bool item_handler (SPItem *item, CanvasEvent const &event) override
 Handles item specific events.
 
void deleteSelected ()
 
- Public Member Functions inherited from Inkscape::UI::Tools::ToolBase
 ToolBase (SPDesktop *desktop, std::string &&prefs_path, std::string &&cursor_filename, bool uses_snap=true)
 
virtual ~ToolBase ()
 
virtual void menu_popup (CanvasEvent const &event, SPObject *obj=nullptr)
 Create popup menu and tell Gtk to show it.
 
virtual bool can_undo (bool redo=false)
 
virtual bool is_ready () const
 
virtual void switching_away (std::string const &new_tool)
 
std::string const & getPrefsPath () const
 
void enableSelectionCue (bool enable=true)
 Enables/disables the ToolBase's SelCue.
 
MessageContextdefaultMessageContext () const
 
SPDesktopgetDesktop () const
 
SPGroupcurrentLayer () const
 
void set_last_active_tool (Glib::ustring last_tool)
 
const Glib::ustring & get_last_active_tool () const
 
bool start_root_handler (CanvasEvent const &event)
 Handles snapping events for all tools and then passes to tool_root_handler.
 
bool tool_root_handler (CanvasEvent const &event)
 Calls the right tool's event handler, depending on the selected tool and state.
 
bool start_item_handler (SPItem *item, CanvasEvent const &event)
 Starts handling item snapping and pass to virtual_item_handler afterwards.
 
bool virtual_item_handler (SPItem *item, CanvasEvent const &event)
 
bool is_panning () const
 True if we're panning with any method (space bar, middle-mouse, right-mouse+Ctrl)
 
bool is_space_panning () const
 True if we're panning with the space bar.
 
void snap_delay_handler (gpointer item, gpointer item2, MotionEvent const &event, DelayedSnapEvent::Origin origin)
 Analyses the current event, calculates the mouse speed, turns snapping off (temporarily) if the mouse speed is above a threshold, and stores the current event such that it can be re-triggered when needed (re-triggering is controlled by a timeout).
 
void process_delayed_snap_event ()
 When the delayed snap event timer expires, this method will be called and will re-inject the last motion event in an appropriate place, with snapping being turned on again.
 
void discard_delayed_snap_event ()
 If a delayed snap event has been scheduled, this function will cancel it.
 
void set_cursor (std::string filename)
 Sets the current cursor to the given filename.
 
void use_cursor (Glib::RefPtr< Gdk::Cursor > cursor)
 Set the cursor to this specific one, don't remember it.
 
Glib::RefPtr< Gdk::Cursor > get_cursor (Gtk::Widget &widget, std::string const &filename) const
 Returns the Gdk Cursor for the given filename.
 
void use_tool_cursor ()
 Uses the saved cursor, based on the saved filename.
 
void enableGrDrag (bool enable=true)
 
bool deleteSelectedDrag (bool just_one)
 Delete a selected GrDrag point.
 
bool hasGradientDrag () const
 Return true if there is a gradient drag.
 
GrDragget_drag ()
 

Public Attributes

Inkscape::UI::ControlPointSelection_selected_nodes = nullptr
 
Inkscape::UI::MultiPathManipulator_multipath = nullptr
 
std::vector< Inkscape::Display::TemporaryItem * > _helperpath_tmpitem
 
std::map< SPItem *, std::unique_ptr< ShapeEditor > > _shape_editors
 
bool edit_clipping_paths = false
 
bool edit_masks = false
 
- Public Attributes inherited from Inkscape::UI::Tools::ToolBase
std::unique_ptr< MessageContextmessage_context
 
SelCue_selcue = nullptr
 
GrDrag_grdrag = nullptr
 
ShapeEditorshape_editor = nullptr
 
bool _uses_snap = false
 

Private Member Functions

Inkscape::Rubberbandget_rubberband () const
 
void selection_changed (Inkscape::Selection *sel)
 
void select_area (Geom::Path const &path, ButtonReleaseEvent const &event)
 
void select_point (ButtonReleaseEvent const &event)
 
void mouseover_changed (Inkscape::UI::ControlPoint *p)
 
void update_tip (CanvasEvent const &event)
 
void update_tip ()
 
void handleControlUiStyleChange ()
 
void _updateSelectionColor (CanvasEvent const &event)
 

Private Attributes

sigc::connection _selection_changed_connection
 
sigc::connection _mouseover_changed_connection
 
SPItemflashed_item = nullptr
 
Inkscape::Display::TemporaryItemflash_tempitem = nullptr
 
Inkscape::UI::Selector * _selector = nullptr
 
Inkscape::UI::PathSharedData_path_data = nullptr
 
Inkscape::CanvasItemGroup_transform_handle_group = nullptr
 
SPItem_last_over = nullptr
 
bool cursor_drag = false
 
bool show_handles = false
 
bool show_outline =false
 
bool live_outline = false
 
bool live_objects = false
 
bool show_path_direction = false
 
bool show_transform_handles = false
 
bool single_node_transform_handles = false
 
std::vector< SPItem * > _current_selection
 
std::vector< SPItem * > _previous_selection
 

Additional Inherited Members

- Protected Member Functions inherited from Inkscape::UI::Tools::ToolBase
void setup_for_drag_start (ButtonPressEvent const &ev)
 
void saveDragOrigin (Geom::Point const &pos)
 
bool checkDragMoved (Geom::Point const &pos)
 Analyse the current position and return true once it has moved farther than tolerance from the drag origin (indicating they intend to move the object, not click).
 
void grabCanvasEvents (EventMask mask=EventType::KEY_PRESS|EventType::BUTTON_RELEASE|EventType::MOTION|EventType::BUTTON_PRESS)
 Grab events from the Canvas Catchall.
 
void ungrabCanvasEvents ()
 Ungrab events from the Canvas Catchall.
 
bool sp_event_context_knot_mouseover () const
 Returns true if we're hovering above a knot (needed because we don't want to pre-snap in that case).
 
void set_high_motion_precision (bool high_precision=true)
 Enable (or disable) high precision for motion events.
 
- Protected Attributes inherited from Inkscape::UI::Tools::ToolBase
Glib::RefPtr< Gdk::Cursor > _cursor
 
std::string _cursor_filename = "select.svg"
 
std::string _cursor_default = "select.svg"
 
Geom::IntPoint xyp
 where drag started
 
bool dragging = false
 are we dragging?
 
int tolerance = 0
 
bool within_tolerance = false
 are we still within tolerance of origin
 
bool _button1on = false
 
bool _button2on = false
 
bool _button3on = false
 
SPItemitem_to_select = nullptr
 the item where mouse_press occurred, to be selected if this is a click not drag
 
SPDesktop_desktop = nullptr
 
Util::ActionAccel _acc_undo
 
Util::ActionAccel _acc_redo
 
Util::ActionAccel _acc_quick_preview
 
Util::ActionAccel _acc_quick_zoom
 
Util::ActionAccel _acc_quick_pan
 

Detailed Description

Definition at line 39 of file node-tool.h.

Constructor & Destructor Documentation

◆ NodeTool()

◆ ~NodeTool()

Member Function Documentation

◆ _updateSelectionColor()

◆ deleteSelected()

void NodeTool::deleteSelected ( )

◆ get_rubberband()

Inkscape::Rubberband * NodeTool::get_rubberband ( ) const
private

◆ handleControlUiStyleChange()

void NodeTool::handleControlUiStyleChange ( )
private

◆ item_handler()

bool NodeTool::item_handler ( SPItem item,
CanvasEvent const &  event 
)
overridevirtual

Handles item specific events.

Gets called from Gdk.

Only reacts to right mouse button at the moment.

Todo:
Fixme: do context sensitive popup menu on items.

Reimplemented from Inkscape::UI::Tools::ToolBase.

Definition at line 606 of file node-tool.cpp.

References Inkscape::UI::Tools::ToolBase::_desktop, _shape_editors, SPDesktop::dt2doc(), SPDesktop::getItemAtPoint(), Inkscape::inspect_event(), item, Inkscape::UI::Tools::ToolBase::item_handler(), and SPDesktop::w2d().

◆ mouseover_changed()

void NodeTool::mouseover_changed ( Inkscape::UI::ControlPoint p)
private

Definition at line 791 of file node-tool.cpp.

References cursor_drag, and Inkscape::UI::Tools::ToolBase::set_cursor().

Referenced by NodeTool().

◆ root_handler()

bool NodeTool::root_handler ( CanvasEvent const &  event)
overridevirtual

Reimplemented from Inkscape::UI::Tools::ToolBase.

Definition at line 383 of file node-tool.cpp.

References Inkscape::UI::Tools::ToolBase::_desktop, _last_over, _multipath, _previous_selection, _selected_nodes, _updateSelectionColor(), SPDesktop::add_temporary_canvasitem(), Inkscape::ObjectSet::addList(), c, Inkscape::UI::ControlPointSelection::clear(), Inkscape::UI::Tools::ToolBase::defaultMessageContext(), Inkscape::UI::ControlPointSelection::empty(), Inkscape::UI::ControlPointSelection::event(), Inkscape::UI::MultiPathManipulator::event(), flash_tempitem, flashed_item, Inkscape::Preferences::get(), Inkscape::UI::Tools::get_latin_keyval(), get_rubberband(), SPDesktop::getCanvasTemp(), SPDesktop::getNamedView(), SPDesktop::getSelection(), SPItem::i2dt_affine(), Inkscape::UI::MultiPathManipulator::insertNode(), Inkscape::inspect_event(), Inkscape::ObjectSet::isEmpty(), Inkscape::mod_alt(), Inkscape::mod_ctrl(), Inkscape::mod_ctrl_only(), Inkscape::CanvasEvent::modifiers, Inkscape::NORMAL_MESSAGE, SPDesktop::point(), SPDesktop::remove_temporary_canvasitem(), Inkscape::UI::Tools::ToolBase::root_handler(), Inkscape::RUBBERBAND_TOUCHPATH, select_area(), select_point(), Inkscape::Modifiers::SELECT_TOUCH_PATH, Inkscape::UI::ControlPointSelection::selectAll(), Inkscape::SelectionHelper::selectNone(), Inkscape::MessageContext::setF(), SnapManager::setup(), Inkscape::UI::MultiPathManipulator::shiftSelection(), show_handles, SPNamedView::snap_manager, Inkscape::SNAPSOURCE_OTHER_HANDLE, Inkscape::UI::Tools::sp_event_context_find_item(), Inkscape::UI::Tools::sp_update_helperpath(), SP_WIND_RULE_NONZERO, Inkscape::Rubberband::TOUCHPATH, update_tip(), and SPDesktop::w2d().

◆ select_area()

◆ select_point()

◆ selection_changed()

◆ set()

◆ update_tip() [1/2]

◆ update_tip() [2/2]

Member Data Documentation

◆ _current_selection

std::vector<SPItem*> Inkscape::UI::Tools::NodeTool::_current_selection
private

Definition at line 81 of file node-tool.h.

Referenced by selection_changed().

◆ _helperpath_tmpitem

std::vector<Inkscape::Display::TemporaryItem *> Inkscape::UI::Tools::NodeTool::_helperpath_tmpitem

Definition at line 47 of file node-tool.h.

Referenced by ~NodeTool().

◆ _last_over

SPItem* Inkscape::UI::Tools::NodeTool::_last_over = nullptr
private

Definition at line 70 of file node-tool.h.

Referenced by root_handler(), update_tip(), and update_tip().

◆ _mouseover_changed_connection

sigc::connection Inkscape::UI::Tools::NodeTool::_mouseover_changed_connection
private

Definition at line 62 of file node-tool.h.

Referenced by NodeTool(), and ~NodeTool().

◆ _multipath

◆ _path_data

Inkscape::UI::PathSharedData* Inkscape::UI::Tools::NodeTool::_path_data = nullptr
private

Definition at line 68 of file node-tool.h.

Referenced by NodeTool(), and ~NodeTool().

◆ _previous_selection

std::vector<SPItem*> Inkscape::UI::Tools::NodeTool::_previous_selection
private

Definition at line 82 of file node-tool.h.

Referenced by root_handler(), and selection_changed().

◆ _selected_nodes

◆ _selection_changed_connection

sigc::connection Inkscape::UI::Tools::NodeTool::_selection_changed_connection
private

Definition at line 61 of file node-tool.h.

Referenced by NodeTool(), and ~NodeTool().

◆ _selector

Inkscape::UI::Selector* Inkscape::UI::Tools::NodeTool::_selector = nullptr
private

Definition at line 67 of file node-tool.h.

◆ _shape_editors

std::map<SPItem *, std::unique_ptr<ShapeEditor> > Inkscape::UI::Tools::NodeTool::_shape_editors

◆ _transform_handle_group

Inkscape::CanvasItemGroup* Inkscape::UI::Tools::NodeTool::_transform_handle_group = nullptr
private

Definition at line 69 of file node-tool.h.

Referenced by NodeTool(), and ~NodeTool().

◆ cursor_drag

bool Inkscape::UI::Tools::NodeTool::cursor_drag = false
private

Definition at line 72 of file node-tool.h.

Referenced by mouseover_changed().

◆ edit_clipping_paths

bool Inkscape::UI::Tools::NodeTool::edit_clipping_paths = false

Definition at line 50 of file node-tool.h.

Referenced by Inkscape::UI::Tools::gather_items(), and set().

◆ edit_masks

bool Inkscape::UI::Tools::NodeTool::edit_masks = false

Definition at line 51 of file node-tool.h.

Referenced by Inkscape::UI::Tools::gather_items(), and set().

◆ flash_tempitem

Inkscape::Display::TemporaryItem* Inkscape::UI::Tools::NodeTool::flash_tempitem = nullptr
private

Definition at line 66 of file node-tool.h.

Referenced by root_handler(), and ~NodeTool().

◆ flashed_item

SPItem* Inkscape::UI::Tools::NodeTool::flashed_item = nullptr
private

Definition at line 64 of file node-tool.h.

Referenced by root_handler().

◆ live_objects

bool Inkscape::UI::Tools::NodeTool::live_objects = false
private

Definition at line 76 of file node-tool.h.

Referenced by set().

◆ live_outline

bool Inkscape::UI::Tools::NodeTool::live_outline = false
private

Definition at line 75 of file node-tool.h.

Referenced by set().

◆ show_handles

bool Inkscape::UI::Tools::NodeTool::show_handles = false
private

Definition at line 73 of file node-tool.h.

Referenced by root_handler(), and set().

◆ show_outline

bool Inkscape::UI::Tools::NodeTool::show_outline =false
private

Definition at line 74 of file node-tool.h.

Referenced by set().

◆ show_path_direction

bool Inkscape::UI::Tools::NodeTool::show_path_direction = false
private

Definition at line 77 of file node-tool.h.

Referenced by set().

◆ show_transform_handles

bool Inkscape::UI::Tools::NodeTool::show_transform_handles = false
private

Definition at line 78 of file node-tool.h.

Referenced by set().

◆ single_node_transform_handles

bool Inkscape::UI::Tools::NodeTool::single_node_transform_handles = false
private

Definition at line 79 of file node-tool.h.

Referenced by set().


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