diff --git a/FlatCAMApp.py b/FlatCAMApp.py index fcc0f629..32b33f85 100644 --- a/FlatCAMApp.py +++ b/FlatCAMApp.py @@ -3959,7 +3959,7 @@ class App(QtCore.QObject): def on_toggle_units_click(self): try: self.ui.general_defaults_form.general_app_group.units_radio.activated_custom.disconnect() - except TypeError: + except (TypeError, AttributeError): pass if self.defaults["units"] == 'MM': @@ -5180,7 +5180,7 @@ class App(QtCore.QObject): # this disconnect() is done so the slot will be connected only once try: self.ui.plot_tab_area.tab_closed_signal.disconnect(self.on_preferences_closed) - except TypeError: + except (TypeError, AttributeError): pass self.ui.plot_tab_area.tab_closed_signal.connect(self.on_preferences_closed) @@ -5190,7 +5190,7 @@ class App(QtCore.QObject): try: try: tb.textEdited.disconnect(self.on_preferences_edited) - except TypeError: + except (TypeError, AttributeError): pass tb.textEdited.connect(self.on_preferences_edited) except AttributeError: @@ -5199,7 +5199,7 @@ class App(QtCore.QObject): try: try: tb.modificationChanged.disconnect(self.on_preferences_edited) - except TypeError: + except (TypeError, AttributeError): pass tb.modificationChanged.connect(self.on_preferences_edited) except AttributeError: @@ -5208,7 +5208,7 @@ class App(QtCore.QObject): try: try: tb.toggled.disconnect(self.on_preferences_edited) - except TypeError: + except (TypeError, AttributeError): pass tb.toggled.connect(self.on_preferences_edited) except AttributeError: @@ -5217,7 +5217,7 @@ class App(QtCore.QObject): try: try: tb.valueChanged.disconnect(self.on_preferences_edited) - except TypeError: + except (TypeError, AttributeError): pass tb.valueChanged.connect(self.on_preferences_edited) except AttributeError: @@ -5226,7 +5226,7 @@ class App(QtCore.QObject): try: try: tb.currentIndexChanged.disconnect(self.on_preferences_edited) - except TypeError: + except (TypeError, AttributeError): pass tb.currentIndexChanged.connect(self.on_preferences_edited) except AttributeError: diff --git a/FlatCAMObj.py b/FlatCAMObj.py index d3f83bd0..b5944183 100644 --- a/FlatCAMObj.py +++ b/FlatCAMObj.py @@ -582,7 +582,7 @@ class FlatCAMGerber(FlatCAMObj, Gerber): try: # if connected, disconnect the signal from the slot on item_changed as it creates issues self.ui.apertures_table.itemChanged.disconnect() - except TypeError: + except (TypeError, AttributeError): pass self.apertures_row = 0 @@ -726,12 +726,12 @@ class FlatCAMGerber(FlatCAMObj, Gerber): for row in range(self.ui.apertures_table.rowCount()): try: self.ui.apertures_table.cellWidget(row, 5).clicked.disconnect() - except TypeError: + except (TypeError, AttributeError): pass try: self.ui.mark_all_cb.clicked.disconnect(self.on_mark_all_click) - except TypeError: + except (TypeError, AttributeError): pass def on_generatenoncopper_button_click(self, *args): @@ -1832,7 +1832,7 @@ class FlatCAMExcellon(FlatCAMObj, Excellon): try: # if connected, disconnect the signal from the slot on item_changed as it creates issues self.ui.tools_table.itemChanged.disconnect() - except TypeError: + except (TypeError, AttributeError): pass n = len(self.tools) @@ -2120,12 +2120,12 @@ class FlatCAMExcellon(FlatCAMObj, Excellon): for row in range(self.ui.tools_table.rowCount()): try: self.ui.tools_table.cellWidget(row, 5).clicked.disconnect() - except TypeError: + except (TypeError, AttributeError): pass try: self.ui.plot_cb.stateChanged.disconnect() - except TypeError: + except (TypeError, AttributeError): pass def on_tool_offset_edit(self): @@ -3501,66 +3501,66 @@ class FlatCAMGeometry(FlatCAMObj, Geometry): if isinstance(current_widget, FCCheckBox): try: self.ui.grid3.itemAt(i).widget().stateChanged.disconnect(self.gui_form_to_storage) - except TypeError: + except (TypeError, AttributeError): pass elif isinstance(current_widget, FCComboBox): try: self.ui.grid3.itemAt(i).widget().currentIndexChanged.disconnect(self.gui_form_to_storage) - except TypeError: + except (TypeError, AttributeError): pass elif isinstance(current_widget, LengthEntry) or isinstance(current_widget, IntEntry) or \ isinstance(current_widget, FCEntry) or isinstance(current_widget, FloatEntry): try: self.ui.grid3.itemAt(i).widget().editingFinished.disconnect(self.gui_form_to_storage) - except TypeError: + except (TypeError, AttributeError): pass for row in range(self.ui.geo_tools_table.rowCount()): for col in [2, 3, 4]: try: self.ui.geo_tools_table.cellWidget(row, col).currentIndexChanged.disconnect() - except TypeError: + except (TypeError, AttributeError): pass try: self.ui.addtool_btn.clicked.disconnect() - except TypeError: + except (TypeError, AttributeError): pass try: self.ui.copytool_btn.clicked.disconnect() - except TypeError: + except (TypeError, AttributeError): pass try: self.ui.deltool_btn.clicked.disconnect() - except TypeError: + except (TypeError, AttributeError): pass try: self.ui.geo_tools_table.currentItemChanged.disconnect() - except TypeError: + except (TypeError, AttributeError): pass try: self.ui.geo_tools_table.itemChanged.disconnect() - except TypeError: + except (TypeError, AttributeError): pass try: self.ui.tool_offset_entry.editingFinished.disconnect() - except TypeError: + except (TypeError, AttributeError): pass for row in range(self.ui.geo_tools_table.rowCount()): try: self.ui.geo_tools_table.cellWidget(row, 6).clicked.disconnect() - except TypeError: + except (TypeError, AttributeError): pass try: self.ui.plot_cb.stateChanged.disconnect() - except TypeError: + except (TypeError, AttributeError): pass def on_tool_add(self, dia=None): @@ -5546,7 +5546,7 @@ class FlatCAMCNCjob(FlatCAMObj, CNCjob): try: self.ui.annotation_cb.stateChanged.disconnect(self.on_annotation_change) - except TypeError: + except (TypeError, AttributeError): pass self.ui.annotation_cb.stateChanged.connect(self.on_annotation_change) @@ -5590,7 +5590,7 @@ class FlatCAMCNCjob(FlatCAMObj, CNCjob): self.ui.cnc_tools_table.cellWidget(row, 6).clicked.disconnect(self.on_plot_cb_click_table) try: self.ui.plot_cb.stateChanged.disconnect(self.on_plot_cb_click) - except TypeError: + except (TypeError, AttributeError): pass def on_updateplot_button_click(self, *args): diff --git a/README.md b/README.md index d31a0a09..2995b969 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,7 @@ CAD program, and create G-Code for Isolation routing. - created a new menu entry in the File menu named Recent projects that will hold the recent projects and the previous "Recent files" will hold only the previous loaded files - updated all translations for the new strings - fixed bug recently introduced that when changing the units in the Edit -> Preferences it did not converted the values +- fixed another bug that when selecting an Excellon object after disabling it it crashed the app - RELEASE 8.92 30.07.2019 diff --git a/flatcamEditors/FlatCAMExcEditor.py b/flatcamEditors/FlatCAMExcEditor.py index ea071f3c..7c5e8726 100644 --- a/flatcamEditors/FlatCAMExcEditor.py +++ b/flatcamEditors/FlatCAMExcEditor.py @@ -669,7 +669,7 @@ class FCDrillSelect(DrawTool): # select the diameter of the selected shape in the tool table try: self.draw_app.tools_table_exc.cellPressed.disconnect() - except TypeError: + except (TypeError, AttributeError): pass sel_tools = set() @@ -1258,12 +1258,12 @@ class FlatCAMExcEditor(QtCore.QObject): try: # if connected, disconnect the signal from the slot on item_changed as it creates issues self.tools_table_exc.itemChanged.disconnect() - except TypeError: + except (TypeError, AttributeError): pass try: self.tools_table_exc.cellPressed.disconnect() - except TypeError: + except (TypeError, AttributeError): pass # updated units @@ -1820,17 +1820,17 @@ class FlatCAMExcEditor(QtCore.QObject): try: self.app.ui.popmenu_copy.triggered.disconnect(self.exc_copy_drills) - except TypeError: + except (TypeError, AttributeError): pass try: self.app.ui.popmenu_delete.triggered.disconnect(self.on_delete_btn) - except TypeError: + except (TypeError, AttributeError): pass try: self.app.ui.popmenu_move.triggered.disconnect(self.exc_move_drills) - except TypeError: + except (TypeError, AttributeError): pass self.app.ui.popmenu_copy.triggered.connect(self.app.on_copy_object) @@ -1840,12 +1840,12 @@ class FlatCAMExcEditor(QtCore.QObject): # Excellon Editor try: self.app.ui.drill.triggered.disconnect(self.exc_add_drill) - except TypeError: + except (TypeError, AttributeError): pass try: self.app.ui.drill_array.triggered.disconnect(self.exc_add_drill_array) - except TypeError: + except (TypeError, AttributeError): pass def clear(self): diff --git a/flatcamEditors/FlatCAMGeoEditor.py b/flatcamEditors/FlatCAMGeoEditor.py index 07e92f37..86e08665 100644 --- a/flatcamEditors/FlatCAMGeoEditor.py +++ b/flatcamEditors/FlatCAMGeoEditor.py @@ -3296,15 +3296,15 @@ class FlatCAMGeoEditor(QtCore.QObject): try: self.app.ui.popmenu_copy.triggered.disconnect(lambda: self.select_tool('copy')) - except TypeError: + except (TypeError, AttributeError): pass try: self.app.ui.popmenu_delete.triggered.disconnect(self.on_delete_btn) - except TypeError: + except (TypeError, AttributeError): pass try: self.app.ui.popmenu_move.triggered.disconnect(lambda: self.select_tool('move')) - except TypeError: + except (TypeError, AttributeError): pass self.app.ui.popmenu_copy.triggered.connect(self.app.on_copy_object) @@ -3314,22 +3314,22 @@ class FlatCAMGeoEditor(QtCore.QObject): # Geometry Editor try: self.app.ui.draw_line.triggered.disconnect(self.draw_tool_path) - except TypeError: + except (TypeError, AttributeError): pass try: self.app.ui.draw_rect.triggered.disconnect(self.draw_tool_rectangle) - except TypeError: + except (TypeError, AttributeError): pass try: self.app.ui.draw_cut.triggered.disconnect(self.cutpath) - except TypeError: + except (TypeError, AttributeError): pass try: self.app.ui.draw_move.triggered.disconnect(self.on_move) - except TypeError: + except (TypeError, AttributeError): pass def add_shape(self, shape): diff --git a/flatcamEditors/FlatCAMGrbEditor.py b/flatcamEditors/FlatCAMGrbEditor.py index 11a6de72..041a5bcb 100644 --- a/flatcamEditors/FlatCAMGrbEditor.py +++ b/flatcamEditors/FlatCAMGrbEditor.py @@ -1693,7 +1693,7 @@ class FCScale(FCShapeTool): try: self.draw_app.scale_button.clicked.disconnect() - except TypeError: + except (TypeError, AttributeError): pass self.draw_app.scale_button.clicked.connect(self.on_scale_click) @@ -1735,7 +1735,7 @@ class FCBuffer(FCShapeTool): try: self.draw_app.buffer_button.clicked.disconnect() - except TypeError: + except (TypeError, AttributeError): pass self.draw_app.buffer_button.clicked.connect(self.on_buffer_click) @@ -1777,7 +1777,7 @@ class FCMarkArea(FCShapeTool): try: self.draw_app.ma_threshold__button.clicked.disconnect() - except TypeError: + except (TypeError, AttributeError): pass self.draw_app.ma_threshold__button.clicked.connect(self.on_markarea_click) @@ -2934,12 +2934,12 @@ class FlatCAMGrbEditor(QtCore.QObject): try: # if connected, disconnect the signal from the slot on item_changed as it creates issues self.apertures_table.itemChanged.disconnect() - except TypeError: + except (TypeError, AttributeError): pass try: self.apertures_table.cellPressed.disconnect() - except TypeError: + except (TypeError, AttributeError): pass # updated units @@ -3488,17 +3488,17 @@ class FlatCAMGrbEditor(QtCore.QObject): try: self.app.ui.popmenu_copy.triggered.disconnect(self.on_copy_button) - except TypeError: + except (TypeError, AttributeError): pass try: self.app.ui.popmenu_delete.triggered.disconnect(self.on_delete_btn) - except TypeError: + except (TypeError, AttributeError): pass try: self.app.ui.popmenu_move.triggered.disconnect(self.on_move_button) - except TypeError: + except (TypeError, AttributeError): pass self.app.ui.popmenu_copy.triggered.connect(self.app.on_copy_object) @@ -3509,22 +3509,22 @@ class FlatCAMGrbEditor(QtCore.QObject): try: self.app.ui.grb_draw_pad.triggered.disconnect(self.on_pad_add) - except TypeError: + except (TypeError, AttributeError): pass try: self.app.ui.grb_draw_pad_array.triggered.disconnect(self.on_pad_add_array) - except TypeError: + except (TypeError, AttributeError): pass try: self.app.ui.grb_draw_track.triggered.disconnect(self.on_track_add) - except TypeError: + except (TypeError, AttributeError): pass try: self.app.ui.grb_draw_region.triggered.disconnect(self.on_region_add) - except TypeError: + except (TypeError, AttributeError): pass def clear(self): diff --git a/flatcamTools/ToolNonCopperClear.py b/flatcamTools/ToolNonCopperClear.py index b858c8ed..9e36da34 100644 --- a/flatcamTools/ToolNonCopperClear.py +++ b/flatcamTools/ToolNonCopperClear.py @@ -461,7 +461,7 @@ class NonCopperClear(FlatCAMTool, Gerber): try: # if connected, disconnect the signal from the slot on item_changed as it creates issues self.tools_table.itemChanged.disconnect(self.on_tool_edit) - except TypeError: + except (TypeError, AttributeError): pass def on_tool_add(self, dia=None, muted=None): diff --git a/flatcamTools/ToolPDF.py b/flatcamTools/ToolPDF.py index 718a856d..5e8267b0 100644 --- a/flatcamTools/ToolPDF.py +++ b/flatcamTools/ToolPDF.py @@ -366,7 +366,7 @@ class ToolPDF(FlatCAMTool): self.check_thread.setInterval(check_period) try: self.check_thread.timeout.disconnect(self.periodic_check_handler) - except TypeError: + except (TypeError, AttributeError): pass self.check_thread.timeout.connect(self.periodic_check_handler) diff --git a/flatcamTools/ToolPaint.py b/flatcamTools/ToolPaint.py index 9c689a16..24678f81 100644 --- a/flatcamTools/ToolPaint.py +++ b/flatcamTools/ToolPaint.py @@ -437,7 +437,7 @@ class ToolPaint(FlatCAMTool, Gerber): try: # if connected, disconnect the signal from the slot on item_changed as it creates issues self.tools_table.itemChanged.disconnect() - except TypeError: + except (TypeError, AttributeError): pass # updated units diff --git a/flatcamTools/ToolSolderPaste.py b/flatcamTools/ToolSolderPaste.py index 5ca85d1a..0bac7e1d 100644 --- a/flatcamTools/ToolSolderPaste.py +++ b/flatcamTools/ToolSolderPaste.py @@ -646,22 +646,22 @@ class SolderPaste(FlatCAMTool): if isinstance(self.gcode_form_layout.itemAt(i).widget(), FCComboBox): try: self.gcode_form_layout.itemAt(i).widget().currentIndexChanged.disconnect() - except TypeError: + except (TypeError, AttributeError): pass if isinstance(self.gcode_form_layout.itemAt(i).widget(), FCEntry): try: self.gcode_form_layout.itemAt(i).widget().editingFinished.disconnect() - except TypeError: + except (TypeError, AttributeError): pass try: self.tools_table.itemChanged.disconnect(self.on_tool_edit) - except TypeError: + except (TypeError, AttributeError): pass try: self.tools_table.currentItemChanged.disconnect(self.on_row_selection_change) - except TypeError: + except (TypeError, AttributeError): pass def update_comboboxes(self, obj, status): diff --git a/flatcamTools/ToolSub.py b/flatcamTools/ToolSub.py index d4f200d3..7f6cab59 100644 --- a/flatcamTools/ToolSub.py +++ b/flatcamTools/ToolSub.py @@ -175,13 +175,13 @@ class ToolSub(FlatCAMTool): try: self.intersect_btn.clicked.disconnect(self.on_grb_intersection_click) - except TypeError: + except (TypeError, AttributeError): pass self.intersect_btn.clicked.connect(self.on_grb_intersection_click) try: self.intersect_geo_btn.clicked.disconnect() - except TypeError: + except (TypeError, AttributeError): pass self.intersect_geo_btn.clicked.connect(self.on_geo_intersection_click) @@ -569,14 +569,14 @@ class ToolSub(FlatCAMTool): try: self.check_thread.stop() - except TypeError: + except (TypeError, AttributeError): pass if reset: self.check_thread.setInterval(check_period) try: self.check_thread.timeout.disconnect(self.periodic_check_handler) - except TypeError: + except (TypeError, AttributeError): pass self.check_thread.timeout.connect(self.periodic_check_handler)