From fdfa6a22bee7af01a41ca3f6ad8fa0b1576333ed Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Fri, 30 Oct 2020 20:04:55 +0200 Subject: [PATCH] - more bugs that were introduced by recent changes done to solve other bugs and so on: fixed issues with the Editors and Delete shortcut --- CHANGELOG.md | 1 + appEditors/AppExcEditor.py | 85 +++++++++++++++-------------------- appEditors/AppGeoEditor.py | 8 ---- appEditors/AppGerberEditor.py | 12 ----- appEditors/appGCodeEditor.py | 5 --- appTools/ToolPunchGerber.py | 2 +- app_Main.py | 14 +++--- 7 files changed, 48 insertions(+), 79 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a15cb49a..ac28891a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ CHANGELOG for FlatCAM beta - working on solving the lost triggered signals for the Editor Toolbars buttons after changing the layout - fixed issue #454; trigger signals for Editor Toolbars lost after changing the layout - updated the translation strings +- more bugs that were introduced by recent changes done to solve other bugs and so on: fixed issues with the Editors and Delete shortcut 29.10.2020 diff --git a/appEditors/AppExcEditor.py b/appEditors/AppExcEditor.py index 9dd62f6b..1639d46e 100644 --- a/appEditors/AppExcEditor.py +++ b/appEditors/AppExcEditor.py @@ -1529,43 +1529,6 @@ class AppExcEditor(QtCore.QObject): self.decimals = self.app.decimals self.e_ui = AppExcEditorUI(app=self.app) - - # ############################################################################################################# - # ######################### Excellon Editor Signals ########################################################### - # ############################################################################################################# - - # connect the toolbar signals - self.connect_exc_toolbar_signals() - - self.e_ui.convert_slots_btn.clicked.connect(self.on_slots_conversion) - self.app.ui.delete_drill_btn.triggered.connect(self.on_delete_btn) - self.e_ui.name_entry.returnPressed.connect(self.on_name_activate) - self.e_ui.addtool_btn.clicked.connect(self.on_tool_add) - self.e_ui.addtool_entry.editingFinished.connect(self.on_tool_add) - self.e_ui.deltool_btn.clicked.connect(self.on_tool_delete) - # self.e_ui.tools_table_exc.selectionModel().currentChanged.connect(self.on_row_selected) - self.e_ui.tools_table_exc.cellPressed.connect(self.on_row_selected) - - self.e_ui.array_type_combo.currentIndexChanged.connect(self.on_array_type_combo) - self.e_ui.slot_array_type_combo.currentIndexChanged.connect(self.on_slot_array_type_combo) - - self.e_ui.drill_axis_radio.activated_custom.connect(self.on_linear_angle_radio) - self.e_ui.slot_axis_radio.activated_custom.connect(self.on_slot_angle_radio) - - self.e_ui.slot_array_axis_radio.activated_custom.connect(self.on_slot_array_linear_angle_radio) - - self.app.ui.exc_add_array_drill_menuitem.triggered.connect(self.exc_add_drill_array) - self.app.ui.exc_add_drill_menuitem.triggered.connect(self.exc_add_drill) - - self.app.ui.exc_add_array_slot_menuitem.triggered.connect(self.exc_add_slot_array) - self.app.ui.exc_add_slot_menuitem.triggered.connect(self.exc_add_slot) - - self.app.ui.exc_resize_drill_menuitem.triggered.connect(self.exc_resize_drills) - self.app.ui.exc_copy_drill_menuitem.triggered.connect(self.exc_copy_drills) - self.app.ui.exc_delete_drill_menuitem.triggered.connect(self.on_delete_btn) - - self.app.ui.exc_move_drill_menuitem.triggered.connect(self.exc_move_drills) - self.e_ui.exit_editor_button.clicked.connect(lambda: self.app.editor2object()) self.exc_obj = None @@ -1679,9 +1642,6 @@ class AppExcEditor(QtCore.QObject): self.tool_row = 0 - # store the status of the editor so the Delete at object level will not work until the edit is finished - self.editor_active = False - # def entry2option(option, entry): # self.options[option] = float(entry.text()) @@ -1690,8 +1650,43 @@ class AppExcEditor(QtCore.QObject): self.mm = None self.mr = None - # store the status of the editor so the Delete at object level will not work until the edit is finished - self.editor_active = False + # ############################################################################################################# + # ######################### Excellon Editor Signals ########################################################### + # ############################################################################################################# + + # connect the toolbar signals + self.connect_exc_toolbar_signals() + + self.e_ui.convert_slots_btn.clicked.connect(self.on_slots_conversion) + self.app.ui.delete_drill_btn.triggered.connect(self.on_delete_btn) + self.e_ui.name_entry.returnPressed.connect(self.on_name_activate) + self.e_ui.addtool_btn.clicked.connect(self.on_tool_add) + self.e_ui.addtool_entry.editingFinished.connect(self.on_tool_add) + self.e_ui.deltool_btn.clicked.connect(self.on_tool_delete) + # self.e_ui.tools_table_exc.selectionModel().currentChanged.connect(self.on_row_selected) + self.e_ui.tools_table_exc.cellPressed.connect(self.on_row_selected) + + self.e_ui.array_type_combo.currentIndexChanged.connect(self.on_array_type_combo) + self.e_ui.slot_array_type_combo.currentIndexChanged.connect(self.on_slot_array_type_combo) + + self.e_ui.drill_axis_radio.activated_custom.connect(self.on_linear_angle_radio) + self.e_ui.slot_axis_radio.activated_custom.connect(self.on_slot_angle_radio) + + self.e_ui.slot_array_axis_radio.activated_custom.connect(self.on_slot_array_linear_angle_radio) + + self.app.ui.exc_add_array_drill_menuitem.triggered.connect(self.exc_add_drill_array) + self.app.ui.exc_add_drill_menuitem.triggered.connect(self.exc_add_drill) + + self.app.ui.exc_add_array_slot_menuitem.triggered.connect(self.exc_add_slot_array) + self.app.ui.exc_add_slot_menuitem.triggered.connect(self.exc_add_slot) + + self.app.ui.exc_resize_drill_menuitem.triggered.connect(self.exc_resize_drills) + self.app.ui.exc_copy_drill_menuitem.triggered.connect(self.exc_copy_drills) + self.app.ui.exc_delete_drill_menuitem.triggered.connect(self.on_delete_btn) + + self.app.ui.exc_move_drill_menuitem.triggered.connect(self.exc_move_drills) + self.e_ui.exit_editor_button.clicked.connect(lambda: self.app.editor2object()) + log.debug("Initialization of the Excellon Editor is finished ...") def make_callback(self, thetool): @@ -2295,9 +2290,6 @@ class AppExcEditor(QtCore.QObject): self.app.ui.g_editor_cmenu.menuAction().setVisible(False) self.app.ui.grb_editor_cmenu.menuAction().setVisible(False) - # Tell the App that the editor is active - self.editor_active = True - # show the UI self.e_ui.drills_frame.show() @@ -2330,9 +2322,6 @@ class AppExcEditor(QtCore.QObject): self.tool_shape.enabled = False # self.app.app_cursor.enabled = False - # Tell the app that the editor is no longer active - self.editor_active = False - self.app.ui.exc_editor_menu.setDisabled(True) self.app.ui.exc_editor_menu.menuAction().setVisible(False) diff --git a/appEditors/AppGeoEditor.py b/appEditors/AppGeoEditor.py index 8ca0c5d2..11424071 100644 --- a/appEditors/AppGeoEditor.py +++ b/appEditors/AppGeoEditor.py @@ -3455,8 +3455,6 @@ class AppGeoEditor(QtCore.QObject): self.mm = None self.mr = None - # store the status of the editor so the Delete at object level will not work until the edit is finished - self.editor_active = False log.debug("Initialization of the Geometry Editor is finished ...") def make_callback(self, thetool): @@ -3661,9 +3659,6 @@ class AppGeoEditor(QtCore.QObject): # for w in sel_tab_widget_list: # w.setEnabled(False) - # Tell the App that the editor is active - self.editor_active = True - self.item_selected.connect(self.on_geo_elem_selected) # ## appGUI Events @@ -3713,9 +3708,6 @@ class AppGeoEditor(QtCore.QObject): self.app.ui.g_editor_cmenu.setEnabled(False) self.app.ui.e_editor_cmenu.setEnabled(False) - # Tell the app that the editor is no longer active - self.editor_active = False - self.app.ui.popmenu_disable.setVisible(True) self.app.ui.cmenu_newmenu.menuAction().setVisible(True) self.app.ui.popmenu_properties.setVisible(True) diff --git a/appEditors/AppGerberEditor.py b/appEditors/AppGerberEditor.py index 29cf6bb9..c7545320 100644 --- a/appEditors/AppGerberEditor.py +++ b/appEditors/AppGerberEditor.py @@ -3034,9 +3034,6 @@ class AppGerberEditor(QtCore.QObject): # a QThread for the edit process self.thread = QtCore.QThread() - # store the status of the editor so the Delete at object level will not work until the edit is finished - self.editor_active = False - # def entry2option(option, entry): # self.options[option] = float(entry.text()) @@ -3090,9 +3087,6 @@ class AppGerberEditor(QtCore.QObject): self.mp_finished.connect(self.on_multiprocessing_finished) - # store the status of the editor so the Delete at object level will not work until the edit is finished - self.editor_active = False - self.conversion_factor = 1 self.apertures_row = 0 @@ -3730,9 +3724,6 @@ class AppGerberEditor(QtCore.QObject): self.app.ui.popmenu_properties.setVisible(False) self.app.ui.grb_editor_cmenu.menuAction().setVisible(True) - # Tell the App that the editor is active - self.editor_active = True - def deactivate_grb_editor(self): try: QtGui.QGuiApplication.restoreOverrideCursor() @@ -3763,9 +3754,6 @@ class AppGerberEditor(QtCore.QObject): self.tool_shape.enabled = False # self.app.app_cursor.enabled = False - # Tell the app that the editor is no longer active - self.editor_active = False - self.app.ui.grb_editor_menu.setDisabled(True) self.app.ui.grb_editor_menu.menuAction().setVisible(False) diff --git a/appEditors/appGCodeEditor.py b/appEditors/appGCodeEditor.py index 54a218c5..bc8b8874 100644 --- a/appEditors/appGCodeEditor.py +++ b/appEditors/appGCodeEditor.py @@ -43,9 +43,6 @@ class AppGCodeEditor(QtCore.QObject): self.gcode_obj = None self.code_edited = '' - # store the status of the editor so the Delete at object level will not work until the edit is finished - self.editor_active = False - # ################################################################################# # ################### SIGNALS ##################################################### # ################################################################################# @@ -611,11 +608,9 @@ class AppGCodeEditor(QtCore.QObject): file.close() def activate(self): - self.editor_active = True self.app.call_source = 'gcode_editor' def deactivate(self): - self.editor_active = False self.app.call_source = 'app' def on_name_activate(self): diff --git a/appTools/ToolPunchGerber.py b/appTools/ToolPunchGerber.py index e7daf010..6ffcd408 100644 --- a/appTools/ToolPunchGerber.py +++ b/appTools/ToolPunchGerber.py @@ -433,7 +433,7 @@ class ToolPunchGerber(AppTool): else: grb_solid_geometry.append(el_geo['solid']) - target_geometry = MultiPolygon(target_geometry) + target_geometry = MultiPolygon(target_geometry).buffer(0) # create the punched Gerber solid_geometry punched_target_geometry = target_geometry.difference(exc_solid_geometry) diff --git a/app_Main.py b/app_Main.py index 9531a37a..5e5f8c47 100644 --- a/app_Main.py +++ b/app_Main.py @@ -281,6 +281,11 @@ class App(QtCore.QObject): self.qapp = qapp + # App Editors will be instantiated further below + self.exc_editor = None + self.grb_editor = None + self.geo_editor = None + # ############################################################################################################ # ################# Setup the listening thread for another instance launching with args ###################### # ############################################################################################################ @@ -3554,7 +3559,7 @@ class App(QtCore.QObject): """ # close editors before quiting the app, if they are open - if self.geo_editor.editor_active is True: + if self.call_source == 'geo_editor': self.geo_editor.deactivate() try: self.geo_editor.disconnect() @@ -3562,7 +3567,7 @@ class App(QtCore.QObject): pass self.log.debug("App.quit_application() --> Geo Editor deactivated.") - if self.exc_editor.editor_active is True: + if self.call_source == 'exc_editor': self.exc_editor.deactivate() try: self.grb_editor.disconnect() @@ -3570,7 +3575,7 @@ class App(QtCore.QObject): pass self.log.debug("App.quit_application() --> Excellon Editor deactivated.") - if self.grb_editor.editor_active is True: + if self.call_source == 'grb_editor': self.grb_editor.deactivate_grb_editor() try: self.exc_editor.disconnect() @@ -4705,8 +4710,7 @@ class App(QtCore.QObject): # Make sure that the deletion will happen only after the Editor is no longer active otherwise we might delete # a geometry object before we update it. - if self.geo_editor.editor_active is False and self.exc_editor.editor_active is False \ - and self.grb_editor.editor_active is False and self.gcode_editor.editor_active is False: + if self.call_source == 'app': if self.defaults["global_delete_confirmation"] is True and force_deletion is False: msgbox = QtWidgets.QMessageBox() msgbox.setWindowTitle(_("Delete objects"))