diff --git a/FlatCAMApp.py b/FlatCAMApp.py index 0804b646..b363fbce 100644 --- a/FlatCAMApp.py +++ b/FlatCAMApp.py @@ -415,6 +415,9 @@ class App(QtCore.QObject): "global_serial": 0, "global_stats": dict(), "global_tabs_detachable": True, + "global_jump_ref": 'abs', + + # General "global_graphic_engine": '3D', "global_app_level": 'b', "global_portable": False, @@ -1678,6 +1681,7 @@ class App(QtCore.QObject): self.mr = None self.mdc = None self.mp_zc = None + self.kp = None # Matplotlib axis self.axes = None @@ -7384,7 +7388,8 @@ class App(QtCore.QObject): 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) + initial_text=dia_box_location, + reference=self.defaults['global_jump_ref']) if dia_box.ok is True: try: @@ -7398,7 +7403,7 @@ class App(QtCore.QObject): rel_x = self.mouse[0] + location[0] rel_y = self.mouse[1] + location[1] location = (rel_x, rel_y) - + self.defaults['global_jump_ref'] = dia_box.reference except Exception: return else: diff --git a/README.md b/README.md index 1f8a04b3..d809b995 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,8 @@ CAD program, and create G-Code for Isolation routing. - added new parameters to improve Gerber parsing - small optimizations in the Preferences UI +- the Jump To function reference is now saving it's last used value +- added the ability to use the Jump To method in the Gerber Editor 17.12.2019 diff --git a/flatcamEditors/FlatCAMGeoEditor.py b/flatcamEditors/FlatCAMGeoEditor.py index aad21d96..d70828f8 100644 --- a/flatcamEditors/FlatCAMGeoEditor.py +++ b/flatcamEditors/FlatCAMGeoEditor.py @@ -1880,7 +1880,6 @@ class DrawTool(object): return "" def on_key(self, key): - # Jump to coords if key == QtCore.Qt.Key_J or key == 'J': self.draw_app.app.on_jump_to() diff --git a/flatcamEditors/FlatCAMGrbEditor.py b/flatcamEditors/FlatCAMGrbEditor.py index 1779e8c5..d05ae8fe 100644 --- a/flatcamEditors/FlatCAMGrbEditor.py +++ b/flatcamEditors/FlatCAMGrbEditor.py @@ -139,7 +139,9 @@ class DrawTool(object): return "" def on_key(self, key): - return None + # Jump to coords + if key == QtCore.Qt.Key_J or key == 'J': + self.draw_app.app.on_jump_to() def utility_geometry(self, data=None): return None @@ -874,9 +876,11 @@ class FCRegion(FCShapeTool): except Exception as e: log.debug("FlatCAMGrbEditor.FCRegion --> %s" % str(e)) - self.cursor = QtGui.QCursor(QtGui.QPixmap(self.app.resource_location + '/aero.png')) + self.cursor = QtGui.QCursor(QtGui.QPixmap(self.draw_app.app.resource_location + '/aero.png')) QtGui.QGuiApplication.setOverrideCursor(self.cursor) + self.draw_app.app.jump_signal.connect(lambda x: self.draw_app.update_utility_geometry(data=x)) + self.draw_app.app.inform.emit(_('Corner Mode 1: 45 degrees ...')) self.start_msg = _("Click on 1st point ...") @@ -1064,8 +1068,10 @@ class FCRegion(FCShapeTool): self.geometry = DrawToolShape(new_geo_el) self.draw_app.in_action = False self.complete = True - self.draw_app.app.inform.emit('[success] %s' % - _("Done.")) + + self.draw_app.app.jump_signal.disconnect() + + self.draw_app.app.inform.emit('[success] %s' % _("Done.")) def clean_up(self): self.draw_app.selected = [] @@ -1073,6 +1079,10 @@ class FCRegion(FCShapeTool): self.draw_app.plot_all() def on_key(self, key): + # Jump to coords + if key == QtCore.Qt.Key_J or key == 'J': + self.draw_app.app.on_jump_to() + if key == 'Backspace' or key == QtCore.Qt.Key_Backspace: if len(self.points) > 0: if self.draw_app.bend_mode == 5: @@ -1148,9 +1158,12 @@ class FCTrack(FCRegion): except Exception as e: log.debug("FlatCAMGrbEditor.FCTrack.__init__() --> %s" % str(e)) - self.cursor = QtGui.QCursor(QtGui.QPixmap(self.app.resource_location + '/aero_path%s.png' % self.draw_app.bend_mode)) + self.cursor = QtGui.QCursor(QtGui.QPixmap(self.draw_app.app.resource_location + + '/aero_path%s.png' % self.draw_app.bend_mode)) QtGui.QGuiApplication.setOverrideCursor(self.cursor) + self.draw_app.app.jump_signal.connect(lambda x: self.draw_app.update_utility_geometry(data=x)) + self.draw_app.app.inform.emit(_('Track Mode 1: 45 degrees ...')) def make(self): @@ -1168,8 +1181,10 @@ class FCTrack(FCRegion): self.draw_app.in_action = False self.complete = True - self.draw_app.app.inform.emit('[success] %s' % - _("Done.")) + + self.draw_app.app.jump_signal.disconnect() + + self.draw_app.app.inform.emit('[success] %s' % _("Done.")) def clean_up(self): self.draw_app.selected = [] @@ -1287,6 +1302,10 @@ class FCTrack(FCRegion): self.draw_app.draw_utility_geometry(geo=geo) return _("Backtracked one point ...") + # Jump to coords + if key == QtCore.Qt.Key_J or key == 'J': + self.draw_app.app.on_jump_to() + if key == 'T' or key == QtCore.Qt.Key_T: try: QtGui.QGuiApplication.restoreOverrideCursor() @@ -1396,6 +1415,8 @@ class FCDisc(FCShapeTool): self.draw_app.app.inform.emit(_("Click on Center point ...")) + self.draw_app.app.jump_signal.connect(lambda x: self.draw_app.update_utility_geometry(data=x)) + self.steps_per_circ = self.draw_app.app.defaults["gerber_circle_steps"] def click(self, point): @@ -1442,8 +1463,10 @@ class FCDisc(FCShapeTool): self.draw_app.in_action = False self.complete = True - self.draw_app.app.inform.emit('[success] %s' % - _("Done.")) + + self.draw_app.app.jump_signal.disconnect() + + self.draw_app.app.inform.emit('[success] %s' % _("Done.")) def clean_up(self): self.draw_app.selected = [] @@ -1490,6 +1513,7 @@ class FCSemiDisc(FCShapeTool): self.storage_obj = self.draw_app.storage_dict['0']['geometry'] self.steps_per_circ = self.draw_app.app.defaults["gerber_circle_steps"] + self.draw_app.app.jump_signal.connect(lambda x: self.draw_app.update_utility_geometry(data=x)) def click(self, point): self.points.append(point) @@ -1523,6 +1547,10 @@ class FCSemiDisc(FCShapeTool): self.direction = 'cw' if self.direction == 'ccw' else 'ccw' return '%s: %s' % (_('Direction'), self.direction.upper()) + # Jump to coords + if key == QtCore.Qt.Key_J or key == 'J': + self.draw_app.app.on_jump_to() + if key == 'M' or key == QtCore.Qt.Key_M: # delete the possible points made before this action; we want to start anew self.points = [] @@ -1700,8 +1728,10 @@ class FCSemiDisc(FCShapeTool): self.draw_app.in_action = False self.complete = True - self.draw_app.app.inform.emit('[success] %s' % - _("Done.")) + + self.draw_app.app.jump_signal.disconnect() + + self.draw_app.app.inform.emit('[success] %s' % _("Done.")) def clean_up(self): self.draw_app.selected = [] @@ -4517,6 +4547,8 @@ class FlatCAMGrbEditor(QtCore.QObject): self.snap_x = x self.snap_y = y + self.app.mouse = [x, y] + # update the position label in the infobar since the APP mouse event handlers are disconnected self.app.ui.position_label.setText("    X: %.4f   " "Y: %.4f" % (x, y)) diff --git a/flatcamGUI/GUIElements.py b/flatcamGUI/GUIElements.py index 96fa793d..f0d7df81 100644 --- a/flatcamGUI/GUIElements.py +++ b/flatcamGUI/GUIElements.py @@ -2239,7 +2239,7 @@ class Dialog_box(QtWidgets.QWidget): class DialogBoxRadio(QtWidgets.QDialog): - def __init__(self, title=None, label=None, icon=None, initial_text=None): + def __init__(self, title=None, label=None, icon=None, initial_text=None, reference='abs'): """ :param title: string with the window title @@ -2258,11 +2258,6 @@ class DialogBoxRadio(QtWidgets.QDialog): 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" @@ -2273,10 +2268,15 @@ class DialogBoxRadio(QtWidgets.QDialog): {"label": _("Abs"), "value": "abs"}, {"label": _("Relative"), "value": "rel"} ], orientation='horizontal', stretch=False) - self.ref_radio.set_value('abs') + self.ref_radio.set_value(reference) self.form.addRow(self.ref_label, self.ref_radio) - self.loc_label = QtWidgets.QLabel('%s:' % _("Location")) + self.form.addRow(QtWidgets.QLabel('')) + + self.wdg_label = QtWidgets.QLabel('%s' % str(label)) + self.form.addRow(self.wdg_label) + + 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"