From 817834adc546527ad0a997a55de8456d02c812a2 Mon Sep 17 00:00:00 2001 From: Martin Owens Date: Tue, 4 May 2021 16:04:35 -0400 Subject: [PATCH] Refactor Connectors as a Live Path Effect --- po/POTFILES.src.in | 4 + .../scalable/actions/draw-connector-point.svg | 23 + .../scalable/actions/connector-jump-arc.svg | 14 + .../scalable/actions/connector-line.svg | 119 ++ .../scalable/actions/draw-connector-point.svg | 23 + .../actions/connector-jump-arc-symbolic.svg | 11 + .../actions/connector-line-symbolic.svg | 150 ++ .../actions/draw-connector-point-symbolic.svg | 23 + .../actions/connector-jump-arc-symbolic.svg | 11 + .../actions/connector-line-symbolic.svg | 78 + .../actions/draw-connector-point-symbolic.svg | 23 + share/ui/toolbar-connector.ui | 181 +- src/CMakeLists.txt | 2 - src/actions/actions-tools.cpp | 7 +- src/attributes.cpp | 13 +- src/attributes.h | 13 +- src/conn-avoid-ref.cpp | 395 ---- src/conn-avoid-ref.h | 77 - src/display/control/canvas-item-enums.h | 6 + src/document.cpp | 87 +- src/document.h | 5 +- src/doxygen-main.dox | 1 - src/live_effects/CMakeLists.txt | 8 + src/live_effects/effect-enum.h | 4 + src/live_effects/effect.cpp | 75 +- src/live_effects/effect.h | 9 +- src/live_effects/lpe-connector-avoid.cpp | 246 +++ src/live_effects/lpe-connector-avoid.h | 62 + src/live_effects/lpe-connector-line.cpp | 857 +++++++++ src/live_effects/lpe-connector-line.h | 149 ++ src/live_effects/parameter/item-reference.cpp | 47 + src/live_effects/parameter/item-reference.h | 53 + src/live_effects/parameter/item.cpp | 295 +++ src/live_effects/parameter/item.h | 78 + src/live_effects/parameter/path-reference.cpp | 3 +- src/object/CMakeLists.txt | 6 +- src/object/README | 2 - src/object/algorithms/graphlayout.cpp | 62 +- src/object/algorithms/graphlayout.h | 2 - src/object/sp-conn-end-pair.cpp | 390 ---- src/object/sp-conn-end-pair.h | 95 - src/object/sp-conn-end.cpp | 275 --- src/object/sp-conn-end.h | 71 - src/object/sp-ellipse.cpp | 9 + src/object/sp-ellipse.h | 2 + src/object/sp-factory.cpp | 2 + src/object/sp-item-group.cpp | 8 + src/object/sp-item-group.h | 1 + src/object/sp-item.cpp | 62 +- src/object/sp-item.h | 16 +- src/object/sp-lpe-item.cpp | 32 + src/object/sp-lpe-item.h | 2 + src/object/sp-namedview.cpp | 7 - src/object/sp-namedview.h | 2 - src/object/sp-object.cpp | 8 +- src/object/sp-object.h | 8 +- src/object/sp-path.cpp | 19 +- src/object/sp-path.h | 3 - src/object/sp-point.cpp | 235 +++ src/object/sp-point.h | 72 + src/object/sp-rect.cpp | 13 + src/object/sp-rect.h | 2 + src/object/sp-shape.cpp | 11 +- src/object/sp-shape.h | 1 + src/object/sp-use.cpp | 24 + src/object/sp-use.h | 1 + src/object/tags.h | 1 + src/path-chemistry.cpp | 9 + src/path/path-outline.cpp | 56 +- src/path/path-outline.h | 11 +- src/selection-chemistry.cpp | 33 - src/snap.cpp | 8 +- src/ui/CMakeLists.txt | 2 + src/ui/dialog/inkscape-preferences.cpp | 36 +- src/ui/dialog/inkscape-preferences.h | 1 + src/ui/knot/knot-holder-entity.cpp | 3 + src/ui/knot/knot-holder-entity.h | 6 + src/ui/knot/knot-holder.cpp | 29 + src/ui/knot/knot-holder.h | 6 +- src/ui/knot/knot.cpp | 2 + src/ui/knot/knot.h | 2 + src/ui/shape-editor-knotholders.cpp | 7 + src/ui/toolbar/connector-toolbar.cpp | 375 ++-- src/ui/toolbar/connector-toolbar.h | 66 +- src/ui/tools/connector-tool-knotholders.cpp | 491 +++++ src/ui/tools/connector-tool-knotholders.h | 180 ++ src/ui/tools/connector-tool.cpp | 1698 ++++++----------- src/ui/tools/connector-tool.h | 228 +-- src/ui/tools/lpe-tool.cpp | 4 +- src/ui/tools/node-tool.cpp | 7 +- src/ui/tools/pages-tool.cpp | 4 +- src/ui/widget/desktop-widget.cpp | 5 - testfiles/src/attributes-test.cpp | 15 +- testfiles/src/sp-object-tags-test.cpp | 2 + 94 files changed, 4678 insertions(+), 3204 deletions(-) create mode 100644 share/icons/Tango/scalable/actions/draw-connector-point.svg create mode 100644 share/icons/hicolor/scalable/actions/connector-jump-arc.svg create mode 100644 share/icons/hicolor/scalable/actions/connector-line.svg create mode 100644 share/icons/hicolor/scalable/actions/draw-connector-point.svg create mode 100644 share/icons/hicolor/symbolic/actions/connector-jump-arc-symbolic.svg create mode 100644 share/icons/hicolor/symbolic/actions/connector-line-symbolic.svg create mode 100644 share/icons/hicolor/symbolic/actions/draw-connector-point-symbolic.svg create mode 100644 share/icons/multicolor/symbolic/actions/connector-jump-arc-symbolic.svg create mode 100644 share/icons/multicolor/symbolic/actions/connector-line-symbolic.svg create mode 100644 share/icons/multicolor/symbolic/actions/draw-connector-point-symbolic.svg delete mode 100644 src/conn-avoid-ref.cpp delete mode 100644 src/conn-avoid-ref.h create mode 100644 src/live_effects/lpe-connector-avoid.cpp create mode 100644 src/live_effects/lpe-connector-avoid.h create mode 100644 src/live_effects/lpe-connector-line.cpp create mode 100644 src/live_effects/lpe-connector-line.h create mode 100644 src/live_effects/parameter/item-reference.cpp create mode 100644 src/live_effects/parameter/item-reference.h create mode 100644 src/live_effects/parameter/item.cpp create mode 100644 src/live_effects/parameter/item.h delete mode 100644 src/object/sp-conn-end-pair.cpp delete mode 100644 src/object/sp-conn-end-pair.h delete mode 100644 src/object/sp-conn-end.cpp delete mode 100644 src/object/sp-conn-end.h create mode 100644 src/object/sp-point.cpp create mode 100644 src/object/sp-point.h create mode 100644 src/ui/tools/connector-tool-knotholders.cpp create mode 100644 src/ui/tools/connector-tool-knotholders.h diff --git a/po/POTFILES.src.in b/po/POTFILES.src.in index ec4a0d8361..38d30c08c6 100644 --- a/po/POTFILES.src.in +++ b/po/POTFILES.src.in @@ -164,6 +164,8 @@ ${_build_dir}/share/templates/templates.h ../src/live_effects/lpe-bspline.cpp ../src/live_effects/lpe-circle_with_radius.cpp ../src/live_effects/lpe-clone-original.cpp +../src/live_effects/lpe-connector-line.cpp +../src/live_effects/lpe-connector-line.h ../src/live_effects/lpe-constructgrid.cpp ../src/live_effects/lpe-copy_rotate.cpp ../src/live_effects/lpe-curvestitch.cpp @@ -211,6 +213,7 @@ ${_build_dir}/share/templates/templates.h ../src/live_effects/parameter/enum.h ../src/live_effects/parameter/enumarray.h ../src/live_effects/parameter/fontbutton.cpp +../src/live_effects/parameter/item.cpp ../src/live_effects/parameter/nodesatellitesarray.cpp ../src/live_effects/parameter/originalpath.cpp ../src/live_effects/parameter/originalsatellite.cpp @@ -366,6 +369,7 @@ ${_build_dir}/share/templates/templates.h ../src/ui/tools/booleans-tool.cpp ../src/ui/tools/box3d-tool.cpp ../src/ui/tools/calligraphic-tool.cpp +../src/ui/tools/connector-tool-knotholders.cpp ../src/ui/tools/connector-tool.cpp ../src/ui/tools/dropper-tool.cpp ../src/ui/tools/eraser-tool.cpp diff --git a/share/icons/Tango/scalable/actions/draw-connector-point.svg b/share/icons/Tango/scalable/actions/draw-connector-point.svg new file mode 100644 index 0000000000..6ee8047c61 --- /dev/null +++ b/share/icons/Tango/scalable/actions/draw-connector-point.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/share/icons/hicolor/scalable/actions/connector-jump-arc.svg b/share/icons/hicolor/scalable/actions/connector-jump-arc.svg new file mode 100644 index 0000000000..f46f3b081f --- /dev/null +++ b/share/icons/hicolor/scalable/actions/connector-jump-arc.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/share/icons/hicolor/scalable/actions/connector-line.svg b/share/icons/hicolor/scalable/actions/connector-line.svg new file mode 100644 index 0000000000..b96f0ea70c --- /dev/null +++ b/share/icons/hicolor/scalable/actions/connector-line.svg @@ -0,0 +1,119 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/share/icons/hicolor/scalable/actions/draw-connector-point.svg b/share/icons/hicolor/scalable/actions/draw-connector-point.svg new file mode 100644 index 0000000000..6ee8047c61 --- /dev/null +++ b/share/icons/hicolor/scalable/actions/draw-connector-point.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/share/icons/hicolor/symbolic/actions/connector-jump-arc-symbolic.svg b/share/icons/hicolor/symbolic/actions/connector-jump-arc-symbolic.svg new file mode 100644 index 0000000000..69b4c63e84 --- /dev/null +++ b/share/icons/hicolor/symbolic/actions/connector-jump-arc-symbolic.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/share/icons/hicolor/symbolic/actions/connector-line-symbolic.svg b/share/icons/hicolor/symbolic/actions/connector-line-symbolic.svg new file mode 100644 index 0000000000..6ebae50c47 --- /dev/null +++ b/share/icons/hicolor/symbolic/actions/connector-line-symbolic.svg @@ -0,0 +1,150 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + diff --git a/share/icons/hicolor/symbolic/actions/draw-connector-point-symbolic.svg b/share/icons/hicolor/symbolic/actions/draw-connector-point-symbolic.svg new file mode 100644 index 0000000000..6ee8047c61 --- /dev/null +++ b/share/icons/hicolor/symbolic/actions/draw-connector-point-symbolic.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/share/icons/multicolor/symbolic/actions/connector-jump-arc-symbolic.svg b/share/icons/multicolor/symbolic/actions/connector-jump-arc-symbolic.svg new file mode 100644 index 0000000000..69b4c63e84 --- /dev/null +++ b/share/icons/multicolor/symbolic/actions/connector-jump-arc-symbolic.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/share/icons/multicolor/symbolic/actions/connector-line-symbolic.svg b/share/icons/multicolor/symbolic/actions/connector-line-symbolic.svg new file mode 100644 index 0000000000..fdb81546a1 --- /dev/null +++ b/share/icons/multicolor/symbolic/actions/connector-line-symbolic.svg @@ -0,0 +1,78 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + diff --git a/share/icons/multicolor/symbolic/actions/draw-connector-point-symbolic.svg b/share/icons/multicolor/symbolic/actions/draw-connector-point-symbolic.svg new file mode 100644 index 0000000000..6ee8047c61 --- /dev/null +++ b/share/icons/multicolor/symbolic/actions/draw-connector-point-symbolic.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/share/ui/toolbar-connector.ui b/share/ui/toolbar-connector.ui index 15b7b1d2e1..3582441fc7 100644 --- a/share/ui/toolbar-connector.ui +++ b/share/ui/toolbar-connector.ui @@ -1,185 +1,150 @@ - + - - 100 - 1 + 10 + 1 + 100 - - 10 - 1000 - 10 - 100 - - + + 10 + 1 100 + + + 10 1 + 100 + + 10 + 1 + 100 start - center True + center - - center - True - True - Make connectors avoid selected objects + + draw-path + Selecting and drawing connected lines False - - - connector-avoid - - - - center - True - True - Make connectors ignore selected objects + + draw-connector-point + Creating and moving sub-points False - - - connector-ignore - - - - center - True - True - Make connector orthogonal or polyline + + + + + connector-avoid + Make connector avoid or ignore selected objects False - - - connector-orthogonal - - - + + connector-orthogonal + Make connector orthogonal or polyline + False - + + + + The amount of connectors curvature + Curve: 5 - Curvature: - + + curvature_adj + 0.10 True - 5 0.000 - _curvature_adj - 0.10 + 5 - - The amount of space left around objects by auto-routing connectors + + The number of steps to automatically add + Steps: 5 - Spacing: - + + steps_adj + 0.10 True + 0.000 5 - 0 - _spacing_adj - 0.10 - 0.01 - - center - True - True - Nicely arrange selected connector network - False - + + The amount of space left around objects by auto-routing connectors - - distribute-graph + + Spacing: + 5 + + + + + spacing_adj + 0.10 + True + 0 + 0.01 + 5 - - Ideal length for connectors when layout is applied - + + The size of the jumps as lines cross + Jump: 5 - Length: - + + jump_size_adj + 0.10 True + 0 7 - 0 - _length_adj - 0.10 - - center - True - True - Make connectors with end-markers (arrows) point downwards + + connector-jump-arc + The type of jump to make False - - - - distribute-graph-directed - - - - - - - center - True - True - Do not allow overlapping shapes - False - - - - distribute-remove-overlaps - -