From 15ee54d0571301b79e30ce6b549f749bb3a7123d Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Wed, 4 Mar 2020 00:27:51 +0200 Subject: [PATCH] - updated all the FlatCAM Tools and the Gerber UI FCComboBoxes to update the box value with the latest object loaded in the App - some fixes in the NCC Tool - modified some strings --- FlatCAMObj.py | 13 +++- README.md | 6 ++ flatcamGUI/GUIElements.py | 21 ++++-- flatcamGUI/ObjectUI.py | 6 +- flatcamTools/ToolAlignObjects.py | 6 +- flatcamTools/ToolCalibration.py | 31 ++++++--- flatcamTools/ToolCopperThieving.py | 78 +++++++++++---------- flatcamTools/ToolCutOut.py | 6 +- flatcamTools/ToolDblSided.py | 23 ++++--- flatcamTools/ToolExtractDrills.py | 3 +- flatcamTools/ToolFiducials.py | 6 +- flatcamTools/ToolFilm.py | 29 +++++--- flatcamTools/ToolImage.py | 13 ++-- flatcamTools/ToolInvertGerber.py | 3 +- flatcamTools/ToolNCC.py | 105 ++++++++++++++++------------- flatcamTools/ToolOptimal.py | 3 +- flatcamTools/ToolPaint.py | 76 +++++++++++---------- flatcamTools/ToolPanelize.py | 20 ++++-- flatcamTools/ToolPunchGerber.py | 6 +- flatcamTools/ToolQRCode.py | 5 +- flatcamTools/ToolRulesCheck.py | 27 +++++--- flatcamTools/ToolSolderPaste.py | 9 ++- flatcamTools/ToolSub.py | 14 ++-- 23 files changed, 309 insertions(+), 200 deletions(-) diff --git a/FlatCAMObj.py b/FlatCAMObj.py index 963e64a6..610df50d 100644 --- a/FlatCAMObj.py +++ b/FlatCAMObj.py @@ -733,7 +733,12 @@ class FlatCAMGerber(FlatCAMObj, Gerber): # set the model for the Area Exception comboboxes self.ui.obj_combo.setModel(self.app.collection) self.ui.obj_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) - self.ui.obj_combo.set_last = True + self.ui.obj_combo.is_last = True + self.ui.obj_combo.obj_type = { + _("Gerber"): "Gerber", _("Geometry"): "Geometry" + }[self.ui.type_obj_combo.get_value()] + self.on_type_obj_index_changed() + self.ui.type_obj_combo.currentIndexChanged.connect(self.on_type_obj_index_changed) self.ui.tool_type_radio.activated_custom.connect(self.on_tool_type_change) @@ -813,10 +818,12 @@ class FlatCAMGerber(FlatCAMObj, Gerber): tool_diameter = tdia + (2 * cutz * math.tan(math.radians(half_tip_angle))) self.ui.iso_tool_dia_entry.set_value(tool_diameter) - def on_type_obj_index_changed(self, index): - obj_type = self.ui.type_obj_combo.currentIndex() + def on_type_obj_index_changed(self): + val = self.ui.type_obj_combo.get_value() + obj_type = {"Gerber": 0, "Geometry": 2}[val] self.ui.obj_combo.setRootModelIndex(self.app.collection.index(obj_type, 0, QtCore.QModelIndex())) self.ui.obj_combo.setCurrentIndex(0) + self.ui.obj_combo.obj_type = {_("Gerber"): "Gerber", _("Geometry"): "Geometry"}[val] def on_tool_type_change(self, state): if state == 'circular': diff --git a/README.md b/README.md index dd227f7c..924856e7 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,12 @@ CAD program, and create G-Code for Isolation routing. ================================================= +4.03.2020 + +- updated all the FlatCAM Tools and the Gerber UI FCComboBoxes to update the box value with the latest object loaded in the App +- some fixes in the NCC Tool +- modified some strings + 02.03.2020 - added property that allow the FCComboBox to update the view with the last item loaded; updated the app to use this property diff --git a/flatcamGUI/GUIElements.py b/flatcamGUI/GUIElements.py index 9e3094ec..f9c7b814 100644 --- a/flatcamGUI/GUIElements.py +++ b/flatcamGUI/GUIElements.py @@ -1286,6 +1286,7 @@ class FCComboBox(QtWidgets.QComboBox): self.view.setContextMenuPolicy(Qt.CustomContextMenu) self._set_last = False + self._obj_type = None # the callback() will be called on customcontextmenu event and will be be passed 2 parameters: # pos = mouse right click click position @@ -1309,17 +1310,27 @@ class FCComboBox(QtWidgets.QComboBox): self.setCurrentIndex(self.findText(str(val))) @property - def set_last(self): + def is_last(self): return self._set_last - @set_last.setter - def set_last(self, val): + @is_last.setter + def is_last(self, val): self._set_last = val if self._set_last is True: self.model().rowsInserted.connect(self.on_model_changed) + self.setCurrentIndex(1) - def on_model_changed(self, first, last): - self.setCurrentIndex(last) + @property + def obj_type(self): + return self._obj_type + + @obj_type.setter + def obj_type(self, val): + self._obj_type = val + + def on_model_changed(self, parent, first, last): + if self.model().data(parent, QtCore.Qt.DisplayRole) == self.obj_type: + self.setCurrentIndex(first) class FCInputDialog(QtWidgets.QInputDialog): diff --git a/flatcamGUI/ObjectUI.py b/flatcamGUI/ObjectUI.py index 1b298f29..39de3558 100644 --- a/flatcamGUI/ObjectUI.py +++ b/flatcamGUI/ObjectUI.py @@ -446,11 +446,7 @@ class GerberObjectUI(ObjectUI): # ##### Type of object to be excepted ############ # ################################################ self.type_obj_combo = FCComboBox() - self.type_obj_combo.addItems(["Gerber", "Geometry"]) - - # self.type_obj_combo.addItem("Gerber") - # self.type_obj_combo.addItem("Excellon") - # self.type_obj_combo.addItem("Geometry") + self.type_obj_combo.addItems([_("Gerber"), _("Geometry")]) # we get rid of item1 ("Excellon") as it is not suitable # self.type_obj_combo.view().setRowHidden(1, True) diff --git a/flatcamTools/ToolAlignObjects.py b/flatcamTools/ToolAlignObjects.py index f8f6d14f..863f27c3 100644 --- a/flatcamTools/ToolAlignObjects.py +++ b/flatcamTools/ToolAlignObjects.py @@ -80,7 +80,7 @@ class AlignObjects(FlatCAMTool): self.object_combo = FCComboBox() self.object_combo.setModel(self.app.collection) self.object_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) - self.object_combo.set_last = True + self.object_combo.is_last = True self.object_combo.setToolTip( _("Object to be aligned.") @@ -116,7 +116,7 @@ class AlignObjects(FlatCAMTool): self.aligner_object_combo = FCComboBox() self.aligner_object_combo.setModel(self.app.collection) self.aligner_object_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) - self.aligner_object_combo.set_last = True + self.aligner_object_combo.is_last = True self.aligner_object_combo.setToolTip( _("Object to be aligned to. Aligner.") @@ -270,11 +270,13 @@ class AlignObjects(FlatCAMTool): obj_type = {'grb': 0, 'exc': 1}[val] self.object_combo.setRootModelIndex(self.app.collection.index(obj_type, 0, QtCore.QModelIndex())) self.object_combo.setCurrentIndex(0) + self.object_combo.obj_type = {'grb': "Gerber", 'exc': "Excellon"}[val] def on_type_aligner_changed(self, val): obj_type = {'grb': 0, 'exc': 1}[val] self.aligner_object_combo.setRootModelIndex(self.app.collection.index(obj_type, 0, QtCore.QModelIndex())) self.aligner_object_combo.setCurrentIndex(0) + self.aligner_object_combo.obj_type = {'grb': "Gerber", 'exc': "Excellon"}[val] def on_align(self): self.app.delete_selection_shape() diff --git a/flatcamTools/ToolCalibration.py b/flatcamTools/ToolCalibration.py index 2a3956e3..b2a879fe 100644 --- a/flatcamTools/ToolCalibration.py +++ b/flatcamTools/ToolCalibration.py @@ -195,7 +195,6 @@ class ToolCalibration(FlatCAMTool): self.obj_type_combo = FCComboBox() self.obj_type_combo.addItem(_("Gerber")) self.obj_type_combo.addItem(_("Excellon")) - self.obj_type_combo.setCurrentIndex(1) self.obj_type_combo.setItemIcon(0, QtGui.QIcon(self.app.resource_location + "/flatcam_icon16.png")) self.obj_type_combo.setItemIcon(1, QtGui.QIcon(self.app.resource_location + "/drill16.png")) @@ -206,7 +205,7 @@ class ToolCalibration(FlatCAMTool): self.object_combo = FCComboBox() self.object_combo.setModel(self.app.collection) self.object_combo.setRootModelIndex(self.app.collection.index(1, 0, QtCore.QModelIndex())) - self.object_combo.set_last = True + self.object_combo.is_last = True self.object_label = QtWidgets.QLabel("%s:" % _("Source object selection")) self.object_label.setToolTip( @@ -630,16 +629,13 @@ class ToolCalibration(FlatCAMTool): self.adj_object_type_combo = FCComboBox() self.adj_object_type_combo.addItems([_("Gerber"), _("Excellon"), _("Geometry")]) - self.adj_object_type_combo.setCurrentIndex(0) self.adj_object_type_combo.setItemIcon(0, QtGui.QIcon(self.app.resource_location + "/flatcam_icon16.png")) self.adj_object_type_combo.setItemIcon(1, QtGui.QIcon(self.app.resource_location + "/drill16.png")) self.adj_object_type_combo.setItemIcon(2, QtGui.QIcon(self.app.resource_location + "/geometry16.png")) self.adj_object_type_label = QtWidgets.QLabel("%s:" % _("Adjusted object type")) - self.adj_object_type_label.setToolTip( - _("Type of the FlatCAM Object to be adjusted.") - ) + self.adj_object_type_label.setToolTip(_("Type of the FlatCAM Object to be adjusted.")) grid_lay.addWidget(self.adj_object_type_label, 46, 0, 1, 3) grid_lay.addWidget(self.adj_object_type_combo, 47, 0, 1, 3) @@ -647,7 +643,10 @@ class ToolCalibration(FlatCAMTool): self.adj_object_combo = FCComboBox() self.adj_object_combo.setModel(self.app.collection) self.adj_object_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) - self.adj_object_combo.setCurrentIndex(0) + self.adj_object_combo.is_last = True + self.adj_object_combo.obj_type = { + _("Gerber"): "Gerber", _("Excellon"): "Excellon", _("Geometry"): "Geometry" + }[self.adj_object_type_combo.get_value()] self.adj_object_label = QtWidgets.QLabel("%s:" % _("Adjusted object selection")) self.adj_object_label.setToolTip( @@ -787,6 +786,14 @@ class ToolCalibration(FlatCAMTool): self.skewx_entry.set_value(0.0) self.skewy_entry.set_value(0.0) + # default object selection is Excellon = index_1 + self.obj_type_combo.setCurrentIndex(1) + self.on_obj_type_combo() + + self.adj_object_type_combo.setCurrentIndex(0) + self.on_adj_obj_type_combo() + # self.adj_object_combo.setCurrentIndex(0) + # calibrated object self.cal_object = None @@ -795,12 +802,18 @@ class ToolCalibration(FlatCAMTool): def on_obj_type_combo(self): obj_type = self.obj_type_combo.currentIndex() self.object_combo.setRootModelIndex(self.app.collection.index(obj_type, 0, QtCore.QModelIndex())) - self.object_combo.setCurrentIndex(0) + # self.object_combo.setCurrentIndex(0) + self.object_combo.obj_type = { + _("Gerber"): "Gerber", _("Excellon"): "Excellon" + }[self.obj_type_combo.get_value()] def on_adj_obj_type_combo(self): obj_type = self.adj_object_type_combo.currentIndex() self.adj_object_combo.setRootModelIndex(self.app.collection.index(obj_type, 0, QtCore.QModelIndex())) - self.adj_object_combo.setCurrentIndex(0) + # self.adj_object_combo.setCurrentIndex(0) + self.adj_object_combo.obj_type = { + _("Gerber"): "Gerber", _("Excellon"): "Excellon", _("Geometry"): "Geometry" + }[self.adj_object_type_combo.get_value()] def on_cal_source_radio(self, val): if val == 'object': diff --git a/flatcamTools/ToolCopperThieving.py b/flatcamTools/ToolCopperThieving.py index 3949cdda..7000ca0e 100644 --- a/flatcamTools/ToolCopperThieving.py +++ b/flatcamTools/ToolCopperThieving.py @@ -69,7 +69,8 @@ class ToolCopperThieving(FlatCAMTool): self.grb_object_combo = FCComboBox() self.grb_object_combo.setModel(self.app.collection) self.grb_object_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) - self.grb_object_combo.set_last = True + self.grb_object_combo.is_last = True + self.grb_object_combo.obj_type = 'Gerber' self.grbobj_label = QtWidgets.QLabel("%s:" % _("GERBER")) self.grbobj_label.setToolTip( @@ -135,35 +136,36 @@ class ToolCopperThieving(FlatCAMTool): grid_lay.addWidget(self.reference_label, 3, 0) grid_lay.addWidget(self.reference_radio, 3, 1) - self.box_combo_type_label = QtWidgets.QLabel('%s:' % _("Ref. Type")) - self.box_combo_type_label.setToolTip( + self.ref_combo_type_label = QtWidgets.QLabel('%s:' % _("Ref. Type")) + self.ref_combo_type_label.setToolTip( _("The type of FlatCAM object to be used as copper thieving reference.\n" "It can be Gerber, Excellon or Geometry.") ) - self.box_combo_type = FCComboBox() - self.box_combo_type.addItem(_("Reference Gerber")) - self.box_combo_type.addItem(_("Reference Excellon")) - self.box_combo_type.addItem(_("Reference Geometry")) + self.ref_combo_type = FCComboBox() + self.ref_combo_type.addItems([_("Gerber"), _("Excellon"), _("Geometry")]) - grid_lay.addWidget(self.box_combo_type_label, 4, 0) - grid_lay.addWidget(self.box_combo_type, 4, 1) + grid_lay.addWidget(self.ref_combo_type_label, 4, 0) + grid_lay.addWidget(self.ref_combo_type, 4, 1) - self.box_combo_label = QtWidgets.QLabel('%s:' % _("Ref. Object")) - self.box_combo_label.setToolTip( + self.ref_combo_label = QtWidgets.QLabel('%s:' % _("Ref. Object")) + self.ref_combo_label.setToolTip( _("The FlatCAM object to be used as non copper clearing reference.") ) - self.box_combo = FCComboBox() - self.box_combo.setModel(self.app.collection) - self.box_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) - self.box_combo.set_last = True + self.ref_combo = FCComboBox() + self.ref_combo.setModel(self.app.collection) + self.ref_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) + self.ref_combo.is_last = True + self.ref_combo.obj_type = { + _("Gerber"): "Gerber", _("Excellon"): "Excellon", _("Geometry"): "Geometry" + }[self.ref_combo_type.get_value()] - grid_lay.addWidget(self.box_combo_label, 5, 0) - grid_lay.addWidget(self.box_combo, 5, 1) + grid_lay.addWidget(self.ref_combo_label, 5, 0) + grid_lay.addWidget(self.ref_combo, 5, 1) - self.box_combo.hide() - self.box_combo_label.hide() - self.box_combo_type.hide() - self.box_combo_type_label.hide() + self.ref_combo.hide() + self.ref_combo_label.hide() + self.ref_combo_type.hide() + self.ref_combo_type_label.hide() # Bounding Box Type # self.bbox_type_radio = RadioSet([ @@ -420,7 +422,8 @@ class ToolCopperThieving(FlatCAMTool): self.sm_object_combo = FCComboBox() self.sm_object_combo.setModel(self.app.collection) self.sm_object_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) - self.sm_object_combo.set_last = True + self.sm_object_combo.is_last = True + self.sm_object_combo.obj_type = 'Gerber' grid_lay_1.addWidget(self.sm_obj_label, 7, 0, 1, 3) grid_lay_1.addWidget(self.sm_object_combo, 8, 0, 1, 3) @@ -526,7 +529,7 @@ class ToolCopperThieving(FlatCAMTool): self.rb_thickness = None # SIGNALS - self.box_combo_type.currentIndexChanged.connect(self.on_combo_box_type) + self.ref_combo_type.currentIndexChanged.connect(self.on_ref_combo_type_change) self.reference_radio.group_toggle_fn = self.on_toggle_reference self.fill_type_radio.activated_custom.connect(self.on_thieving_type) @@ -594,22 +597,25 @@ class ToolCopperThieving(FlatCAMTool): self.robber_line = None self.new_solid_geometry = None - def on_combo_box_type(self): - obj_type = self.box_combo_type.currentIndex() - self.box_combo.setRootModelIndex(self.app.collection.index(obj_type, 0, QtCore.QModelIndex())) - self.box_combo.setCurrentIndex(0) + def on_ref_combo_type_change(self): + obj_type = self.ref_combo_type.currentIndex() + self.ref_combo.setRootModelIndex(self.app.collection.index(obj_type, 0, QtCore.QModelIndex())) + self.ref_combo.setCurrentIndex(0) + self.ref_combo.obj_type = { + _("Gerber"): "Gerber", _("Excellon"): "Excellon", _("Geometry"): "Geometry" + }[self.ref_combo_type.get_value()] def on_toggle_reference(self): if self.reference_radio.get_value() == "itself" or self.reference_radio.get_value() == "area": - self.box_combo.hide() - self.box_combo_label.hide() - self.box_combo_type.hide() - self.box_combo_type_label.hide() + self.ref_combo.hide() + self.ref_combo_label.hide() + self.ref_combo_type.hide() + self.ref_combo_type_label.hide() else: - self.box_combo.show() - self.box_combo_label.show() - self.box_combo_type.show() - self.box_combo_type_label.show() + self.ref_combo.show() + self.ref_combo_label.show() + self.ref_combo_type.show() + self.ref_combo_type_label.show() if self.reference_radio.get_value() == "itself": self.bbox_type_label.show() @@ -778,7 +784,7 @@ class ToolCopperThieving(FlatCAMTool): self.mm = self.app.plotcanvas.graph_event_connect('mouse_move', self.on_mouse_move) elif reference_method == 'box': - bound_obj_name = self.box_combo.currentText() + bound_obj_name = self.ref_combo.currentText() # Get reference object. try: diff --git a/flatcamTools/ToolCutOut.py b/flatcamTools/ToolCutOut.py index a94d7fa5..9b0ecb3d 100644 --- a/flatcamTools/ToolCutOut.py +++ b/flatcamTools/ToolCutOut.py @@ -108,7 +108,7 @@ class CutOut(FlatCAMTool): self.obj_combo = FCComboBox() self.obj_combo.setModel(self.app.collection) self.obj_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) - self.obj_combo.set_last = True + self.obj_combo.is_last = True grid0.addWidget(self.obj_combo, 3, 0, 1, 2) @@ -321,7 +321,8 @@ class CutOut(FlatCAMTool): self.man_object_combo = FCComboBox() self.man_object_combo.setModel(self.app.collection) self.man_object_combo.setRootModelIndex(self.app.collection.index(2, 0, QtCore.QModelIndex())) - self.man_object_combo.set_last = True + self.man_object_combo.is_last = True + self.man_object_combo.obj_type = "Geometry" self.man_object_label = QtWidgets.QLabel('%s:' % _("Geometry Object")) self.man_object_label.setToolTip( @@ -416,6 +417,7 @@ class CutOut(FlatCAMTool): obj_type = {'grb': 0, 'geo': 2}[val] self.obj_combo.setRootModelIndex(self.app.collection.index(obj_type, 0, QtCore.QModelIndex())) self.obj_combo.setCurrentIndex(0) + self.obj_combo.obj_type = {"grb": "Gerber", "geo": "Geometry"}[val] def run(self, toggle=True): self.app.report_usage("ToolCutOut()") diff --git a/flatcamTools/ToolDblSided.py b/flatcamTools/ToolDblSided.py index 8612932c..75071e88 100644 --- a/flatcamTools/ToolDblSided.py +++ b/flatcamTools/ToolDblSided.py @@ -59,7 +59,8 @@ class DblSidedTool(FlatCAMTool): self.gerber_object_combo = FCComboBox() self.gerber_object_combo.setModel(self.app.collection) self.gerber_object_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) - self.gerber_object_combo.set_last = True + self.gerber_object_combo.is_last = True + self.gerber_object_combo.obj_type = "Gerber" self.botlay_label = QtWidgets.QLabel("%s:" % _("GERBER")) self.botlay_label.setToolTip('%s.' % _("Gerber to be mirrored")) @@ -86,7 +87,8 @@ class DblSidedTool(FlatCAMTool): self.exc_object_combo = FCComboBox() self.exc_object_combo.setModel(self.app.collection) self.exc_object_combo.setRootModelIndex(self.app.collection.index(1, 0, QtCore.QModelIndex())) - self.exc_object_combo.set_last = True + self.exc_object_combo.is_last = True + self.exc_object_combo.obj_type = "Excellon" self.excobj_label = QtWidgets.QLabel("%s:" % _("EXCELLON")) self.excobj_label.setToolTip(_("Excellon Object to be mirrored.")) @@ -113,7 +115,8 @@ class DblSidedTool(FlatCAMTool): self.geo_object_combo = FCComboBox() self.geo_object_combo.setModel(self.app.collection) self.geo_object_combo.setRootModelIndex(self.app.collection.index(2, 0, QtCore.QModelIndex())) - self.geo_object_combo.set_last = True + self.geo_object_combo.is_last = True + self.geo_object_combo.obj_type = "Geometry" self.geoobj_label = QtWidgets.QLabel("%s:" % _("GEOMETRY")) self.geoobj_label.setToolTip( @@ -232,7 +235,7 @@ class DblSidedTool(FlatCAMTool): self.box_combo = FCComboBox() self.box_combo.setModel(self.app.collection) self.box_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) - self.box_combo.set_last = True + self.box_combo.is_last = True self.box_combo.hide() @@ -555,14 +558,16 @@ class DblSidedTool(FlatCAMTool): self.align_ref_label_val.set_value('%.*f' % (self.decimals, 0.0)) + # run once to make sure that the obj_type attribute is updated in the FCComboBox + self.box_type_radio.set_value('grb') + self.on_combo_box_type('grb') + def on_combo_box_type(self, val): - obj_type = { - 'grb': 0, - 'exc': 1, - 'geo': 2 - }[val] + obj_type = {'grb': 0, 'exc': 1, 'geo': 2}[val] self.box_combo.setRootModelIndex(self.app.collection.index(obj_type, 0, QtCore.QModelIndex())) self.box_combo.setCurrentIndex(0) + self.box_combo.obj_type = { + "grb": "Gerber", "exc": "Excellon", "geo": "Geometry"}[val] def on_create_alignment_holes(self): axis = self.align_axis_radio.get_value() diff --git a/flatcamTools/ToolExtractDrills.py b/flatcamTools/ToolExtractDrills.py index 39e287a4..aa4a7adc 100644 --- a/flatcamTools/ToolExtractDrills.py +++ b/flatcamTools/ToolExtractDrills.py @@ -55,7 +55,8 @@ class ToolExtractDrills(FlatCAMTool): self.gerber_object_combo = FCComboBox() self.gerber_object_combo.setModel(self.app.collection) self.gerber_object_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) - self.gerber_object_combo.set_last = True + self.gerber_object_combo.is_last = True + self.gerber_object_combo.obj_type = "Gerber" self.grb_label = QtWidgets.QLabel("%s:" % _("GERBER")) self.grb_label.setToolTip('%s.' % _("Gerber from which to extract drill holes")) diff --git a/flatcamTools/ToolFiducials.py b/flatcamTools/ToolFiducials.py index 1586f010..4c9070e9 100644 --- a/flatcamTools/ToolFiducials.py +++ b/flatcamTools/ToolFiducials.py @@ -253,7 +253,8 @@ class ToolFiducials(FlatCAMTool): self.grb_object_combo = FCComboBox() self.grb_object_combo.setModel(self.app.collection) self.grb_object_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) - self.grb_object_combo.set_last = True + self.grb_object_combo.is_last = True + self.grb_object_combo.obj_type = "Gerber" self.grbobj_label = QtWidgets.QLabel("%s:" % _("Copper Gerber")) self.grbobj_label.setToolTip( @@ -289,7 +290,8 @@ class ToolFiducials(FlatCAMTool): self.sm_object_combo = FCComboBox() self.sm_object_combo.setModel(self.app.collection) self.sm_object_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) - self.sm_object_combo.set_last = True + self.sm_object_combo.is_last = True + self.sm_object_combo.obj_type = "Gerber" grid_lay.addWidget(self.sm_object_label, 13, 0, 1, 2) grid_lay.addWidget(self.sm_object_combo, 14, 0, 1, 2) diff --git a/flatcamTools/ToolFilm.py b/flatcamTools/ToolFilm.py index 98a9f1d3..252cb0fb 100644 --- a/flatcamTools/ToolFilm.py +++ b/flatcamTools/ToolFilm.py @@ -66,10 +66,7 @@ class Film(FlatCAMTool): # Type of object for which to create the film self.tf_type_obj_combo = FCComboBox() - self.tf_type_obj_combo.addItems(["Gerber", "Geometry"]) - # self.tf_type_obj_combo.addItem("Gerber") - # self.tf_type_obj_combo.addItem("Excellon") - # self.tf_type_obj_combo.addItem("Geometry") + self.tf_type_obj_combo.addItems([_("Gerber"), _("Geometry")]) # we get rid of item1 ("Excellon") as it is not suitable for creating film # self.tf_type_obj_combo.view().setRowHidden(1, True) @@ -90,7 +87,7 @@ class Film(FlatCAMTool): self.tf_object_combo = FCComboBox() self.tf_object_combo.setModel(self.app.collection) self.tf_object_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) - self.tf_object_combo.set_last = True + self.tf_object_combo.is_last = True self.tf_object_label = QtWidgets.QLabel('%s:' % _("Film Object")) self.tf_object_label.setToolTip( @@ -102,7 +99,7 @@ class Film(FlatCAMTool): # Type of Box Object to be used as an envelope for film creation # Within this we can create negative self.tf_type_box_combo = FCComboBox() - self.tf_type_box_combo.addItems(["Gerber", "Geometry"]) + self.tf_type_box_combo.addItems([_("Gerber"), _("Geometry")]) # self.tf_type_box_combo.addItem("Gerber") # self.tf_type_box_combo.addItem("Excellon") @@ -127,7 +124,7 @@ class Film(FlatCAMTool): self.tf_box_combo = FCComboBox() self.tf_box_combo.setModel(self.app.collection) self.tf_box_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) - self.tf_box_combo.set_last = True + self.tf_box_combo.is_last = True self.tf_box_combo_label = QtWidgets.QLabel('%s:' % _("Box Object")) self.tf_box_combo_label.setToolTip( @@ -372,7 +369,9 @@ class Film(FlatCAMTool): self.exc_combo = FCComboBox() self.exc_combo.setModel(self.app.collection) self.exc_combo.setRootModelIndex(self.app.collection.index(1, 0, QtCore.QModelIndex())) - self.exc_combo.set_last = True + self.exc_combo.is_last = True + self.exc_combo.obj_type = "Excellon" + punch_grid.addWidget(self.exc_label, 1, 0) punch_grid.addWidget(self.exc_combo, 1, 1) @@ -542,15 +541,21 @@ class Film(FlatCAMTool): self.file_type_radio.activated_custom.connect(self.on_file_type) self.reset_button.clicked.connect(self.set_tool_ui) - def on_type_obj_index_changed(self, index): + def on_type_obj_index_changed(self): obj_type = self.tf_type_obj_combo.currentIndex() self.tf_object_combo.setRootModelIndex(self.app.collection.index(obj_type, 0, QtCore.QModelIndex())) self.tf_object_combo.setCurrentIndex(0) + self.tf_object_combo.obj_type = { + _("Gerber"): "Gerber", _("Geometry"): "Geometry" + }[self.tf_type_obj_combo.get_value()] - def on_type_box_index_changed(self, index): + def on_type_box_index_changed(self): obj_type = self.tf_type_box_combo.currentIndex() self.tf_box_combo.setRootModelIndex(self.app.collection.index(obj_type, 0, QtCore.QModelIndex())) self.tf_box_combo.setCurrentIndex(0) + self.tf_box_combo.obj_type = { + _("Gerber"): "Gerber", _("Geometry"): "Geometry" + }[self.tf_type_obj_combo.get_value()] def run(self, toggle=True): self.app.report_usage("ToolFilm()") @@ -613,6 +618,10 @@ class Film(FlatCAMTool): self.orientation_radio.set_value(self.app.defaults["tools_film_orientation"]) self.pagesize_combo.set_value(self.app.defaults["tools_film_pagesize"]) + # run once to update the obj_type attribute in the FCCombobox so the last object is showed in cb + self.on_type_obj_index_changed() + self.on_type_box_index_changed() + def on_film_type(self, val): type_of_film = val diff --git a/flatcamTools/ToolImage.py b/flatcamTools/ToolImage.py index 8ac9ed89..603fb9e1 100644 --- a/flatcamTools/ToolImage.py +++ b/flatcamTools/ToolImage.py @@ -46,8 +46,7 @@ class ToolImage(FlatCAMTool): # Type of object to create for the image self.tf_type_obj_combo = FCComboBox() - self.tf_type_obj_combo.addItem("Gerber") - self.tf_type_obj_combo.addItem("Geometry") + self.tf_type_obj_combo.addItems([_("Gerber"), _("Geometry")]) self.tf_type_obj_combo.setItemIcon(0, QtGui.QIcon(self.app.resource_location + "/flatcam_icon16.png")) self.tf_type_obj_combo.setItemIcon(1, QtGui.QIcon(self.app.resource_location + "/geometry16.png")) @@ -238,7 +237,7 @@ class ToolImage(FlatCAMTool): filename, _f = QtWidgets.QFileDialog.getOpenFileName(caption=_("Import IMAGE"), filter=filter) filename = str(filename) - type_obj = self.tf_type_obj_combo.get_value().lower() + type_obj = self.tf_type_obj_combo.get_value() dpi = self.dpi_entry.get_value() mode = self.image_type.get_value() mask = [self.mask_bw_entry.get_value(), self.mask_r_entry.get_value(), self.mask_g_entry.get_value(), @@ -250,7 +249,7 @@ class ToolImage(FlatCAMTool): self.app.worker_task.emit({'fcn': self.import_image, 'params': [filename, type_obj, dpi, mode, mask]}) - def import_image(self, filename, o_type='gerber', dpi=96, mode='black', mask=None, outname=None): + def import_image(self, filename, o_type=_("Gerber"), dpi=96, mode='black', mask=None, outname=None): """ Adds a new Geometry Object to the projects and populates it with shapes extracted from the SVG file. @@ -269,10 +268,10 @@ class ToolImage(FlatCAMTool): if mask is None: mask = [250, 250, 250, 250] - if o_type is None or o_type == "geometry": + if o_type is None or o_type == _("Geometry"): obj_type = "geometry" - elif o_type == "gerber": - obj_type = o_type + elif o_type == _("Gerber"): + obj_type = "gerber" else: self.app.inform.emit('[ERROR_NOTCL] %s' % _("Not supported type is picked as parameter. " diff --git a/flatcamTools/ToolInvertGerber.py b/flatcamTools/ToolInvertGerber.py index 46124730..ffacf098 100644 --- a/flatcamTools/ToolInvertGerber.py +++ b/flatcamTools/ToolInvertGerber.py @@ -66,7 +66,8 @@ class ToolInvertGerber(FlatCAMTool): self.gerber_combo = FCComboBox() self.gerber_combo.setModel(self.app.collection) self.gerber_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) - self.gerber_combo.set_last = True + self.gerber_combo.is_last = True + self.gerber_combo.obj_type = "Gerber" self.gerber_label = QtWidgets.QLabel('%s:' % _("GERBER")) self.gerber_label.setToolTip( diff --git a/flatcamTools/ToolNCC.py b/flatcamTools/ToolNCC.py index 1203a3c5..2873be89 100644 --- a/flatcamTools/ToolNCC.py +++ b/flatcamTools/ToolNCC.py @@ -71,15 +71,15 @@ class NonCopperClear(FlatCAMTool, Gerber): # ################################################ # ##### Type of object to be copper cleaned ###### # ################################################ - # self.type_obj_combo = FCComboBox() - # self.type_obj_combo.addItem("Gerber") - # self.type_obj_combo.addItem("Excellon") - # self.type_obj_combo.addItem("Geometry") + # self.type_obj_radio = FCComboBox() + # self.type_obj_radio.addItem("Gerber") + # self.type_obj_radio.addItem("Excellon") + # self.type_obj_radio.addItem("Geometry") # # # we get rid of item1 ("Excellon") as it is not suitable - # self.type_obj_combo.view().setRowHidden(1, True) - # self.type_obj_combo.setItemIcon(0, QtGui.QIcon(self.app.resource_location + "/flatcam_icon16.png")) - # self.type_obj_combo.setItemIcon(2, QtGui.QIcon(self.app.resource_location + "/geometry16.png")) + # self.type_obj_radio.view().setRowHidden(1, True) + # self.type_obj_radio.setItemIcon(0, QtGui.QIcon(self.app.resource_location + "/flatcam_icon16.png")) + # self.type_obj_radio.setItemIcon(2, QtGui.QIcon(self.app.resource_location + "/geometry16.png")) self.type_obj_combo_label = QtWidgets.QLabel('%s:' % _("Obj Type")) self.type_obj_combo_label.setToolTip( @@ -90,10 +90,10 @@ class NonCopperClear(FlatCAMTool, Gerber): ) self.type_obj_combo_label.setMinimumWidth(60) - self.type_obj_combo = RadioSet([{'label': "Geometry", 'value': 'geometry'}, - {'label': "Gerber", 'value': 'gerber'}]) + self.type_obj_radio = RadioSet([{'label': _("Geometry"), 'value': 'geometry'}, + {'label': _("Gerber"), 'value': 'gerber'}]) - form_layout.addRow(self.type_obj_combo_label, self.type_obj_combo) + form_layout.addRow(self.type_obj_combo_label, self.type_obj_radio) # ################################################ # ##### The object to be copper cleaned ########## @@ -102,7 +102,7 @@ class NonCopperClear(FlatCAMTool, Gerber): self.object_combo.setModel(self.app.collection) self.object_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) # self.object_combo.setCurrentIndex(1) - self.object_combo.set_last = True + self.object_combo.is_last = True self.object_label = QtWidgets.QLabel('%s:' % _("Object")) self.object_label.setToolTip(_("Object to be cleared of excess copper.")) @@ -546,31 +546,30 @@ class NonCopperClear(FlatCAMTool, Gerber): form1 = QtWidgets.QFormLayout() self.grid3.addLayout(form1, 28, 0, 1, 2) - self.box_combo_type_label = QtWidgets.QLabel('%s:' % _("Ref. Type")) - self.box_combo_type_label.setToolTip( + self.reference_combo_type_label = QtWidgets.QLabel('%s:' % _("Ref. Type")) + self.reference_combo_type_label.setToolTip( _("The type of FlatCAM object to be used as non copper clearing reference.\n" "It can be Gerber, Excellon or Geometry.") ) - self.box_combo_type = FCComboBox() - self.box_combo_type.addItem(_("Reference Gerber")) - self.box_combo_type.addItem(_("Reference Excellon")) - self.box_combo_type.addItem(_("Reference Geometry")) - form1.addRow(self.box_combo_type_label, self.box_combo_type) + self.reference_combo_type = FCComboBox() + self.reference_combo_type.addItems([_("Gerber"), _("Excellon"), _("Geometry")]) - self.box_combo_label = QtWidgets.QLabel('%s:' % _("Ref. Object")) - self.box_combo_label.setToolTip( + form1.addRow(self.reference_combo_type_label, self.reference_combo_type) + + self.reference_combo_label = QtWidgets.QLabel('%s:' % _("Ref. Object")) + self.reference_combo_label.setToolTip( _("The FlatCAM object to be used as non copper clearing reference.") ) - self.box_combo = FCComboBox() - self.box_combo.setModel(self.app.collection) - self.box_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) - self.box_combo.set_last = True - form1.addRow(self.box_combo_label, self.box_combo) + self.reference_combo = FCComboBox() + self.reference_combo.setModel(self.app.collection) + self.reference_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) + self.reference_combo.is_last = True + form1.addRow(self.reference_combo_label, self.reference_combo) - self.box_combo.hide() - self.box_combo_label.hide() - self.box_combo_type.hide() - self.box_combo_type_label.hide() + self.reference_combo.hide() + self.reference_combo_label.hide() + self.reference_combo_type.hide() + self.reference_combo_type_label.hide() separator_line = QtWidgets.QFrame() separator_line.setFrameShape(QtWidgets.QFrame.HLine) @@ -706,13 +705,13 @@ class NonCopperClear(FlatCAMTool, Gerber): self.op_radio.activated_custom.connect(self.on_operation_change) - self.box_combo_type.currentIndexChanged.connect(self.on_combo_box_type) - self.select_combo.group_toggle_fn = self.on_toggle_reference + self.reference_combo_type.currentIndexChanged.connect(self.on_reference_combo_changed) + self.select_combo.currentIndexChanged.connect(self.on_toggle_reference) self.ncc_rest_cb.stateChanged.connect(self.on_rest_machining_check) self.ncc_order_radio.activated_custom[str].connect(self.on_order_changed) - self.type_obj_combo.activated_custom.connect(self.on_type_obj_index_changed) + self.type_obj_radio.activated_custom.connect(self.on_type_obj_index_changed) self.apply_param_to_all.clicked.connect(self.on_apply_param_to_all_clicked) @@ -722,6 +721,9 @@ class NonCopperClear(FlatCAMTool, Gerber): obj_type = 0 if val == 'gerber' else 2 self.object_combo.setRootModelIndex(self.app.collection.index(obj_type, 0, QtCore.QModelIndex())) self.object_combo.setCurrentIndex(0) + self.object_combo.obj_type = { + "gerber": "Gerber", "geometry": "Geometry" + }[self.type_obj_radio.get_value()] def on_operation_change(self, val): if val == 'iso': @@ -910,6 +912,7 @@ class NonCopperClear(FlatCAMTool, Gerber): def run(self, toggle=True): self.app.report_usage("ToolNonCopperClear()") + log.debug("ToolNCC().run() was launched ...") if toggle: # if the splitter is hidden, display it, else hide it but only if the current widget is the same @@ -948,7 +951,12 @@ class NonCopperClear(FlatCAMTool, Gerber): self.tools_frame.show() - self.type_obj_combo.set_value('gerber') + self.type_obj_radio.set_value('gerber') + + # run those once so the obj_type attribute is updated for the FCComboboxes + # so the last loaded object is displayed + self.on_type_obj_index_changed(val="gerber") + self.on_reference_combo_changed() self.op_radio.set_value(self.app.defaults["tools_nccoperation"]) self.ncc_order_radio.set_value(self.app.defaults["tools_nccorder"]) @@ -1254,22 +1262,25 @@ class NonCopperClear(FlatCAMTool, Gerber): if self.tool_type_radio.get_value() == 'C1': self.old_tool_dia = self.addtool_entry.get_value() - def on_combo_box_type(self): - obj_type = self.box_combo_type.currentIndex() - self.box_combo.setRootModelIndex(self.app.collection.index(obj_type, 0, QtCore.QModelIndex())) - self.box_combo.setCurrentIndex(0) + def on_reference_combo_changed(self): + obj_type = self.reference_combo_type.currentIndex() + self.reference_combo.setRootModelIndex(self.app.collection.index(obj_type, 0, QtCore.QModelIndex())) + self.reference_combo.setCurrentIndex(0) + self.reference_combo.obj_type = { + _("Gerber"): "Gerber", _("Excellon"): "Excellon", _("Geometry"): "Geometry" + }[self.reference_combo_type.get_value()] def on_toggle_reference(self): if self.select_combo.get_value() == _("Itself") or self.select_combo.get_value() == _("Area Selection"): - self.box_combo.hide() - self.box_combo_label.hide() - self.box_combo_type.hide() - self.box_combo_type_label.hide() + self.reference_combo.hide() + self.reference_combo_label.hide() + self.reference_combo_type.hide() + self.reference_combo_type_label.hide() else: - self.box_combo.show() - self.box_combo_label.show() - self.box_combo_type.show() - self.box_combo_type_label.show() + self.reference_combo.show() + self.reference_combo_label.show() + self.reference_combo_type.show() + self.reference_combo_type_label.show() def on_order_changed(self, order): if order != 'no': @@ -1567,7 +1578,7 @@ class NonCopperClear(FlatCAMTool, Gerber): "use a number.")) continue - if self.tools_table.cellWidget(x.row(), 4).currentText() == 'iso_op': + if self.op_radio.get_value() == _("Isolation"): self.iso_dia_list.append(self.tooldia) else: self.ncc_dia_list.append(self.tooldia) @@ -1606,7 +1617,7 @@ class NonCopperClear(FlatCAMTool, Gerber): self.mr = self.app.plotcanvas.graph_event_connect('mouse_release', self.on_mouse_release) self.mm = self.app.plotcanvas.graph_event_connect('mouse_move', self.on_mouse_move) elif self.select_method == 'box': - self.bound_obj_name = self.box_combo.currentText() + self.bound_obj_name = self.reference_combo.currentText() # Get source object. try: self.bound_obj = self.app.collection.get_by_name(self.bound_obj_name) diff --git a/flatcamTools/ToolOptimal.py b/flatcamTools/ToolOptimal.py index 0cbbf0f6..7dcbf121 100644 --- a/flatcamTools/ToolOptimal.py +++ b/flatcamTools/ToolOptimal.py @@ -66,7 +66,8 @@ class ToolOptimal(FlatCAMTool): self.gerber_object_combo = FCComboBox() self.gerber_object_combo.setModel(self.app.collection) self.gerber_object_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) - self.gerber_object_combo.set_last = True + self.gerber_object_combo.is_last = True + self.gerber_object_combo.obj_type = "Gerber" self.gerber_object_label = QtWidgets.QLabel("%s:" % _("GERBER")) self.gerber_object_label.setToolTip( diff --git a/flatcamTools/ToolPaint.py b/flatcamTools/ToolPaint.py index 0c436f58..3951a5cc 100644 --- a/flatcamTools/ToolPaint.py +++ b/flatcamTools/ToolPaint.py @@ -97,7 +97,7 @@ class ToolPaint(FlatCAMTool, Gerber): self.obj_combo = FCComboBox() self.obj_combo.setModel(self.app.collection) self.obj_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) - self.obj_combo.set_last = True + self.obj_combo.is_last = True self.object_label = QtWidgets.QLabel('%s:' % _("Object")) self.object_label.setToolTip(_("Object to be painted.")) @@ -491,31 +491,30 @@ class ToolPaint(FlatCAMTool, Gerber): form1 = QtWidgets.QFormLayout() grid4.addLayout(form1, 20, 0, 1, 2) - self.box_combo_type_label = QtWidgets.QLabel('%s:' % _("Ref. Type")) - self.box_combo_type_label.setToolTip( + self.reference_type_label = QtWidgets.QLabel('%s:' % _("Ref. Type")) + self.reference_type_label.setToolTip( _("The type of FlatCAM object to be used as paint reference.\n" "It can be Gerber, Excellon or Geometry.") ) - self.box_combo_type = FCComboBox() - self.box_combo_type.addItem(_("Reference Gerber")) - self.box_combo_type.addItem(_("Reference Excellon")) - self.box_combo_type.addItem(_("Reference Geometry")) - form1.addRow(self.box_combo_type_label, self.box_combo_type) + self.reference_type_combo = FCComboBox() + self.reference_type_combo.addItems([_("Gerber"), _("Excellon"), _("Geometry")]) - self.box_combo_label = QtWidgets.QLabel('%s:' % _("Ref. Object")) - self.box_combo_label.setToolTip( + form1.addRow(self.reference_type_label, self.reference_type_combo) + + self.reference_combo_label = QtWidgets.QLabel('%s:' % _("Ref. Object")) + self.reference_combo_label.setToolTip( _("The FlatCAM object to be used as non copper clearing reference.") ) - self.box_combo = FCComboBox() - self.box_combo.setModel(self.app.collection) - self.box_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) - self.box_combo.set_last = True - form1.addRow(self.box_combo_label, self.box_combo) + self.reference_combo = FCComboBox() + self.reference_combo.setModel(self.app.collection) + self.reference_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) + self.reference_combo.is_last = True + form1.addRow(self.reference_combo_label, self.reference_combo) - self.box_combo.hide() - self.box_combo_label.hide() - self.box_combo_type.hide() - self.box_combo_type_label.hide() + self.reference_combo.hide() + self.reference_combo_label.hide() + self.reference_type_combo.hide() + self.reference_type_label.hide() # GO Button self.generate_paint_button = QtWidgets.QPushButton(_('Generate Geometry')) @@ -633,7 +632,7 @@ class ToolPaint(FlatCAMTool, Gerber): self.order_radio.activated_custom[str].connect(self.on_order_changed) self.rest_cb.stateChanged.connect(self.on_rest_machining_check) - self.box_combo_type.currentIndexChanged.connect(self.on_combo_box_type) + self.reference_type_combo.currentIndexChanged.connect(self.on_reference_combo_changed) self.type_obj_combo.activated_custom.connect(self.on_type_obj_changed) self.apply_param_to_all.clicked.connect(self.on_apply_param_to_all_clicked) @@ -660,6 +659,7 @@ class ToolPaint(FlatCAMTool, Gerber): obj_type = 0 if val == 'gerber' else 2 self.obj_combo.setRootModelIndex(self.app.collection.index(obj_type, 0, QtCore.QModelIndex())) self.obj_combo.setCurrentIndex(0) + self.obj_combo.obj_type = {"gerber": "Gerber", "geometry": "Geometry"}[val] idx = self.paintmethod_combo.findText(_("Laser_lines")) if self.type_obj_combo.get_value().lower() == 'gerber': @@ -669,6 +669,14 @@ class ToolPaint(FlatCAMTool, Gerber): if self.paintmethod_combo.get_value() == _("Laser_lines"): self.paintmethod_combo.set_value(_("Lines")) + def on_reference_combo_changed(self): + obj_type = self.reference_type_combo.currentIndex() + self.reference_combo.setRootModelIndex(self.app.collection.index(obj_type, 0, QtCore.QModelIndex())) + self.reference_combo.setCurrentIndex(0) + self.reference_combo.obj_type = { + _("Gerber"): "Gerber", _("Excellon"): "Excellon", _("Geometry"): "Geometry" + }[self.reference_type_combo.get_value()] + def install(self, icon=None, separator=None, **kwargs): FlatCAMTool.install(self, icon, separator, shortcut='ALT+P', **kwargs) @@ -888,15 +896,15 @@ class ToolPaint(FlatCAMTool, Gerber): def on_selection(self): if self.selectmethod_combo.get_value() == _("Reference Object"): - self.box_combo.show() - self.box_combo_label.show() - self.box_combo_type.show() - self.box_combo_type_label.show() + self.reference_combo.show() + self.reference_combo_label.show() + self.reference_type_combo.show() + self.reference_type_label.show() else: - self.box_combo.hide() - self.box_combo_label.hide() - self.box_combo_type.hide() - self.box_combo_type_label.hide() + self.reference_combo.hide() + self.reference_combo_label.hide() + self.reference_type_combo.hide() + self.reference_type_label.hide() if self.selectmethod_combo.get_value() == _("Polygon Selection"): # disable rest-machining for single polygon painting @@ -997,6 +1005,11 @@ class ToolPaint(FlatCAMTool, Gerber): # make the default object type, "Geometry" self.type_obj_combo.set_value("geometry") + # run those once so the obj_type attribute is updated in the FCComboBoxes + # to make sure that the last loaded object is displayed in the combobox + self.on_type_obj_changed(val="geometry") + self.on_reference_combo_changed() + try: diameters = [float(self.app.defaults["tools_painttooldia"])] except (ValueError, TypeError): @@ -1103,11 +1116,6 @@ class ToolPaint(FlatCAMTool, Gerber): self.ui_connect() - def on_combo_box_type(self): - obj_type = self.box_combo_type.currentIndex() - self.box_combo.setRootModelIndex(self.app.collection.index(obj_type, 0, QtCore.QModelIndex())) - self.box_combo.setCurrentIndex(0) - def on_tool_add(self, dia=None, muted=None): self.blockSignals(True) @@ -1411,7 +1419,7 @@ class ToolPaint(FlatCAMTool, Gerber): self.mr = self.app.plotcanvas.graph_event_connect('mouse_release', self.on_mouse_release) self.mm = self.app.plotcanvas.graph_event_connect('mouse_move', self.on_mouse_move) elif self.select_method == _("Reference Object"): - self.bound_obj_name = self.box_combo.currentText() + self.bound_obj_name = self.reference_combo.currentText() # Get source object. try: self.bound_obj = self.app.collection.get_by_name(self.bound_obj_name) diff --git a/flatcamTools/ToolPanelize.py b/flatcamTools/ToolPanelize.py index 0b7f5fec..fe381fc0 100644 --- a/flatcamTools/ToolPanelize.py +++ b/flatcamTools/ToolPanelize.py @@ -83,7 +83,7 @@ class Panelize(FlatCAMTool): self.object_combo = FCComboBox() self.object_combo.setModel(self.app.collection) self.object_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) - self.object_combo.set_last = True + self.object_combo.is_last = True self.object_combo.setToolTip( _("Object to be panelized. This means that it will\n" @@ -115,10 +115,7 @@ class Panelize(FlatCAMTool): # Type of Box Object to be used as an envelope for panelization self.type_box_combo = FCComboBox() - self.type_box_combo.addItems(["Gerber", "Geometry"]) - # self.type_box_combo.addItem("Gerber") - # self.type_box_combo.addItem("Excellon") - # self.type_box_combo.addItem("Geometry") + self.type_box_combo.addItems([_("Gerber"), _("Geometry")]) # we get rid of item1 ("Excellon") as it is not suitable for use as a "box" for panelizing # self.type_box_combo.view().setRowHidden(1, True) @@ -138,7 +135,7 @@ class Panelize(FlatCAMTool): self.box_combo = FCComboBox() self.box_combo.setModel(self.app.collection) self.box_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) - self.box_combo.set_last = True + self.box_combo.is_last = True self.box_combo.setToolTip( _("The actual object that is used a container for the\n " @@ -364,10 +361,18 @@ class Panelize(FlatCAMTool): self.app.defaults["tools_panelize_panel_type"] else 'gerber' self.panel_type_radio.set_value(panel_type) + # run once the following so the obj_type attribute is updated in the FCComboBoxes + # such that the last loaded object is populated in the combo boxes + self.on_type_obj_index_changed() + self.on_type_box_index_changed() + def on_type_obj_index_changed(self): obj_type = self.type_obj_combo.currentIndex() self.object_combo.setRootModelIndex(self.app.collection.index(obj_type, 0, QtCore.QModelIndex())) self.object_combo.setCurrentIndex(0) + self.object_combo.obj_type = { + _("Gerber"): "Gerber", _("Excellon"): "Excellon", _("Geometry"): "Geometry" + }[self.type_obj_combo.get_value()] # hide the panel type for Excellons, the panel can be only of type Geometry if self.type_obj_combo.currentText() != 'Excellon': @@ -382,6 +387,9 @@ class Panelize(FlatCAMTool): obj_type = self.type_box_combo.currentIndex() self.box_combo.setRootModelIndex(self.app.collection.index(obj_type, 0, QtCore.QModelIndex())) self.box_combo.setCurrentIndex(0) + self.box_combo.obj_type = { + _("Gerber"): "Gerber", _("Geometry"): "Geometry" + }[self.type_box_combo.get_value()] def on_reference_radio_changed(self, current_val): if current_val == 'object': diff --git a/flatcamTools/ToolPunchGerber.py b/flatcamTools/ToolPunchGerber.py index c4c9ae61..8c094dbf 100644 --- a/flatcamTools/ToolPunchGerber.py +++ b/flatcamTools/ToolPunchGerber.py @@ -58,7 +58,8 @@ class ToolPunchGerber(FlatCAMTool): self.gerber_object_combo = FCComboBox() self.gerber_object_combo.setModel(self.app.collection) self.gerber_object_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) - self.gerber_object_combo.set_last = True + self.gerber_object_combo.is_last = True + self.gerber_object_combo.obj_type = "Gerber" self.grb_label = QtWidgets.QLabel("%s:" % _("GERBER")) self.grb_label.setToolTip('%s.' % _("Gerber into which to punch holes")) @@ -168,7 +169,8 @@ class ToolPunchGerber(FlatCAMTool): self.exc_combo = FCComboBox() self.exc_combo.setModel(self.app.collection) self.exc_combo.setRootModelIndex(self.app.collection.index(1, 0, QtCore.QModelIndex())) - self.exc_combo.set_last = True + self.exc_combo.is_last = True + self.exc_combo.obj_type = "Excellon" grid0.addWidget(self.exc_label, 3, 0, 1, 2) grid0.addWidget(self.exc_combo, 4, 0, 1, 2) diff --git a/flatcamTools/ToolQRCode.py b/flatcamTools/ToolQRCode.py index 67add5c9..b71d477e 100644 --- a/flatcamTools/ToolQRCode.py +++ b/flatcamTools/ToolQRCode.py @@ -72,9 +72,10 @@ class QRCode(FlatCAMTool): self.grb_object_combo = FCComboBox() self.grb_object_combo.setModel(self.app.collection) self.grb_object_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) - self.grb_object_combo.set_last = True + self.grb_object_combo.is_last = True + self.grb_object_combo.obj_type = "Gerber" - self.grbobj_label = QtWidgets.QLabel("%s:" % _("GERBER")) + self.grbobj_label = QtWidgets.QLabel("%s:" % _("Object")) self.grbobj_label.setToolTip( _("Gerber Object to which the QRCode will be added.") ) diff --git a/flatcamTools/ToolRulesCheck.py b/flatcamTools/ToolRulesCheck.py index 9deb26be..eb236381 100644 --- a/flatcamTools/ToolRulesCheck.py +++ b/flatcamTools/ToolRulesCheck.py @@ -72,7 +72,8 @@ class RulesCheck(FlatCAMTool): self.copper_t_object = FCComboBox() self.copper_t_object.setModel(self.app.collection) self.copper_t_object.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) - self.copper_t_object.set_last = True + self.copper_t_object.is_last = True + self.copper_t_object.obj_type = "Gerber" self.copper_t_object_lbl = QtWidgets.QLabel('%s:' % _("Top")) self.copper_t_object_lbl.setToolTip( @@ -89,7 +90,8 @@ class RulesCheck(FlatCAMTool): self.copper_b_object = FCComboBox() self.copper_b_object.setModel(self.app.collection) self.copper_b_object.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) - self.copper_b_object.set_last = True + self.copper_b_object.is_last = True + self.copper_b_object.obj_type = "Gerber" self.copper_b_object_lbl = QtWidgets.QLabel('%s:' % _("Bottom")) self.copper_b_object_lbl.setToolTip( @@ -106,7 +108,8 @@ class RulesCheck(FlatCAMTool): self.sm_t_object = FCComboBox() self.sm_t_object.setModel(self.app.collection) self.sm_t_object.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) - self.sm_t_object.set_last = True + self.sm_t_object.is_last = True + self.sm_t_object.obj_type = "Gerber" self.sm_t_object_lbl = QtWidgets.QLabel('%s:' % _("SM Top")) self.sm_t_object_lbl.setToolTip( @@ -123,7 +126,8 @@ class RulesCheck(FlatCAMTool): self.sm_b_object = FCComboBox() self.sm_b_object.setModel(self.app.collection) self.sm_b_object.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) - self.sm_b_object.set_last = True + self.sm_b_object.is_last = True + self.sm_b_object.obj_type = "Gerber" self.sm_b_object_lbl = QtWidgets.QLabel('%s:' % _("SM Bottom")) self.sm_b_object_lbl.setToolTip( @@ -140,7 +144,8 @@ class RulesCheck(FlatCAMTool): self.ss_t_object = FCComboBox() self.ss_t_object.setModel(self.app.collection) self.ss_t_object.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) - self.ss_t_object.set_last = True + self.ss_t_object.is_last = True + self.ss_t_object.obj_type = "Gerber" self.ss_t_object_lbl = QtWidgets.QLabel('%s:' % _("Silk Top")) self.ss_t_object_lbl.setToolTip( @@ -157,7 +162,8 @@ class RulesCheck(FlatCAMTool): self.ss_b_object = FCComboBox() self.ss_b_object.setModel(self.app.collection) self.ss_b_object.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) - self.ss_b_object.set_last = True + self.ss_b_object.is_last = True + self.ss_b_object.obj_type = "Gerber" self.ss_b_object_lbl = QtWidgets.QLabel('%s:' % _("Silk Bottom")) self.ss_b_object_lbl.setToolTip( @@ -174,7 +180,8 @@ class RulesCheck(FlatCAMTool): self.outline_object = FCComboBox() self.outline_object.setModel(self.app.collection) self.outline_object.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) - self.outline_object.set_last = True + self.outline_object.is_last = True + self.outline_object.obj_type = "Gerber" self.outline_object_lbl = QtWidgets.QLabel('%s:' % _("Outline")) self.outline_object_lbl.setToolTip( @@ -200,7 +207,8 @@ class RulesCheck(FlatCAMTool): self.e1_object = FCComboBox() self.e1_object.setModel(self.app.collection) self.e1_object.setRootModelIndex(self.app.collection.index(1, 0, QtCore.QModelIndex())) - self.e1_object.set_last = True + self.e1_object.is_last = True + self.e1_object.obj_type = "Excellon" self.e1_object_lbl = QtWidgets.QLabel('%s:' % _("Excellon 1")) self.e1_object_lbl.setToolTip( @@ -218,7 +226,8 @@ class RulesCheck(FlatCAMTool): self.e2_object = FCComboBox() self.e2_object.setModel(self.app.collection) self.e2_object.setRootModelIndex(self.app.collection.index(1, 0, QtCore.QModelIndex())) - self.e2_object.set_last = True + self.e2_object.is_last = True + self.e2_object.obj_type = "Excellon" self.e2_object_lbl = QtWidgets.QLabel('%s:' % _("Excellon 2")) self.e2_object_lbl.setToolTip( diff --git a/flatcamTools/ToolSolderPaste.py b/flatcamTools/ToolSolderPaste.py index 568f164e..2dfd5d97 100644 --- a/flatcamTools/ToolSolderPaste.py +++ b/flatcamTools/ToolSolderPaste.py @@ -61,7 +61,8 @@ class SolderPaste(FlatCAMTool): self.obj_combo = FCComboBox(callback=self.on_rmb_combo) self.obj_combo.setModel(self.app.collection) self.obj_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) - self.obj_combo.set_last = True + self.obj_combo.is_last = True + self.obj_combo.obj_type = "Gerber" self.object_label = QtWidgets.QLabel("Gerber: ") self.object_label.setToolTip( @@ -383,7 +384,8 @@ class SolderPaste(FlatCAMTool): self.geo_obj_combo = FCComboBox(callback=self.on_rmb_combo) self.geo_obj_combo.setModel(self.app.collection) self.geo_obj_combo.setRootModelIndex(self.app.collection.index(2, 0, QtCore.QModelIndex())) - self.geo_obj_combo.set_last = True + self.geo_obj_combo.is_last = True + self.geo_obj_combo.obj_type = "Geometry" self.geo_object_label = QtWidgets.QLabel('%s:' % _("Geo Result")) self.geo_object_label.setToolTip( @@ -416,7 +418,8 @@ class SolderPaste(FlatCAMTool): self.cnc_obj_combo = FCComboBox(callback=self.on_rmb_combo) self.cnc_obj_combo.setModel(self.app.collection) self.cnc_obj_combo.setRootModelIndex(self.app.collection.index(3, 0, QtCore.QModelIndex())) - self.cnc_obj_combo.set_last = True + self.cnc_obj_combo.is_last = True + self.geo_obj_combo.obj_type = "CNCJob" self.cnc_object_label = QtWidgets.QLabel('%s:' % _("CNC Result")) self.cnc_object_label.setToolTip( diff --git a/flatcamTools/ToolSub.py b/flatcamTools/ToolSub.py index c63ff5e2..1471bd70 100644 --- a/flatcamTools/ToolSub.py +++ b/flatcamTools/ToolSub.py @@ -69,7 +69,9 @@ class ToolSub(FlatCAMTool): self.target_gerber_combo = FCComboBox() self.target_gerber_combo.setModel(self.app.collection) self.target_gerber_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) - self.target_gerber_combo.setCurrentIndex(1) + # self.target_gerber_combo.setCurrentIndex(1) + self.target_gerber_combo.is_last = True + self.target_gerber_combo.obj_type = "Gerber" self.target_gerber_label = QtWidgets.QLabel('%s:' % _("Target")) self.target_gerber_label.setToolTip( @@ -83,7 +85,8 @@ class ToolSub(FlatCAMTool): self.sub_gerber_combo = FCComboBox() self.sub_gerber_combo.setModel(self.app.collection) self.sub_gerber_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) - self.sub_gerber_combo.set_last = True + self.sub_gerber_combo.is_last = True + self.sub_gerber_combo.obj_type = "Gerber" self.sub_gerber_label = QtWidgets.QLabel('%s:' % _("Subtractor")) self.sub_gerber_label.setToolTip( @@ -121,7 +124,9 @@ class ToolSub(FlatCAMTool): self.target_geo_combo = FCComboBox() self.target_geo_combo.setModel(self.app.collection) self.target_geo_combo.setRootModelIndex(self.app.collection.index(2, 0, QtCore.QModelIndex())) - self.target_geo_combo.setCurrentIndex(1) + # self.target_geo_combo.setCurrentIndex(1) + self.target_geo_combo.is_last = True + self.target_geo_combo.obj_type = "Geometry" self.target_geo_label = QtWidgets.QLabel('%s:' % _("Target")) self.target_geo_label.setToolTip( @@ -135,7 +140,8 @@ class ToolSub(FlatCAMTool): self.sub_geo_combo = FCComboBox() self.sub_geo_combo.setModel(self.app.collection) self.sub_geo_combo.setRootModelIndex(self.app.collection.index(2, 0, QtCore.QModelIndex())) - self.sub_geo_combo.set_last = True + self.sub_geo_combo.is_last = True + self.sub_geo_combo.obj_type = "Geometry" self.sub_geo_label = QtWidgets.QLabel('%s:' % _("Subtractor")) self.sub_geo_label.setToolTip(