diff --git a/FlatCAMApp.py b/FlatCAMApp.py index e5b43acb..86f4bc69 100644 --- a/FlatCAMApp.py +++ b/FlatCAMApp.py @@ -6636,46 +6636,17 @@ class App(QtCore.QObject): if notebook_widget_name == 'tool_tab': tool_widget = self.ui.tool_scroll_area.widget().objectName() - tool_add_popup = FCInputDialog(title="New Tool ...", - text='Enter a Tool Diameter:', - min=0.0000, max=99.9999, decimals=4) - tool_add_popup.setWindowIcon(QtGui.QIcon('share/letter_t_32.png')) - - val, ok = tool_add_popup.get_value() - # and only if the tool is NCC Tool if tool_widget == self.ncclear_tool.toolName: - if ok: - if float(val) == 0: - self.inform.emit('[WARNING_NOTCL] %s' % - _("Please enter a tool diameter with non-zero value, in Float format.")) - return - self.ncclear_tool.on_tool_add(dia=float(val)) - else: - self.inform.emit('[WARNING_NOTCL] %s...' % - _("Adding Tool cancelled")) + self.ncclear_tool.on_add_tool_by_key() + # and only if the tool is Paint Area Tool elif tool_widget == self.paint_tool.toolName: - if ok: - if float(val) == 0: - self.inform.emit('[WARNING_NOTCL] %s' % - _("Please enter a tool diameter with non-zero value, in Float format.")) - return - self.paint_tool.on_tool_add(dia=float(val)) - else: - self.inform.emit('[WARNING_NOTCL] %s...' % - _("Adding Tool cancelled")) + self.paint_tool.on_add_tool_by_key() + # and only if the tool is Solder Paste Dispensing Tool elif tool_widget == self.paste_tool.toolName: - if ok: - if float(val) == 0: - self.inform.emit('[WARNING_NOTCL] %s' % - _("Please enter a tool diameter with non-zero value, in Float format.")) - return - self.paste_tool.on_tool_add(dia=float(val)) - else: - self.inform.emit('[WARNING_NOTCL] %s...' % - _("Adding Tool cancelled")) + self.paste_tool.on_add_tool_by_key() # It's meant to delete tools in tool tables via a 'Delete' shortcut key but only if certain conditions are met # See description bellow. diff --git a/README.md b/README.md index 30ff621f..9a0bc849 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,8 @@ CAD program, and create G-Code for Isolation routing. - remade the Tool Calculators to use the QSpinBox in order to simplify the user interaction and remove possible errors - remade: Tool Cutout, Tool 2Sided, Tool Image, Panelize Tool, NCC Tool, Paint Tool to use the QSpinBox GUI elements - optimized the Transformation Tool both in GUI and in functionality and replaced the entries with QSpinBox +- fixed an issue with the tool table context menu in Paint Tool +- made some changes in the GUI in Paint Tool, NCC Tool and SolderPaste Tool 4.10.2019 diff --git a/flatcamTools/ToolNonCopperClear.py b/flatcamTools/ToolNonCopperClear.py index dcc9f394..8cdfc189 100644 --- a/flatcamTools/ToolNonCopperClear.py +++ b/flatcamTools/ToolNonCopperClear.py @@ -225,6 +225,7 @@ class NonCopperClear(FlatCAMTool, Gerber): _("The tip diameter for V-Shape Tool")) self.tipdia_entry = FCDoubleSpinner() self.tipdia_entry.set_precision(self.decimals) + self.tipdia_entry.setSingleStep(0.1) form.addRow(self.tipdialabel, self.tipdia_entry) @@ -235,6 +236,7 @@ class NonCopperClear(FlatCAMTool, Gerber): "In degree.")) self.tipangle_entry = FCDoubleSpinner() self.tipangle_entry.set_precision(self.decimals) + self.tipangle_entry.setSingleStep(5) form.addRow(self.tipanglelabel, self.tipangle_entry) @@ -460,30 +462,39 @@ class NonCopperClear(FlatCAMTool, Gerber): ) self.tools_box.addWidget(self.generate_ncc_button) self.tools_box.addStretch() + # ############################ FINSIHED GUI ################################### + # ############################################################################# + # ############################################################################# + # ###################### Setup CONTEXT MENU ################################### + # ############################################################################# self.tools_table.setupContextMenu() self.tools_table.addContextMenu( - "Add", lambda: self.on_tool_add(dia=None, muted=None), icon=QtGui.QIcon("share/plus16.png")) + "Add", self.on_add_tool_by_key, icon=QtGui.QIcon("share/plus16.png")) self.tools_table.addContextMenu( "Delete", lambda: self.on_tool_delete(rows_to_delete=None, all=None), icon=QtGui.QIcon("share/delete32.png")) + # ############################################################################# + # ########################## VARIABLES ######################################## + # ############################################################################# self.units = '' - self.ncc_tools = {} + self.ncc_tools = dict() self.tooluid = 0 + # store here the default data for Geometry Data - self.default_data = {} + self.default_data = dict() self.obj_name = "" self.ncc_obj = None - self.sel_rect = [] + self.sel_rect = list() self.bound_obj_name = "" self.bound_obj = None - self.ncc_dia_list = [] - self.iso_dia_list = [] + self.ncc_dia_list = list() + self.iso_dia_list = list() self.has_offset = None self.o_name = None self.overlap = None @@ -497,13 +508,16 @@ class NonCopperClear(FlatCAMTool, Gerber): self.mm = None self.mr = None + # store here solid_geometry when there are tool with isolation job - self.solid_geometry = [] + self.solid_geometry = list() self.select_method = None + self.tool_type_item_options = list() - self.tool_type_item_options = [] - + # ############################################################################# + # ############################ SGINALS ######################################## + # ############################################################################# self.addtool_btn.clicked.connect(self.on_tool_add) self.addtool_entry.editingFinished.connect(self.on_tool_add) self.deltool_btn.clicked.connect(self.on_tool_delete) @@ -522,6 +536,22 @@ class NonCopperClear(FlatCAMTool, Gerber): self.object_combo.setRootModelIndex(self.app.collection.index(obj_type, 0, QtCore.QModelIndex())) self.object_combo.setCurrentIndex(0) + def on_add_tool_by_key(self): + tool_add_popup = FCInputDialog(title='%s...' % _("New Tool"), + text='%s:' % _('Enter a Tool Diameter'), + min=0.0000, max=99.9999, decimals=4) + tool_add_popup.setWindowIcon(QtGui.QIcon('share/letter_t_32.png')) + + val, ok = tool_add_popup.get_value() + if ok: + if float(val) == 0: + self.app.inform.emit('[WARNING_NOTCL] %s' % + _("Please enter a tool diameter with non-zero value, in Float format.")) + return + self.on_tool_add(dia=float(val)) + else: + self.app.inform.emit('[WARNING_NOTCL] %s...' % _("Adding Tool cancelled")) + def install(self, icon=None, separator=None, **kwargs): FlatCAMTool.install(self, icon, separator, shortcut='ALT+N', **kwargs) diff --git a/flatcamTools/ToolPaint.py b/flatcamTools/ToolPaint.py index d3891ef0..d57ad685 100644 --- a/flatcamTools/ToolPaint.py +++ b/flatcamTools/ToolPaint.py @@ -351,6 +351,8 @@ class ToolPaint(FlatCAMTool, Gerber): self.tools_box.addWidget(self.generate_paint_button) self.tools_box.addStretch() + # #################################### FINSIHED GUI ##################################### + # ####################################################################################### self.obj_name = "" self.paint_obj = None @@ -412,7 +414,9 @@ class ToolPaint(FlatCAMTool, Gerber): self.tool_type_item_options = ["C1", "C2", "C3", "C4", "B", "V"] - # ## Signals + # ############################################################################# + # ################################# Signals ################################### + # ############################################################################# self.addtool_btn.clicked.connect(self.on_tool_add) self.addtool_entry.editingFinished.connect(self.on_tool_add) # self.copytool_btn.clicked.connect(lambda: self.on_tool_copy()) @@ -426,6 +430,16 @@ class ToolPaint(FlatCAMTool, Gerber): self.box_combo_type.currentIndexChanged.connect(self.on_combo_box_type) self.type_obj_combo.currentIndexChanged.connect(self.on_type_obj_index_changed) + # ############################################################################# + # ###################### Setup CONTEXT MENU ################################### + # ############################################################################# + self.tools_table.setupContextMenu() + self.tools_table.addContextMenu( + "Add", self.on_add_tool_by_key, icon=QtGui.QIcon("share/plus16.png")) + self.tools_table.addContextMenu( + "Delete", lambda: + self.on_tool_delete(rows_to_delete=None, all=None), icon=QtGui.QIcon("share/delete32.png")) + def on_type_obj_index_changed(self, index): obj_type = self.type_obj_combo.currentIndex() self.obj_combo.setRootModelIndex(self.app.collection.index(obj_type, 0, QtCore.QModelIndex())) @@ -434,6 +448,22 @@ class ToolPaint(FlatCAMTool, Gerber): def install(self, icon=None, separator=None, **kwargs): FlatCAMTool.install(self, icon, separator, shortcut='ALT+P', **kwargs) + def on_add_tool_by_key(self): + tool_add_popup = FCInputDialog(title='%s...' % _("New Tool"), + text='%s:' % _('Enter a Tool Diameter'), + min=0.0000, max=99.9999, decimals=4) + tool_add_popup.setWindowIcon(QtGui.QIcon('share/letter_t_32.png')) + + val, ok = tool_add_popup.get_value() + if ok: + if float(val) == 0: + self.app.inform.emit('[WARNING_NOTCL] %s' % + _("Please enter a tool diameter with non-zero value, in Float format.")) + return + self.on_tool_add(dia=float(val)) + else: + self.app.inform.emit('[WARNING_NOTCL] %s...' % _("Adding Tool cancelled")) + def run(self, toggle=True): self.app.report_usage("ToolPaint()") @@ -488,15 +518,6 @@ class ToolPaint(FlatCAMTool, Gerber): # disable rest-machining for single polygon painting self.rest_cb.set_value(False) self.rest_cb.setDisabled(True) - # delete all tools except first row / tool for single polygon painting - # list_to_del = list(range(1, self.tools_table.rowCount())) - # if list_to_del: - # self.on_tool_delete(rows_to_delete=list_to_del) - # # disable addTool and delTool - # self.addtool_entry.setDisabled(True) - # self.addtool_btn.setDisabled(True) - # self.deltool_btn.setDisabled(True) - # self.tools_table.setContextMenuPolicy(Qt.NoContextMenu) if self.selectmethod_combo.get_value() == 'area': # disable rest-machining for single polygon painting self.rest_cb.set_value(False) @@ -546,13 +567,6 @@ class ToolPaint(FlatCAMTool, Gerber): self.decimals = 2 self.addtool_entry.set_value(1) - self.tools_table.setupContextMenu() - self.tools_table.addContextMenu( - "Add", lambda: self.on_tool_add(dia=None, muted=None), icon=QtGui.QIcon("share/plus16.png")) - self.tools_table.addContextMenu( - "Delete", lambda: - self.on_tool_delete(rows_to_delete=None, all=None), icon=QtGui.QIcon("share/delete32.png")) - # set the working variables to a known state self.paint_tools.clear() self.tooluid = 0 diff --git a/flatcamTools/ToolSolderPaste.py b/flatcamTools/ToolSolderPaste.py index a9853cd9..bb2d9ce8 100644 --- a/flatcamTools/ToolSolderPaste.py +++ b/flatcamTools/ToolSolderPaste.py @@ -8,7 +8,7 @@ from FlatCAMTool import FlatCAMTool from FlatCAMCommon import LoudDict -from flatcamGUI.GUIElements import FCComboBox, FCEntry, FCEntry2, FCTable +from flatcamGUI.GUIElements import FCComboBox, FCEntry, FCEntry2, FCTable, FCInputDialog from FlatCAMApp import log from camlib import distance from FlatCAMObj import FlatCAMCNCjob @@ -460,6 +460,22 @@ class SolderPaste(FlatCAMTool): def install(self, icon=None, separator=None, **kwargs): FlatCAMTool.install(self, icon, separator, shortcut='ALT+K', **kwargs) + def on_add_tool_by_key(self): + tool_add_popup = FCInputDialog(title='%s...' % _("New Tool"), + text='%s:' % _('Enter a Tool Diameter'), + min=0.0000, max=99.9999, decimals=4) + tool_add_popup.setWindowIcon(QtGui.QIcon('share/letter_t_32.png')) + + val, ok = tool_add_popup.get_value() + if ok: + if float(val) == 0: + self.app.inform.emit('[WARNING_NOTCL] %s' % + _("Please enter a tool diameter with non-zero value, in Float format.")) + return + self.on_tool_add(dia=float(val)) + else: + self.app.inform.emit('[WARNING_NOTCL] %s...' % _("Adding Tool cancelled")) + def set_tool_ui(self): self.form_fields.update({ "tools_solderpaste_new": self.addtool_entry,