From c49ee7d27df9825905d76a6d45d64b578e725102 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Wed, 17 Apr 2019 16:17:12 +0300 Subject: [PATCH] - added custom mouse cursors for some tools in Gerber Editor --- README.md | 1 + flatcamEditors/FlatCAMGrbEditor.py | 58 ++++++++++++++++++++++++++--- share/aero.png | Bin 0 -> 2710 bytes share/aero_array.png | Bin 0 -> 2713 bytes share/aero_buffer.png | Bin 0 -> 2540 bytes share/aero_circle.png | Bin 0 -> 2725 bytes share/aero_path.png | Bin 0 -> 2712 bytes 7 files changed, 53 insertions(+), 6 deletions(-) create mode 100644 share/aero.png create mode 100644 share/aero_array.png create mode 100644 share/aero_buffer.png create mode 100644 share/aero_circle.png create mode 100644 share/aero_path.png diff --git a/README.md b/README.md index 2398e87b..28f29376 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,7 @@ CAD program, and create G-Code for Isolation routing. - Gerber Editor: added some messages to warn user if no selection exists when trying to do aperture deletion or aperture geometry deletion - fixed version check +- added custom mouse cursors for some tools in Gerber Editor 16.04.2019 diff --git a/flatcamEditors/FlatCAMGrbEditor.py b/flatcamEditors/FlatCAMGrbEditor.py index fee5f331..71dbae67 100644 --- a/flatcamEditors/FlatCAMGrbEditor.py +++ b/flatcamEditors/FlatCAMGrbEditor.py @@ -36,6 +36,13 @@ class FCPad(FCShapeTool): self.name = 'pad' self.draw_app = draw_app + try: + QtGui.QGuiApplication.restoreOverrideCursor() + except: + pass + self.cursor = QtGui.QCursor(QtGui.QPixmap('share/aero_circle.png')) + QtGui.QGuiApplication.setOverrideCursor(self.cursor) + try: self.radius = float(self.draw_app.storage_dict[self.draw_app.last_aperture_selected]['size']) / 2 except KeyError: @@ -226,6 +233,13 @@ class FCPadArray(FCShapeTool): else: self.dont_execute = False + try: + QtGui.QGuiApplication.restoreOverrideCursor() + except: + pass + self.cursor = QtGui.QCursor(QtGui.QPixmap('share/aero_array.png')) + QtGui.QGuiApplication.setOverrideCursor(self.cursor) + self.storage_obj = self.draw_app.storage_dict[self.draw_app.last_aperture_selected]['solid_geometry'] self.steps_per_circ = self.draw_app.app.defaults["geometry_circle_steps"] @@ -593,7 +607,18 @@ class FCRegion(FCShapeTool): self.gridx_size = float(self.draw_app.app.ui.grid_gap_x_entry.get_value()) self.gridy_size = float(self.draw_app.app.ui.grid_gap_y_entry.get_value()) + self.temp_points = [] + # this will store the inflexion point in the geometry + self.inter_point = None + + try: + QtGui.QGuiApplication.restoreOverrideCursor() + except: + pass + + self.cursor = QtGui.QCursor(QtGui.QPixmap('share/aero.png')) + QtGui.QGuiApplication.setOverrideCursor(self.cursor) self.start_msg = _("Click on 1st point ...") @@ -612,16 +637,18 @@ class FCRegion(FCShapeTool): self.gridy_size = float(self.draw_app.app.ui.grid_gap_y_entry.get_value()) def utility_geometry(self, data=None): + if len(self.points) == 0: + return DrawToolUtilityShape(Point(data).buffer(self.buf_val)) if len(self.points) == 1: - temp_points = [x for x in self.points] - temp_points.append(data) - return DrawToolUtilityShape(LineString(temp_points).buffer(self.buf_val, join_style=1)) + self.temp_points = [x for x in self.points] + self.temp_points.append(data) + return DrawToolUtilityShape(LineString(self.temp_points).buffer(self.buf_val, join_style=1)) if len(self.points) > 1: - temp_points = [x for x in self.points] - temp_points.append(data) - return DrawToolUtilityShape(LinearRing(temp_points).buffer(self.buf_val, join_style=1)) + self.temp_points = [x for x in self.points] + self.temp_points.append(data) + return DrawToolUtilityShape(LinearRing(self.temp_points).buffer(self.buf_val, join_style=1)) return None def make(self): @@ -657,6 +684,14 @@ class FCTrack(FCRegion): self.name = 'track' self.draw_app = draw_app + + try: + QtGui.QGuiApplication.restoreOverrideCursor() + except: + pass + self.cursor = QtGui.QCursor(QtGui.QPixmap('share/aero_path.png')) + QtGui.QGuiApplication.setOverrideCursor(self.cursor) + self.draw_app.app.inform.emit(_('Track Mode 1: 45 degrees ...')) self.mode = 1 @@ -1042,6 +1077,11 @@ class FCApertureSelect(DrawTool): self.grb_editor_app.hide_tool('all') self.grb_editor_app.hide_tool('select') + try: + QtGui.QGuiApplication.restoreOverrideCursor() + except: + pass + def set_origin(self, origin): self.origin = origin @@ -2660,8 +2700,14 @@ class FlatCAMGrbEditor(QtCore.QObject): self.app.panning_action = False else: if self.in_action is False: + try: + QtGui.QGuiApplication.restoreOverrideCursor() + except: + pass + if self.active_tool.complete is False and not isinstance(self.active_tool, FCApertureSelect): self.active_tool.complete = True + self.in_action = False self.delete_utility_geometry() self.select_tool('select') else: diff --git a/share/aero.png b/share/aero.png new file mode 100644 index 0000000000000000000000000000000000000000..a5bc59818d7cb2deedd53ed749c310edcf7921e4 GIT binary patch literal 2710 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 Q!2kdN07*qoM6N<$f{5}J_y7O^ literal 0 HcmV?d00001 diff --git a/share/aero_array.png b/share/aero_array.png new file mode 100644 index 0000000000000000000000000000000000000000..e8a4a4f48fb579f1c07086d433bd52cb134ba5e8 GIT binary patch literal 2713 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 T*)TS500000NkvXXu0mjfp7t!* literal 0 HcmV?d00001 diff --git a/share/aero_buffer.png b/share/aero_buffer.png new file mode 100644 index 0000000000000000000000000000000000000000..077ae73b445f3756180b1cc3885e0bfd7aea35e1 GIT binary patch literal 2540 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 literal 0 HcmV?d00001 diff --git a/share/aero_path.png b/share/aero_path.png new file mode 100644 index 0000000000000000000000000000000000000000..10e4a6dfc6e8a98f3a3c4d4d85d76037bcc7ecb4 GIT binary patch literal 2712 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