From 1c42efdcdf94fec5088b0b2dffd40ba23ea8d370 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Sat, 9 Oct 2021 22:45:09 +0300 Subject: [PATCH] - renamed the Corner Markers Plugin in Markers Plugin - added a new feature in Markers Plugin: now the Margin parameter can be set for both axis: X and Y or both --- CHANGELOG.md | 2 + appGUI/MainGUI.py | 6 +- appGUI/preferences/PreferencesUIManager.py | 11 +- .../preferences/tools/PluginsPreferencesUI.py | 8 +- ...fGroupUI.py => ToolsMarkersPrefGroupUI.py} | 45 ++++-- appPlugins/ToolCorners.py | 150 ++++++++++++------ app_Main.py | 10 +- assets/resources/dark_resources/link32.png | Bin 0 -> 856 bytes assets/resources/link32.png | Bin 0 -> 521 bytes defaults.py | 13 +- 10 files changed, 155 insertions(+), 90 deletions(-) rename appGUI/preferences/tools/{ToolsCornersPrefGroupUI.py => ToolsMarkersPrefGroupUI.py} (70%) create mode 100644 assets/resources/dark_resources/link32.png create mode 100644 assets/resources/link32.png diff --git a/CHANGELOG.md b/CHANGELOG.md index 5456100d..baec73bf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,8 @@ CHANGELOG for FlatCAM beta - in the canvas context menu added the menu for color changing - when doing color changing now only Gerber and Excellon objects can have the colors changed - fixed an issue within the version checking (inherited from FlatCAM) +- renamed the Corner Markers Plugin in Markers Plugin +- added a new feature in Markers Plugin: now the Margin parameter can be set for both axis: X and Y or both 8.10.2021 diff --git a/appGUI/MainGUI.py b/appGUI/MainGUI.py index ddaa0523..2a746ad2 100644 --- a/appGUI/MainGUI.py +++ b/appGUI/MainGUI.py @@ -1133,7 +1133,7 @@ class MainGUI(QtWidgets.QMainWindow): self.copperfill_btn = self.toolbarplugins.addAction( QtGui.QIcon(self.app.resource_location + '/copperfill32.png'), _("Copper Thieving")) self.corners_tool_btn = self.toolbarplugins.addAction( - QtGui.QIcon(self.app.resource_location + '/corners_32.png'), _("Corner Markers")) + QtGui.QIcon(self.app.resource_location + '/corners_32.png'), _("Markers")) self.punch_btn = self.toolbarplugins.addAction( QtGui.QIcon(self.app.resource_location + '/punch32.png'), _("Punch Gerber")) self.calculators_btn = self.toolbarplugins.addAction( @@ -2477,7 +2477,7 @@ class MainGUI(QtWidgets.QMainWindow): self.copperfill_btn = self.toolbarplugins.addAction( QtGui.QIcon(self.app.resource_location + '/copperfill32.png'), _("Copper Thieving")) self.corners_tool_btn = self.toolbarplugins.addAction( - QtGui.QIcon(self.app.resource_location + '/corners_32.png'), _("Corner Markers")) + QtGui.QIcon(self.app.resource_location + '/corners_32.png'), _("Markers")) self.punch_btn = self.toolbarplugins.addAction( QtGui.QIcon(self.app.resource_location + '/punch32.png'), _("Punch Gerber")) self.calculators_btn = self.toolbarplugins.addAction( @@ -4890,7 +4890,7 @@ class ShortcutsTab(QtWidgets.QWidget): # ALT section _('Alt+A'), _("Align Objects"), - _('Alt+B'), _("Corner Markers"), + _('Alt+B'), _("Markers"), _('Alt+C'), _("Calculators"), _('Alt+D'), _("2-Sided PCB"), _('Alt+E'), _("Extract"), diff --git a/appGUI/preferences/PreferencesUIManager.py b/appGUI/preferences/PreferencesUIManager.py index dbf93fdb..307bd9ca 100644 --- a/appGUI/preferences/PreferencesUIManager.py +++ b/appGUI/preferences/PreferencesUIManager.py @@ -564,11 +564,12 @@ class PreferencesUIManager: "tools_sub_delete_sources": self.ui.plugin_pref_form.tools_sub_group.delete_sources_cb, # Corner Markers Tool - "tools_corners_type": self.ui.plugin_pref_form.tools_corners_group.type_radio, - "tools_corners_thickness": self.ui.plugin_pref_form.tools_corners_group.thick_entry, - "tools_corners_length": self.ui.plugin_pref_form.tools_corners_group.l_entry, - "tools_corners_margin": self.ui.plugin_pref_form.tools_corners_group.margin_entry, - "tools_corners_drill_dia": self.ui.plugin_pref_form.tools_corners_group.drill_dia_entry, + "tools_markers_type": self.ui.plugin_pref_form.tools_markers_group.type_radio, + "tools_markers_thickness": self.ui.plugin_pref_form.tools_markers_group.thick_entry, + "tools_markers_length": self.ui.plugin_pref_form.tools_markers_group.l_entry, + "tools_markers_marginx": self.ui.plugin_pref_form.tools_markers_group.marginx_entry, + "tools_markers_marginy": self.ui.plugin_pref_form.tools_markers_group.marginy_entry, + "tools_markers_drill_dia": self.ui.plugin_pref_form.tools_markers_group.drill_dia_entry, # ####################################################################################################### # ########################################## PLUGINS 2 ################################################## diff --git a/appGUI/preferences/tools/PluginsPreferencesUI.py b/appGUI/preferences/tools/PluginsPreferencesUI.py index b2439122..38f27097 100644 --- a/appGUI/preferences/tools/PluginsPreferencesUI.py +++ b/appGUI/preferences/tools/PluginsPreferencesUI.py @@ -2,7 +2,7 @@ from PyQt6 import QtWidgets from appGUI.preferences.tools.ToolsSubPrefGroupUI import ToolsSubPrefGroupUI from appGUI.preferences.tools.ToolsSolderpastePrefGroupUI import ToolsSolderpastePrefGroupUI -from appGUI.preferences.tools.ToolsCornersPrefGroupUI import ToolsCornersPrefGroupUI +from appGUI.preferences.tools.ToolsMarkersPrefGroupUI import ToolsMarkersPrefGroupUI from appGUI.preferences.tools.ToolsTransformPrefGroupUI import ToolsTransformPrefGroupUI from appGUI.preferences.tools.ToolsCalculatorsPrefGroupUI import ToolsCalculatorsPrefGroupUI @@ -55,8 +55,8 @@ class PluginsPreferencesUI(QtWidgets.QWidget): self.tools_solderpaste_group = ToolsSolderpastePrefGroupUI(decimals=self.decimals, defaults=self.defaults) self.tools_solderpaste_group.setMinimumWidth(200) - self.tools_corners_group = ToolsCornersPrefGroupUI(decimals=self.decimals, defaults=self.defaults) - self.tools_corners_group.setMinimumWidth(200) + self.tools_markers_group = ToolsMarkersPrefGroupUI(decimals=self.decimals, defaults=self.defaults) + self.tools_markers_group.setMinimumWidth(200) self.tools_sub_group = ToolsSubPrefGroupUI(decimals=self.decimals, defaults=self.defaults) self.tools_sub_group.setMinimumWidth(200) @@ -77,7 +77,7 @@ class PluginsPreferencesUI(QtWidgets.QWidget): self.vlay4 = QtWidgets.QVBoxLayout() self.vlay4.addWidget(self.tools_solderpaste_group) - self.vlay4.addWidget(self.tools_corners_group) + self.vlay4.addWidget(self.tools_markers_group) self.vlay4.addWidget(self.tools_calculators_group) self.vlay4.addWidget(self.tools_sub_group) diff --git a/appGUI/preferences/tools/ToolsCornersPrefGroupUI.py b/appGUI/preferences/tools/ToolsMarkersPrefGroupUI.py similarity index 70% rename from appGUI/preferences/tools/ToolsCornersPrefGroupUI.py rename to appGUI/preferences/tools/ToolsMarkersPrefGroupUI.py index cee53d87..0fb2275c 100644 --- a/appGUI/preferences/tools/ToolsCornersPrefGroupUI.py +++ b/appGUI/preferences/tools/ToolsMarkersPrefGroupUI.py @@ -12,12 +12,12 @@ if '_' not in builtins.__dict__: _ = gettext.gettext -class ToolsCornersPrefGroupUI(OptionsGroupUI): +class ToolsMarkersPrefGroupUI(OptionsGroupUI): def __init__(self, defaults, decimals=4, parent=None): # OptionsGroupUI.__init__(self, "Calculators Plugin", parent=parent) - super(ToolsCornersPrefGroupUI, self).__init__(self, parent=parent) + super(ToolsMarkersPrefGroupUI, self).__init__(self, parent=parent) - self.setTitle(str(_("Corner Markers Options"))) + self.setTitle(str(_("Markers Options"))) self.decimals = decimals self.defaults = defaults @@ -64,18 +64,31 @@ class ToolsCornersPrefGroupUI(OptionsGroupUI): param_grid.addWidget(self.thick_label, 4, 0) param_grid.addWidget(self.thick_entry, 4, 1) - # Margin # - self.margin_label = FCLabel('%s:' % _("Margin")) - self.margin_label.setToolTip( + # Margin X # + self.marginx_label = FCLabel('%s X:' % _("Margin")) + self.marginx_label.setToolTip( _("Bounding box margin.") ) - self.margin_entry = FCDoubleSpinner() - self.margin_entry.set_range(-10000.0000, 10000.0000) - self.margin_entry.set_precision(self.decimals) - self.margin_entry.setSingleStep(0.1) + self.marginx_entry = FCDoubleSpinner() + self.marginx_entry.set_range(-10000.0000, 10000.0000) + self.marginx_entry.set_precision(self.decimals) + self.marginx_entry.setSingleStep(0.1) - param_grid.addWidget(self.margin_label, 6, 0) - param_grid.addWidget(self.margin_entry, 6, 1) + param_grid.addWidget(self.marginx_label, 6, 0) + param_grid.addWidget(self.marginx_entry, 6, 1) + + # Margin Y # + self.marginy_label = FCLabel('%s Y:' % _("Margin")) + self.marginy_label.setToolTip( + _("Bounding box margin.") + ) + self.marginy_entry = FCDoubleSpinner() + self.marginy_entry.set_range(-10000.0000, 10000.0000) + self.marginy_entry.set_precision(self.decimals) + self.marginy_entry.setSingleStep(0.1) + + param_grid.addWidget(self.marginy_label, 8, 0) + param_grid.addWidget(self.marginy_entry, 8, 1) # Length # self.l_label = FCLabel('%s:' % _("Length")) @@ -87,8 +100,8 @@ class ToolsCornersPrefGroupUI(OptionsGroupUI): self.l_entry.set_precision(self.decimals) self.l_entry.setSingleStep(10 ** -self.decimals) - param_grid.addWidget(self.l_label, 8, 0) - param_grid.addWidget(self.l_entry, 8, 1) + param_grid.addWidget(self.l_label, 10, 0) + param_grid.addWidget(self.l_entry, 10, 1) # Drill Tool Diameter self.drill_dia_label = FCLabel('%s:' % _("Drill Dia")) @@ -100,7 +113,7 @@ class ToolsCornersPrefGroupUI(OptionsGroupUI): self.drill_dia_entry.set_precision(self.decimals) self.drill_dia_entry.setWrapping(True) - param_grid.addWidget(self.drill_dia_label, 10, 0) - param_grid.addWidget(self.drill_dia_entry, 10, 1) + param_grid.addWidget(self.drill_dia_label, 12, 0) + param_grid.addWidget(self.drill_dia_entry, 12, 1) self.layout.addStretch() diff --git a/appPlugins/ToolCorners.py b/appPlugins/ToolCorners.py index 1d34ea9b..08bc62db 100644 --- a/appPlugins/ToolCorners.py +++ b/appPlugins/ToolCorners.py @@ -148,7 +148,7 @@ class ToolCorners(AppTool): self.set_tool_ui() - self.app.ui.notebook.setTabText(2, _("Corners")) + self.app.ui.notebook.setTabText(2, _("Markers")) def install(self, icon=None, separator=None, **kwargs): AppTool.install(self, icon, separator, shortcut='Alt+B', **kwargs) @@ -177,12 +177,17 @@ class ToolCorners(AppTool): self.pluginName = self.ui.pluginName self.connect_signals_at_init() - self.ui.thick_entry.set_value(self.app.defaults["tools_corners_thickness"]) - self.ui.l_entry.set_value(float(self.app.defaults["tools_corners_length"])) - self.ui.margin_entry.set_value(float(self.app.defaults["tools_corners_margin"])) + self.ui.thick_entry.set_value(self.app.defaults["tools_markers_thickness"]) + self.ui.l_entry.set_value(float(self.app.defaults["tools_markers_length"])) + + self.ui.marginx_entry.set_value(float(self.app.defaults["tools_markers_marginx"])) + self.ui.marginy_entry.set_value(float(self.app.defaults["tools_markers_marginy"])) + self.ui.margin_link_button.setChecked(True) + self.ui.on_link_checked(True) + self.ui.toggle_all_cb.set_value(False) - self.ui.type_radio.set_value(self.app.defaults["tools_corners_type"]) - self.ui.drill_dia_entry.set_value(self.app.defaults["tools_corners_drill_dia"]) + self.ui.type_radio.set_value(self.app.defaults["tools_markers_type"]) + self.ui.drill_dia_entry.set_value(self.app.defaults["tools_markers_drill_dia"]) self.ui.mode_radio.set_value("a") self.ui.insert_type_radio.set_value(val="grb") @@ -268,16 +273,16 @@ class ToolCorners(AppTool): self.ui.type_label.setDisabled(False) self.ui.type_radio.setDisabled(False) - self.ui.margin_label.setDisabled(False) - self.ui.margin_entry.setDisabled(False) + self.ui.marginx_label.setDisabled(False) + self.ui.marginx_entry.setDisabled(False) else: self.ui.locs_label.setDisabled(True) self.ui.loc_frame.setDisabled(True) self.ui.type_label.setDisabled(True) self.ui.type_radio.setDisabled(True) - self.ui.margin_label.setDisabled(True) - self.ui.margin_entry.setDisabled(True) + self.ui.marginx_label.setDisabled(True) + self.ui.marginx_entry.setDisabled(True) self.ui.type_radio.set_value('c') def add_markers(self): @@ -377,7 +382,8 @@ class ToolCorners(AppTool): def create_marker_geometry(self, points_storage): marker_type = self.ui.type_radio.get_value() line_thickness = self.ui.thick_entry.get_value() - margin = self.ui.margin_entry.get_value() + margin_x = self.ui.marginx_entry.get_value() + margin_y = self.ui.marginy_entry.get_value() line_length = self.ui.l_entry.get_value() / 2.0 mode = self.ui.mode_radio.get_value() @@ -392,8 +398,8 @@ class ToolCorners(AppTool): for key in points_storage: if key == 'tl': pt = points_storage[key] - x = pt[0] - margin - line_thickness / 2.0 - y = pt[1] + margin + line_thickness / 2.0 + x = pt[0] - margin_x - line_thickness / 2.0 + y = pt[1] + margin_y + line_thickness / 2.0 if marker_type == 's': line_geo_hor = LineString([ (x, y), (x + line_length, y) @@ -412,8 +418,8 @@ class ToolCorners(AppTool): geo_list.append(line_geo_vert) if key == 'tr': pt = points_storage[key] - x = pt[0] + margin + line_thickness / 2.0 - y = pt[1] + margin + line_thickness / 2.0 + x = pt[0] + margin_x + line_thickness / 2.0 + y = pt[1] + margin_y + line_thickness / 2.0 if marker_type == 's': line_geo_hor = LineString([ (x, y), (x - line_length, y) @@ -432,8 +438,8 @@ class ToolCorners(AppTool): geo_list.append(line_geo_vert) if key == 'bl': pt = points_storage[key] - x = pt[0] - margin - line_thickness / 2.0 - y = pt[1] - margin - line_thickness / 2.0 + x = pt[0] - margin_x - line_thickness / 2.0 + y = pt[1] - margin_y - line_thickness / 2.0 if marker_type == 's': line_geo_hor = LineString([ (x, y), (x + line_length, y) @@ -452,8 +458,8 @@ class ToolCorners(AppTool): geo_list.append(line_geo_vert) if key == 'br': pt = points_storage[key] - x = pt[0] + margin + line_thickness / 2.0 - y = pt[1] - margin - line_thickness / 2.0 + x = pt[0] + margin_x + line_thickness / 2.0 + y = pt[1] - margin_y - line_thickness / 2.0 if marker_type == 's': line_geo_hor = LineString([ (x, y), (x - line_length, y) @@ -683,7 +689,9 @@ class ToolCorners(AppTool): return line_thickness = self.ui.thick_entry.get_value() - margin = self.ui.margin_entry.get_value() + margin_x = self.ui.marginx_entry.get_value() + margin_y = self.ui.marginy_entry.get_value() + tl_state = self.ui.tl_cb.get_value() tr_state = self.ui.tr_cb.get_value() bl_state = self.ui.bl_cb.get_value() @@ -714,29 +722,29 @@ class ToolCorners(AppTool): if 'manual' not in self.points: if tl_state: - x = xmin - margin - line_thickness / 2.0 - y = ymax + margin + line_thickness / 2.0 + x = xmin - margin_x - line_thickness / 2.0 + y = ymax + margin_y + line_thickness / 2.0 drill_list.append( Point((x, y)) ) if tr_state: - x = xmax + margin + line_thickness / 2.0 - y = ymax + margin + line_thickness / 2.0 + x = xmax + margin_x + line_thickness / 2.0 + y = ymax + margin_y + line_thickness / 2.0 drill_list.append( Point((x, y)) ) if bl_state: - x = xmin - margin - line_thickness / 2.0 - y = ymin - margin - line_thickness / 2.0 + x = xmin - margin_x - line_thickness / 2.0 + y = ymin - margin_y - line_thickness / 2.0 drill_list.append( Point((x, y)) ) if br_state: - x = xmax + margin + line_thickness / 2.0 - y = ymin - margin - line_thickness / 2.0 + x = xmax + margin_x + line_thickness / 2.0 + y = ymin - margin_y - line_thickness / 2.0 drill_list.append( Point((x, y)) ) @@ -792,7 +800,8 @@ class ToolCorners(AppTool): return line_thickness = self.ui.thick_entry.get_value() - margin = self.ui.margin_entry.get_value() + margin_x = self.ui.marginx_entry.get_value() + margin_y = self.ui.marginy_entry.get_value() tl_state = self.ui.tl_cb.get_value() tr_state = self.ui.tr_cb.get_value() @@ -824,29 +833,29 @@ class ToolCorners(AppTool): if 'manual' not in self.points: if tl_state: - x = xmin - margin - line_thickness / 2.0 - y = ymax + margin + line_thickness / 2.0 + x = xmin - margin_x - line_thickness / 2.0 + y = ymax + margin_y + line_thickness / 2.0 drill_list.append( Point((x, y)) ) if tr_state: - x = xmax + margin + line_thickness / 2.0 - y = ymax + margin + line_thickness / 2.0 + x = xmax + margin_x + line_thickness / 2.0 + y = ymax + margin_y + line_thickness / 2.0 drill_list.append( Point((x, y)) ) if bl_state: - x = xmin - margin - line_thickness / 2.0 - y = ymin - margin - line_thickness / 2.0 + x = xmin - margin_x - line_thickness / 2.0 + y = ymin - margin_y - line_thickness / 2.0 drill_list.append( Point((x, y)) ) if br_state: - x = xmax + margin + line_thickness / 2.0 - y = ymin - margin - line_thickness / 2.0 + x = xmax + margin_x + line_thickness / 2.0 + y = ymin - margin_y - line_thickness / 2.0 drill_list.append( Point((x, y)) ) @@ -1060,7 +1069,7 @@ class ToolCorners(AppTool): class CornersUI: - pluginName = _("Corner Markers") + pluginName = _("Markers") def __init__(self, layout, app): self.app = app @@ -1149,7 +1158,7 @@ class CornersUI: ]) param_grid.addWidget(self.type_label, 2, 0) - param_grid.addWidget(self.type_radio, 2, 1) + param_grid.addWidget(self.type_radio, 2, 1, 1, 2) # Thickness # self.thick_label = FCLabel('%s:' % _("Thickness")) @@ -1163,7 +1172,7 @@ class CornersUI: self.thick_entry.setSingleStep(10 ** -self.decimals) param_grid.addWidget(self.thick_label, 4, 0) - param_grid.addWidget(self.thick_entry, 4, 1) + param_grid.addWidget(self.thick_entry, 4, 1, 1, 2) # Length # self.l_label = FCLabel('%s:' % _("Length")) @@ -1176,20 +1185,41 @@ class CornersUI: self.l_entry.setSingleStep(10 ** -self.decimals) param_grid.addWidget(self.l_label, 6, 0) - param_grid.addWidget(self.l_entry, 6, 1) + param_grid.addWidget(self.l_entry, 6, 1, 1, 2) - # Margin # - self.margin_label = FCLabel('%s:' % _("Margin")) - self.margin_label.setToolTip( + # Margin X # + self.marginx_label = FCLabel('%s X:' % _("Margin")) + self.marginx_label.setToolTip( _("Bounding box margin.") ) - self.margin_entry = FCDoubleSpinner(callback=self.confirmation_message) - self.margin_entry.set_range(-10000.0000, 10000.0000) - self.margin_entry.set_precision(self.decimals) - self.margin_entry.setSingleStep(0.1) + self.marginx_entry = FCDoubleSpinner(callback=self.confirmation_message) + self.marginx_entry.set_range(-10000.0000, 10000.0000) + self.marginx_entry.set_precision(self.decimals) + self.marginx_entry.setSingleStep(0.1) - param_grid.addWidget(self.margin_label, 8, 0) - param_grid.addWidget(self.margin_entry, 8, 1) + param_grid.addWidget(self.marginx_label, 8, 0) + param_grid.addWidget(self.marginx_entry, 8, 1) + + # Margin Y # + self.marginy_label = FCLabel('%s Y:' % _("Margin")) + self.marginy_label.setToolTip( + _("Bounding box margin.") + ) + self.marginy_entry = FCDoubleSpinner(callback=self.confirmation_message) + self.marginy_entry.set_range(-10000.0000, 10000.0000) + self.marginy_entry.set_precision(self.decimals) + self.marginy_entry.setSingleStep(0.1) + + param_grid.addWidget(self.marginy_label, 9, 0) + param_grid.addWidget(self.marginy_entry, 9, 1) + + # Margin link + self.margin_link_button = QtWidgets.QToolButton() + self.margin_link_button.setIcon(QtGui.QIcon(self.app.resource_location + '/link32.png')) + self.margin_link_button.setSizePolicy(QtWidgets.QSizePolicy.Policy.MinimumExpanding, + QtWidgets.QSizePolicy.Policy.Expanding) + self.margin_link_button.setCheckable(True) + param_grid.addWidget(self.margin_link_button, 8, 2, 2, 1) # ############################################################################################################# # Locations Frame @@ -1406,6 +1436,26 @@ class CornersUI: # #################################### FINSIHED GUI ########################### # ############################################################################# + # Signals + + self.margin_link_button.clicked.connect(self.on_link_checked) + self.marginx_entry.returnPressed.connect(self.on_marginx_edited) + + def on_link_checked(self, checked): + if checked: + self.marginx_label.set_value('%s:' % _("Margin")) + self.marginy_label.setDisabled(True) + self.marginy_entry.setDisabled(True) + self.marginy_entry.set_value(self.marginx_entry.get_value()) + else: + self.marginx_label.set_value('%s X:' % _("Margin")) + self.marginy_label.setDisabled(False) + self.marginy_entry.setDisabled(False) + + def on_marginx_edited(self): + if self.margin_link_button.isChecked(): + self.marginy_entry.set_value(self.marginx_entry.get_value()) + def confirmation_message(self, accepted, minval, maxval): if accepted is False: self.app.inform[str, bool].emit('[WARNING_NOTCL] %s: [%.*f, %.*f]' % (_("Edited value is out of range"), diff --git a/app_Main.py b/app_Main.py index 0974a309..10589564 100644 --- a/app_Main.py +++ b/app_Main.py @@ -4740,8 +4740,8 @@ class App(QtCore.QObject): "tools_solderpaste_z_toolchange", "tools_solderpaste_xy_toolchange", "tools_solderpaste_frxy", "tools_solderpaste_frz", "tools_solderpaste_frz_dispense", - # Corner Markers Tool - "tools_corners_thickness", "tools_corners_length", "tools_corners_margin", + # Markers Tool + "tools_markers_thickness", "tools_markers_length", "tools_markers_marginx", "tools_markers_marginy", # Check Rules Tool "tools_cr_trace_size_val", "tools_cr_c2c_val", "tools_cr_c2o_val", "tools_cr_s2s_val", "tools_cr_s2sm_val", @@ -7477,7 +7477,7 @@ class App(QtCore.QObject): elif modifiers == QtCore.Qt.KeyboardModifier.ControlModifier | QtCore.Qt.KeyboardModifier.ShiftModifier: try: old_clipb = eval(self.clipboard.text()) - except Exception as err: + except Exception: # self.log.error("App.on_mouse_and_key_modifiers() --> %s" % str(err)) old_clipb = None @@ -9905,7 +9905,7 @@ class MenuFileHandlers(QtCore.QObject): response = msgbox.clickedButton() if response == bt_yes: - self.on_file_saveprojectas(threaded=True) + self.on_file_saveprojectas(use_thread=True) elif response == bt_cancel: return elif response == bt_no: @@ -11150,8 +11150,6 @@ class MenuFileHandlers(QtCore.QObject): self.inform.emit('[ERROR_NOTCL] %s' % _("File no longer available.")) return - ret_val = None - with self.app.proc_container.new('%s...' % _("Opening")): # Object name name = outname or filename.split('/')[-1].split('\\')[-1] diff --git a/assets/resources/dark_resources/link32.png b/assets/resources/dark_resources/link32.png new file mode 100644 index 0000000000000000000000000000000000000000..b1109bcd6863d20ecb25819189a4bb952262e23b GIT binary patch literal 856 zcmeAS@N?(olHy`uVBq!ia0vp^3Lq@N0wg;h=h*-$mUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasD-fiYDaqU2g@IvJud)%4$64SJ zSq!9ss(|=Iw$phagT2Jl*OmP#7pIVc{0C0!MLIkqO<@(j$uAuQEp*_z{#N@>Ug_P`yiwEit z_j{b%~3_Ln8^>ts(QMDKaW>i@OQkDvei=Rf<-fB(*)1qA=CpX8s+ z4_WQ&zH8Tsy}y1Xv0rQr;c82`uxZmC9)^p*_wJ3j^m^s|OOuLMudbf_`0=%8ix>Z~ z^R06#nKo_N{`SKPVcNCp3g#}KB(m|_mxy~m{#xjBe2I#e7jpQf9Pm*?WKoC!$3&G# zb|t-bW@cewhK8NZ%#Uv0w=eu1<@900DlUc(Ix^e#Waa*?>3lwOb0fpn(6B?xuKt^K z{bJ%yJ8SLN3_k;co!RS-OD?`>vvq6enNNX}uY1SJ@%LECGMMyqDFuX!?_F^@Fei_R zVQ03%lkZbc@S5Jear0#1^Q|{!b|-D`_UqFwco=IGd4|W8i7VsN&rSWym(QI3_ixuP zKi>l?r`<=S1} zx`3)h#=fbk#|z7{l9{*dN&O_Pkve0Bw!i}aTetp+u(r3IF~9q++5da^5NfM=SW6|51Ear+G5t$FGDAHT5uk`^J|x-sSOW9{F~n1l#P4mnoOTA z{@d*8`n87X$Byak@mMa(9Ud4M`1AQs&gEKXR2YT4p8->vYKdz^NlIc#s#S7PDv)9@ zGB7gKH8jvQunaM@urjf*GB(sUFt9Q(cpqdn0YyV@eoAIqC2kG#_?vWq8W=oX{an^L HB{Ts5^Fv@& literal 0 HcmV?d00001 diff --git a/assets/resources/link32.png b/assets/resources/link32.png new file mode 100644 index 0000000000000000000000000000000000000000..ead876fefa4380793b75a8377a49a951983b979f GIT binary patch literal 521 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4UEa{HEjtmSN`?>!lvVtU&J%W50 z7^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10f+@+{-GzZ+Rj;xUkjGiz z5m^kRfvSM`L$=d-AcMWc)7O>#DHo@ZKC@;}CP@B|r;B5V$MLt9HtIVEim-i%50%bY zGWp_x1NIjuNF2E~BWvq#?=#!@)U>6YZywRmNy_Tr$kma$_#`53_N(ften}PgCEr;- zulv6H`<&_%6Cc|zFnDtQ#_A{vyp6li{mo@V@i`|Mv$r%GOFBSfcK&-Tk%A)>^6bsZNFG{-rBs_INUz z?u|e8%4=tRPQ?`OZ93W&B`v0*#WPdwEk0TXzAt+6!?=c7{AXffvi8z7z;IA4ag8WR zNi0dVN-jzTQVd20MuxhE2D%28A%+%KCgxTK#@Yr3Rt5&_p5@n3H00)|WTsW()=(yL RJ{zck!PC{xWt~$(697Y#w;%uj literal 0 HcmV?d00001 diff --git a/defaults.py b/defaults.py index 3367f6d5..d57d715a 100644 --- a/defaults.py +++ b/defaults.py @@ -636,12 +636,13 @@ class FlatCAMDefaults: # Distance Tool "tools_dist_snap_center": False, - # Corner Markers Tool - "tools_corners_thickness": 0.1, - "tools_corners_length": 3.0, - "tools_corners_margin": 0.0, - "tools_corners_type": 's', - "tools_corners_drill_dia": 0.5, + # Markers Tool + "tools_markers_thickness": 0.1, + "tools_markers_length": 3.0, + "tools_markers_marginx": 0.0, + "tools_markers_marginy": 0.0, + "tools_markers_type": 's', + "tools_markers_drill_dia": 0.5, # ######################################################################################################## # ################################ TOOLS 2 ###############################################################