diff --git a/FlatCAMApp.py b/FlatCAMApp.py
index dbf85f50..3d35fccc 100644
--- a/FlatCAMApp.py
+++ b/FlatCAMApp.py
@@ -7358,10 +7358,6 @@ class App(QtCore.QObject):
"""
self.report_usage("on_jump_to()")
- # if self.is_legacy is True:
- # self.inform.emit(_("Not available with the current Graphic Engine Legacy(2D)."))
- # return
-
if not custom_location:
dia_box_location = None
@@ -7375,17 +7371,29 @@ class App(QtCore.QObject):
else:
dia_box_location = None
- dia_box = Dialog_box(title=_("Jump to ..."),
- label=_("Enter the coordinates in format X,Y:"),
- icon=QtGui.QIcon(self.resource_location + '/jump_to16.png'),
- initial_text=dia_box_location)
+ # dia_box = Dialog_box(title=_("Jump to ..."),
+ # label=_("Enter the coordinates in format X,Y:"),
+ # icon=QtGui.QIcon(self.resource_location + '/jump_to16.png'),
+ # initial_text=dia_box_location)
+
+ dia_box = DialogBoxRadio(title=_("Jump to ..."),
+ label=_("Enter the coordinates in format X,Y:"),
+ icon=QtGui.QIcon(self.resource_location + '/jump_to16.png'),
+ initial_text=dia_box_location)
if dia_box.ok is True:
try:
location = eval(dia_box.location)
+
if not isinstance(location, tuple):
self.inform.emit(_("Wrong coordinates. Enter coordinates in format: X,Y"))
return
+
+ if dia_box.reference == 'rel':
+ rel_x = self.mouse[0] + location[0]
+ rel_y = self.mouse[1] + location[1]
+ location = (rel_x, rel_y)
+
except Exception:
return
else:
diff --git a/README.md b/README.md
index 746de8cc..dbdccc80 100644
--- a/README.md
+++ b/README.md
@@ -12,6 +12,7 @@ CAD program, and create G-Code for Isolation routing.
16.12.2019
- in Geometry Editor added support for Jump To function such as that it works within the Editor Tools themselves. For now it works only in absolute jumps
+- modified the Jump To method such that now allows relative jump from the current mouse location
15.12.2019
diff --git a/flatcamGUI/GUIElements.py b/flatcamGUI/GUIElements.py
index 133b39e0..21068200 100644
--- a/flatcamGUI/GUIElements.py
+++ b/flatcamGUI/GUIElements.py
@@ -2230,6 +2230,72 @@ class Dialog_box(QtWidgets.QWidget):
self.readyToEdit = True
+class DialogBoxRadio(QtWidgets.QDialog):
+ def __init__(self, title=None, label=None, icon=None, initial_text=None):
+ """
+
+ :param title: string with the window title
+ :param label: string with the message inside the dialog box
+ """
+ super(DialogBoxRadio, self).__init__()
+ if initial_text is None:
+ self.location = str((0, 0))
+ else:
+ self.location = initial_text
+
+ self.ok = False
+
+ self.setWindowIcon(icon)
+ self.setWindowTitle(str(title))
+
+ self.form = QtWidgets.QFormLayout(self)
+
+ self.form.addRow(QtWidgets.QLabel(''))
+
+ self.wdg_label = QtWidgets.QLabel('%s' % str(label))
+ self.form.addRow(self.wdg_label)
+
+ self.ref_label = QtWidgets.QLabel('%s:' % _("Reference"))
+ self.ref_label.setToolTip(
+ _("The reference can be:\n"
+ "- Absolute -> the reference point is point (0,0)\n"
+ "- Relative -> the reference point is the mouse position before Jump")
+ )
+ self.ref_radio = RadioSet([
+ {"label": _("Abs"), "value": "abs"},
+ {"label": _("Relative"), "value": "rel"}
+ ], orientation='horizontal', stretch=False)
+ self.ref_radio.set_value('abs')
+ self.form.addRow(self.ref_label, self.ref_radio)
+
+ self.loc_label = QtWidgets.QLabel('%s:' % _("Location"))
+ self.loc_label.setToolTip(
+ _("The Location value is a tuple (x,y).\n"
+ "If the reference is Absolute then the Jump will be at the position (x,y).\n"
+ "If the reference is Relative then the Jump will be at the (x,y) distance\n"
+ "from the current mouse location point.")
+ )
+ self.lineEdit = EvalEntry()
+ self.lineEdit.setText(str(self.location).replace('(', '').replace(')', ''))
+ self.form.addRow(self.loc_label, self.lineEdit)
+
+ self.button_box = QtWidgets.QDialogButtonBox(QtWidgets.QDialogButtonBox.Ok | QtWidgets.QDialogButtonBox.Cancel,
+ Qt.Horizontal, parent=self)
+ self.form.addRow(self.button_box)
+
+ self.button_box.accepted.connect(self.accept)
+ self.button_box.rejected.connect(self.reject)
+
+ self.readyToEdit = True
+
+ if self.exec_() == QtWidgets.QDialog.Accepted:
+ self.ok = True
+ self.location = self.lineEdit.text()
+ self.reference = self.ref_radio.get_value()
+ else:
+ self.ok = False
+
+
class _BrowserTextEdit(QTextEdit):
def __init__(self, version):