diff --git a/diylc/diylc-library/lib/diylc-core.jar b/diylc/diylc-library/lib/diylc-core.jar
index a4cc5552..748526e8 100644
Binary files a/diylc/diylc-library/lib/diylc-core.jar and b/diylc/diylc-library/lib/diylc-core.jar differ
diff --git a/diylc/diylc-library/src/org/diylc/components/connectivity/CutLine.java b/diylc/diylc-library/src/org/diylc/components/connectivity/CutLine.java
new file mode 100644
index 00000000..bd36e2a5
--- /dev/null
+++ b/diylc/diylc-library/src/org/diylc/components/connectivity/CutLine.java
@@ -0,0 +1,169 @@
+/*
+
+ DIY Layout Creator (DIYLC).
+ Copyright (c) 2009-2018 held jointly by the individual authors.
+
+ This file is part of DIYLC.
+
+ DIYLC is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ DIYLC is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with DIYLC. If not, see .
+
+ */
+package org.diylc.components.connectivity;
+
+import java.awt.AlphaComposite;
+import java.awt.Color;
+import java.awt.Composite;
+import java.awt.Graphics2D;
+import java.awt.Point;
+
+import org.diylc.common.ObjectCache;
+import org.diylc.common.SimpleComponentTransformer;
+import org.diylc.common.OrientationHV;
+import org.diylc.components.AbstractComponent;
+import org.diylc.components.AbstractTransparentComponent;
+import org.diylc.core.ComponentState;
+import org.diylc.core.IDIYComponent;
+import org.diylc.core.IDrawingObserver;
+import org.diylc.core.Project;
+import org.diylc.core.VisibilityPolicy;
+import org.diylc.core.annotations.BomPolicy;
+import org.diylc.core.annotations.ComponentDescriptor;
+import org.diylc.core.annotations.EditableProperty;
+import org.diylc.core.measures.Size;
+import org.diylc.core.measures.SizeUnit;
+
+@ComponentDescriptor(name = "Cut Line", category = "Connectivity", author = "Branislav Stojkovic", description = "Cut line", instanceNamePrefix = "CL", stretchable = false, zOrder = IDIYComponent.COMPONENT, bomPolicy = BomPolicy.NEVER_SHOW, autoEdit = false, transformer = SimpleComponentTransformer.class)
+public class CutLine extends AbstractTransparentComponent {
+
+ private static final long serialVersionUID = 1L;
+
+ public static Size WIDTH = new Size(0.125d, SizeUnit.in);
+ public static Size LENGTH = new Size(3.125d, SizeUnit.in);
+ public static Color COLOR = Color.black;
+
+ private Size width = WIDTH;
+ private Size length = LENGTH;
+ private Color color = COLOR;
+ private Point point = new Point(0, 0);
+ private OrientationHV orientation = OrientationHV.VERTICAL;
+
+ @Override
+ public void draw(Graphics2D g2d, ComponentState componentState,
+ boolean outlineMode, Project project,
+ IDrawingObserver drawingObserver) {
+ if (checkPointsClipped(g2d.getClip())) {
+ return;
+ }
+ int w = getClosestOdd((int) getWidth().convertToPixels());
+ int l = getClosestOdd((int) getLength().convertToPixels());
+ g2d.setColor(componentState == ComponentState.SELECTED
+ || componentState == ComponentState.DRAGGING ? SELECTION_COLOR
+ : color);
+ g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(w));
+
+ Composite oldComposite = g2d.getComposite();
+ if (alpha < MAX_ALPHA) {
+ g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha / MAX_ALPHA));
+ }
+
+ if (getOrientation() == OrientationHV.HORIZONTAL)
+ g2d.drawLine(point.x, point.y, point.x + l, point.y);
+ else
+ g2d.drawLine(point.x, point.y, point.x, point.y + l);
+
+ g2d.setComposite(oldComposite);
+ }
+
+ @Override
+ public void drawIcon(Graphics2D g2d, int width, int height) {
+ g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(2));
+ g2d.setColor(COLOR);
+ g2d.drawLine(width / 2, height - 2, width / 2, 1);
+ }
+
+ @EditableProperty
+ public Size getWidth() {
+ return width;
+ }
+
+ public void setWidth(Size width) {
+ this.width = width;
+ }
+
+ @EditableProperty
+ public Size getLength() {
+ return length;
+ }
+
+ public void setLength(Size length) {
+ this.length = length;
+ }
+
+ @EditableProperty
+ public OrientationHV getOrientation() {
+ return orientation;
+ }
+
+ public void setOrientation(OrientationHV orientation) {
+ this.orientation = orientation;
+ }
+
+ @Override
+ public String getName() {
+ return super.getName();
+ }
+
+ @Override
+ public int getControlPointCount() {
+ return 1;
+ }
+
+ @Override
+ public boolean isControlPointSticky(int index) {
+ return false;
+ }
+
+ @Override
+ public VisibilityPolicy getControlPointVisibilityPolicy(int index) {
+ return VisibilityPolicy.NEVER;
+ }
+
+ @Override
+ public Point getControlPoint(int index) {
+ return point;
+ }
+
+ @Override
+ public void setControlPoint(Point point, int index) {
+ this.point.setLocation(point);
+ }
+
+ @EditableProperty(name = "Color")
+ public Color getColor() {
+ return color;
+ }
+
+ public void setColor(Color color) {
+ this.color = color;
+ }
+
+ @Override
+ public Void getValue() {
+ return null;
+ }
+
+ @Override
+ public void setValue(Void value) {
+ }
+}
diff --git a/diylc/diylc-library/src/org/diylc/components/transform/TrimmerTransformer.java b/diylc/diylc-library/src/org/diylc/components/transform/TrimmerTransformer.java
new file mode 100644
index 00000000..0a182376
--- /dev/null
+++ b/diylc/diylc-library/src/org/diylc/components/transform/TrimmerTransformer.java
@@ -0,0 +1,94 @@
+//package org.diylc.components.transform;
+//
+//import java.awt.Point;
+//import java.awt.geom.AffineTransform;
+//
+//import org.diylc.common.IComponentTransformer;
+//import org.diylc.common.Orientation;
+//import org.diylc.components.passive.TrimmerPotentiometer;
+//import org.diylc.core.IDIYComponent;
+//
+//public class TrimmerTransformer implements IComponentTransformer {
+//
+// @Override
+// public boolean canRotate(IDIYComponent> component) {
+// return component.getClass().equals(TrimmerPotentiometer.class);
+// }
+//
+// @Override
+// public boolean canMirror(IDIYComponent> component) {
+// return component.getClass().equals(TrimmerPotentiometer.class);
+// }
+//
+// @Override
+// public boolean mirroringChangesCircuit() {
+// return true;
+// }
+//
+// @Override
+// public void rotate(IDIYComponent> component, Point center, int direction) {
+// AffineTransform rotate = AffineTransform.getRotateInstance(Math.PI / 2 * direction, center.x, center.y);
+// for (int index = 0; index < component.getControlPointCount(); index++) {
+// Point p = new Point(component.getControlPoint(index));
+// rotate.transform(p, p);
+// component.setControlPoint(p, index);
+// }
+//
+// TrimmerPotentiometer potentiometer = (TrimmerPotentiometer) component;
+// Orientation o = potentiometer.getOrientation();
+// int oValue = o.ordinal();
+// oValue += direction;
+// if (oValue < 0)
+// oValue = Orientation.values().length - 1;
+// if (oValue >= Orientation.values().length)
+// oValue = 0;
+// o = Orientation.values()[oValue];
+// potentiometer.setOrientation(o);
+// }
+//
+// @SuppressWarnings("incomplete-switch")
+// @Override
+// public void mirror(IDIYComponent> component, Point center, int direction) {
+// TrimmerPotentiometer potentiometer = (TrimmerPotentiometer) component;
+// int dx = center.x - potentiometer.getControlPoint(1).x;
+// int dy = center.y - potentiometer.getControlPoint(1).y;
+// if (direction == IComponentTransformer.HORIZONTAL) {
+// Orientation o = potentiometer.getOrientation();
+// switch (o) {
+// case _90:
+// o = Orientation._270;
+// break;
+// case _270:
+// o = Orientation._90;
+// }
+//
+// for (int i = 0; i < potentiometer.getControlPointCount(); i++) {
+// Point p = potentiometer.getControlPoint(i);
+// potentiometer
+// .setControlPoint(
+// new Point(p.x + 2 * dx, p.y + (potentiometer.getControlPoint(2).y - potentiometer.getControlPoint(0).y)),
+// i);
+// }
+//
+// potentiometer.setOrientation(o);
+// } else {
+// Orientation o = potentiometer.getOrientation();
+// switch (o) {
+// case DEFAULT:
+// o = Orientation._180;
+// break;
+// case _180:
+// o = Orientation.DEFAULT;
+// }
+//
+// for (int i = 0; i < potentiometer.getControlPointCount(); i++) {
+// Point p = potentiometer.getControlPoint(i);
+// potentiometer
+// .setControlPoint(new Point(p.x + (potentiometer.getControlPoint(2).x - potentiometer.getControlPoint(0).x),
+// p.y + 2 * dy), i);
+// }
+//
+// potentiometer.setOrientation(o);
+// }
+// }
+//}
diff --git a/diylc/diylc-swing/.classpath b/diylc/diylc-swing/.classpath
index 925f1004..025315bc 100644
--- a/diylc/diylc-swing/.classpath
+++ b/diylc/diylc-swing/.classpath
@@ -14,7 +14,7 @@
-
+
diff --git a/diylc/diylc-swing/DIYLCStarter.launch b/diylc/diylc-swing/DIYLCStarter.launch
index 2d95bedf..6d1af050 100644
--- a/diylc/diylc-swing/DIYLCStarter.launch
+++ b/diylc/diylc-swing/DIYLCStarter.launch
@@ -9,7 +9,6 @@
-
diff --git a/diylc/diylc-swing/lib/diylc-core.jar b/diylc/diylc-swing/lib/diylc-core.jar
index 004ee6f7..748526e8 100644
Binary files a/diylc/diylc-swing/lib/diylc-core.jar and b/diylc/diylc-swing/lib/diylc-core.jar differ
diff --git a/diylc/diylc-swing/library/main.jar b/diylc/diylc-swing/library/main.jar
index 12bac425..e6a597da 100644
Binary files a/diylc/diylc-swing/library/main.jar and b/diylc/diylc-swing/library/main.jar differ
diff --git a/diylc/diylc-swing/update.xml b/diylc/diylc-swing/update.xml
index 2ce39730..df812549 100644
--- a/diylc/diylc-swing/update.xml
+++ b/diylc/diylc-swing/update.xml
@@ -1822,6 +1822,10 @@
NEW_FEATURE
Using right click to draw a selection rectangle doesn't move objects under the cursor (useful for selecting multiple components that have a big board below)
+
+ NEW_FEATURE
+ "Cut Line" component added to designate where a custom eyelet/turret boards needs to be cut
+
IMPROVEMENT
Increased padding between schematic symbols and their labels