diff --git a/FlatCAMApp.py b/FlatCAMApp.py index d4d0e16e..c4b70b40 100644 --- a/FlatCAMApp.py +++ b/FlatCAMApp.py @@ -1038,6 +1038,7 @@ class App(QtCore.QObject): QtCore.QObject.__init__(self) self.ui = FlatCAMGUI(self) + self.on_grid_snap_triggered(state=True) theme_settings = QtCore.QSettings("Open Source", "FlatCAM") if theme_settings.contains("theme"): @@ -2153,6 +2154,8 @@ class App(QtCore.QObject): # signal emitted when a tab is closed in the Plot Area self.ui.plot_tab_area.tab_closed_signal.connect(self.on_plot_area_tab_closed) + self.ui.grid_snap_btn.triggered.connect(self.on_grid_snap_triggered) + # ##################################################################################### # ########### FINISHED CONNECTING SIGNALS ############################################# # ##################################################################################### @@ -6079,6 +6082,7 @@ class App(QtCore.QObject): self.report_usage("on_toggle_grid()") self.ui.grid_snap_btn.trigger() + self.on_grid_snap_triggered(state=True) def on_toggle_grid_lines(self): self.report_usage("on_toggle_grd_lines()") @@ -7019,6 +7023,8 @@ class App(QtCore.QObject): self.connect_toolbar_signals() self.ui.grid_snap_btn.setChecked(True) + self.on_grid_snap_triggered(state=True) + self.ui.grid_gap_x_entry.setText(str(self.defaults["global_gridx"])) self.ui.grid_gap_y_entry.setText(str(self.defaults["global_gridy"])) self.ui.snap_max_dist_entry.setText(str(self.defaults["global_snap_max"])) @@ -12350,6 +12356,12 @@ class App(QtCore.QObject): # Clear pool to free memory self.clear_pool() + def on_grid_snap_triggered(self, state): + if state: + self.ui.snap_infobar_label.setPixmap(QtGui.QPixmap(self.resource_location + '/snap_filled_16.png')) + else: + self.ui.snap_infobar_label.setPixmap(QtGui.QPixmap(self.resource_location + '/snap_16.png')) + def generate_cnc_job(self, objects): self.report_usage("generate_cnc_job()") diff --git a/FlatCAMObj.py b/FlatCAMObj.py index 6029ca31..ee1dbed6 100644 --- a/FlatCAMObj.py +++ b/FlatCAMObj.py @@ -3612,6 +3612,9 @@ class FlatCAMGeometry(FlatCAMObj, Geometry): # this variable can be updated by the Object that generates the geometry self.tool_type = 'C1' + # save here the old value for the Cut Z before it is changed by selecting a V-shape type tool in the tool table + self.old_cutz = self.app.defaults["geometry_cutz"] + # Attributes to be included in serialization # Always append to it because it carries contents # from predecessors. @@ -3949,6 +3952,10 @@ class FlatCAMGeometry(FlatCAMObj, Geometry): self.ui.addtool_from_db_btn.clicked.connect(self.on_tool_add_from_db_clicked) self.ui.apply_param_to_all.clicked.connect(self.on_apply_param_to_all_clicked) + self.ui.cutz_entry.returnPressed.connect(self.on_cut_z_changed) + + def on_cut_z_changed(self): + self.old_cutz = self.ui.cutz_entry.get_value() def set_tool_offset_visibility(self, current_row): if current_row is None: @@ -4589,6 +4596,9 @@ class FlatCAMGeometry(FlatCAMObj, Geometry): if cb_txt == 'V': idx = self.ui.geo_tools_table.cellWidget(cw_row, 3).findText(_('Iso')) self.ui.geo_tools_table.cellWidget(cw_row, 3).setCurrentIndex(idx) + else: + self.ui.cutz_entry.set_value(self.old_cutz) + self.ui_update_v_shape(tool_type_txt=self.ui.geo_tools_table.cellWidget(cw_row, 4).currentText()) def update_form(self, dict_storage): diff --git a/README.md b/README.md index d0e5efe1..25a39c1b 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,8 @@ CAD program, and create G-Code for Isolation routing. - fixed a rare issue in the generation of non-copper-region geometry started from the Gerber Object UI (selected tab) - Print function is now printing a PDF file for a selection of objects in the colors from canvas +- added an icon in the infobar that will show more clearly the status of the grid snapping +- in Geometry Object UI (selected tab) when a tool type is changed from no matter what to V-shape, the cut_z value is saved and when the tool type is changed back to something different than V-shape, this saved cut-z value is restored 19.12.2019 diff --git a/flatcamEditors/FlatCAMExcEditor.py b/flatcamEditors/FlatCAMExcEditor.py index e62275a7..dfd14965 100644 --- a/flatcamEditors/FlatCAMExcEditor.py +++ b/flatcamEditors/FlatCAMExcEditor.py @@ -2744,6 +2744,7 @@ class FlatCAMExcEditor(QtCore.QObject): # start with GRID toolbar activated if self.app.ui.grid_snap_btn.isChecked() is False: self.app.ui.grid_snap_btn.trigger() + self.app.on_grid_snap_triggered(state=True) self.app.ui.popmenu_disable.setVisible(False) self.app.ui.cmenu_newmenu.menuAction().setVisible(False) diff --git a/flatcamEditors/FlatCAMGeoEditor.py b/flatcamEditors/FlatCAMGeoEditor.py index d70828f8..0f14de33 100644 --- a/flatcamEditors/FlatCAMGeoEditor.py +++ b/flatcamEditors/FlatCAMGeoEditor.py @@ -3679,6 +3679,7 @@ class FlatCAMGeoEditor(QtCore.QObject): # start with GRID toolbar activated if self.app.ui.grid_snap_btn.isChecked() is False: self.app.ui.grid_snap_btn.trigger() + self.app.on_grid_snap_triggered(state=True) def on_buffer_tool(self): buff_tool = BufferSelectionTool(self.app, self) diff --git a/flatcamEditors/FlatCAMGrbEditor.py b/flatcamEditors/FlatCAMGrbEditor.py index d05ae8fe..86c28795 100644 --- a/flatcamEditors/FlatCAMGrbEditor.py +++ b/flatcamEditors/FlatCAMGrbEditor.py @@ -3530,6 +3530,7 @@ class FlatCAMGrbEditor(QtCore.QObject): # start with GRID toolbar activated if self.app.ui.grid_snap_btn.isChecked() is False: self.app.ui.grid_snap_btn.trigger() + self.app.on_grid_snap_triggered(state=True) # adjust the visibility of some of the canvas context menu self.app.ui.popmenu_edit.setVisible(False) diff --git a/flatcamGUI/FlatCAMGUI.py b/flatcamGUI/FlatCAMGUI.py index fc75f8a5..fbf61145 100644 --- a/flatcamGUI/FlatCAMGUI.py +++ b/flatcamGUI/FlatCAMGUI.py @@ -2149,6 +2149,10 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.fcinfo = FlatCAMInfoBar(app=self.app) self.infobar.addWidget(self.fcinfo, stretch=1) + self.snap_infobar_label = QtWidgets.QLabel() + self.snap_infobar_label.setPixmap(QtGui.QPixmap(self.app.resource_location + '/snap_16.png')) + self.infobar.addWidget(self.snap_infobar_label) + self.rel_position_label = QtWidgets.QLabel( "Dx: 0.0000   Dy: 0.0000    ") self.rel_position_label.setMinimumWidth(110) diff --git a/share/snap_16.png b/share/snap_16.png new file mode 100644 index 00000000..25bf01dd Binary files /dev/null and b/share/snap_16.png differ diff --git a/share/snap_filled_16.png b/share/snap_filled_16.png new file mode 100644 index 00000000..0db6956a Binary files /dev/null and b/share/snap_filled_16.png differ