From b202de338f232a029d392d9e482bd040efed20aa Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Mon, 1 Apr 2019 02:47:20 +0300 Subject: [PATCH] - fixed errors when the File -> New Project is initiated while an Editor is still active. - the File->Exit action handler is now self.final_save() --- FlatCAMApp.py | 135 +++++++++++++++++++-------- README.md | 2 + flatcamEditors/FlatCAMExcEditor.py | 2 +- flatcamEditors/FlatCAMGeoEditor.py | 2 + flatcamEditors/FlatCAMGrbEditor.py | 144 +++++++++++++++-------------- flatcamGUI/FlatCAMGUI.py | 32 ++++++- 6 files changed, 204 insertions(+), 113 deletions(-) diff --git a/FlatCAMApp.py b/FlatCAMApp.py index 26a2addd..8e2840b1 100644 --- a/FlatCAMApp.py +++ b/FlatCAMApp.py @@ -36,6 +36,7 @@ from FlatCAMPostProc import load_postprocessors from flatcamEditors.FlatCAMGeoEditor import FlatCAMGeoEditor from flatcamEditors.FlatCAMExcEditor import FlatCAMExcEditor +from flatcamEditors.FlatCAMGrbEditor import FlatCAMGrbEditor from FlatCAMProcess import * from FlatCAMWorkerStack import WorkerStack @@ -605,7 +606,7 @@ class App(QtCore.QObject): "global_draw_color": '#FF0000', "global_sel_draw_color": '#0000FF', - "global_toolbar_view": 127, + "global_toolbar_view": 511, "global_background_timeout": 300000, # Default value is 5 minutes "global_verbose_error_level": 0, # Shell verbosity 0 = default @@ -1206,7 +1207,7 @@ class App(QtCore.QObject): ### EDITOR section self.geo_editor = FlatCAMGeoEditor(self, disabled=True) self.exc_editor = FlatCAMExcEditor(self) - + self.grb_editor = FlatCAMGrbEditor(self) #### Adjust tabs width #### # self.collection.view.setMinimumWidth(self.ui.options_scroll_area.widget().sizeHint().width() + @@ -1268,7 +1269,7 @@ class App(QtCore.QObject): self.ui.menufilesaveprojectas.triggered.connect(self.on_file_saveprojectas) self.ui.menufilesaveprojectcopy.triggered.connect(lambda: self.on_file_saveprojectas(make_copy=True)) self.ui.menufilesavedefaults.triggered.connect(self.on_file_savedefaults) - self.ui.menufile_exit.triggered.connect(self.on_app_exit) + self.ui.menufile_exit.triggered.connect(self.final_save) self.ui.menueditedit.triggered.connect(self.object2editor) self.ui.menueditok.triggered.connect(self.editor2object) @@ -2096,6 +2097,15 @@ class App(QtCore.QObject): # set call source to the Editor we go into self.call_source = 'exc_editor' + + elif isinstance(edited_object, FlatCAMGerber): + # store the Gerber Editor Toolbar visibility before entering in the Editor + self.grbeditor.toolbar_old_state = True if self.ui.grb_edit_toolbar.isVisible() else False + self.grbeditor.edit_fcgerber(edited_object) + + # set call source to the Editor we go into + self.call_source = 'grb_editor' + else: self.inform.emit(_("[WARNING_NOTCL] Select a Geometry or Excellon Object to edit.")) return @@ -2112,7 +2122,7 @@ class App(QtCore.QObject): self.should_we_save = True - def editor2object(self): + def editor2object(self, cleanup=None): """ Transfers the Geometry or Excellon from the editor to the current object. @@ -2135,8 +2145,9 @@ class App(QtCore.QObject): if isinstance(edited_obj, FlatCAMGeometry): obj_type = "Geometry" - self.geo_editor.update_fcgeometry(edited_obj) - self.geo_editor.update_options(edited_obj) + if cleanup is None: + self.geo_editor.update_fcgeometry(edited_obj) + self.geo_editor.update_options(edited_obj) self.geo_editor.deactivate() # update the geo object options so it is including the bounding box values @@ -2149,14 +2160,32 @@ class App(QtCore.QObject): except AttributeError: self.inform.emit(_("[WARNING] Object empty after edit.")) + if isinstance(edited_obj, FlatCAMGerber): + obj_type = "Gerber" + if cleanup is None: + self.grb_editor.update_fcgerber(edited_obj) + self.grb_editor.update_options(edited_obj) + self.grb_editor.deactivate() + + # update the geo object options so it is including the bounding box values + try: + xmin, ymin, xmax, ymax = edited_obj.bounds() + edited_obj.options['xmin'] = xmin + edited_obj.options['ymin'] = ymin + edited_obj.options['xmax'] = xmax + edited_obj.options['ymax'] = ymax + except AttributeError: + self.inform.emit(_("[WARNING] Object empty after edit.")) + elif isinstance(edited_obj, FlatCAMExcellon): obj_type = "Excellon" - self.exc_editor.update_fcexcellon(edited_obj) - self.exc_editor.update_options(edited_obj) + if cleanup is None: + self.exc_editor.update_fcexcellon(edited_obj) + self.exc_editor.update_options(edited_obj) self.exc_editor.deactivate() else: - self.inform.emit(_("[WARNING_NOTCL] Select a Geometry or Excellon Object to update.")) + self.inform.emit(_("[WARNING_NOTCL] Select a Gerber, Geometry or Excellon Object to update.")) return # if notebook is hidden we show it @@ -2470,11 +2499,16 @@ class App(QtCore.QObject): self.ui.geo_edit_toolbar.setVisible(False) if tb & 64: + self.ui.grb_edit_toolbar.setVisible(True) + else: + self.ui.grb_edit_toolbar.setVisible(False) + + if tb & 128: self.ui.snap_toolbar.setVisible(True) else: self.ui.snap_toolbar.setVisible(False) - if tb & 128: + if tb & 256: self.ui.toolbarshell.setVisible(True) else: self.ui.toolbarshell.setVisible(False) @@ -2494,14 +2528,14 @@ class App(QtCore.QObject): self.log.error("Could not load defaults file.") self.inform.emit(_("[ERROR] Could not load defaults file.")) # in case the defaults file can't be loaded, show all toolbars - self.defaults["global_toolbar_view"] = 255 + self.defaults["global_toolbar_view"] = 511 return try: defaults = json.loads(options) except: # in case the defaults file can't be loaded, show all toolbars - self.defaults["global_toolbar_view"] = 255 + self.defaults["global_toolbar_view"] = 511 e = sys.exc_info()[0] App.log.error(str(e)) self.inform.emit(_("[ERROR] Failed to parse defaults file.")) @@ -2976,32 +3010,32 @@ class App(QtCore.QObject): self.save_defaults() - def on_app_exit(self): - self.report_usage("on_app_exit()") - - if self.collection.get_list(): - msgbox = QtWidgets.QMessageBox() - # msgbox.setText("Save changes ...") - msgbox.setText("There are files/objects opened in FlatCAM. " - "\n" - "Do you want to Save the project?") - msgbox.setWindowTitle("Save changes") - msgbox.setWindowIcon(QtGui.QIcon('share/save_as.png')) - msgbox.setStandardButtons(QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No | - QtWidgets.QMessageBox.Cancel) - msgbox.setDefaultButton(QtWidgets.QMessageBox.Yes) - - response = msgbox.exec_() - - if response == QtWidgets.QMessageBox.Yes: - self.on_file_saveprojectas(thread=False) - elif response == QtWidgets.QMessageBox.Cancel: - return - self.save_defaults() - else: - self.save_defaults() - log.debug("Application defaults saved ... Exit event.") - QtWidgets.qApp.quit() + # def on_app_exit(self): + # self.report_usage("on_app_exit()") + # + # if self.collection.get_list(): + # msgbox = QtWidgets.QMessageBox() + # # msgbox.setText("Save changes ...") + # msgbox.setText("There are files/objects opened in FlatCAM. " + # "\n" + # "Do you want to Save the project?") + # msgbox.setWindowTitle("Save changes") + # msgbox.setWindowIcon(QtGui.QIcon('share/save_as.png')) + # msgbox.setStandardButtons(QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No | + # QtWidgets.QMessageBox.Cancel) + # msgbox.setDefaultButton(QtWidgets.QMessageBox.Yes) + # + # response = msgbox.exec_() + # + # if response == QtWidgets.QMessageBox.Yes: + # self.on_file_saveprojectas(thread=False) + # elif response == QtWidgets.QMessageBox.Cancel: + # return + # self.save_defaults() + # else: + # self.save_defaults() + # log.debug("Application defaults saved ... Exit event.") + # QtWidgets.qApp.quit() def save_defaults(self, silent=False): """ @@ -3067,12 +3101,15 @@ class App(QtCore.QObject): if self.ui.geo_edit_toolbar.isVisible(): tb_status += 32 - if self.ui.snap_toolbar.isVisible(): + if self.ui.grb_edit_toolbar.isVisible(): tb_status += 64 - if self.ui.toolbarshell.isVisible(): + if self.ui.snap_toolbar.isVisible(): tb_status += 128 + if self.ui.toolbarshell.isVisible(): + tb_status += 256 + self.defaults["global_toolbar_view"] = tb_status if not silent: @@ -3945,6 +3982,7 @@ class App(QtCore.QObject): self.ui.removeToolBar(self.ui.toolbartools) self.ui.removeToolBar(self.ui.exc_edit_toolbar) self.ui.removeToolBar(self.ui.geo_edit_toolbar) + self.ui.removeToolBar(self.ui.grb_edit_toolbar) self.ui.removeToolBar(self.ui.snap_toolbar) self.ui.removeToolBar(self.ui.toolbarshell) except: @@ -3982,6 +4020,11 @@ class App(QtCore.QObject): self.ui.geo_edit_toolbar.setObjectName('GeoEditor_TB') self.ui.addToolBar(self.ui.geo_edit_toolbar) + self.ui.grb_edit_toolbar = QtWidgets.QToolBar('Gerber Editor Toolbar') + self.ui.grb_edit_toolbar.setVisible(False) + self.ui.grb_edit_toolbar.setObjectName('GrbEditor_TB') + self.ui.addToolBar(self.ui.grb_edit_toolbar) + self.ui.snap_toolbar = QtWidgets.QToolBar('Grid Toolbar') self.ui.snap_toolbar.setObjectName('Snap_TB') # self.ui.snap_toolbar.setMaximumHeight(30) @@ -4014,6 +4057,11 @@ class App(QtCore.QObject): self.ui.geo_edit_toolbar.setObjectName('GeoEditor_TB') self.ui.addToolBar(Qt.RightToolBarArea, self.ui.geo_edit_toolbar) + self.ui.grb_edit_toolbar = QtWidgets.QToolBar('Gerber Editor Toolbar') + # self.ui.grb_edit_toolbar.setVisible(False) + self.ui.grb_edit_toolbar.setObjectName('GrbEditor_TB') + self.ui.addToolBar(Qt.RightToolBarArea, self.ui.grb_edit_toolbar) + self.ui.exc_edit_toolbar = QtWidgets.QToolBar('Excellon Editor Toolbar') self.ui.exc_edit_toolbar.setObjectName('ExcEditor_TB') self.ui.addToolBar(Qt.RightToolBarArea, self.ui.exc_edit_toolbar) @@ -5446,6 +5494,13 @@ class App(QtCore.QObject): # Remove everything from memory App.log.debug("on_file_new()") + if self.call_source != 'app': + self.editor2object(cleanup=True) + ### EDITOR section + self.geo_editor = FlatCAMGeoEditor(self, disabled=True) + self.exc_editor = FlatCAMExcEditor(self) + self.grb_editor = FlatCAMGrbEditor(self) + # Clear pool self.clear_pool() diff --git a/README.md b/README.md index b4064c55..85c95582 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,8 @@ CAD program, and create G-Code for Isolation routing. - fixed issue #281 by making generation of a convex shape for the freeform cutout in Tool Cutout a choice rather than the default - fixed bug in Tool Cutout, now in manual cutout mode the gap size reflect the value set - changed Measuring Tool to use the mouse click release instead of mouse click press; also fixed a bug when using the ESC key. +- fixed errors when the File -> New Project is initiated while an Editor is still active. +- the File->Exit action handler is now self.final_save() 29.03.2019 diff --git a/flatcamEditors/FlatCAMExcEditor.py b/flatcamEditors/FlatCAMExcEditor.py index a3be6cfb..06b956a2 100644 --- a/flatcamEditors/FlatCAMExcEditor.py +++ b/flatcamEditors/FlatCAMExcEditor.py @@ -830,7 +830,7 @@ class FlatCAMExcEditor(QtCore.QObject): res_entry_lbl.setToolTip( _( "Diameter to resize to.") ) - grid3.addWidget(addtool_entry_lbl, 0, 0) + grid3.addWidget(res_entry_lbl, 0, 0) hlay2 = QtWidgets.QHBoxLayout() self.resdrill_entry = LengthEntry() diff --git a/flatcamEditors/FlatCAMGeoEditor.py b/flatcamEditors/FlatCAMGeoEditor.py index 7fa3ab5f..e853fb67 100644 --- a/flatcamEditors/FlatCAMGeoEditor.py +++ b/flatcamEditors/FlatCAMGeoEditor.py @@ -2823,6 +2823,8 @@ class FlatCAMGeoEditor(QtCore.QObject): self.app.ui.geo_edit_toolbar.setDisabled(False) self.app.ui.geo_edit_toolbar.setVisible(True) + self.app.ui.grb_edit_toolbar.setDisabled(False) + self.app.ui.grb_edit_toolbar.setVisible(True) self.app.ui.snap_toolbar.setDisabled(False) # prevent the user to change anything in the Selected Tab while the Geo Editor is active diff --git a/flatcamEditors/FlatCAMGrbEditor.py b/flatcamEditors/FlatCAMGrbEditor.py index d4753348..77b51ee4 100644 --- a/flatcamEditors/FlatCAMGrbEditor.py +++ b/flatcamEditors/FlatCAMGrbEditor.py @@ -26,7 +26,7 @@ class FCApertureResize(FCShapeTool): DrawTool.__init__(self, draw_app) self.name = 'aperture_resize' - self.draw_app.app.inform.emit(_("Click on the Drill(s) to resize ...")) + self.draw_app.app.inform.emit(_("Click on the Apertures to resize ...")) self.resize_dia = None self.draw_app.resize_frame.show() self.points = None @@ -370,9 +370,9 @@ class FlatCAMGrbEditor(QtCore.QObject): ## Current application units in Upper Case self.units = self.app.ui.general_defaults_form.general_app_group.units_radio.get_value().upper() - self.exc_edit_widget = QtWidgets.QWidget() + self.grb_edit_widget = QtWidgets.QWidget() layout = QtWidgets.QVBoxLayout() - self.exc_edit_widget.setLayout(layout) + self.grb_edit_widget.setLayout(layout) ## Page Title box (spacing between children) self.title_box = QtWidgets.QHBoxLayout() @@ -397,110 +397,118 @@ class FlatCAMGrbEditor(QtCore.QObject): self.name_entry = FCEntry() self.name_box.addWidget(self.name_entry) - ## Box box for custom widgets + ## Box for custom widgets # This gets populated in offspring implementations. self.custom_box = QtWidgets.QVBoxLayout() layout.addLayout(self.custom_box) # add a frame and inside add a vertical box layout. Inside this vbox layout I add all the Drills widgets # this way I can hide/show the frame - self.drills_frame = QtWidgets.QFrame() - self.drills_frame.setContentsMargins(0, 0, 0, 0) - self.custom_box.addWidget(self.drills_frame) - self.tools_box = QtWidgets.QVBoxLayout() - self.tools_box.setContentsMargins(0, 0, 0, 0) - self.drills_frame.setLayout(self.tools_box) + self.apertures_frame = QtWidgets.QFrame() + self.apertures_frame.setContentsMargins(0, 0, 0, 0) + self.custom_box.addWidget(self.apertures_frame) + self.apertures_box = QtWidgets.QVBoxLayout() + self.apertures_box.setContentsMargins(0, 0, 0, 0) + self.apertures_frame.setLayout(self.apertures_box) - #### Tools Drills #### - self.tools_table_label = QtWidgets.QLabel("%s" % _('Tools Table')) - self.tools_table_label.setToolTip( - _( "Tools in this Excellon object\n" - "when are used for drilling.") + #### Gerber Apertures #### + self.apertures_table_label = QtWidgets.QLabel(_('Apertures:')) + self.apertures_table_label.setToolTip( + _("Apertures Table for the Gerber Object.") ) - self.tools_box.addWidget(self.tools_table_label) + self.apertures_box.addWidget(self.apertures_table_label) - self.tools_table_exc = FCTable() + self.apertures_table = FCTable() # delegate = SpinBoxDelegate(units=self.units) # self.tools_table_exc.setItemDelegateForColumn(1, delegate) - self.tools_box.addWidget(self.tools_table_exc) + self.apertures_box.addWidget(self.apertures_table) - self.tools_table_exc.setColumnCount(4) - self.tools_table_exc.setHorizontalHeaderLabels(['#', _('Diameter'), 'D', 'S']) - self.tools_table_exc.setSortingEnabled(False) - self.tools_table_exc.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows) + self.apertures_table.setColumnCount(5) + self.apertures_table.setHorizontalHeaderLabels(['#', _('Code'), _('Type'), _('Size'), _('Dim')]) + self.apertures_table.setSortingEnabled(False) + + self.apertures_table.horizontalHeaderItem(0).setToolTip( + _("Index")) + self.apertures_table.horizontalHeaderItem(1).setToolTip( + _("Aperture Code")) + self.apertures_table.horizontalHeaderItem(2).setToolTip( + _("Type of aperture: circular, rectangle, macros etc")) + self.apertures_table.horizontalHeaderItem(4).setToolTip( + _("Aperture Size:")) + self.apertures_table.horizontalHeaderItem(4).setToolTip( + _("Aperture Dimensions:\n" + " - (width, height) for R, O type.\n" + " - (dia, nVertices) for P type")) self.empty_label = QtWidgets.QLabel('') - self.tools_box.addWidget(self.empty_label) + self.apertures_box.addWidget(self.empty_label) #### Add a new Tool #### - self.addtool_label = QtWidgets.QLabel('%s' % _('Add/Delete Tool')) - self.addtool_label.setToolTip( - _("Add/Delete a tool to the tool list\n" - "for this Excellon object.") + self.addaperture_label = QtWidgets.QLabel('%s' % _('Add/Delete Aperture')) + self.addaperture_label.setToolTip( + _("Add/Delete an aperture to the aperture list") ) - self.tools_box.addWidget(self.addtool_label) + self.apertures_box.addWidget(self.addaperture_label) grid1 = QtWidgets.QGridLayout() - self.tools_box.addLayout(grid1) + self.apertures_box.addLayout(grid1) - addtool_entry_lbl = QtWidgets.QLabel(_('Tool Dia:')) - addtool_entry_lbl.setToolTip( - _("Diameter for the new tool") + addaperture_entry_lbl = QtWidgets.QLabel(_('Aperture Size:')) + addaperture_entry_lbl.setToolTip( + _("Size for the new aperture") ) - grid1.addWidget(addtool_entry_lbl, 0, 0) + grid1.addWidget(addaperture_entry_lbl, 0, 0) hlay = QtWidgets.QHBoxLayout() self.addtool_entry = FCEntry() self.addtool_entry.setValidator(QtGui.QDoubleValidator(0.0001, 99.9999, 4)) hlay.addWidget(self.addtool_entry) - self.addtool_btn = QtWidgets.QPushButton(_('Add Tool')) - self.addtool_btn.setToolTip( - _( "Add a new tool to the tool list\n" - "with the diameter specified above.") + self.addaperture_btn = QtWidgets.QPushButton(_('Add Aperture')) + self.addaperture_btn.setToolTip( + _( "Add a new aperture to the aperture list") ) - self.addtool_btn.setFixedWidth(80) - hlay.addWidget(self.addtool_btn) + self.addaperture_btn.setFixedWidth(80) + hlay.addWidget(self.addaperture_btn) grid1.addLayout(hlay, 0, 1) grid2 = QtWidgets.QGridLayout() - self.tools_box.addLayout(grid2) + self.apertures_box.addLayout(grid2) - self.deltool_btn = QtWidgets.QPushButton(_('Delete Tool')) - self.deltool_btn.setToolTip( - _( "Delete a tool in the tool list\n" - "by selecting a row in the tool table.") + self.delaperture_btn = QtWidgets.QPushButton(_('Delete Aperture')) + self.delaperture_btn.setToolTip( + _( "Delete a aperture in the aperture list") ) - grid2.addWidget(self.deltool_btn, 0, 1) + grid2.addWidget(self.delaperture_btn, 0, 1) - # add a frame and inside add a vertical box layout. Inside this vbox layout I add all the Drills widgets + # add a frame and inside add a vertical box layout. Inside this vbox layout I add all the aperture widgets # this way I can hide/show the frame self.resize_frame = QtWidgets.QFrame() self.resize_frame.setContentsMargins(0, 0, 0, 0) - self.tools_box.addWidget(self.resize_frame) + self.apertures_box.addWidget(self.resize_frame) self.resize_box = QtWidgets.QVBoxLayout() self.resize_box.setContentsMargins(0, 0, 0, 0) self.resize_frame.setLayout(self.resize_box) - #### Resize a drill #### + #### Resize a aperture #### self.emptyresize_label = QtWidgets.QLabel('') self.resize_box.addWidget(self.emptyresize_label) - self.drillresize_label = QtWidgets.QLabel('%s' % _("Resize Drill(s)")) - self.drillresize_label.setToolTip( - _("Resize a drill or a selection of drills.") + self.apertureresize_label = QtWidgets.QLabel('%s' % _("Resize Aperture")) + self.apertureresize_label.setToolTip( + _("Resize a aperture or a selection of apertures.") ) - self.resize_box.addWidget(self.drillresize_label) + self.resize_box.addWidget(self.apertureresize_label) grid3 = QtWidgets.QGridLayout() self.resize_box.addLayout(grid3) res_entry_lbl = QtWidgets.QLabel(_('Resize Dia:')) res_entry_lbl.setToolTip( - _( "Diameter to resize to.") + _( "Size to resize to.") ) - grid3.addWidget(addtool_entry_lbl, 0, 0) + grid3.addWidget(res_entry_lbl, 0, 0) hlay2 = QtWidgets.QHBoxLayout() self.resdrill_entry = LengthEntry() @@ -521,7 +529,7 @@ class FlatCAMGrbEditor(QtCore.QObject): # this way I can hide/show the frame self.array_frame = QtWidgets.QFrame() self.array_frame.setContentsMargins(0, 0, 0, 0) - self.tools_box.addWidget(self.array_frame) + self.apertures_box.addWidget(self.array_frame) self.array_box = QtWidgets.QVBoxLayout() self.array_box.setContentsMargins(0, 0, 0, 0) self.array_frame.setLayout(self.array_box) @@ -643,22 +651,18 @@ class FlatCAMGrbEditor(QtCore.QObject): self.linear_angle_label.hide() self.array_frame.hide() - self.tools_box.addStretch() + self.apertures_box.addStretch() ## Toolbar events and properties self.tools_exc = { "select": {"button": self.app.ui.select_drill_btn, - "constructor": FCDrillSelect}, - "drill_add": {"button": self.app.ui.add_drill_btn, - "constructor": FCDrillAdd}, - "drill_array": {"button": self.app.ui.add_drill_array_btn, - "constructor": FCDrillArray}, + "constructor": FCApertureSelect}, "drill_resize": {"button": self.app.ui.resize_drill_btn, - "constructor": FCDrillResize}, + "constructor": FCApertureResize}, "drill_copy": {"button": self.app.ui.copy_drill_btn, - "constructor": FCDrillCopy}, + "constructor": FCApertureCopy}, "drill_move": {"button": self.app.ui.move_drill_btn, - "constructor": FCDrillMove}, + "constructor": FCApertureMove}, } ### Data @@ -696,16 +700,14 @@ class FlatCAMGrbEditor(QtCore.QObject): self.app.ui.delete_drill_btn.triggered.connect(self.on_delete_btn) self.name_entry.returnPressed.connect(self.on_name_activate) - self.addtool_btn.clicked.connect(self.on_tool_add) + self.addaperture_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) - self.tools_table_exc.selectionModel().currentChanged.connect(self.on_row_selected) + self.delaperture_btn.clicked.connect(self.on_tool_delete) + self.apertures_table.selectionModel().currentChanged.connect(self.on_row_selected) self.array_type_combo.currentIndexChanged.connect(self.on_array_type_combo) self.drill_axis_radio.activated_custom.connect(self.on_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_resize_drill_menuitem.triggered.connect(self.exc_resize_drills) self.app.ui.exc_copy_drill_menuitem.triggered.connect(self.exc_copy_drills) @@ -1663,7 +1665,7 @@ class FlatCAMGrbEditor(QtCore.QObject): self.select_tool("select") return - if isinstance(self.active_tool, FCDrillSelect): + if isinstance(self.active_tool, FCApertureSelect): # self.app.log.debug("Replotting after click.") self.replot() else: @@ -1776,7 +1778,7 @@ class FlatCAMGrbEditor(QtCore.QObject): if self.app.selection_type is not None: self.draw_selection_area_handler(self.pos, pos, self.app.selection_type) self.app.selection_type = None - elif isinstance(self.active_tool, FCDrillSelect): + elif isinstance(self.active_tool, FCApertureSelect): # Dispatch event to active_tool # msg = self.active_tool.click(self.app.geo_editor.snap(event.xdata, event.ydata)) # msg = self.active_tool.click_release((self.pos[0], self.pos[1])) diff --git a/flatcamGUI/FlatCAMGUI.py b/flatcamGUI/FlatCAMGUI.py index d36a5fe9..709ec08e 100644 --- a/flatcamGUI/FlatCAMGUI.py +++ b/flatcamGUI/FlatCAMGUI.py @@ -532,6 +532,10 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.geo_edit_toolbar.setObjectName('GeoEditor_TB') self.addToolBar(self.geo_edit_toolbar) + self.grb_edit_toolbar = QtWidgets.QToolBar(_('Gerber Editor Toolbar')) + self.grb_edit_toolbar.setObjectName('GrbEditor_TB') + self.addToolBar(self.grb_edit_toolbar) + self.snap_toolbar = QtWidgets.QToolBar(_('Grid Toolbar')) self.snap_toolbar.setObjectName('Snap_TB') self.addToolBar(self.snap_toolbar) @@ -640,6 +644,17 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.geo_edit_toolbar.addSeparator() self.geo_move_btn = self.geo_edit_toolbar.addAction(QtGui.QIcon('share/move32.png'), _("Move Objects ")) + ### Gerber Editor Toolbar ### + self.grb_select_btn = self.grb_edit_toolbar.addAction(QtGui.QIcon('share/pointer32.png'), _("Select")) + + + + + + + + + ### Snap Toolbar ### # Snap GRID toolbar is always active to facilitate usage of measurements done on GRID # self.addToolBar(self.snap_toolbar) @@ -1565,12 +1580,16 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.exc_edit_toolbar.setDisabled(True) self.geo_edit_toolbar.setVisible(False) self.geo_edit_toolbar.setDisabled(True) + self.grb_edit_toolbar.setVisible(False) + self.grb_edit_toolbar.setDisabled(True) self.corner_snap_btn.setVisible(False) self.snap_magnet.setVisible(False) elif layout == 'Compact': self.exc_edit_toolbar.setDisabled(True) self.geo_edit_toolbar.setDisabled(True) + self.grb_edit_toolbar.setDisabled(True) + self.snap_magnet.setVisible(True) self.corner_snap_btn.setVisible(True) self.snap_magnet.setDisabled(True) @@ -1580,6 +1599,8 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.exc_edit_toolbar.setDisabled(True) self.geo_edit_toolbar.setVisible(False) self.geo_edit_toolbar.setDisabled(True) + self.grb_edit_toolbar.setVisible(False) + self.grb_edit_toolbar.setDisabled(True) self.corner_snap_btn.setVisible(False) self.snap_magnet.setVisible(False) @@ -1694,6 +1715,12 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.geo_edit_toolbar.addSeparator() self.geo_move_btn = self.geo_edit_toolbar.addAction(QtGui.QIcon('share/move32.png'), _("Move Objects")) + ### Geometry Editor Toolbar ### + self.grb_select_btn = self.grb_edit_toolbar.addAction(QtGui.QIcon('share/pointer32.png'), _("Select")) + + + + ### Snap Toolbar ### # Snap GRID toolbar is always active to facilitate usage of measurements done on GRID # self.addToolBar(self.snap_toolbar) @@ -1739,6 +1766,8 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.exc_edit_toolbar.setDisabled(True) self.geo_edit_toolbar.setVisible(False) self.geo_edit_toolbar.setDisabled(True) + self.grb_edit_toolbar.setVisible(False) + self.grb_edit_toolbar.setDisabled(True) self.corner_snap_btn.setVisible(False) self.snap_magnet.setVisible(False) @@ -1747,6 +1776,8 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.exc_edit_toolbar.setDisabled(True) self.geo_edit_toolbar.setVisible(True) self.geo_edit_toolbar.setDisabled(True) + self.grb_edit_toolbar.setVisible(False) + self.grb_edit_toolbar.setDisabled(True) self.corner_snap_btn.setVisible(True) self.snap_magnet.setVisible(True) @@ -3158,7 +3189,6 @@ class GeneralGUISetGroupUI(OptionsGroupUI): settings.remove(key) # This will write the setting to the platform specific storage. del settings - self.app.inform.emit(_("[success] GUI settings deleted ...")) class GeneralAppPrefGroupUI(OptionsGroupUI):