diff --git a/FlatCAMProcess.py b/FlatCAMProcess.py index d71e62d8..1556ab4a 100644 --- a/FlatCAMProcess.py +++ b/FlatCAMProcess.py @@ -134,13 +134,13 @@ class FCVisibleProcessContainer(QtCore.QObject, FCProcessContainer): self.something_changed.connect(self.update_view) def on_done(self, proc): - self.app.log.debug("FCVisibleProcessContainer.on_done()") + # self.app.log.debug("FCVisibleProcessContainer.on_done()") super(FCVisibleProcessContainer, self).on_done(proc) self.something_changed.emit() def on_change(self, proc): - self.app.log.debug("FCVisibleProcessContainer.on_change()") + # self.app.log.debug("FCVisibleProcessContainer.on_change()") super(FCVisibleProcessContainer, self).on_change(proc) self.something_changed.emit() diff --git a/README.md b/README.md index 302b830f..ceb4c452 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,10 @@ CAD program, and create G-Code for Isolation routing. ================================================= +18.04.2019 +- Gerber Editor: added custom mouse cursors for each mode in Add Track Tool +- Gerber Editor: Poligonize Tool will first fuse polygons that touch each other and at a second try will create a polygon. The polygon will be automatically moved to Aperture '0' (regions). + 17.04.2019 - Gerber Editor: added some messages to warn user if no selection exists when trying to do aperture deletion or aperture geometry deletion diff --git a/flatcamEditors/FlatCAMGrbEditor.py b/flatcamEditors/FlatCAMGrbEditor.py index 9d23a39c..67177756 100644 --- a/flatcamEditors/FlatCAMGrbEditor.py +++ b/flatcamEditors/FlatCAMGrbEditor.py @@ -540,7 +540,6 @@ class FCPoligonize(FCShapeTool): return "" def make(self): - if not self.draw_app.selected: self.draw_app.in_action = False self.complete = True @@ -548,20 +547,22 @@ class FCPoligonize(FCShapeTool): self.draw_app.select_tool("select") return - try: - current_storage = self.draw_app.storage_dict['0']['solid_geometry'] - except KeyError: - self.draw_app.on_aperture_add(apid='0') - current_storage = self.draw_app.storage_dict['0']['solid_geometry'] - fused_geo = [Polygon(sh.geo.exterior) for sh in self.draw_app.selected] - fused_geo = MultiPolygon(fused_geo) fused_geo = fused_geo.buffer(0.0000001) + + current_storage = self.draw_app.storage_dict[self.draw_app.last_aperture_selected]['solid_geometry'] if isinstance(fused_geo, MultiPolygon): for geo in fused_geo: self.draw_app.on_grb_shape_complete(current_storage, specific_shape=DrawToolShape(geo)) else: + if len(fused_geo.interiors) == 0: + try: + current_storage = self.draw_app.storage_dict['0']['solid_geometry'] + except KeyError: + self.draw_app.on_aperture_add(apid='0') + current_storage = self.draw_app.storage_dict['0']['solid_geometry'] + self.draw_app.on_grb_shape_complete(current_storage, specific_shape=DrawToolShape(fused_geo)) self.draw_app.delete_selected() @@ -694,9 +695,9 @@ class FCRegion(FCShapeTool): else: self.inter_point = (x, old_y + self.gridy_size * mx) elif self.mode == 3: - self.inter_point = (old_x, y) - elif self.mode == 4: self.inter_point = (x, old_y) + elif self.mode == 4: + self.inter_point = (old_x, y) if self.inter_point is not None: self.temp_points.append(self.inter_point) @@ -761,9 +762,9 @@ class FCRegion(FCShapeTool): else: self.inter_point = (x, old_y + self.gridy_size * mx) elif self.mode == 3: - self.inter_point = (old_x, y) - elif self.mode == 4: self.inter_point = (x, old_y) + elif self.mode == 4: + self.inter_point = (old_x, y) self.temp_points.append(self.inter_point) self.temp_points.append(data) @@ -861,7 +862,7 @@ class FCTrack(FCRegion): QtGui.QGuiApplication.restoreOverrideCursor() except: pass - self.cursor = QtGui.QCursor(QtGui.QPixmap('share/aero_path.png')) + self.cursor = QtGui.QCursor(QtGui.QPixmap('share/aero_path1.png')) QtGui.QGuiApplication.setOverrideCursor(self.cursor) self.draw_app.app.inform.emit(_('Track Mode 1: 45 degrees ...')) @@ -950,9 +951,9 @@ class FCTrack(FCRegion): else: self.temp_points.append((x, old_y + self.gridy_size * mx)) elif self.mode == 3: - self.temp_points.append((old_x, y)) - elif self.mode == 4: self.temp_points.append((x, old_y)) + elif self.mode == 4: + self.temp_points.append((old_x, y)) else: pass @@ -973,20 +974,34 @@ class FCTrack(FCRegion): return _("Backtracked one point ...") if key == 'T' or key == QtCore.Qt.Key_T: + try: + QtGui.QGuiApplication.restoreOverrideCursor() + except: + pass if self.mode == 1: self.mode = 2 + self.cursor = QtGui.QCursor(QtGui.QPixmap('share/aero_path2.png')) + QtGui.QGuiApplication.setOverrideCursor(self.cursor) msg = _('Track Mode 2: Reverse 45 degrees ...') elif self.mode == 2: self.mode = 3 + self.cursor = QtGui.QCursor(QtGui.QPixmap('share/aero_path3.png')) + QtGui.QGuiApplication.setOverrideCursor(self.cursor) msg = _('Track Mode 3: 90 degrees ...') elif self.mode == 3: self.mode = 4 + self.cursor = QtGui.QCursor(QtGui.QPixmap('share/aero_path4.png')) + QtGui.QGuiApplication.setOverrideCursor(self.cursor) msg = _('Track Mode 4: Reverse 90 degrees ...') elif self.mode == 4: self.mode = 5 + self.cursor = QtGui.QCursor(QtGui.QPixmap('share/aero_path5.png')) + QtGui.QGuiApplication.setOverrideCursor(self.cursor) msg = _('Track Mode 5: Free angle ...') else: self.mode = 1 + self.cursor = QtGui.QCursor(QtGui.QPixmap('share/aero_path1.png')) + QtGui.QGuiApplication.setOverrideCursor(self.cursor) msg = _('Track Mode 1: 45 degrees ...') # Remove any previous utility shape @@ -997,20 +1012,34 @@ class FCTrack(FCRegion): return msg if key == 'R' or key == QtCore.Qt.Key_R: + try: + QtGui.QGuiApplication.restoreOverrideCursor() + except: + pass if self.mode == 1: self.mode = 5 + self.cursor = QtGui.QCursor(QtGui.QPixmap('share/aero_path5.png')) + QtGui.QGuiApplication.setOverrideCursor(self.cursor) msg = _('Track Mode 5: Free angle ...') elif self.mode == 5: self.mode = 4 + self.cursor = QtGui.QCursor(QtGui.QPixmap('share/aero_path4.png')) + QtGui.QGuiApplication.setOverrideCursor(self.cursor) msg = _('Track Mode 4: Reverse 90 degrees ...') elif self.mode == 4: self.mode = 3 + self.cursor = QtGui.QCursor(QtGui.QPixmap('share/aero_path3.png')) + QtGui.QGuiApplication.setOverrideCursor(self.cursor) msg = _('Track Mode 3: 90 degrees ...') elif self.mode == 3: self.mode = 2 + self.cursor = QtGui.QCursor(QtGui.QPixmap('share/aero_path2.png')) + QtGui.QGuiApplication.setOverrideCursor(self.cursor) msg = _('Track Mode 2: Reverse 45 degrees ...') else: self.mode = 1 + self.cursor = QtGui.QCursor(QtGui.QPixmap('share/aero_path1.png')) + QtGui.QGuiApplication.setOverrideCursor(self.cursor) msg = _('Track Mode 1: 45 degrees ...') # Remove any previous utility shape @@ -1477,30 +1506,26 @@ class FlatCAMGrbEditor(QtCore.QObject): self.apdim_entry = EvalEntry2() grid1.addWidget(self.apdim_entry, 4, 1) - apadd_lbl = QtWidgets.QLabel('%s' % _('Add Aperture:')) - apadd_lbl.setToolTip( - _("Add an aperture to the aperture list") + apadd_del_lbl = QtWidgets.QLabel('%s' % _('Add/Delete Aperture:')) + apadd_del_lbl.setToolTip( + _("Add/Delete an aperture in the aperture table") ) - grid1.addWidget(apadd_lbl, 5, 0) + self.apertures_box.addWidget(apadd_del_lbl) - self.addaperture_btn = QtWidgets.QPushButton(_('Go')) + hlay_ad = QtWidgets.QHBoxLayout() + self.apertures_box.addLayout(hlay_ad) + + self.addaperture_btn = QtWidgets.QPushButton(_('Add')) self.addaperture_btn.setToolTip( _( "Add a new aperture to the aperture list.") ) - grid1.addWidget(self.addaperture_btn, 5, 1) - apdelete_lbl = QtWidgets.QLabel('%s' % _('Del Aperture:')) - apdelete_lbl.setToolTip( - _( "Delete a aperture in the aperture list.\n" - "It will delete also the associated geometry.") - ) - grid1.addWidget(apdelete_lbl, 6, 0) - - self.delaperture_btn = QtWidgets.QPushButton(_('Go')) + self.delaperture_btn = QtWidgets.QPushButton(_('Delete')) self.delaperture_btn.setToolTip( _( "Delete a aperture in the aperture list") ) - grid1.addWidget(self.delaperture_btn, 6, 1) + hlay_ad.addWidget(self.addaperture_btn) + hlay_ad.addWidget(self.delaperture_btn) ### BUFFER TOOL ### diff --git a/share/aero_path.png b/share/aero_path.png deleted file mode 100644 index 10e4a6df..00000000 Binary files a/share/aero_path.png and /dev/null differ diff --git a/share/aero_path1.png b/share/aero_path1.png new file mode 100644 index 00000000..5876c48a Binary files /dev/null and b/share/aero_path1.png differ diff --git a/share/aero_path2.png b/share/aero_path2.png new file mode 100644 index 00000000..d528c860 Binary files /dev/null and b/share/aero_path2.png differ diff --git a/share/aero_path3.png b/share/aero_path3.png new file mode 100644 index 00000000..f3d7bac4 Binary files /dev/null and b/share/aero_path3.png differ diff --git a/share/aero_path4.png b/share/aero_path4.png new file mode 100644 index 00000000..4dc7b9ab Binary files /dev/null and b/share/aero_path4.png differ diff --git a/share/aero_path5.png b/share/aero_path5.png new file mode 100644 index 00000000..76e580d7 Binary files /dev/null and b/share/aero_path5.png differ