diff --git a/CHANGELOG.md b/CHANGELOG.md index 1fb85886..7f5b5b4c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,17 @@ CHANGELOG for FlatCAM beta - removed the labels in status bar that display X,Y positions and replaced it with a HUD display on canvas (combo key SHIFT+H) will toggle the display of the HUD - made the HUD work in Legacy2D mode - fixed situation when the mouse cursor is outside of the canvas and no therefore returning None values +- remade the Snap Toolbar presence; now it is always active and situated in the Status Bar +- Snap Toolbar is now visible in Fullscreen +- in Fullscreen now the Notebook is available but it will be hidden on Fullscreen launch +- fixed some minor issues (in the HUD added a separating line, missing an icon in toolbars on first launch) +- made sure that the corner snap buttons are shown only in Editors +- changed the HUD color when using Dark theme +- fix issue in Legacy2D graphic mode where the snap function was not accessible when the PlotCanvasLegacy class was created +- modified the HUD in Legacy2D when using Dark Theme to use different colors +- modified how the graphic engine change act in Preferences: now only by clicking Apply(or Save) the change will happen. And there is also a message asking for confirmation +- re-added the position labels in the status bar; they will be useful if HUD is Off (Altium does the same :) so learn from the best) + 10.05.2020 diff --git a/FlatCAMApp.py b/FlatCAMApp.py index 5864bb2a..e551d704 100644 --- a/FlatCAMApp.py +++ b/FlatCAMApp.py @@ -981,7 +981,6 @@ class App(QtCore.QObject): # ########################################################################################################### # ######################################## GUI SETTINGS SIGNALS ############################################# # ########################################################################################################### - self.ui.general_defaults_form.general_app_group.ge_radio.activated_custom.connect(self.on_app_restart) self.ui.general_defaults_form.general_app_set_group.cursor_radio.activated_custom.connect(self.on_cursor_type) # ######################################## Tools related signals ############################################ @@ -2064,18 +2063,22 @@ class App(QtCore.QObject): """ # Toolbar + + # File Toolbar Signals # self.ui.file_new_btn.triggered.connect(self.on_file_new) self.ui.file_open_btn.triggered.connect(self.on_file_openproject) self.ui.file_save_btn.triggered.connect(self.on_file_saveproject) self.ui.file_open_gerber_btn.triggered.connect(self.on_fileopengerber) self.ui.file_open_excellon_btn.triggered.connect(self.on_fileopenexcellon) + # View Toolbar Signals self.ui.clear_plot_btn.triggered.connect(self.clear_plots) self.ui.replot_btn.triggered.connect(self.plot_all) self.ui.zoom_fit_btn.triggered.connect(self.on_zoom_fit) self.ui.zoom_in_btn.triggered.connect(lambda: self.plotcanvas.zoom(1 / 1.5)) self.ui.zoom_out_btn.triggered.connect(lambda: self.plotcanvas.zoom(1.5)) + # Edit Toolbar Signals self.ui.newgeo_btn.triggered.connect(self.new_geometry_object) self.ui.newgrb_btn.triggered.connect(self.new_gerber_object) self.ui.newexc_btn.triggered.connect(self.new_excellon_object) @@ -2092,6 +2095,7 @@ class App(QtCore.QObject): self.ui.jmp_btn.triggered.connect(self.on_jump_to) self.ui.locate_btn.triggered.connect(lambda: self.on_locate(obj=self.collection.get_active())) + # Scripting Toolbar Signals self.ui.shell_btn.triggered.connect(self.toggle_shell) self.ui.new_script_btn.triggered.connect(self.on_filenewscript) self.ui.open_script_btn.triggered.connect(self.on_fileopenscript) @@ -3476,7 +3480,7 @@ class App(QtCore.QObject): # delete the absolute and relative position and messages in the infobar self.ui.position_label.setText("") - self.ui.rel_position_label.setText("") + # self.ui.rel_position_label.setText("") # Switch plot_area to preferences page self.ui.plot_tab_area.setCurrentWidget(self.book_dialog_tab) @@ -4503,14 +4507,16 @@ class App(QtCore.QObject): for tb in self.ui.findChildren(QtWidgets.QToolBar): tb.setVisible(False) - self.ui.splitter_left.setVisible(False) + self.ui.snap_toolbar.setVisible(True) # This is always visible + # self.ui.splitter_left.setVisible(False) + self.ui.splitter.setSizes([0, 1]) self.toggle_fscreen = True elif self.toggle_fscreen is True or disable is True: self.ui.setWindowFlags(flags & ~Qt.FramelessWindowHint) self.ui.setGeometry(self.x_pos, self.y_pos, self.width, self.height) self.ui.showNormal() self.restore_toolbar_view() - self.ui.splitter_left.setVisible(True) + # self.ui.splitter_left.setVisible(True) self.toggle_fscreen = False def on_toggle_plotarea(self): @@ -4573,7 +4579,6 @@ class App(QtCore.QObject): self.defaults.report_usage("on_toggle_grid()") self.ui.grid_snap_btn.trigger() - self.ui.on_grid_snap_triggered(state=True) def on_toggle_grid_lines(self): self.defaults.report_usage("on_toggle_grd_lines()") @@ -4615,7 +4620,7 @@ class App(QtCore.QObject): if self.is_legacy is False: # HACK: enabling/disabling the cursor seams to somehow update the shapes on screen # - perhaps is a bug in VisPy implementation - if self.grid_status() is True: + if self.grid_status(): self.app_cursor.enabled = False self.app_cursor.enabled = True else: @@ -5381,8 +5386,8 @@ class App(QtCore.QObject): # Set the relative position label dx = location[0] - float(self.rel_point1[0]) dy = location[1] - float(self.rel_point1[1]) - # self.ui.position_label.setText("    X: %.4f   " - # "Y: %.4f" % (location[0], location[1])) + self.ui.position_label.setText(" X: %.4f   " + "Y: %.4f " % (location[0], location[1])) # # Set the position label # # self.ui.rel_position_label.setText("Dx: %.4f   Dy: " @@ -5390,7 +5395,7 @@ class App(QtCore.QObject): units = self.defaults["units"].lower() self.plotcanvas.text_hud.text = \ - 'Dx:\t{:<.4f} [{:s}]\nDy:\t{:<.4f} [{:s}]\nX: \t{:<.4f} [{:s}]\nY: \t{:<.4f} [{:s}]'.format( + 'Dx:\t{:<.4f} [{:s}]\nDy:\t{:<.4f} [{:s}]\n\nX: \t{:<.4f} [{:s}]\nY: \t{:<.4f} [{:s}]'.format( dx, units, dy, units, location[0], units, location[1], units) self.inform.emit('[success] %s' % _("Done.")) @@ -5537,14 +5542,14 @@ class App(QtCore.QObject): self.dx = location[0] - float(self.rel_point1[0]) self.dy = location[1] - float(self.rel_point1[1]) # Set the position label - # self.ui.position_label.setText("    X: %.4f   " - # "Y: %.4f" % (location[0], location[1])) + self.ui.position_label.setText(" X: %.4f   " + "Y: %.4f " % (location[0], location[1])) # self.ui.rel_position_label.setText("Dx: %.4f   Dy: " # "%.4f    " % (self.dx, self.dy)) units = self.defaults["units"].lower() self.plotcanvas.text_hud.text = \ - 'Dx:\t{:<.4f} [{:s}]\nDy:\t{:<.4f} [{:s}]\nX: \t{:<.4f} [{:s}]\nY: \t{:<.4f} [{:s}]'.format( + 'Dx:\t{:<.4f} [{:s}]\nDy:\t{:<.4f} [{:s}]\n\nX: \t{:<.4f} [{:s}]\nY: \t{:<.4f} [{:s}]'.format( self.dx, units, self.dy, units, location[0], units, location[1], units) self.inform.emit('[success] %s' % _("Done.")) @@ -5854,7 +5859,7 @@ class App(QtCore.QObject): self.ui.plot_tab_area.addTab(self.ui.preferences_tab, _("Preferences")) # delete the absolute and relative position and messages in the infobar - # self.ui.position_label.setText("") + self.ui.position_label.setText("") # self.ui.rel_position_label.setText("") # Switch plot_area to preferences page @@ -5952,7 +5957,7 @@ class App(QtCore.QObject): # delete the absolute and relative position and messages in the infobar self.ui.position_label.setText("") - self.ui.rel_position_label.setText("") + # self.ui.rel_position_label.setText("") # Switch plot_area to preferences page self.ui.plot_tab_area.setCurrentWidget(self.tools_db_tab) @@ -6618,7 +6623,7 @@ class App(QtCore.QObject): # delete the absolute and relative position and messages in the infobar self.ui.position_label.setText("") - self.ui.rel_position_label.setText("") + # self.ui.rel_position_label.setText("") # Switch plot_area to preferences page self.ui.plot_tab_area.setCurrentWidget(self.ui.shortcuts_tab) @@ -6766,14 +6771,14 @@ class App(QtCore.QObject): self.dx = pos[0] - float(self.rel_point1[0]) self.dy = pos[1] - float(self.rel_point1[1]) - # self.ui.position_label.setText("    X: %.4f   " - # "Y: %.4f" % (pos[0], pos[1])) + self.ui.position_label.setText(" X: %.4f   " + "Y: %.4f " % (pos[0], pos[1])) # self.ui.rel_position_label.setText("Dx: %.4f   Dy: " # "%.4f    " % (self.dx, self.dy)) units = self.defaults["units"].lower() self.plotcanvas.text_hud.text = \ - 'Dx:\t{:<.4f} [{:s}]\nDy:\t{:<.4f} [{:s}]\nX: \t{:<.4f} [{:s}]\nY: \t{:<.4f} [{:s}]'.format( + 'Dx:\t{:<.4f} [{:s}]\nDy:\t{:<.4f} [{:s}]\n\nX: \t{:<.4f} [{:s}]\nY: \t{:<.4f} [{:s}]'.format( self.dx, units, self.dy, units, pos[0], units, pos[1], units) self.mouse = [pos[0], pos[1]] @@ -6826,7 +6831,7 @@ class App(QtCore.QObject): except Exception as e: log.debug("App.on_mouse_move_over_plot() - rel_point1 is not None -> %s" % str(e)) - # self.ui.position_label.setText("") + self.ui.position_label.setText("") # self.ui.rel_position_label.setText("") self.mouse = None @@ -8137,7 +8142,7 @@ class App(QtCore.QObject): # delete the absolute and relative position and messages in the infobar self.ui.position_label.setText("") - self.ui.rel_position_label.setText("") + # self.ui.rel_position_label.setText("") # first clear previous text in text editor (if any) self.text_editor_tab.code_editor.clear() @@ -8188,7 +8193,7 @@ class App(QtCore.QObject): # delete the absolute and relative position and messages in the infobar self.ui.position_label.setText("") - self.ui.rel_position_label.setText("") + # self.ui.rel_position_label.setText("") # first clear previous text in text editor (if any) self.source_editor_tab.code_editor.clear() @@ -8312,7 +8317,7 @@ class App(QtCore.QObject): # delete the absolute and relative position and messages in the infobar self.ui.position_label.setText("") - self.ui.rel_position_label.setText("") + # self.ui.rel_position_label.setText("") self.new_script_object() diff --git a/FlatCAMCommon.py b/FlatCAMCommon.py index bcd61a98..f7bfae9e 100644 --- a/FlatCAMCommon.py +++ b/FlatCAMCommon.py @@ -471,14 +471,14 @@ class ExclusionAreas(QtCore.QObject): self.app.dx = curr_pos[0] - float(self.cursor_pos[0]) self.app.dy = curr_pos[1] - float(self.cursor_pos[1]) - # self.app.ui.position_label.setText("    X: %.4f   " - # "Y: %.4f" % (curr_pos[0], curr_pos[1])) + self.app.ui.position_label.setText(" X: %.4f   " + "Y: %.4f " % (curr_pos[0], curr_pos[1])) # self.app.ui.rel_position_label.setText("Dx: %.4f   Dy: " # "%.4f    " % (self.app.dx, self.app.dy)) units = self.app.defaults["units"].lower() self.app.plotcanvas.text_hud.text = \ - 'Dx:\t{:<.4f} [{:s}]\nDy:\t{:<.4f} [{:s}]\nX: \t{:<.4f} [{:s}]\nY: \t{:<.4f} [{:s}]'.format( + 'Dx:\t{:<.4f} [{:s}]\nDy:\t{:<.4f} [{:s}]\n\nX: \t{:<.4f} [{:s}]\nY: \t{:<.4f} [{:s}]'.format( self.app.dx, units, self.app.dy, units, curr_pos[0], units, curr_pos[1], units) if self.obj_type == 'excellon': diff --git a/Utils/vispy_example.py b/Utils/vispy_example.py index a9eaee12..980d2b10 100644 --- a/Utils/vispy_example.py +++ b/Utils/vispy_example.py @@ -182,7 +182,7 @@ class MyApp(QtCore.QObject): # we don't need all the info in the tuple returned by the translate_coords() # only first 2 elements pos_canvas = [pos_canvas[0], pos_canvas[1]] - # self.ui.position_label.setText("Position: X: %.4f\tY: %.4f" % (pos_canvas[0], pos_canvas[1])) + self.ui.position_label.setText("Position: X: %.4f\tY: %.4f" % (pos_canvas[0], pos_canvas[1])) # pos_text = 'Coordinates: \nX: {:<7.4f}\nY: {:<7.4f}'.format(pos_canvas[0], pos_canvas[1]) pos_text = 'Coordinates: \nX: {:<.4f}\nY: {:<.4f}'.format(pos_canvas[0], pos_canvas[1]) self.plot.vispy_canvas.text.text = pos_text diff --git a/flatcamEditors/FlatCAMExcEditor.py b/flatcamEditors/FlatCAMExcEditor.py index 7b68f11c..cbcd55b8 100644 --- a/flatcamEditors/FlatCAMExcEditor.py +++ b/flatcamEditors/FlatCAMExcEditor.py @@ -2819,10 +2819,8 @@ class FlatCAMExcEditor(QtCore.QObject): self.tool_shape.enabled = True # self.app.app_cursor.enabled = True - self.app.ui.snap_max_dist_entry.setEnabled(True) - self.app.ui.corner_snap_btn.setEnabled(True) - self.app.ui.snap_magnet.setVisible(True) self.app.ui.corner_snap_btn.setVisible(True) + self.app.ui.snap_magnet.setVisible(True) self.app.ui.exc_editor_menu.setDisabled(False) self.app.ui.exc_editor_menu.menuAction().setVisible(True) @@ -2837,7 +2835,6 @@ 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.ui.on_grid_snap_triggered(state=True) self.app.ui.popmenu_disable.setVisible(False) self.app.ui.cmenu_newmenu.menuAction().setVisible(False) @@ -2869,30 +2866,8 @@ class FlatCAMExcEditor(QtCore.QObject): self.clear() self.app.ui.exc_edit_toolbar.setDisabled(True) - settings = QSettings("Open Source", "FlatCAM") - if settings.contains("layout"): - layout = settings.value('layout', type=str) - if layout == 'standard': - # self.app.ui.exc_edit_toolbar.setVisible(False) - - self.app.ui.snap_max_dist_entry.setEnabled(False) - self.app.ui.corner_snap_btn.setEnabled(False) - self.app.ui.snap_magnet.setVisible(False) - self.app.ui.corner_snap_btn.setVisible(False) - else: - # self.app.ui.exc_edit_toolbar.setVisible(True) - - self.app.ui.snap_max_dist_entry.setEnabled(False) - self.app.ui.corner_snap_btn.setEnabled(False) - self.app.ui.snap_magnet.setVisible(True) - self.app.ui.corner_snap_btn.setVisible(True) - else: - # self.app.ui.exc_edit_toolbar.setVisible(False) - - self.app.ui.snap_max_dist_entry.setEnabled(False) - self.app.ui.corner_snap_btn.setEnabled(False) - self.app.ui.snap_magnet.setVisible(False) - self.app.ui.corner_snap_btn.setVisible(False) + self.app.ui.corner_snap_btn.setVisible(False) + self.app.ui.snap_magnet.setVisible(False) # set the Editor Toolbar visibility to what was before entering in the Editor self.app.ui.exc_edit_toolbar.setVisible(False) if self.toolbar_old_state is False \ @@ -3807,15 +3782,15 @@ class FlatCAMExcEditor(QtCore.QObject): self.app.dy = y - self.pos[1] # # 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)) + self.app.ui.position_label.setText(" X: %.4f   " + "Y: %.4f " % (x, y)) # # update the reference position label in the infobar since the APP mouse event handlers are disconnected # self.app.ui.rel_position_label.setText("Dx: %.4f   Dy: " # "%.4f    " % (self.app.dx, self.app.dy)) units = self.app.defaults["units"].lower() - self.plotcanvas.text_hud.text = \ - 'Dx:\t{:<.4f} [{:s}]\nDy:\t{:<.4f} [{:s}]\nX: \t{:<.4f} [{:s}]\nY: \t{:<.4f} [{:s}]'.format( + self.app.plotcanvas.text_hud.text = \ + 'Dx:\t{:<.4f} [{:s}]\nDy:\t{:<.4f} [{:s}]\n\nX: \t{:<.4f} [{:s}]\nY: \t{:<.4f} [{:s}]'.format( self.app.dx, units, self.app.dy, units, x, units, y, units) # ## Utility geometry (animated) diff --git a/flatcamEditors/FlatCAMGeoEditor.py b/flatcamEditors/FlatCAMGeoEditor.py index e8d969cb..c8ded16a 100644 --- a/flatcamEditors/FlatCAMGeoEditor.py +++ b/flatcamEditors/FlatCAMGeoEditor.py @@ -3654,10 +3654,8 @@ class FlatCAMGeoEditor(QtCore.QObject): self.tool_shape.enabled = True self.app.app_cursor.enabled = True - self.app.ui.snap_max_dist_entry.setEnabled(True) - self.app.ui.corner_snap_btn.setEnabled(True) - self.app.ui.snap_magnet.setVisible(True) self.app.ui.corner_snap_btn.setVisible(True) + self.app.ui.snap_magnet.setVisible(True) self.app.ui.geo_editor_menu.setDisabled(False) self.app.ui.geo_editor_menu.menuAction().setVisible(True) @@ -3713,27 +3711,8 @@ class FlatCAMGeoEditor(QtCore.QObject): self.app.ui.geo_edit_toolbar.setDisabled(True) settings = QSettings("Open Source", "FlatCAM") - if settings.contains("layout"): - layout = settings.value('layout', type=str) - if layout == 'standard': - # self.app.ui.geo_edit_toolbar.setVisible(False) - - self.app.ui.snap_max_dist_entry.setEnabled(False) - self.app.ui.corner_snap_btn.setEnabled(False) - self.app.ui.snap_magnet.setVisible(False) - self.app.ui.corner_snap_btn.setVisible(False) - else: - # self.app.ui.geo_edit_toolbar.setVisible(True) - - self.app.ui.snap_max_dist_entry.setEnabled(False) - self.app.ui.corner_snap_btn.setEnabled(False) - else: - # self.app.ui.geo_edit_toolbar.setVisible(False) - - self.app.ui.snap_magnet.setVisible(False) - self.app.ui.corner_snap_btn.setVisible(False) - self.app.ui.snap_max_dist_entry.setEnabled(False) - self.app.ui.corner_snap_btn.setEnabled(False) + self.app.ui.corner_snap_btn.setVisible(False) + self.app.ui.snap_magnet.setVisible(False) # set the Editor Toolbar visibility to what was before entering in the Editor self.app.ui.geo_edit_toolbar.setVisible(False) if self.toolbar_old_state is False \ @@ -4110,7 +4089,6 @@ 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.ui.on_grid_snap_triggered(state=True) def on_buffer_tool(self): buff_tool = BufferSelectionTool(self.app, self) @@ -4277,16 +4255,16 @@ class FlatCAMGeoEditor(QtCore.QObject): self.app.dy = y - self.pos[1] # # 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)) + self.app.ui.position_label.setText(" X: %.4f   " + "Y: %.4f " % (x, y)) # # # update the reference position label in the infobar since the APP mouse event handlers are disconnected # self.app.ui.rel_position_label.setText("Dx: %.4f   Dy: " # "%.4f    " % (self.app.dx, self.app.dy)) units = self.app.defaults["units"].lower() - self.plotcanvas.text_hud.text = \ - 'Dx:\t{:<.4f} [{:s}]\nDy:\t{:<.4f} [{:s}]\nX: \t{:<.4f} [{:s}]\nY: \t{:<.4f} [{:s}]'.format( + self.app.plotcanvas.text_hud.text = \ + 'Dx:\t{:<.4f} [{:s}]\nDy:\t{:<.4f} [{:s}]\n\nX: \t{:<.4f} [{:s}]\nY: \t{:<.4f} [{:s}]'.format( self.app.dx, units, self.app.dy, units, x, units, y, units) if event.button == 1 and event_is_dragging and isinstance(self.active_tool, FCEraser): diff --git a/flatcamEditors/FlatCAMGrbEditor.py b/flatcamEditors/FlatCAMGrbEditor.py index d5659fbf..bd330d40 100644 --- a/flatcamEditors/FlatCAMGrbEditor.py +++ b/flatcamEditors/FlatCAMGrbEditor.py @@ -3685,10 +3685,8 @@ class FlatCAMGrbEditor(QtCore.QObject): self.shapes.enabled = True self.tool_shape.enabled = True - self.app.ui.snap_max_dist_entry.setEnabled(True) - self.app.ui.corner_snap_btn.setEnabled(True) - self.app.ui.snap_magnet.setVisible(True) self.app.ui.corner_snap_btn.setVisible(True) + self.app.ui.snap_magnet.setVisible(True) self.app.ui.grb_editor_menu.setDisabled(False) self.app.ui.grb_editor_menu.menuAction().setVisible(True) @@ -3703,7 +3701,6 @@ 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.ui.on_grid_snap_triggered(state=True) # adjust the visibility of some of the canvas context menu self.app.ui.popmenu_edit.setVisible(False) @@ -3736,29 +3733,8 @@ class FlatCAMGrbEditor(QtCore.QObject): self.app.ui.grb_edit_toolbar.setDisabled(True) settings = QSettings("Open Source", "FlatCAM") - if settings.contains("layout"): - layout = settings.value('layout', type=str) - if layout == 'standard': - # self.app.ui.exc_edit_toolbar.setVisible(False) - - self.app.ui.snap_max_dist_entry.setEnabled(False) - self.app.ui.corner_snap_btn.setEnabled(False) - self.app.ui.snap_magnet.setVisible(False) - self.app.ui.corner_snap_btn.setVisible(False) - else: - # self.app.ui.exc_edit_toolbar.setVisible(True) - - self.app.ui.snap_max_dist_entry.setEnabled(False) - self.app.ui.corner_snap_btn.setEnabled(False) - self.app.ui.snap_magnet.setVisible(True) - self.app.ui.corner_snap_btn.setVisible(True) - else: - # self.app.ui.exc_edit_toolbar.setVisible(False) - - self.app.ui.snap_max_dist_entry.setEnabled(False) - self.app.ui.corner_snap_btn.setEnabled(False) - self.app.ui.snap_magnet.setVisible(False) - self.app.ui.corner_snap_btn.setVisible(False) + self.app.ui.corner_snap_btn.setVisible(False) + self.app.ui.snap_magnet.setVisible(False) # set the Editor Toolbar visibility to what was before entering in the Editor self.app.ui.grb_edit_toolbar.setVisible(False) if self.toolbar_old_state is False \ @@ -4537,8 +4513,8 @@ class FlatCAMGrbEditor(QtCore.QObject): self.pos = (self.pos[0], self.pos[1]) if event.button == 1: - self.app.ui.rel_position_label.setText("Dx: %.4f   Dy: " - "%.4f    " % (0, 0)) + # self.app.ui.rel_position_label.setText("Dx: %.4f   Dy: " + # "%.4f    " % (0, 0)) # Selection with left mouse button if self.active_tool is not None: @@ -4550,8 +4526,7 @@ class FlatCAMGrbEditor(QtCore.QObject): self.app.defaults["global_point_clipboard_format"] % (self.decimals, self.pos[0], self.decimals, self.pos[1]) ) - self.app.inform.emit('[success] %s' % - _("Coordinates copied to clipboard.")) + self.app.inform.emit('[success] %s' % _("Coordinates copied to clipboard.")) return # Dispatch event to active_tool @@ -4780,16 +4755,16 @@ class FlatCAMGrbEditor(QtCore.QObject): self.app.dy = y - self.pos[1] # # 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)) + self.app.ui.position_label.setText(" X: %.4f   " + "Y: %.4f " % (x, y)) # # # update the reference position label in the infobar since the APP mouse event handlers are disconnected # self.app.ui.rel_position_label.setText("Dx: %.4f   Dy: " # "%.4f    " % (self.app.dx, self.app.dy)) units = self.app.defaults["units"].lower() - self.plotcanvas.text_hud.text = \ - 'Dx:\t{:<.4f} [{:s}]\nDy:\t{:<.4f} [{:s}]\nX: \t{:<.4f} [{:s}]\nY: \t{:<.4f} [{:s}]'.format( + self.app.plotcanvas.text_hud.text = \ + 'Dx:\t{:<.4f} [{:s}]\nDy:\t{:<.4f} [{:s}]\n\nX: \t{:<.4f} [{:s}]\nY: \t{:<.4f} [{:s}]'.format( self.app.dx, units, self.app.dy, units, x, units, y, units) self.update_utility_geometry(data=(x, y)) diff --git a/flatcamGUI/FlatCAMGUI.py b/flatcamGUI/FlatCAMGUI.py index aeb7b86d..078f8f9d 100644 --- a/flatcamGUI/FlatCAMGUI.py +++ b/flatcamGUI/FlatCAMGUI.py @@ -819,15 +819,13 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.snap_toolbar = QtWidgets.QToolBar(_('Grid Toolbar')) self.snap_toolbar.setObjectName('Snap_TB') - self.addToolBar(self.snap_toolbar) - - flat_settings = QSettings("Open Source", "FlatCAM") - if flat_settings.contains("layout"): - layout = flat_settings.value('layout', type=str) - if layout == 'compact': - self.removeToolBar(self.snap_toolbar) - self.snap_toolbar.setMaximumHeight(30) - self.splitter_left.addWidget(self.snap_toolbar) + # self.addToolBar(self.snap_toolbar) + self.snap_toolbar.setStyleSheet( + """ + QToolBar { padding: 0; } + QToolBar QToolButton { padding: -2; margin: -2; } + """ + ) # ######################################################################## # ########################## File Toolbar# ############################### @@ -1112,6 +1110,9 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.snap_max_dist_entry.setToolTip(_("Max. magnet distance")) self.snap_magnet = self.snap_toolbar.addWidget(self.snap_max_dist_entry) + self.corner_snap_btn.setVisible(False) + self.snap_magnet.setVisible(False) + # ######################################################################## # ########################## Notebook # ################################## # ######################################################################## @@ -2302,21 +2303,20 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.fcinfo = FlatCAMInfoBar(app=self.app) self.infobar.addWidget(self.fcinfo, stretch=1) - self.snap_infobar_label = FCLabel() - 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) # self.rel_position_label.setToolTip(_("Relative measurement.\nReference is last click position")) # self.infobar.addWidget(self.rel_position_label) # - # self.position_label = QtWidgets.QLabel( - # "    X: 0.0000   Y: 0.0000") - # self.position_label.setMinimumWidth(110) - # self.position_label.setToolTip(_("Absolute measurement.\nReference is (X=0, Y= 0) position")) - # self.infobar.addWidget(self.position_label) + self.position_label = QtWidgets.QLabel( + " X: 0.0000   Y: 0.0000 ") + self.position_label.setMinimumWidth(110) + self.position_label.setToolTip(_("Absolute measurement.\nReference is (X=0, Y= 0) position")) + self.infobar.addWidget(self.position_label) + + self.snap_toolbar.setMaximumHeight(24) + self.infobar.addWidget(self.snap_toolbar) self.units_label = QtWidgets.QLabel("[in]") self.units_label.setMargin(2) @@ -2387,29 +2387,21 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.restoreState(saved_gui_state) log.debug("FlatCAMGUI.__init__() --> UI state restored from QSettings.") + self.corner_snap_btn.setVisible(False) + self.snap_magnet.setVisible(False) + if flat_settings.contains("layout"): layout = flat_settings.value('layout', type=str) self.exc_edit_toolbar.setDisabled(True) self.geo_edit_toolbar.setDisabled(True) self.grb_edit_toolbar.setDisabled(True) - if layout == 'standard': - self.corner_snap_btn.setVisible(False) - self.snap_magnet.setVisible(False) - else: - self.snap_magnet.setVisible(True) - self.corner_snap_btn.setVisible(True) - self.snap_magnet.setDisabled(True) - self.corner_snap_btn.setDisabled(True) log.debug("FlatCAMGUI.__init__() --> UI layout restored from QSettings. Layout = %s" % str(layout)) else: self.exc_edit_toolbar.setDisabled(True) self.geo_edit_toolbar.setDisabled(True) self.grb_edit_toolbar.setDisabled(True) - self.corner_snap_btn.setVisible(False) - self.snap_magnet.setVisible(False) - flat_settings.setValue('layout', "standard") # This will write the setting to the platform specific storage. del flat_settings @@ -2438,14 +2430,11 @@ class FlatCAMGUI(QtWidgets.QMainWindow): del qsettings self.lock_toolbar(lock=lock_state) - self.on_grid_snap_triggered(state=True) self.lock_action.triggered[bool].connect(self.lock_toolbar) self.pref_open_button.clicked.connect(self.on_preferences_open_folder) self.clear_btn.clicked.connect(self.on_gui_clear) - self.grid_snap_btn.triggered.connect(self.on_grid_snap_triggered) - self.snap_infobar_label.clicked.connect(self.on_grid_icon_snap_clicked) # to be used in the future # self.plot_tab_area.tab_attached.connect(lambda x: print(x)) @@ -2455,29 +2444,6 @@ class FlatCAMGUI(QtWidgets.QMainWindow): # %%%%%%%%%%%%%%%%% GUI Building FINISHED %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% # %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - def on_grid_snap_triggered(self, state): - """ - - :param state: A parameter with the state of the grid, boolean - - :return: - """ - if state: - self.snap_infobar_label.setPixmap(QtGui.QPixmap(self.app.resource_location + '/snap_filled_16.png')) - else: - self.snap_infobar_label.setPixmap(QtGui.QPixmap(self.app.resource_location + '/snap_16.png')) - - self.snap_infobar_label.clicked_state = state - - def on_grid_icon_snap_clicked(self): - """ - Slot called by clicking a GUI element, in this case a FCLabel - - :return: - """ - if isinstance(self.sender(), FCLabel): - self.grid_snap_btn.trigger() - def eventFilter(self, obj, event): """ Filter the ToolTips display based on a Preferences setting @@ -2584,6 +2550,8 @@ class FlatCAMGUI(QtWidgets.QMainWindow): QtGui.QIcon(self.app.resource_location + '/distance_min32.png'), _("Distance Min Tool")) self.origin_btn = self.toolbargeo.addAction( QtGui.QIcon(self.app.resource_location + '/origin32.png'), _('Set Origin')) + self.move2origin_btn = self.toolbargeo.addAction( + QtGui.QIcon(self.app.resource_location + '/origin2_32.png'), _('Move to Origin')) self.jmp_btn = self.toolbargeo.addAction( QtGui.QIcon(self.app.resource_location + '/jump_to16.png'), _('Jump to Location')) self.locate_btn = self.toolbargeo.addAction( @@ -2786,60 +2754,13 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.aperture_move_btn = self.grb_edit_toolbar.addAction( QtGui.QIcon(self.app.resource_location + '/move32.png'), _("Move")) - # ######################################################################## - # ## Snap Toolbar # ## - # ######################################################################## - - # Snap GRID toolbar is always active to facilitate usage of measurements done on GRID - # self.addToolBar(self.snap_toolbar) - self.grid_snap_btn = self.snap_toolbar.addAction( - QtGui.QIcon(self.app.resource_location + '/grid32.png'), _('Snap to grid')) - self.grid_gap_x_entry = FCEntry2() - self.grid_gap_x_entry.setMaximumWidth(70) - self.grid_gap_x_entry.setToolTip(_("Grid X snapping distance")) - self.snap_toolbar.addWidget(self.grid_gap_x_entry) - - self.grid_gap_y_entry = FCEntry2() - self.grid_gap_y_entry.setMaximumWidth(70) - self.grid_gap_y_entry.setToolTip(_("Grid Y snapping distance")) - self.snap_toolbar.addWidget(self.grid_gap_y_entry) - - self.grid_space_label = QtWidgets.QLabel(" ") - self.snap_toolbar.addWidget(self.grid_space_label) - self.grid_gap_link_cb = FCCheckBox() - self.grid_gap_link_cb.setToolTip(_("When active, value on Grid_X\n" - "is copied to the Grid_Y value.")) - self.snap_toolbar.addWidget(self.grid_gap_link_cb) - - self.ois_grid = OptionalInputSection(self.grid_gap_link_cb, [self.grid_gap_y_entry], logic=False) - - self.corner_snap_btn = self.snap_toolbar.addAction( - QtGui.QIcon(self.app.resource_location + '/corner32.png'), _('Snap to corner')) - - self.snap_max_dist_entry = FCEntry() - self.snap_max_dist_entry.setMaximumWidth(70) - self.snap_max_dist_entry.setToolTip(_("Max. magnet distance")) - self.snap_magnet = self.snap_toolbar.addWidget(self.snap_max_dist_entry) - - self.grid_snap_btn.setCheckable(True) - self.corner_snap_btn.setCheckable(True) - self.update_obj_btn.setEnabled(False) - # start with GRID activated - self.grid_snap_btn.trigger() + self.corner_snap_btn.setVisible(False) + self.snap_magnet.setVisible(False) qsettings = QSettings("Open Source", "FlatCAM") if qsettings.contains("layout"): layout = qsettings.value('layout', type=str) - if layout == 'standard': - self.corner_snap_btn.setVisible(False) - self.snap_magnet.setVisible(False) - else: - self.corner_snap_btn.setVisible(True) - self.snap_magnet.setVisible(True) - self.corner_snap_btn.setDisabled(True) - self.snap_magnet.setDisabled(True) - # on 'minimal' layout only some toolbars are active if layout != 'minimal': self.exc_edit_toolbar.setVisible(True) diff --git a/flatcamGUI/PlotCanvas.py b/flatcamGUI/PlotCanvas.py index a1be6099..acd342ca 100644 --- a/flatcamGUI/PlotCanvas.py +++ b/flatcamGUI/PlotCanvas.py @@ -58,7 +58,7 @@ class PlotCanvas(QtCore.QObject, VisPyCanvas): self.text_hud_color = 'black' else: self.line_color = (0.4, 0.4, 0.4, 1.0) - self.rect_hud_color = Color('#0000FF10') + self.rect_hud_color = Color('#80808040') self.text_hud_color = 'white' # workspace lines; I didn't use the rectangle because I didn't want to add another VisPy Node, @@ -150,17 +150,17 @@ class PlotCanvas(QtCore.QObject, VisPyCanvas): self.cursor_h_line = InfiniteLine(pos=None, color=c_color, vertical=False, parent=self.line_parent) - self.rect_hud = Rectangle(center=(90,45), color=self.rect_hud_color, border_color=self.rect_hud_color, - width=170, height=80, radius=[5, 5, 5, 5], parent=None) + self.rect_hud = Rectangle(center=(95,50), color=self.rect_hud_color, border_color=self.rect_hud_color, + width=180, height=90, radius=[5, 5, 5, 5], parent=None) self.rect_hud.set_gl_state(depth_test=False) # HUD Display self.hud_enabled = False - self.text_hud = Text('', color=self.text_hud_color, pos=(8, 45), method='gpu', anchor_x='left', parent=None) + self.text_hud = Text('', color=self.text_hud_color, pos=(10, 50), method='gpu', anchor_x='left', parent=None) self.text_hud.font_size = 8 units = self.fcapp.defaults["units"].lower() - self.text_hud.text = 'Dx:\t%s [%s]\nDy:\t%s [%s]\nX: \t%s [%s]\nY: \t%s [%s]' % \ + self.text_hud.text = 'Dx:\t%s [%s]\nDy:\t%s [%s]\n\nX: \t%s [%s]\nY: \t%s [%s]' % \ ('0.0000', units, '0.0000', units, '0.0000', units, '0.0000', units) if self.fcapp.defaults['global_hud'] is True: diff --git a/flatcamGUI/PlotCanvasLegacy.py b/flatcamGUI/PlotCanvasLegacy.py index 7856bb8f..0fabff1e 100644 --- a/flatcamGUI/PlotCanvasLegacy.py +++ b/flatcamGUI/PlotCanvasLegacy.py @@ -19,6 +19,8 @@ from shapely.geometry import Polygon, LineString, LinearRing from copy import deepcopy import logging +import numpy as np + import gettext import FlatCAMTranslation as fcTranslate import builtins @@ -153,8 +155,8 @@ class PlotCanvasLegacy(QtCore.QObject): else: theme_color = '#000000' tick_color = '#FFFFFF' - self.rect_hud_color = '#0000FF10' - self.text_hud_color = '#000000' + self.rect_hud_color = '#80808040' + self.text_hud_color = '#FFFFFF' # workspace lines; I didn't use the rectangle because I didn't want to add another VisPy Node, # which might decrease performance @@ -306,11 +308,6 @@ class PlotCanvasLegacy(QtCore.QObject): self.hud_enabled = False self.text_hud = self.Thud(plotcanvas=self) - # bbox_props = dict(boxstyle="round,pad=0.3", fc="blue", ec="b", lw=0) - # self.text_hud = self.figure.text(0, 0, "Direction", ha="left", va="center", rotation=0, - # size=15, - # bbox=bbox_props) - # draw a rectangle made out of 4 lines on the canvas to serve as a hint for the work area # all CNC have a limited workspace if self.app.defaults['global_workspace'] is True: @@ -336,19 +333,21 @@ class PlotCanvasLegacy(QtCore.QObject): self.p = plotcanvas units = self.p.app.defaults['units'] - self._text = 'Dx: %s [%s]\nDy: %s [%s]\nX: %s [%s]\nY: %s [%s]' % \ + self._text = 'Dx: %s [%s]\nDy: %s [%s]\n\nX: %s [%s]\nY: %s [%s]' % \ ('0.0000', units, '0.0000', units, '0.0000', units, '0.0000', units) - self.hud_holder = AnchoredText(self._text, - prop=dict(size=20), frameon=True, - loc='upper left', - ) + self.hud_holder = AnchoredText(self._text, prop=dict(size=20), frameon=True, loc='upper left') self.hud_holder.patch.set_boxstyle("round,pad=0.,rounding_size=0.2") - self.hud_holder.patch.set_facecolor('blue') - self.hud_holder.patch.set_alpha(0.3) + fc_color = self.p.rect_hud_color[:-2] + fc_alpha = int(self.p.rect_hud_color[-2:], 16) / 255 + text_color = self.p.text_hud_color + + self.hud_holder.patch.set_facecolor(fc_color) + self.hud_holder.patch.set_alpha(fc_alpha) self.hud_holder.patch.set_edgecolor((0, 0, 0, 0)) + self. hud_holder.txt._text.set_color(color=text_color) self.text_changed.connect(self.on_text_changed) @property @@ -496,7 +495,7 @@ class PlotCanvasLegacy(QtCore.QObject): if self.big_cursor is False: try: - x, y = self.app.geo_editor.snap(x_pos, y_pos) + x, y = self.snap(x_pos, y_pos) # Pointer (snapped) # The size of the cursor is multiplied by 1.65 because that value made the cursor similar with the @@ -529,7 +528,7 @@ class PlotCanvasLegacy(QtCore.QObject): pass self.canvas.draw_idle() - self.canvas.blit(self.axes.bbox) + self.canvas.blit(self.axes.bbox) def clear_cursor(self, state): if state is True: @@ -931,7 +930,7 @@ class PlotCanvasLegacy(QtCore.QObject): self.canvas.draw_idle() # #### Temporary place-holder for cached update ##### - self.update_screen_request.emit([0, 0, 0, 0, 0]) + # self.update_screen_request.emit([0, 0, 0, 0, 0]) if self.app.defaults["global_cursor_color_enabled"] is True: self.draw_cursor(x_pos=x, y_pos=y, color=self.app.cursor_color_3D) @@ -983,6 +982,59 @@ class PlotCanvasLegacy(QtCore.QObject): return width / xpx, height / ypx + def snap(self, x, y): + """ + Adjusts coordinates to snap settings. + + :param x: Input coordinate X + :param y: Input coordinate Y + :return: Snapped (x, y) + """ + + snap_x, snap_y = (x, y) + snap_distance = np.Inf + + # ### Grid snap + if self.app.grid_status(): + if self.app.defaults["global_gridx"] != 0: + try: + snap_x_ = round(x / float(self.app.defaults["global_gridx"])) * \ + float(self.app.defaults["global_gridx"]) + except TypeError: + snap_x_ = x + else: + snap_x_ = x + + # If the Grid_gap_linked on Grid Toolbar is checked then the snap distance on GridY entry will be ignored + # and it will use the snap distance from GridX entry + if self.app.ui.grid_gap_link_cb.isChecked(): + if self.app.defaults["global_gridx"] != 0: + try: + snap_y_ = round(y / float(self.app.defaults["global_gridx"])) * \ + float(self.app.defaults["global_gridx"]) + except TypeError: + snap_y_ = y + else: + snap_y_ = y + else: + if self.app.defaults["global_gridy"] != 0: + try: + snap_y_ = round(y / float(self.app.defaults["global_gridy"])) * \ + float(self.app.defaults["global_gridy"]) + except TypeError: + snap_y_ = y + else: + snap_y_ = y + nearest_grid_distance = self.distance((x, y), (snap_x_, snap_y_)) + if nearest_grid_distance < snap_distance: + snap_x, snap_y = (snap_x_, snap_y_) + + return snap_x, snap_y + + @staticmethod + def distance(pt1, pt2): + return np.sqrt((pt1[0] - pt2[0]) ** 2 + (pt1[1] - pt2[1]) ** 2) + class FakeCursor(QtCore.QObject): """ diff --git a/flatcamGUI/preferences/PreferencesUIManager.py b/flatcamGUI/preferences/PreferencesUIManager.py index c49841ba..3b7306fa 100644 --- a/flatcamGUI/preferences/PreferencesUIManager.py +++ b/flatcamGUI/preferences/PreferencesUIManager.py @@ -921,8 +921,12 @@ class PreferencesUIManager: theme = 'white' should_restart = False - val = self.ui.general_defaults_form.general_gui_group.theme_radio.get_value() - if val != theme: + theme_new_val = self.ui.general_defaults_form.general_gui_group.theme_radio.get_value() + + ge = self.defaults["global_graphic_engine"] + ge_val = self.ui.general_defaults_form.general_app_group.ge_radio.get_value() + + if theme_new_val != theme or ge != ge_val: msgbox = QtWidgets.QMessageBox() msgbox.setText(_("Are you sure you want to continue?")) msgbox.setWindowTitle(_("Application restart")) @@ -935,15 +939,22 @@ class PreferencesUIManager: msgbox.exec_() response = msgbox.clickedButton() - if response == bt_yes: - theme_settings.setValue('theme', val) + if theme_new_val != theme: + if response == bt_yes: + theme_settings.setValue('theme', theme_new_val) - # This will write the setting to the platform specific storage. - del theme_settings + # This will write the setting to the platform specific storage. + del theme_settings - should_restart = True + should_restart = True + else: + self.ui.general_defaults_form.general_gui_group.theme_radio.set_value(theme) else: - self.ui.general_defaults_form.general_gui_group.theme_radio.set_value(theme) + if response == bt_yes: + self.defaults["global_graphic_engine"] = ge_val + should_restart = True + else: + self.ui.general_defaults_form.general_app_group.ge_radio.set_value(ge) if save_to_file or should_restart is True: self.save_defaults(silent=False) @@ -1035,6 +1046,7 @@ class PreferencesUIManager: :return: None """ self.defaults.report_usage("save_defaults") + log.debug("App.PreferencesUIManager.save_defaults()") if data_path is None: data_path = self.data_path diff --git a/flatcamGUI/preferences/general/GeneralGUIPrefGroupUI.py b/flatcamGUI/preferences/general/GeneralGUIPrefGroupUI.py index baedacc7..f9e86bf3 100644 --- a/flatcamGUI/preferences/general/GeneralGUIPrefGroupUI.py +++ b/flatcamGUI/preferences/general/GeneralGUIPrefGroupUI.py @@ -654,7 +654,6 @@ class GeneralGUIPrefGroupUI(OptionsGroupUI): self.app.ui.removeToolBar(self.app.ui.exc_edit_toolbar) self.app.ui.removeToolBar(self.app.ui.geo_edit_toolbar) self.app.ui.removeToolBar(self.app.ui.grb_edit_toolbar) - self.app.ui.removeToolBar(self.app.ui.snap_toolbar) self.app.ui.removeToolBar(self.app.ui.toolbarshell) except Exception: pass @@ -697,13 +696,6 @@ class GeneralGUIPrefGroupUI(OptionsGroupUI): self.app.ui.exc_edit_toolbar.setObjectName('ExcEditor_TB') self.app.ui.addToolBar(Qt.RightToolBarArea, self.app.ui.exc_edit_toolbar) - self.app.ui.snap_toolbar = QtWidgets.QToolBar('Grid Toolbar') - self.app.ui.snap_toolbar.setObjectName('Snap_TB') - self.app.ui.snap_toolbar.setMaximumHeight(30) - self.app.ui.splitter_left.addWidget(self.app.ui.snap_toolbar) - - self.app.ui.corner_snap_btn.setVisible(True) - self.app.ui.snap_magnet.setVisible(True) else: # ## TOOLBAR INSTALLATION # ## self.app.ui.toolbarfile = QtWidgets.QToolBar('File Toolbar') @@ -743,18 +735,9 @@ class GeneralGUIPrefGroupUI(OptionsGroupUI): self.app.ui.grb_edit_toolbar.setObjectName('GrbEditor_TB') self.app.ui.addToolBar(self.app.ui.grb_edit_toolbar) - self.app.ui.snap_toolbar = QtWidgets.QToolBar('Grid Toolbar') - self.app.ui.snap_toolbar.setObjectName('Snap_TB') - # self.app.ui.snap_toolbar.setMaximumHeight(30) - self.app.ui.addToolBar(self.app.ui.snap_toolbar) - - self.app.ui.corner_snap_btn.setVisible(False) - self.app.ui.snap_magnet.setVisible(False) - if current_layout == 'minimal': self.app.ui.toolbarview.setVisible(False) self.app.ui.toolbarshell.setVisible(False) - self.app.ui.snap_toolbar.setVisible(False) self.app.ui.geo_edit_toolbar.setVisible(False) self.app.ui.grb_edit_toolbar.setVisible(False) self.app.ui.exc_edit_toolbar.setVisible(False) @@ -767,7 +750,9 @@ class GeneralGUIPrefGroupUI(OptionsGroupUI): self.app.connect_toolbar_signals() self.app.ui.grid_snap_btn.setChecked(True) - self.app.ui.on_grid_snap_triggered(state=True) + + self.app.ui.corner_snap_btn.setVisible(False) + self.app.ui.snap_magnet.setVisible(False) self.app.ui.grid_gap_x_entry.setText(str(self.app.defaults["global_gridx"])) self.app.ui.grid_gap_y_entry.setText(str(self.app.defaults["global_gridy"])) diff --git a/flatcamObjects/FlatCAMCNCJob.py b/flatcamObjects/FlatCAMCNCJob.py index c9a47076..b75ec21d 100644 --- a/flatcamObjects/FlatCAMCNCJob.py +++ b/flatcamObjects/FlatCAMCNCJob.py @@ -564,7 +564,7 @@ class CNCJobObject(FlatCAMObj, CNCjob): # delete the absolute and relative position and messages in the infobar self.app.ui.position_label.setText("") - self.app.ui.rel_position_label.setText("") + # self.app.ui.rel_position_label.setText("") # first clear previous text in text editor (if any) self.gcode_editor_tab.code_editor.clear() diff --git a/flatcamTools/ToolCalibration.py b/flatcamTools/ToolCalibration.py index 98b487cf..c1e6b14d 100644 --- a/flatcamTools/ToolCalibration.py +++ b/flatcamTools/ToolCalibration.py @@ -1069,7 +1069,7 @@ class ToolCalibration(FlatCAMTool): # delete the absolute and relative position and messages in the infobar self.app.ui.position_label.setText("") - self.app.ui.rel_position_label.setText("") + # self.app.ui.rel_position_label.setText("") # first clear previous text in text editor (if any) self.gcode_editor_tab.code_editor.clear() diff --git a/flatcamTools/ToolCopperThieving.py b/flatcamTools/ToolCopperThieving.py index f6c85731..0b43f71a 100644 --- a/flatcamTools/ToolCopperThieving.py +++ b/flatcamTools/ToolCopperThieving.py @@ -917,14 +917,14 @@ class ToolCopperThieving(FlatCAMTool): self.app.dy = curr_pos[1] - float(self.cursor_pos[1]) # # update the positions on status bar - # self.app.ui.position_label.setText("    X: %.4f   " - # "Y: %.4f" % (curr_pos[0], curr_pos[1])) + self.app.ui.position_label.setText(" X: %.4f   " + "Y: %.4f " % (curr_pos[0], curr_pos[1])) # self.app.ui.rel_position_label.setText("Dx: %.4f   Dy: " # "%.4f    " % (self.app.dx, self.app.dy)) units = self.app.defaults["units"].lower() - self.plotcanvas.text_hud.text = \ - 'Dx:\t{:<.4f} [{:s}]\nDy:\t{:<.4f} [{:s}]\nX: \t{:<.4f} [{:s}]\nY: \t{:<.4f} [{:s}]'.format( + self.app.plotcanvas.text_hud.text = \ + 'Dx:\t{:<.4f} [{:s}]\nDy:\t{:<.4f} [{:s}]\n\nX: \t{:<.4f} [{:s}]\nY: \t{:<.4f} [{:s}]'.format( self.app.dx, units, self.app.dy, units, curr_pos[0], units, curr_pos[1], units) # draw the utility geometry diff --git a/flatcamTools/ToolDistance.py b/flatcamTools/ToolDistance.py index bcc506fb..1e61d782 100644 --- a/flatcamTools/ToolDistance.py +++ b/flatcamTools/ToolDistance.py @@ -544,15 +544,15 @@ class Distance(FlatCAMTool): else: pos = (pos_canvas[0], pos_canvas[1]) - # self.app.ui.position_label.setText( - # "    X: {}   Y: {}".format( - # '%.*f' % (self.decimals, pos[0]), '%.*f' % (self.decimals, pos[1]) - # ) - # ) + self.app.ui.position_label.setText( + "    X: {}   Y: {}".format( + '%.*f' % (self.decimals, pos[0]), '%.*f' % (self.decimals, pos[1]) + ) + ) units = self.app.defaults["units"].lower() - self.plotcanvas.text_hud.text = \ - 'Dx:\t{:<.4f} [{:s}]\nDy:\t{:<.4f} [{:s}]\nX: \t{:<.4f} [{:s}]\nY: \t{:<.4f} [{:s}]'.format( + self.app.plotcanvas.text_hud.text = \ + 'Dx:\t{:<.4f} [{:s}]\nDy:\t{:<.4f} [{:s}]\n\nX: \t{:<.4f} [{:s}]\nY: \t{:<.4f} [{:s}]'.format( 0.0000, units, 0.0000, units, pos[0], units, pos[1], units) if self.rel_point1 is not None: @@ -583,7 +583,7 @@ class Distance(FlatCAMTool): except Exception as e: log.debug("Distance.on_mouse_move_meas() --> %s" % str(e)) self.app.ui.position_label.setText("") - self.app.ui.rel_position_label.setText("") + # self.app.ui.rel_position_label.setText("") def utility_geometry(self, pos): # first delete old shape diff --git a/flatcamTools/ToolNCC.py b/flatcamTools/ToolNCC.py index d01f02de..e83d4bdb 100644 --- a/flatcamTools/ToolNCC.py +++ b/flatcamTools/ToolNCC.py @@ -1832,14 +1832,14 @@ class NonCopperClear(FlatCAMTool, Gerber): self.app.dy = curr_pos[1] - float(self.cursor_pos[1]) # # update the positions on status bar - # self.app.ui.position_label.setText("    X: %.4f   " - # "Y: %.4f" % (curr_pos[0], curr_pos[1])) + self.app.ui.position_label.setText(" X: %.4f   " + "Y: %.4f " % (curr_pos[0], curr_pos[1])) # self.app.ui.rel_position_label.setText("Dx: %.4f   Dy: " # "%.4f    " % (self.app.dx, self.app.dy)) units = self.app.defaults["units"].lower() - self.plotcanvas.text_hud.text = \ - 'Dx:\t{:<.4f} [{:s}]\nDy:\t{:<.4f} [{:s}]\nX: \t{:<.4f} [{:s}]\nY: \t{:<.4f} [{:s}]'.format( + self.app.plotcanvas.text_hud.text = \ + 'Dx:\t{:<.4f} [{:s}]\nDy:\t{:<.4f} [{:s}]\n\nX: \t{:<.4f} [{:s}]\nY: \t{:<.4f} [{:s}]'.format( self.app.dx, units, self.app.dy, units, curr_pos[0], units, curr_pos[1], units) # draw the utility geometry diff --git a/flatcamTools/ToolPaint.py b/flatcamTools/ToolPaint.py index ae1b23cc..c06b6666 100644 --- a/flatcamTools/ToolPaint.py +++ b/flatcamTools/ToolPaint.py @@ -1731,14 +1731,14 @@ class ToolPaint(FlatCAMTool, Gerber): self.app.dy = curr_pos[1] - float(self.cursor_pos[1]) # # update the positions on status bar - # self.app.ui.position_label.setText("    X: %.4f   " - # "Y: %.4f" % (curr_pos[0], curr_pos[1])) + self.app.ui.position_label.setText(" X: %.4f   " + "Y: %.4f " % (curr_pos[0], curr_pos[1])) # self.app.ui.rel_position_label.setText("Dx: %.4f   Dy: " # "%.4f    " % (self.app.dx, self.app.dy)) units = self.app.defaults["units"].lower() - self.plotcanvas.text_hud.text = \ - 'Dx:\t{:<.4f} [{:s}]\nDy:\t{:<.4f} [{:s}]\nX: \t{:<.4f} [{:s}]\nY: \t{:<.4f} [{:s}]'.format( + self.app.plotcanvas.text_hud.text = \ + 'Dx:\t{:<.4f} [{:s}]\nDy:\t{:<.4f} [{:s}]\n\nX: \t{:<.4f} [{:s}]\nY: \t{:<.4f} [{:s}]'.format( self.app.dx, units, self.app.dy, units, curr_pos[0], units, curr_pos[1], units) # draw the utility geometry