diff --git a/CHANGELOG.md b/CHANGELOG.md
index 3345bf61..63d8ceb2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,10 @@ CHANGELOG for FlatCAM beta
=================================================
+27.06.2020
+
+- Drilling Tool - UI is working as expected; I will have to propagate the changes to other tools too, to increase likeness between different parts of the app
+
25.06.2020
- made sure that when trying to view the source but no object is selected, the messages are correct
diff --git a/Common.py b/Common.py
index ee51773d..a8c0b382 100644
--- a/Common.py
+++ b/Common.py
@@ -406,6 +406,7 @@ class ExclusionAreas(QtCore.QObject):
# since the exclusion areas should apply to all objects in the app collection, this check is limited to
# only the current object therefore it will not guarantee success
self.app.inform.emit("%s" % _("Exclusion areas added. Checking overlap with the object geometry ..."))
+
for el in self.exclusion_areas_storage:
if el["shape"].intersects(unary_union(self.solid_geometry)):
self.on_clear_area_click()
@@ -413,8 +414,7 @@ class ExclusionAreas(QtCore.QObject):
"[ERROR_NOTCL] %s" % _("Failed. Exclusion areas intersects the object geometry ..."))
return
- self.app.inform.emit(
- "[success] %s" % _("Exclusion areas added."))
+ self.app.inform.emit("[success] %s" % _("Exclusion areas added."))
self.cnc_button.setStyleSheet("""
QPushButton
{
diff --git a/appGUI/GUIElements.py b/appGUI/GUIElements.py
index 78a04a65..15b92673 100644
--- a/appGUI/GUIElements.py
+++ b/appGUI/GUIElements.py
@@ -2418,8 +2418,8 @@ class FCTable(QtWidgets.QTableWidget):
palette.color(QtGui.QPalette.Active, QtGui.QPalette.Highlight))
# make inactive rows text some color as active; may be useful in the future
- # palette.setColor(QtGui.QPalette.Inactive, QtGui.QPalette.HighlightedText,
- # palette.color(QtGui.QPalette.Active, QtGui.QPalette.HighlightedText))
+ palette.setColor(QtGui.QPalette.Inactive, QtGui.QPalette.HighlightedText,
+ palette.color(QtGui.QPalette.Active, QtGui.QPalette.HighlightedText))
self.setPalette(palette)
if drag_drop:
diff --git a/appTools/ToolDrilling.py b/appTools/ToolDrilling.py
index 210e5a68..fae5caa6 100644
--- a/appTools/ToolDrilling.py
+++ b/appTools/ToolDrilling.py
@@ -61,8 +61,8 @@ class ToolDrilling(AppTool, Excellon):
# #############################################################################
# ######################### Tool GUI ##########################################
# #############################################################################
- self.ui = DrillingUI(layout=self.layout, app=self.app)
- self.toolName = self.ui.toolName
+ self.t_ui = DrillingUI(layout=self.layout, app=self.app)
+ self.toolName = self.t_ui.toolName
# #############################################################################
# ########################## VARIABLES ########################################
@@ -70,6 +70,7 @@ class ToolDrilling(AppTool, Excellon):
self.units = ''
self.excellon_tools = {}
self.tooluid = 0
+ self.kind = "excellon"
# dict that holds the object names and the option name
# the key is the object name (defines in ObjectUI) for each UI element that is a parameter
@@ -126,18 +127,18 @@ class ToolDrilling(AppTool, Excellon):
self.poly_sel_disconnect_flag = False
self.form_fields = {
- "cutz": self.ui.cutz_entry,
- "multidepth": self.ui.mpass_cb,
- "depthperpass": self.ui.maxdepth_entry,
- "travelz": self.ui.travelz_entry,
- "feedrate_z": self.ui.feedrate_z_entry,
- "feedrate_rapid": self.ui.feedrate_rapid_entry,
+ "cutz": self.t_ui.cutz_entry,
+ "multidepth": self.t_ui.mpass_cb,
+ "depthperpass": self.t_ui.maxdepth_entry,
+ "travelz": self.t_ui.travelz_entry,
+ "feedrate_z": self.t_ui.feedrate_z_entry,
+ "feedrate_rapid": self.t_ui.feedrate_rapid_entry,
- "spindlespeed": self.ui.spindlespeed_entry,
- "dwell": self.ui.dwell_cb,
- "dwelltime": self.ui.dwelltime_entry,
+ "spindlespeed": self.t_ui.spindlespeed_entry,
+ "dwell": self.t_ui.dwell_cb,
+ "dwelltime": self.t_ui.dwelltime_entry,
- "offset": self.ui.offset_entry
+ "offset": self.t_ui.offset_entry
}
self.name2option = {
@@ -192,7 +193,7 @@ class ToolDrilling(AppTool, Excellon):
self.build_ui()
# all the tools are selected by default
- self.ui.tools_table.selectAll()
+ self.t_ui.tools_table.selectAll()
self.app.ui.notebook.setTabText(2, _("Drilling Tool"))
@@ -201,22 +202,22 @@ class ToolDrilling(AppTool, Excellon):
# ############################ SIGNALS ########################################
# #############################################################################
- self.ui.apply_param_to_all.clicked.connect(self.on_apply_param_to_all_clicked)
- self.ui.generate_cnc_button.clicked.connect(self.on_cnc_button_click)
- self.ui.tools_table.drag_drop_sig.connect(self.rebuild_ui)
+ self.t_ui.apply_param_to_all.clicked.connect(self.on_apply_param_to_all_clicked)
+ self.t_ui.generate_cnc_button.clicked.connect(self.on_cnc_button_click)
+ self.t_ui.tools_table.drag_drop_sig.connect(self.rebuild_ui)
# Exclusion areas signals
- self.ui.exclusion_table.horizontalHeader().sectionClicked.connect(self.exclusion_table_toggle_all)
- self.ui.exclusion_table.lost_focus.connect(self.clear_selection)
- self.ui.exclusion_table.itemClicked.connect(self.draw_sel_shape)
- self.ui.add_area_button.clicked.connect(self.on_add_area_click)
- self.ui.delete_area_button.clicked.connect(self.on_clear_area_click)
- self.ui.delete_sel_area_button.clicked.connect(self.on_delete_sel_areas)
- self.ui.strategy_radio.activated_custom.connect(self.on_strategy)
+ self.t_ui.exclusion_table.horizontalHeader().sectionClicked.connect(self.exclusion_table_toggle_all)
+ self.t_ui.exclusion_table.lost_focus.connect(self.clear_selection)
+ self.t_ui.exclusion_table.itemClicked.connect(self.draw_sel_shape)
+ self.t_ui.add_area_button.clicked.connect(self.on_add_area_click)
+ self.t_ui.delete_area_button.clicked.connect(self.on_clear_area_click)
+ self.t_ui.delete_sel_area_button.clicked.connect(self.on_delete_sel_areas)
+ self.t_ui.strategy_radio.activated_custom.connect(self.on_strategy)
- self.ui.pp_excellon_name_cb.activated.connect(self.on_pp_changed)
+ self.t_ui.pp_excellon_name_cb.activated.connect(self.on_pp_changed)
- self.ui.reset_button.clicked.connect(self.set_tool_ui)
+ self.t_ui.reset_button.clicked.connect(self.set_tool_ui)
# Cleanup on Graceful exit (CTRL+ALT+X combo key)
self.app.cleanup.connect(self.set_tool_ui)
@@ -229,7 +230,7 @@ class ToolDrilling(AppTool, Excellon):
selected_obj = self.app.collection.get_active()
if selected_obj.kind == 'excellon':
current_name = selected_obj.options['name']
- self.ui.object_combo.set_value(current_name)
+ self.t_ui.object_combo.set_value(current_name)
except Exception:
pass
@@ -238,34 +239,34 @@ class ToolDrilling(AppTool, Excellon):
# the HPGL preprocessor is only for Geometry not for Excellon job therefore don't add it
if name == 'hpgl':
continue
- self.ui.pp_excellon_name_cb.addItem(name)
+ self.t_ui.pp_excellon_name_cb.addItem(name)
# update the changes in UI depending on the selected preprocessor in Preferences
# after this moment all the changes in the Posprocessor combo will be handled by the activated signal of the
- # self.ui.pp_excellon_name_cb combobox
+ # self.t_ui.pp_excellon_name_cb combobox
self.on_pp_changed()
app_mode = self.app.defaults["global_app_level"]
# Show/Hide Advanced Options
if app_mode == 'b':
- self.ui.level.setText('%s' % _('Basic'))
- self.ui.estartz_label.hide()
- self.ui.estartz_entry.hide()
- self.ui.feedrate_rapid_label.hide()
- self.ui.feedrate_rapid_entry.hide()
- self.ui.pdepth_label.hide()
- self.ui.pdepth_entry.hide()
- self.ui.feedrate_probe_label.hide()
- self.ui.feedrate_probe_entry.hide()
+ self.t_ui.level.setText('%s' % _('Basic'))
+ self.t_ui.estartz_label.hide()
+ self.t_ui.estartz_entry.hide()
+ self.t_ui.feedrate_rapid_label.hide()
+ self.t_ui.feedrate_rapid_entry.hide()
+ self.t_ui.pdepth_label.hide()
+ self.t_ui.pdepth_entry.hide()
+ self.t_ui.feedrate_probe_label.hide()
+ self.t_ui.feedrate_probe_entry.hide()
else:
- self.ui.level.setText('%s' % _('Advanced'))
+ self.t_ui.level.setText('%s' % _('Advanced'))
- self.ui.tools_frame.show()
+ self.t_ui.tools_frame.show()
- self.ui.order_radio.set_value(self.app.defaults["excellon_tool_order"])
+ self.t_ui.order_radio.set_value(self.app.defaults["excellon_tool_order"])
- loaded_obj = self.app.collection.get_by_name(self.ui.object_combo.get_value())
+ loaded_obj = self.app.collection.get_by_name(self.t_ui.object_combo.get_value())
if loaded_obj:
outname = loaded_obj.options['name']
else:
@@ -275,15 +276,15 @@ class ToolDrilling(AppTool, Excellon):
self.default_data.clear()
self.default_data = {
"name": outname + '_drill',
- "plot": self.app.defaults["excellon_plot"],
- "solid": self.app.defaults["excellon_solid"],
- "multicolored": self.app.defaults["excellon_multicolored"],
- "merge_fuse_tools": self.app.defaults["excellon_merge_fuse_tools"],
- "format_upper_in": self.app.defaults["excellon_format_upper_in"],
- "format_lower_in": self.app.defaults["excellon_format_lower_in"],
- "format_upper_mm": self.app.defaults["excellon_format_upper_mm"],
- "lower_mm": self.app.defaults["excellon_format_lower_mm"],
- "zeros": self.app.defaults["excellon_zeros"],
+ "plot": self.app.defaults["excellon_plot"],
+ "solid": self.app.defaults["excellon_solid"],
+ "multicolored": self.app.defaults["excellon_multicolored"],
+ "merge_fuse_tools": self.app.defaults["excellon_merge_fuse_tools"],
+ "format_upper_in": self.app.defaults["excellon_format_upper_in"],
+ "format_lower_in": self.app.defaults["excellon_format_lower_in"],
+ "format_upper_mm": self.app.defaults["excellon_format_upper_mm"],
+ "lower_mm": self.app.defaults["excellon_format_lower_mm"],
+ "zeros": self.app.defaults["excellon_zeros"],
"excellon_units": self.app.defaults["excellon_units"],
"excellon_update": self.app.defaults["excellon_update"],
@@ -357,9 +358,9 @@ class ToolDrilling(AppTool, Excellon):
# #######3 TEMP SETTINGS #################
# ########################################
- self.ui.tools_table.setRowCount(0)
- self.ui.tools_table.setMinimumHeight(self.ui.tools_table.getHeight())
- self.ui.tools_table.setMaximumHeight(self.ui.tools_table.getHeight())
+ self.t_ui.tools_table.setRowCount(2)
+ self.t_ui.tools_table.setMinimumHeight(self.t_ui.tools_table.getHeight())
+ self.t_ui.tools_table.setMaximumHeight(self.t_ui.tools_table.getHeight())
if self.excellon_obj:
# make sure to update the UI on init
@@ -371,40 +372,43 @@ class ToolDrilling(AppTool, Excellon):
# ####### Fill in the parameters #########
# ########################################
# ########################################
- self.ui.cutz_entry.set_value(self.app.defaults["excellon_cutz"])
- self.ui.mpass_cb.set_value(self.app.defaults["excellon_multidepth"])
- self.ui.maxdepth_entry.set_value(self.app.defaults["excellon_depthperpass"])
- self.ui.travelz_entry.set_value(self.app.defaults["excellon_travelz"])
- self.ui.feedrate_z_entry.set_value(self.app.defaults["excellon_feedrate_z"])
- self.ui.feedrate_rapid_entry.set_value(self.app.defaults["excellon_feedrate_rapid"])
- self.ui.spindlespeed_entry.set_value(self.app.defaults["excellon_spindlespeed"])
- self.ui.dwell_cb.set_value(self.app.defaults["excellon_dwell"])
- self.ui.dwelltime_entry.set_value(self.app.defaults["excellon_dwelltime"])
- self.ui.offset_entry.set_value(self.app.defaults["excellon_offset"])
- self.ui.toolchange_cb.set_value(self.app.defaults["excellon_toolchange"])
- self.ui.toolchangez_entry.set_value(self.app.defaults["excellon_toolchangez"])
- self.ui.estartz_entry.set_value(self.app.defaults["excellon_startz"])
- self.ui.endz_entry.set_value(self.app.defaults["excellon_endz"])
- self.ui.endxy_entry.set_value(self.app.defaults["excellon_endxy"])
- self.ui.pdepth_entry.set_value(self.app.defaults["excellon_z_pdepth"])
- self.ui.feedrate_probe_entry.set_value(self.app.defaults["excellon_feedrate_probe"])
- self.ui.exclusion_cb.set_value(self.app.defaults["excellon_area_exclusion"])
- self.ui.strategy_radio.set_value(self.app.defaults["excellon_area_strategy"])
- self.ui.over_z_entry.set_value(self.app.defaults["excellon_area_overz"])
- self.ui.area_shape_radio.set_value(self.app.defaults["excellon_area_shape"])
+ self.t_ui.cutz_entry.set_value(self.app.defaults["excellon_cutz"])
+ self.t_ui.mpass_cb.set_value(self.app.defaults["excellon_multidepth"])
+ self.t_ui.maxdepth_entry.set_value(self.app.defaults["excellon_depthperpass"])
+ self.t_ui.travelz_entry.set_value(self.app.defaults["excellon_travelz"])
+ self.t_ui.feedrate_z_entry.set_value(self.app.defaults["excellon_feedrate_z"])
+ self.t_ui.feedrate_rapid_entry.set_value(self.app.defaults["excellon_feedrate_rapid"])
+ self.t_ui.spindlespeed_entry.set_value(self.app.defaults["excellon_spindlespeed"])
+ self.t_ui.dwell_cb.set_value(self.app.defaults["excellon_dwell"])
+ self.t_ui.dwelltime_entry.set_value(self.app.defaults["excellon_dwelltime"])
+ self.t_ui.offset_entry.set_value(self.app.defaults["excellon_offset"])
+ self.t_ui.toolchange_cb.set_value(self.app.defaults["excellon_toolchange"])
+ self.t_ui.toolchangez_entry.set_value(self.app.defaults["excellon_toolchangez"])
+ self.t_ui.estartz_entry.set_value(self.app.defaults["excellon_startz"])
+ self.t_ui.endz_entry.set_value(self.app.defaults["excellon_endz"])
+ self.t_ui.endxy_entry.set_value(self.app.defaults["excellon_endxy"])
+ self.t_ui.pdepth_entry.set_value(self.app.defaults["excellon_z_pdepth"])
+ self.t_ui.feedrate_probe_entry.set_value(self.app.defaults["excellon_feedrate_probe"])
+ self.t_ui.exclusion_cb.set_value(self.app.defaults["excellon_area_exclusion"])
+ self.t_ui.strategy_radio.set_value(self.app.defaults["excellon_area_strategy"])
+ self.t_ui.over_z_entry.set_value(self.app.defaults["excellon_area_overz"])
+ self.t_ui.area_shape_radio.set_value(self.app.defaults["excellon_area_shape"])
try:
- self.ui.object_combo.currentTextChanged.disconnect()
+ self.t_ui.object_combo.currentTextChanged.disconnect()
except (AttributeError, TypeError):
pass
- self.ui.object_combo.currentTextChanged.connect(self.on_object_changed)
+ self.t_ui.object_combo.currentTextChanged.connect(self.on_object_changed)
def rebuild_ui(self):
# read the table tools uid
current_uid_list = []
- for row in range(self.ui.tools_table.rowCount()):
- uid = int(self.ui.tools_table.item(row, 3).text())
- current_uid_list.append(uid)
+ for row in range(self.t_ui.tools_table.rowCount()):
+ try:
+ uid = int(self.t_ui.tools_table.item(row, 3).text())
+ current_uid_list.append(uid)
+ except AttributeError:
+ continue
new_tools = {}
new_uid = 1
@@ -420,32 +424,43 @@ class ToolDrilling(AppTool, Excellon):
def build_ui(self):
log.debug("ToolDrilling.build_ui()")
-
self.ui_disconnect()
- # updated units
- self.units = self.app.defaults['units'].upper()
- self.obj_name = self.ui.object_combo.currentText()
-
- # Get source object.
- try:
- self.excellon_obj = self.app.collection.get_by_name(self.obj_name)
- except Exception:
- self.app.inform.emit('[ERROR_NOTCL] %s: %s' % (_("Could not retrieve object"), str(self.obj_name)))
- return
-
- if self.excellon_obj and self.excellon_obj.tools:
- self.ui.exc_param_frame.setDisabled(False)
- tools = [k for k in self.excellon_tools]
+ # order the tools by tool diameter if it's the case
+ sorted_tools = []
+ for k, v in self.excellon_tools.items():
+ sorted_tools.append(float('%.*f' % (self.decimals, float(v['tooldia']))))
+ order = self.t_ui.order_radio.get_value()
+ if order == 'fwd':
+ sorted_tools.sort(reverse=False)
+ elif order == 'rev':
+ sorted_tools.sort(reverse=True)
else:
- self.ui.exc_param_frame.setDisabled(True)
- self.ui.tools_table.setRowCount(0)
+ pass
+
+ # remake the excellon_tools dict in the order above
+ new_id = 1
+ new_tools = {}
+ for tooldia in sorted_tools:
+ for old_tool in self.excellon_tools:
+ if float('%.*f' % (self.decimals, float(self.excellon_tools[old_tool]['tooldia']))) == tooldia:
+ new_tools[new_id] = deepcopy(self.excellon_tools[old_tool])
+ new_id += 1
+
+ self.excellon_tools = new_tools
+
+ if self.excellon_obj and self.excellon_tools:
+ self.t_ui.exc_param_frame.setDisabled(False)
+ tools = [k for k in self.excellon_tools]
+ else:
+ self.t_ui.exc_param_frame.setDisabled(True)
+ self.t_ui.tools_table.setRowCount(2)
tools = []
n = len(tools)
# we have (n+2) rows because there are 'n' tools, each a row, plus the last 2 rows for totals.
- self.ui.tools_table.setRowCount(n + 2)
+ self.t_ui.tools_table.setRowCount(n + 2)
self.tool_row = 0
tot_drill_cnt = 0
@@ -469,30 +484,30 @@ class ToolDrilling(AppTool, Excellon):
# Tool name/id
exc_id_item = QtWidgets.QTableWidgetItem('%d' % int(tool_no))
- exc_id_item.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled)
- self.ui.tools_table.setItem(self.tool_row, 0, exc_id_item)
+ exc_id_item.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsDragEnabled)
+ self.t_ui.tools_table.setItem(self.tool_row, 0, exc_id_item)
# Tool Diameter
dia_item = QtWidgets.QTableWidgetItem('%.*f' % (self.decimals, self.excellon_tools[tool_no]['tooldia']))
- dia_item.setFlags(QtCore.Qt.ItemIsEnabled)
- self.ui.tools_table.setItem(self.tool_row, 1, dia_item)
+ dia_item.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsDragEnabled)
+ self.t_ui.tools_table.setItem(self.tool_row, 1, dia_item)
# Number of drills per tool
drill_count_item = QtWidgets.QTableWidgetItem('%d' % drill_cnt)
- drill_count_item.setFlags(QtCore.Qt.ItemIsEnabled)
- self.ui.tools_table.setItem(self.tool_row, 2, drill_count_item)
+ drill_count_item.setFlags(QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsDragEnabled)
+ self.t_ui.tools_table.setItem(self.tool_row, 2, drill_count_item)
# Tool unique ID
tool_uid_item = QtWidgets.QTableWidgetItem(str(int(tool_no)))
# ## REMEMBER: THIS COLUMN IS HIDDEN in UI
- self.ui.tools_table.setItem(self.tool_row, 3, tool_uid_item)
+ self.t_ui.tools_table.setItem(self.tool_row, 3, tool_uid_item)
# Number of slots per tool
# if the slot number is zero is better to not clutter the GUI with zero's so we print a space
slot_count_str = '%d' % slot_cnt if slot_cnt > 0 else ''
slot_count_item = QtWidgets.QTableWidgetItem(slot_count_str)
- slot_count_item.setFlags(QtCore.Qt.ItemIsEnabled)
- self.ui.tools_table.setItem(self.tool_row, 4, slot_count_item)
+ slot_count_item.setFlags(QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsDragEnabled)
+ self.t_ui.tools_table.setItem(self.tool_row, 4, slot_count_item)
self.tool_row += 1
@@ -508,18 +523,18 @@ class ToolDrilling(AppTool, Excellon):
tot_drill_count = QtWidgets.QTableWidgetItem('%d' % tot_drill_cnt)
tot_drill_count.setFlags(QtCore.Qt.ItemIsEnabled)
- self.ui.tools_table.setItem(self.tool_row, 0, empty_1)
- self.ui.tools_table.setItem(self.tool_row, 1, label_tot_drill_count)
- self.ui.tools_table.setItem(self.tool_row, 2, tot_drill_count) # Total number of drills
- self.ui.tools_table.setItem(self.tool_row, 4, empty_1_1)
+ self.t_ui.tools_table.setItem(self.tool_row, 0, empty_1)
+ self.t_ui.tools_table.setItem(self.tool_row, 1, label_tot_drill_count)
+ self.t_ui.tools_table.setItem(self.tool_row, 2, tot_drill_count) # Total number of drills
+ self.t_ui.tools_table.setItem(self.tool_row, 4, empty_1_1)
font = QtGui.QFont()
font.setBold(True)
font.setWeight(75)
for k in [1, 2]:
- self.ui.tools_table.item(self.tool_row, k).setForeground(QtGui.QColor(127, 0, 255))
- self.ui.tools_table.item(self.tool_row, k).setFont(font)
+ self.t_ui.tools_table.item(self.tool_row, k).setForeground(QtGui.QColor(127, 0, 255))
+ self.t_ui.tools_table.item(self.tool_row, k).setFont(font)
self.tool_row += 1
@@ -534,29 +549,29 @@ class ToolDrilling(AppTool, Excellon):
label_tot_slot_count.setFlags(QtCore.Qt.ItemIsEnabled)
tot_slot_count.setFlags(QtCore.Qt.ItemIsEnabled)
- self.ui.tools_table.setItem(self.tool_row, 0, empty_2)
- self.ui.tools_table.setItem(self.tool_row, 1, label_tot_slot_count)
- self.ui.tools_table.setItem(self.tool_row, 2, empty_2_1)
- self.ui.tools_table.setItem(self.tool_row, 4, tot_slot_count) # Total number of slots
+ self.t_ui.tools_table.setItem(self.tool_row, 0, empty_2)
+ self.t_ui.tools_table.setItem(self.tool_row, 1, label_tot_slot_count)
+ self.t_ui.tools_table.setItem(self.tool_row, 2, empty_2_1)
+ self.t_ui.tools_table.setItem(self.tool_row, 4, tot_slot_count) # Total number of slots
for kl in [1, 2, 4]:
- self.ui.tools_table.item(self.tool_row, kl).setFont(font)
- self.ui.tools_table.item(self.tool_row, kl).setForeground(QtGui.QColor(0, 70, 255))
+ self.t_ui.tools_table.item(self.tool_row, kl).setFont(font)
+ self.t_ui.tools_table.item(self.tool_row, kl).setForeground(QtGui.QColor(0, 70, 255))
# make the diameter column editable
- for row in range(self.ui.tools_table.rowCount() - 2):
- self.ui.tools_table.item(row, 1).setFlags(
- QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled)
+ # for row in range(self.t_ui.tools_table.rowCount() - 2):
+ # self.t_ui.tools_table.item(row, 1).setFlags(
+ # QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled)
- self.ui.tools_table.resizeColumnsToContents()
- self.ui.tools_table.resizeRowsToContents()
+ self.t_ui.tools_table.resizeColumnsToContents()
+ self.t_ui.tools_table.resizeRowsToContents()
- vertical_header = self.ui.tools_table.verticalHeader()
+ vertical_header = self.t_ui.tools_table.verticalHeader()
vertical_header.hide()
- self.ui.tools_table.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
+ self.t_ui.tools_table.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
- horizontal_header = self.ui.tools_table.horizontalHeader()
- self.ui.tools_table.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
+ horizontal_header = self.t_ui.tools_table.horizontalHeader()
+ self.t_ui.tools_table.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
horizontal_header.setMinimumSectionSize(10)
horizontal_header.setDefaultSectionSize(70)
@@ -567,17 +582,17 @@ class ToolDrilling(AppTool, Excellon):
horizontal_header.setSectionResizeMode(2, QtWidgets.QHeaderView.ResizeToContents)
horizontal_header.setSectionResizeMode(4, QtWidgets.QHeaderView.ResizeToContents)
- self.ui.tools_table.setSortingEnabled(False)
+ self.t_ui.tools_table.setSortingEnabled(False)
- self.ui.tools_table.setMinimumHeight(self.ui.tools_table.getHeight())
- self.ui.tools_table.setMaximumHeight(self.ui.tools_table.getHeight())
+ self.t_ui.tools_table.setMinimumHeight(self.t_ui.tools_table.getHeight())
+ self.t_ui.tools_table.setMaximumHeight(self.t_ui.tools_table.getHeight())
# all the tools are selected by default
- self.ui.tools_table.selectAll()
+ # self.t_ui.tools_table.selectAll()
# Build Exclusion Areas section
e_len = len(self.app.exc_areas.exclusion_areas_storage)
- self.ui.exclusion_table.setRowCount(e_len)
+ self.t_ui.exclusion_table.setRowCount(e_len)
area_id = 0
@@ -588,28 +603,28 @@ class ToolDrilling(AppTool, Excellon):
area_id_item = QtWidgets.QTableWidgetItem('%d' % int(area_id))
area_id_item.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled)
- self.ui.exclusion_table.setItem(area, 0, area_id_item) # Area id
+ self.t_ui.exclusion_table.setItem(area, 0, area_id_item) # Area id
object_item = QtWidgets.QTableWidgetItem('%s' % area_dict["obj_type"])
object_item.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled)
- self.ui.exclusion_table.setItem(area, 1, object_item) # Origin Object
+ self.t_ui.exclusion_table.setItem(area, 1, object_item) # Origin Object
strategy_item = QtWidgets.QTableWidgetItem('%s' % area_dict["strategy"])
strategy_item.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled)
- self.ui.exclusion_table.setItem(area, 2, strategy_item) # Strategy
+ self.t_ui.exclusion_table.setItem(area, 2, strategy_item) # Strategy
overz_item = QtWidgets.QTableWidgetItem('%s' % area_dict["overz"])
overz_item.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled)
- self.ui.exclusion_table.setItem(area, 3, overz_item) # Over Z
+ self.t_ui.exclusion_table.setItem(area, 3, overz_item) # Over Z
- self.ui.exclusion_table.resizeColumnsToContents()
- self.ui.exclusion_table.resizeRowsToContents()
+ self.t_ui.exclusion_table.resizeColumnsToContents()
+ self.t_ui.exclusion_table.resizeRowsToContents()
- area_vheader = self.ui.exclusion_table.verticalHeader()
+ area_vheader = self.t_ui.exclusion_table.verticalHeader()
area_vheader.hide()
- self.ui.exclusion_table.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
+ self.t_ui.exclusion_table.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
- area_hheader = self.ui.exclusion_table.horizontalHeader()
+ area_hheader = self.t_ui.exclusion_table.horizontalHeader()
area_hheader.setMinimumSectionSize(10)
area_hheader.setDefaultSectionSize(70)
@@ -620,29 +635,38 @@ class ToolDrilling(AppTool, Excellon):
area_hheader.setSectionResizeMode(3, QtWidgets.QHeaderView.ResizeToContents)
# area_hheader.setStretchLastSection(True)
- self.ui.exclusion_table.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
+ self.t_ui.exclusion_table.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
- self.ui.exclusion_table.setColumnWidth(0, 20)
+ self.t_ui.exclusion_table.setColumnWidth(0, 20)
- self.ui.exclusion_table.setMinimumHeight(self.ui.exclusion_table.getHeight())
- self.ui.exclusion_table.setMaximumHeight(self.ui.exclusion_table.getHeight())
+ self.t_ui.exclusion_table.setMinimumHeight(self.t_ui.exclusion_table.getHeight())
+ self.t_ui.exclusion_table.setMaximumHeight(self.t_ui.exclusion_table.getHeight())
self.ui_connect()
# set the text on tool_data_label after loading the object
sel_rows = set()
- sel_items = self.ui.tools_table.selectedItems()
+ sel_items = self.t_ui.tools_table.selectedItems()
for it in sel_items:
sel_rows.add(it.row())
if len(sel_rows) > 1:
- self.ui.tool_data_label.setText(
+ self.t_ui.tool_data_label.setText(
"%s: %s" % (_('Parameters for'), _("Multiple Tools"))
)
+ elif len(sel_rows) == 1:
+ # update the QLabel that shows for which Tool we have the parameters in the UI form
+ toolnr = int(self.t_ui.tools_table.item(list(sel_rows)[0], 0).text())
+ self.t_ui.tool_data_label.setText(
+ "%s: %s %d" % (_('Parameters for'), _("Tool"), toolnr)
+ )
def on_object_changed(self):
log.debug("ToolDrilling.on_object_changed()")
+ # updated units
+ self.units = self.app.defaults['units'].upper()
+
# load the Excellon object
- self.obj_name = self.ui.object_combo.currentText()
+ self.obj_name = self.t_ui.object_combo.currentText()
# Get source object.
try:
@@ -651,28 +675,31 @@ class ToolDrilling(AppTool, Excellon):
self.app.inform.emit('[ERROR_NOTCL] %s: %s' % (_("Could not retrieve object"), str(self.obj_name)))
return
+ self.excellon_tools = self.excellon_obj.tools
+
if self.excellon_obj is None:
- self.ui.exc_param_frame.setDisabled(True)
+ self.t_ui.exc_param_frame.setDisabled(True)
self.set_tool_ui()
else:
- self.ui.exc_param_frame.setDisabled(False)
+ self.app.collection.set_active(self.obj_name)
+ self.t_ui.exc_param_frame.setDisabled(False)
self.excellon_tools = self.excellon_obj.tools
self.build_ui()
sel_rows = set()
- table_items = self.ui.tools_table.selectedItems()
+ table_items = self.t_ui.tools_table.selectedItems()
if table_items:
for it in table_items:
sel_rows.add(it.row())
if not sel_rows or len(sel_rows) == 0:
- self.ui.generate_cnc_button.setDisabled(True)
- self.ui.tool_data_label.setText(
+ self.t_ui.generate_cnc_button.setDisabled(True)
+ self.t_ui.tool_data_label.setText(
"%s: %s" % (_('Parameters for'), _("No Tool Selected"))
)
else:
- self.ui.generate_cnc_button.setDisabled(False)
+ self.t_ui.generate_cnc_button.setDisabled(False)
def ui_connect(self):
@@ -686,8 +713,8 @@ class ToolDrilling(AppTool, Excellon):
self.app.exc_areas.e_shape_modified.connect(self.update_exclusion_table)
# rows selected
- self.ui.tools_table.clicked.connect(self.on_row_selection_change)
- self.ui.tools_table.horizontalHeader().sectionClicked.connect(self.on_toggle_all_rows)
+ self.t_ui.tools_table.clicked.connect(self.on_row_selection_change)
+ self.t_ui.tools_table.horizontalHeader().sectionClicked.connect(self.on_toggle_all_rows)
# Tool Parameters
for opt in self.form_fields:
@@ -701,24 +728,24 @@ class ToolDrilling(AppTool, Excellon):
elif isinstance(current_widget, FCComboBox):
current_widget.currentIndexChanged.connect(self.form_to_storage)
- self.ui.order_radio.activated_custom[str].connect(self.on_order_changed)
+ self.t_ui.order_radio.activated_custom[str].connect(self.on_order_changed)
def ui_disconnect(self):
# rows selected
try:
- self.ui.tools_table.clicked.disconnect()
+ self.t_ui.tools_table.clicked.disconnect(self.on_row_selection_change)
except (TypeError, AttributeError):
pass
try:
- self.ui.tools_table.horizontalHeader().sectionClicked.disconnect()
+ self.t_ui.tools_table.horizontalHeader().sectionClicked.disconnect(self.on_toggle_all_rows)
except (TypeError, AttributeError):
pass
# tool table widgets
- for row in range(self.ui.tools_table.rowCount()):
+ for row in range(self.t_ui.tools_table.rowCount()):
try:
- self.ui.tools_table.cellWidget(row, 2).currentIndexChanged.disconnect()
+ self.t_ui.tools_table.cellWidget(row, 2).currentIndexChanged.disconnect()
except (TypeError, AttributeError):
pass
@@ -747,7 +774,7 @@ class ToolDrilling(AppTool, Excellon):
pass
try:
- self.ui.order_radio.activated_custom[str].disconnect()
+ self.t_ui.order_radio.activated_custom[str].disconnect()
except (TypeError, ValueError):
pass
@@ -757,7 +784,7 @@ class ToolDrilling(AppTool, Excellon):
:return:
"""
- sel_model = self.ui.tools_table.selectionModel()
+ sel_model = self.t_ui.tools_table.selectionModel()
sel_indexes = sel_model.selectedIndexes()
# it will iterate over all indexes which means all items in all columns too but I'm interested only on rows
@@ -765,10 +792,12 @@ class ToolDrilling(AppTool, Excellon):
for idx in sel_indexes:
sel_rows.add(idx.row())
- if len(sel_rows) == self.ui.tools_table.rowCount():
- self.ui.tools_table.clearSelection()
+ if len(sel_rows) == self.t_ui.tools_table.rowCount():
+ self.t_ui.tools_table.clearSelection()
+ self.t_ui.exc_param_frame.setDisabled(True)
else:
- self.ui.tools_table.selectAll()
+ self.t_ui.tools_table.selectAll()
+ self.t_ui.exc_param_frame.setDisabled(False)
self.update_ui()
def on_row_selection_change(self):
@@ -778,37 +807,39 @@ class ToolDrilling(AppTool, Excellon):
self.blockSignals(True)
sel_rows = set()
- table_items = self.ui.tools_table.selectedItems()
+ table_items = self.t_ui.tools_table.selectedItems()
if table_items:
for it in table_items:
sel_rows.add(it.row())
- # sel_rows = sorted(set(index.row() for index in self.ui.tools_table.selectedIndexes()))
+ # sel_rows = sorted(set(index.row() for index in self.t_ui.tools_table.selectedIndexes()))
if not sel_rows or len(sel_rows) == 0:
- self.ui.generate_cnc_button.setDisabled(True)
- self.ui.tool_data_label.setText(
+ self.t_ui.generate_cnc_button.setDisabled(True)
+ self.t_ui.exc_param_frame.setDisabled(True)
+ self.t_ui.tool_data_label.setText(
"%s: %s" % (_('Parameters for'), _("No Tool Selected"))
)
self.blockSignals(False)
return
else:
- self.ui.generate_cnc_button.setDisabled(False)
+ self.t_ui.generate_cnc_button.setDisabled(False)
+ self.t_ui.exc_param_frame.setDisabled(False)
if len(sel_rows) == 1:
# update the QLabel that shows for which Tool we have the parameters in the UI form
- tooluid = int(self.ui.tools_table.item(list(sel_rows)[0], 0).text())
- self.ui.tool_data_label.setText(
+ tooluid = int(self.t_ui.tools_table.item(list(sel_rows)[0], 0).text())
+ self.t_ui.tool_data_label.setText(
"%s: %s %d" % (_('Parameters for'), _("Tool"), tooluid)
)
else:
- self.ui.tool_data_label.setText(
+ self.t_ui.tool_data_label.setText(
"%s: %s" % (_('Parameters for'), _("Multiple Tools"))
)
for c_row in sel_rows:
# populate the form with the data from the tool associated with the row parameter
try:
- item = self.ui.tools_table.item(c_row, 3)
+ item = self.t_ui.tools_table.item(c_row, 3)
if type(item) is not None:
tooluid = int(item.text())
self.storage_to_form(self.excellon_tools[tooluid]['data'])
@@ -847,7 +878,7 @@ class ToolDrilling(AppTool, Excellon):
:return: None
:rtype:
"""
- if self.ui.tools_table.rowCount() == 2:
+ if self.t_ui.tools_table.rowCount() == 2:
# there is no tool in tool table so we can't save the GUI elements values to storage
# Excellon Tool Table has 2 rows by default
return
@@ -858,12 +889,12 @@ class ToolDrilling(AppTool, Excellon):
wdg_objname = widget_changed.objectName()
option_changed = self.name2option[wdg_objname]
- # row = self.ui.tools_table.currentRow()
- rows = sorted(set(index.row() for index in self.ui.tools_table.selectedIndexes()))
+ # row = self.t_ui.tools_table.currentRow()
+ rows = sorted(list(set(index.row() for index in self.t_ui.tools_table.selectedIndexes())))
for row in rows:
if row < 0:
row = 0
- tooluid_item = int(self.ui.tools_table.item(row, 3).text())
+ tooluid_item = int(self.t_ui.tools_table.item(row, 3).text())
for tooluid_key, tooluid_val in self.excellon_tools.items():
if int(tooluid_key) == tooluid_item:
@@ -884,7 +915,7 @@ class ToolDrilling(AppTool, Excellon):
:rtype: list
"""
- return [str(x.text()) for x in self.ui.tools_table.selectedItems()]
+ return [str(x.text()) for x in self.t_ui.tools_table.selectedItems()]
def get_selected_tools_table_items(self):
"""
@@ -894,41 +925,41 @@ class ToolDrilling(AppTool, Excellon):
:rtype: list
"""
table_tools_items = []
- for x in self.ui.tools_table.selectedItems():
+ for x in self.t_ui.tools_table.selectedItems():
# from the columnCount we subtract a value of 1 which represent the last column (plot column)
# which does not have text
txt = ''
elem = []
- for column in range(0, self.ui.tools_table.columnCount() - 1):
+ for column in range(0, self.t_ui.tools_table.columnCount() - 1):
try:
- txt = self.ui.tools_table.item(x.row(), column).text()
+ txt = self.t_ui.tools_table.item(x.row(), column).text()
except AttributeError:
try:
- txt = self.ui.tools_table.cellWidget(x.row(), column).currentText()
+ txt = self.t_ui.tools_table.cellWidget(x.row(), column).currentText()
except AttributeError:
pass
elem.append(txt)
table_tools_items.append(deepcopy(elem))
- # table_tools_items.append([self.ui.tools_table.item(x.row(), column).text()
- # for column in range(0, self.ui.tools_table.columnCount() - 1)])
+ # table_tools_items.append([self.t_ui.tools_table.item(x.row(), column).text()
+ # for column in range(0, self.t_ui.tools_table.columnCount() - 1)])
for item in table_tools_items:
item[0] = str(item[0])
return table_tools_items
def on_apply_param_to_all_clicked(self):
- if self.ui.tools_table.rowCount() == 0:
+ if self.t_ui.tools_table.rowCount() == 0:
# there is no tool in tool table so we can't save the GUI elements values to storage
log.debug("ToolDrilling.on_apply_param_to_all_clicked() --> no tool in Tools Table, aborting.")
return
self.blockSignals(True)
- row = self.ui.tools_table.currentRow()
+ row = self.t_ui.tools_table.currentRow()
if row < 0:
row = 0
- tooluid_item = int(self.ui.tools_table.item(row, 3).text())
+ tooluid_item = int(self.t_ui.tools_table.item(row, 3).text())
temp_tool_data = {}
for tooluid_key, tooluid_val in self.excellon_tools.items():
@@ -953,11 +984,11 @@ class ToolDrilling(AppTool, Excellon):
assert isinstance(cw, QtWidgets.QComboBox), \
"Expected a QtWidgets.QComboBox, got %s" % isinstance(cw, QtWidgets.QComboBox)
- cw_index = self.ui.tools_table.indexAt(cw.pos())
+ cw_index = self.t_ui.tools_table.indexAt(cw.pos())
cw_row = cw_index.row()
cw_col = cw_index.column()
- current_uid = int(self.ui.tools_table.item(cw_row, 3).text())
+ current_uid = int(self.t_ui.tools_table.item(cw_row, 3).text())
# if the sender is in the column with index 2 then we update the tool_type key
if cw_col == 2:
@@ -1203,94 +1234,94 @@ class ToolDrilling(AppTool, Excellon):
return True, ""
def on_pp_changed(self):
- current_pp = self.ui.pp_excellon_name_cb.get_value()
+ current_pp = self.t_ui.pp_excellon_name_cb.get_value()
if "toolchange_probe" in current_pp.lower():
- self.ui.pdepth_entry.setVisible(True)
- self.ui.pdepth_label.show()
+ self.t_ui.pdepth_entry.setVisible(True)
+ self.t_ui.pdepth_label.show()
- self.ui.feedrate_probe_entry.setVisible(True)
- self.ui.feedrate_probe_label.show()
+ self.t_ui.feedrate_probe_entry.setVisible(True)
+ self.t_ui.feedrate_probe_label.show()
else:
- self.ui.pdepth_entry.setVisible(False)
- self.ui.pdepth_label.hide()
+ self.t_ui.pdepth_entry.setVisible(False)
+ self.t_ui.pdepth_label.hide()
- self.ui.feedrate_probe_entry.setVisible(False)
- self.ui.feedrate_probe_label.hide()
+ self.t_ui.feedrate_probe_entry.setVisible(False)
+ self.t_ui.feedrate_probe_label.hide()
if 'marlin' in current_pp.lower() or 'custom' in current_pp.lower():
- self.ui.feedrate_rapid_label.show()
- self.ui.feedrate_rapid_entry.show()
+ self.t_ui.feedrate_rapid_label.show()
+ self.t_ui.feedrate_rapid_entry.show()
else:
- self.ui.feedrate_rapid_label.hide()
- self.ui.feedrate_rapid_entry.hide()
+ self.t_ui.feedrate_rapid_label.hide()
+ self.t_ui.feedrate_rapid_entry.hide()
if 'laser' in current_pp.lower():
- self.ui.cutzlabel.hide()
- self.ui.cutz_entry.hide()
+ self.t_ui.cutzlabel.hide()
+ self.t_ui.cutz_entry.hide()
try:
- self.ui.mpass_cb.hide()
- self.ui.maxdepth_entry.hide()
+ self.t_ui.mpass_cb.hide()
+ self.t_ui.maxdepth_entry.hide()
except AttributeError:
pass
if 'marlin' in current_pp.lower():
- self.ui.travelzlabel.setText('%s:' % _("Focus Z"))
- self.ui.endz_label.show()
- self.ui.endz_entry.show()
+ self.t_ui.travelzlabel.setText('%s:' % _("Focus Z"))
+ self.t_ui.endz_label.show()
+ self.t_ui.endz_entry.show()
else:
- self.ui.travelzlabel.hide()
- self.ui.travelz_entry.hide()
+ self.t_ui.travelzlabel.hide()
+ self.t_ui.travelz_entry.hide()
- self.ui.endz_label.hide()
- self.ui.endz_entry.hide()
+ self.t_ui.endz_label.hide()
+ self.t_ui.endz_entry.hide()
try:
- self.ui.frzlabel.hide()
- self.ui.feedrate_z_entry.hide()
+ self.t_ui.frzlabel.hide()
+ self.t_ui.feedrate_z_entry.hide()
except AttributeError:
pass
- self.ui.dwell_cb.hide()
- self.ui.dwelltime_entry.hide()
+ self.t_ui.dwell_cb.hide()
+ self.t_ui.dwelltime_entry.hide()
- self.ui.spindle_label.setText('%s:' % _("Laser Power"))
+ self.t_ui.spindle_label.setText('%s:' % _("Laser Power"))
try:
- self.ui.tool_offset_label.hide()
- self.ui.offset_entry.hide()
+ self.t_ui.tool_offset_label.hide()
+ self.t_ui.offset_entry.hide()
except AttributeError:
pass
else:
- self.ui.cutzlabel.show()
- self.ui.cutz_entry.show()
+ self.t_ui.cutzlabel.show()
+ self.t_ui.cutz_entry.show()
try:
- self.ui.mpass_cb.show()
- self.ui.maxdepth_entry.show()
+ self.t_ui.mpass_cb.show()
+ self.t_ui.maxdepth_entry.show()
except AttributeError:
pass
- self.ui.travelzlabel.setText('%s:' % _('Travel Z'))
+ self.t_ui.travelzlabel.setText('%s:' % _('Travel Z'))
- self.ui.travelzlabel.show()
- self.ui.travelz_entry.show()
+ self.t_ui.travelzlabel.show()
+ self.t_ui.travelz_entry.show()
- self.ui.endz_label.show()
- self.ui.endz_entry.show()
+ self.t_ui.endz_label.show()
+ self.t_ui.endz_entry.show()
try:
- self.ui.frzlabel.show()
- self.ui.feedrate_z_entry.show()
+ self.t_ui.frzlabel.show()
+ self.t_ui.feedrate_z_entry.show()
except AttributeError:
pass
- self.ui.dwell_cb.show()
- self.ui.dwelltime_entry.show()
+ self.t_ui.dwell_cb.show()
+ self.t_ui.dwelltime_entry.show()
- self.ui.spindle_label.setText('%s:' % _('Spindle speed'))
+ self.t_ui.spindle_label.setText('%s:' % _('Spindle speed'))
try:
- # self.ui.tool_offset_lbl.show()
- self.ui.offset_entry.show()
+ # self.t_ui.tool_offset_lbl.show()
+ self.t_ui.offset_entry.show()
except AttributeError:
pass
@@ -1339,12 +1370,12 @@ class ToolDrilling(AppTool, Excellon):
self.delete_tool_selection_shape()
def on_add_area_click(self):
- shape_button = self.ui.area_shape_radio
- overz_button = self.ui.over_z_entry
- strategy_radio = self.ui.strategy_radio
- cnc_button = self.ui.generate_cnc_button
- solid_geo = self.solid_geometry
- obj_type = self.kind
+ shape_button = self.t_ui.area_shape_radio
+ overz_button = self.t_ui.over_z_entry
+ strategy_radio = self.t_ui.strategy_radio
+ cnc_button = self.t_ui.generate_cnc_button
+ solid_geo = self.excellon_obj.solid_geometry
+ obj_type = self.excellon_obj.kind
self.app.exc_areas.on_add_area_click(
shape_button=shape_button, overz_button=overz_button, cnc_button=cnc_button, strategy_radio=strategy_radio,
@@ -1359,7 +1390,7 @@ class ToolDrilling(AppTool, Excellon):
self.app.exc_areas.e_shape_modified.emit()
def on_delete_sel_areas(self):
- sel_model = self.ui.exclusion_table.selectionModel()
+ sel_model = self.t_ui.exclusion_table.selectionModel()
sel_indexes = sel_model.selectedIndexes()
# it will iterate over all indexes which means all items in all columns too but I'm interested only on rows
@@ -1376,7 +1407,7 @@ class ToolDrilling(AppTool, Excellon):
self.app.exc_areas.e_shape_modified.emit()
def draw_sel_shape(self):
- sel_model = self.ui.exclusion_table.selectionModel()
+ sel_model = self.t_ui.exclusion_table.selectionModel()
sel_indexes = sel_model.selectedIndexes()
# it will iterate over all indexes which means all items in all columns too but I'm interested only on rows
@@ -1402,24 +1433,24 @@ class ToolDrilling(AppTool, Excellon):
def clear_selection(self):
self.app.delete_selection_shape()
- # self.ui.exclusion_table.clearSelection()
+ # self.t_ui.exclusion_table.clearSelection()
def delete_sel_shape(self):
self.app.delete_selection_shape()
def update_exclusion_table(self):
- self.exclusion_area_cb_is_checked = True if self.ui.exclusion_cb.isChecked() else False
+ self.exclusion_area_cb_is_checked = True if self.t_ui.exclusion_cb.isChecked() else False
self.build_ui()
- self.ui.exclusion_cb.set_value(self.exclusion_area_cb_is_checked)
+ self.t_ui.exclusion_cb.set_value(self.exclusion_area_cb_is_checked)
def on_strategy(self, val):
if val == 'around':
- self.ui.over_z_label.setDisabled(True)
- self.ui.over_z_entry.setDisabled(True)
+ self.t_ui.over_z_label.setDisabled(True)
+ self.t_ui.over_z_entry.setDisabled(True)
else:
- self.ui.over_z_label.setDisabled(False)
- self.ui.over_z_entry.setDisabled(False)
+ self.t_ui.over_z_label.setDisabled(False)
+ self.t_ui.over_z_entry.setDisabled(False)
def exclusion_table_toggle_all(self):
"""
@@ -1427,7 +1458,7 @@ class ToolDrilling(AppTool, Excellon):
:return:
"""
- sel_model = self.ui.exclusion_table.selectionModel()
+ sel_model = self.t_ui.exclusion_table.selectionModel()
sel_indexes = sel_model.selectedIndexes()
# it will iterate over all indexes which means all items in all columns too but I'm interested only on rows
@@ -1436,14 +1467,14 @@ class ToolDrilling(AppTool, Excellon):
sel_rows.add(idx.row())
if sel_rows:
- self.ui.exclusion_table.clearSelection()
+ self.t_ui.exclusion_table.clearSelection()
self.delete_sel_shape()
else:
- self.ui.exclusion_table.selectAll()
+ self.t_ui.exclusion_table.selectAll()
self.draw_sel_shape()
def on_cnc_button_click(self):
- obj_name = self.ui.object_combo.currentText()
+ obj_name = self.t_ui.object_combo.currentText()
# Get source object.
try:
@@ -1458,8 +1489,8 @@ class ToolDrilling(AppTool, Excellon):
# Get the tools from the Tool Table
selected_uid = set()
- for it in self.ui.tools_table.selectedItems():
- uid = self.ui.tools_table.item(it.row(), 3).text()
+ for it in self.t_ui.tools_table.selectedItems():
+ uid = self.t_ui.tools_table.item(it.row(), 3).text()
selected_uid.add(uid)
tools = list(selected_uid)
@@ -1467,8 +1498,8 @@ class ToolDrilling(AppTool, Excellon):
# if there is a single tool in the table (remember that the last 2 rows are for totals and do not count in
# tool number) it means that there are 3 rows (1 tool and 2 totals).
# in this case regardless of the selection status of that tool, use it.
- if self.ui.tools_table.rowCount() == 3:
- tools.append(self.ui.tools_table.item(0, 0).text())
+ if self.t_ui.tools_table.rowCount() == 3:
+ tools.append(self.t_ui.tools_table.item(0, 0).text())
else:
self.app.inform.emit('[ERROR_NOTCL] %s' %
_("Please select one or more tools from the list and try again."))
@@ -1480,14 +1511,14 @@ class ToolDrilling(AppTool, Excellon):
ymax = self.excellon_obj.options['ymax']
job_name = self.excellon_obj.options["name"] + "_cnc"
- pp_excellon_name = self.ui.pp_excellon_name_cb.get_value()
- # z_pdepth = self.ui.pdepth_entry.get_value()
- # feedrate_probe = self.ui.feedrate_probe_entry.get_value()
- # toolchange = self.ui.toolchange_cb.get_value()
- # z_toolchange = self.ui.toolchangez_entry.get_value()
- # startz = self.ui.estartz_entry.get_value()
- # endz = self.ui.endz_entry.get_value()
- # xy_end = self.ui.endxy_entry.get_value()
+ pp_excellon_name = self.t_ui.pp_excellon_name_cb.get_value()
+ # z_pdepth = self.t_ui.pdepth_entry.get_value()
+ # feedrate_probe = self.t_ui.feedrate_probe_entry.get_value()
+ # toolchange = self.t_ui.toolchange_cb.get_value()
+ # z_toolchange = self.t_ui.toolchangez_entry.get_value()
+ # startz = self.t_ui.estartz_entry.get_value()
+ # endz = self.t_ui.endz_entry.get_value()
+ # xy_end = self.t_ui.endxy_entry.get_value()
# Object initialization function for app.app_obj.new_object()
def job_init(job_obj, app_obj):
diff --git a/appTools/ToolIsolation.py b/appTools/ToolIsolation.py
index 1b54d31f..b50dda27 100644
--- a/appTools/ToolIsolation.py
+++ b/appTools/ToolIsolation.py
@@ -46,20 +46,20 @@ class ToolIsolation(AppTool, Gerber):
# #############################################################################
# ######################### Tool GUI ##########################################
# #############################################################################
- self.ui = IsoUI(layout=self.layout, app=self.app)
- self.toolName = self.ui.toolName
+ self.t_ui = IsoUI(layout=self.layout, app=self.app)
+ self.toolName = self.t_ui.toolName
# #############################################################################
# ###################### Setup CONTEXT MENU ###################################
# #############################################################################
- self.ui.tools_table.setupContextMenu()
- self.ui.tools_table.addContextMenu(
+ self.t_ui.tools_table.setupContextMenu()
+ self.t_ui.tools_table.addContextMenu(
_("Add"), self.on_add_tool_by_key, icon=QtGui.QIcon(self.app.resource_location + "/plus16.png")
)
- self.ui.tools_table.addContextMenu(
+ self.t_ui.tools_table.addContextMenu(
_("Add from DB"), self.on_add_tool_by_key, icon=QtGui.QIcon(self.app.resource_location + "/plus16.png")
)
- self.ui.tools_table.addContextMenu(
+ self.t_ui.tools_table.addContextMenu(
_("Delete"), lambda:
self.on_tool_delete(rows_to_delete=None, all_tools=None),
icon=QtGui.QIcon(self.app.resource_location + "/delete32.png")
@@ -122,12 +122,12 @@ class ToolIsolation(AppTool, Gerber):
self.poly_sel_disconnect_flag = False
self.form_fields = {
- "tools_iso_passes": self.ui.passes_entry,
- "tools_iso_overlap": self.ui.iso_overlap_entry,
- "tools_iso_milling_type": self.ui.milling_type_radio,
- "tools_iso_combine": self.ui.combine_passes_cb,
- "tools_iso_follow": self.ui.follow_cb,
- "tools_iso_isotype": self.ui.iso_type_radio
+ "tools_iso_passes": self.t_ui.passes_entry,
+ "tools_iso_overlap": self.t_ui.iso_overlap_entry,
+ "tools_iso_milling_type": self.t_ui.milling_type_radio,
+ "tools_iso_combine": self.t_ui.combine_passes_cb,
+ "tools_iso_follow": self.t_ui.follow_cb,
+ "tools_iso_isotype": self.t_ui.iso_type_radio
}
self.name2option = {
@@ -179,7 +179,7 @@ class ToolIsolation(AppTool, Gerber):
self.build_ui()
# all the tools are selected by default
- self.ui.tools_table.selectAll()
+ self.t_ui.tools_table.selectAll()
self.app.ui.notebook.setTabText(2, _("Isolation Tool"))
@@ -187,34 +187,34 @@ class ToolIsolation(AppTool, Gerber):
# #############################################################################
# ############################ SIGNALS ########################################
# #############################################################################
- self.ui.addtool_btn.clicked.connect(self.on_tool_add)
- self.ui.addtool_entry.returnPressed.connect(self.on_tooldia_updated)
- self.ui.deltool_btn.clicked.connect(self.on_tool_delete)
+ self.t_ui.addtool_btn.clicked.connect(self.on_tool_add)
+ self.t_ui.addtool_entry.returnPressed.connect(self.on_tooldia_updated)
+ self.t_ui.deltool_btn.clicked.connect(self.on_tool_delete)
- self.ui.tipdia_entry.returnPressed.connect(self.on_calculate_tooldia)
- self.ui.tipangle_entry.returnPressed.connect(self.on_calculate_tooldia)
- self.ui.cutz_entry.returnPressed.connect(self.on_calculate_tooldia)
+ self.t_ui.tipdia_entry.returnPressed.connect(self.on_calculate_tooldia)
+ self.t_ui.tipangle_entry.returnPressed.connect(self.on_calculate_tooldia)
+ self.t_ui.cutz_entry.returnPressed.connect(self.on_calculate_tooldia)
- self.ui.reference_combo_type.currentIndexChanged.connect(self.on_reference_combo_changed)
- self.ui.select_combo.currentIndexChanged.connect(self.on_toggle_reference)
+ self.t_ui.reference_combo_type.currentIndexChanged.connect(self.on_reference_combo_changed)
+ self.t_ui.select_combo.currentIndexChanged.connect(self.on_toggle_reference)
- self.ui.type_excobj_radio.activated_custom.connect(self.on_type_excobj_index_changed)
- self.ui.apply_param_to_all.clicked.connect(self.on_apply_param_to_all_clicked)
- self.ui.addtool_from_db_btn.clicked.connect(self.on_tool_add_from_db_clicked)
+ self.t_ui.type_excobj_radio.activated_custom.connect(self.on_type_excobj_index_changed)
+ self.t_ui.apply_param_to_all.clicked.connect(self.on_apply_param_to_all_clicked)
+ self.t_ui.addtool_from_db_btn.clicked.connect(self.on_tool_add_from_db_clicked)
- self.ui.generate_iso_button.clicked.connect(self.on_iso_button_click)
- self.ui.reset_button.clicked.connect(self.set_tool_ui)
+ self.t_ui.generate_iso_button.clicked.connect(self.on_iso_button_click)
+ self.t_ui.reset_button.clicked.connect(self.set_tool_ui)
# Cleanup on Graceful exit (CTRL+ALT+X combo key)
self.app.cleanup.connect(self.set_tool_ui)
def on_type_excobj_index_changed(self, val):
obj_type = 0 if val == 'gerber' else 2
- self.ui.exc_obj_combo.setRootModelIndex(self.app.collection.index(obj_type, 0, QtCore.QModelIndex()))
- self.ui.exc_obj_combo.setCurrentIndex(0)
- self.ui.exc_obj_combo.obj_type = {
+ self.t_ui.exc_obj_combo.setRootModelIndex(self.app.collection.index(obj_type, 0, QtCore.QModelIndex()))
+ self.t_ui.exc_obj_combo.setCurrentIndex(0)
+ self.t_ui.exc_obj_combo.obj_type = {
"gerber": "Gerber", "geometry": "Geometry"
- }[self.ui.type_excobj_radio.get_value()]
+ }[self.t_ui.type_excobj_radio.get_value()]
def set_tool_ui(self):
self.units = self.app.defaults['units'].upper()
@@ -225,7 +225,7 @@ class ToolIsolation(AppTool, Gerber):
selected_obj = self.app.collection.get_active()
if selected_obj.kind == 'gerber':
current_name = selected_obj.options['name']
- self.ui.object_combo.set_value(current_name)
+ self.t_ui.object_combo.set_value(current_name)
except Exception:
pass
@@ -233,101 +233,101 @@ class ToolIsolation(AppTool, Gerber):
# Show/Hide Advanced Options
if app_mode == 'b':
- self.ui.level.setText('%s' % _('Basic'))
+ self.t_ui.level.setText('%s' % _('Basic'))
# override the Preferences Value; in Basic mode the Tool Type is always Circular ('C1')
- self.ui.tool_type_radio.set_value('C1')
- self.ui.tool_type_label.hide()
- self.ui.tool_type_radio.hide()
+ self.t_ui.tool_type_radio.set_value('C1')
+ self.t_ui.tool_type_label.hide()
+ self.t_ui.tool_type_radio.hide()
- self.ui.milling_type_label.hide()
- self.ui.milling_type_radio.hide()
+ self.t_ui.milling_type_label.hide()
+ self.t_ui.milling_type_radio.hide()
- self.ui.iso_type_label.hide()
- self.ui.iso_type_radio.set_value('full')
- self.ui.iso_type_radio.hide()
+ self.t_ui.iso_type_label.hide()
+ self.t_ui.iso_type_radio.set_value('full')
+ self.t_ui.iso_type_radio.hide()
- self.ui.follow_cb.set_value(False)
- self.ui.follow_cb.hide()
- self.ui.follow_label.hide()
+ self.t_ui.follow_cb.set_value(False)
+ self.t_ui.follow_cb.hide()
+ self.t_ui.follow_label.hide()
- self.ui.rest_cb.set_value(False)
- self.ui.rest_cb.hide()
+ self.t_ui.rest_cb.set_value(False)
+ self.t_ui.rest_cb.hide()
- self.ui.except_cb.set_value(False)
- self.ui.except_cb.hide()
+ self.t_ui.except_cb.set_value(False)
+ self.t_ui.except_cb.hide()
- self.ui.type_excobj_radio.hide()
- self.ui.exc_obj_combo.hide()
+ self.t_ui.type_excobj_radio.hide()
+ self.t_ui.exc_obj_combo.hide()
- self.ui.select_combo.setCurrentIndex(0)
- self.ui.select_combo.hide()
- self.ui.select_label.hide()
+ self.t_ui.select_combo.setCurrentIndex(0)
+ self.t_ui.select_combo.hide()
+ self.t_ui.select_label.hide()
else:
- self.ui.level.setText('%s' % _('Advanced'))
+ self.t_ui.level.setText('%s' % _('Advanced'))
- self.ui.tool_type_radio.set_value(self.app.defaults["tools_iso_tool_type"])
- self.ui.tool_type_label.show()
- self.ui.tool_type_radio.show()
+ self.t_ui.tool_type_radio.set_value(self.app.defaults["tools_iso_tool_type"])
+ self.t_ui.tool_type_label.show()
+ self.t_ui.tool_type_radio.show()
- self.ui.milling_type_label.show()
- self.ui.milling_type_radio.show()
+ self.t_ui.milling_type_label.show()
+ self.t_ui.milling_type_radio.show()
- self.ui.iso_type_label.show()
- self.ui.iso_type_radio.set_value(self.app.defaults["tools_iso_isotype"])
- self.ui.iso_type_radio.show()
+ self.t_ui.iso_type_label.show()
+ self.t_ui.iso_type_radio.set_value(self.app.defaults["tools_iso_isotype"])
+ self.t_ui.iso_type_radio.show()
- self.ui.follow_cb.set_value(self.app.defaults["tools_iso_follow"])
- self.ui.follow_cb.show()
- self.ui.follow_label.show()
+ self.t_ui.follow_cb.set_value(self.app.defaults["tools_iso_follow"])
+ self.t_ui.follow_cb.show()
+ self.t_ui.follow_label.show()
- self.ui.rest_cb.set_value(self.app.defaults["tools_iso_rest"])
- self.ui.rest_cb.show()
+ self.t_ui.rest_cb.set_value(self.app.defaults["tools_iso_rest"])
+ self.t_ui.rest_cb.show()
- self.ui.except_cb.set_value(self.app.defaults["tools_iso_isoexcept"])
- self.ui.except_cb.show()
+ self.t_ui.except_cb.set_value(self.app.defaults["tools_iso_isoexcept"])
+ self.t_ui.except_cb.show()
- self.ui.select_combo.set_value(self.app.defaults["tools_iso_selection"])
- self.ui.select_combo.show()
- self.ui.select_label.show()
+ self.t_ui.select_combo.set_value(self.app.defaults["tools_iso_selection"])
+ self.t_ui.select_combo.show()
+ self.t_ui.select_label.show()
if self.app.defaults["gerber_buffering"] == 'no':
- self.ui.create_buffer_button.show()
+ self.t_ui.create_buffer_button.show()
try:
- self.ui.create_buffer_button.clicked.disconnect(self.on_generate_buffer)
+ self.t_ui.create_buffer_button.clicked.disconnect(self.on_generate_buffer)
except TypeError:
pass
- self.ui.create_buffer_button.clicked.connect(self.on_generate_buffer)
+ self.t_ui.create_buffer_button.clicked.connect(self.on_generate_buffer)
else:
- self.ui.create_buffer_button.hide()
+ self.t_ui.create_buffer_button.hide()
- self.ui.tools_frame.show()
+ self.t_ui.tools_frame.show()
- self.ui.type_excobj_radio.set_value('gerber')
+ self.t_ui.type_excobj_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_excobj_index_changed(val="gerber")
self.on_reference_combo_changed()
- self.ui.order_radio.set_value(self.app.defaults["tools_iso_order"])
- self.ui.passes_entry.set_value(self.app.defaults["tools_iso_passes"])
- self.ui.iso_overlap_entry.set_value(self.app.defaults["tools_iso_overlap"])
- self.ui.milling_type_radio.set_value(self.app.defaults["tools_iso_milling_type"])
- self.ui.combine_passes_cb.set_value(self.app.defaults["tools_iso_combine_passes"])
- self.ui.area_shape_radio.set_value(self.app.defaults["tools_iso_area_shape"])
- self.ui.poly_int_cb.set_value(self.app.defaults["tools_iso_poly_ints"])
- self.ui.forced_rest_iso_cb.set_value(self.app.defaults["tools_iso_force"])
+ self.t_ui.order_radio.set_value(self.app.defaults["tools_iso_order"])
+ self.t_ui.passes_entry.set_value(self.app.defaults["tools_iso_passes"])
+ self.t_ui.iso_overlap_entry.set_value(self.app.defaults["tools_iso_overlap"])
+ self.t_ui.milling_type_radio.set_value(self.app.defaults["tools_iso_milling_type"])
+ self.t_ui.combine_passes_cb.set_value(self.app.defaults["tools_iso_combine_passes"])
+ self.t_ui.area_shape_radio.set_value(self.app.defaults["tools_iso_area_shape"])
+ self.t_ui.poly_int_cb.set_value(self.app.defaults["tools_iso_poly_ints"])
+ self.t_ui.forced_rest_iso_cb.set_value(self.app.defaults["tools_iso_force"])
- self.ui.cutz_entry.set_value(self.app.defaults["tools_iso_tool_cutz"])
- self.ui.tool_type_radio.set_value(self.app.defaults["tools_iso_tool_type"])
- self.ui.tipdia_entry.set_value(self.app.defaults["tools_iso_tool_vtipdia"])
- self.ui.tipangle_entry.set_value(self.app.defaults["tools_iso_tool_vtipangle"])
- self.ui.addtool_entry.set_value(self.app.defaults["tools_iso_newdia"])
+ self.t_ui.cutz_entry.set_value(self.app.defaults["tools_iso_tool_cutz"])
+ self.t_ui.tool_type_radio.set_value(self.app.defaults["tools_iso_tool_type"])
+ self.t_ui.tipdia_entry.set_value(self.app.defaults["tools_iso_tool_vtipdia"])
+ self.t_ui.tipangle_entry.set_value(self.app.defaults["tools_iso_tool_vtipangle"])
+ self.t_ui.addtool_entry.set_value(self.app.defaults["tools_iso_newdia"])
- self.on_tool_type(val=self.ui.tool_type_radio.get_value())
+ self.on_tool_type(val=self.t_ui.tool_type_radio.get_value())
- loaded_obj = self.app.collection.get_by_name(self.ui.object_combo.get_value())
+ loaded_obj = self.app.collection.get_by_name(self.t_ui.object_combo.get_value())
if loaded_obj:
outname = loaded_obj.options['name']
else:
@@ -401,7 +401,7 @@ class ToolIsolation(AppTool, Gerber):
'offset': 'Path',
'offset_value': 0.0,
'type': 'Iso',
- 'tool_type': self.ui.tool_type_radio.get_value(),
+ 'tool_type': self.t_ui.tool_type_radio.get_value(),
'data': deepcopy(self.default_data),
'solid_geometry': []
}
@@ -425,13 +425,13 @@ class ToolIsolation(AppTool, Gerber):
self.on_rest_machining_check(state=self.app.defaults["tools_iso_rest"])
- self.ui.tools_table.drag_drop_sig.connect(self.rebuild_ui)
+ self.t_ui.tools_table.drag_drop_sig.connect(self.rebuild_ui)
def rebuild_ui(self):
# read the table tools uid
current_uid_list = []
- for row in range(self.ui.tools_table.rowCount()):
- uid = int(self.ui.tools_table.item(row, 3).text())
+ for row in range(self.t_ui.tools_table.rowCount()):
+ uid = int(self.t_ui.tools_table.item(row, 3).text())
current_uid_list.append(uid)
new_tools = {}
@@ -456,7 +456,7 @@ class ToolIsolation(AppTool, Gerber):
for k, v in self.iso_tools.items():
sorted_tools.append(float('%.*f' % (self.decimals, float(v['tooldia']))))
- order = self.ui.order_radio.get_value()
+ order = self.t_ui.order_radio.get_value()
if order == 'fwd':
sorted_tools.sort(reverse=False)
elif order == 'rev':
@@ -465,86 +465,89 @@ class ToolIsolation(AppTool, Gerber):
pass
n = len(sorted_tools)
- self.ui.tools_table.setRowCount(n)
+ self.t_ui.tools_table.setRowCount(n)
tool_id = 0
for tool_sorted in sorted_tools:
for tooluid_key, tooluid_value in self.iso_tools.items():
if float('%.*f' % (self.decimals, tooluid_value['tooldia'])) == tool_sorted:
tool_id += 1
+
+ # Tool name/id
id_ = QtWidgets.QTableWidgetItem('%d' % int(tool_id))
id_.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled)
row_no = tool_id - 1
- self.ui.tools_table.setItem(row_no, 0, id_) # Tool name/id
-
+ self.t_ui.tools_table.setItem(row_no, 0, id_)
+ # Diameter
dia = QtWidgets.QTableWidgetItem('%.*f' % (self.decimals, tooluid_value['tooldia']))
dia.setFlags(QtCore.Qt.ItemIsEnabled)
- self.ui.tools_table.setItem(row_no, 1, dia) # Diameter
+ self.t_ui.tools_table.setItem(row_no, 1, dia)
+ # Tool Type
tool_type_item = FCComboBox()
tool_type_item.addItems(self.tool_type_item_options)
- # tool_type_item.setStyleSheet('background-color: rgb(255,255,255)')
idx = tool_type_item.findText(tooluid_value['tool_type'])
tool_type_item.setCurrentIndex(idx)
- self.ui.tools_table.setCellWidget(row_no, 2, tool_type_item)
+ self.t_ui.tools_table.setCellWidget(row_no, 2, tool_type_item)
+ # Tool unique ID
+ # REMEMBER: THIS COLUMN IS HIDDEN
tool_uid_item = QtWidgets.QTableWidgetItem(str(int(tooluid_key)))
- # ## REMEMBER: THIS COLUMN IS HIDDEN IN OBJECTUI.PY # ##
- self.ui.tools_table.setItem(row_no, 3, tool_uid_item) # Tool unique ID
+ self.t_ui.tools_table.setItem(row_no, 3, tool_uid_item)
# make the diameter column editable
for row in range(tool_id):
- self.ui.tools_table.item(row, 1).setFlags(
+ self.t_ui.tools_table.item(row, 1).setFlags(
QtCore.Qt.ItemIsEditable | QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled)
# all the tools are selected by default
- self.ui.tools_table.selectColumn(0)
+ self.t_ui.tools_table.selectColumn(0)
#
- self.ui.tools_table.resizeColumnsToContents()
- self.ui.tools_table.resizeRowsToContents()
+ self.t_ui.tools_table.resizeColumnsToContents()
+ self.t_ui.tools_table.resizeRowsToContents()
- vertical_header = self.ui.tools_table.verticalHeader()
+ vertical_header = self.t_ui.tools_table.verticalHeader()
vertical_header.hide()
- self.ui.tools_table.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
+ self.t_ui.tools_table.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
- horizontal_header = self.ui.tools_table.horizontalHeader()
+ horizontal_header = self.t_ui.tools_table.horizontalHeader()
horizontal_header.setMinimumSectionSize(10)
horizontal_header.setSectionResizeMode(0, QtWidgets.QHeaderView.Fixed)
horizontal_header.resizeSection(0, 20)
horizontal_header.setSectionResizeMode(1, QtWidgets.QHeaderView.Stretch)
- # self.ui.tools_table.setSortingEnabled(True)
+ # self.t_ui.tools_table.setSortingEnabled(True)
# sort by tool diameter
- # self.ui.tools_table.sortItems(1)
+ # self.t_ui.tools_table.sortItems(1)
- self.ui.tools_table.setMinimumHeight(self.ui.tools_table.getHeight())
- self.ui.tools_table.setMaximumHeight(self.ui.tools_table.getHeight())
+ self.t_ui.tools_table.setMinimumHeight(self.t_ui.tools_table.getHeight())
+ self.t_ui.tools_table.setMaximumHeight(self.t_ui.tools_table.getHeight())
self.ui_connect()
# set the text on tool_data_label after loading the object
sel_rows = set()
- sel_items = self.ui.tools_table.selectedItems()
+ sel_items = self.t_ui.tools_table.selectedItems()
for it in sel_items:
sel_rows.add(it.row())
if len(sel_rows) > 1:
- self.ui.tool_data_label.setText(
+ self.t_ui.tool_data_label.setText(
"%s: %s" % (_('Parameters for'), _("Multiple Tools"))
)
def ui_connect(self):
- self.ui.tools_table.itemChanged.connect(self.on_tool_edit)
- self.ui.tool_type_radio.activated_custom.connect(self.on_tool_type)
+ self.t_ui.tools_table.itemChanged.connect(self.on_tool_edit)
+ self.t_ui.tool_type_radio.activated_custom.connect(self.on_tool_type)
# rows selected
- self.ui.tools_table.clicked.connect(self.on_row_selection_change)
- self.ui.tools_table.horizontalHeader().sectionClicked.connect(self.on_toggle_all_rows)
+ self.t_ui.tools_table.clicked.connect(self.on_row_selection_change)
+ self.t_ui.tools_table.horizontalHeader().sectionClicked.connect(self.on_toggle_all_rows)
# tool table widgets
- for row in range(self.ui.tools_table.rowCount()):
+ for row in range(self.t_ui.tools_table.rowCount()):
try:
- self.ui.tools_table.cellWidget(row, 2).currentIndexChanged.connect(self.on_tooltable_cellwidget_change)
+ self.t_ui.tools_table.cellWidget(row, 2).currentIndexChanged.connect(self.on_tooltable_cellwidget_change)
except AttributeError:
pass
@@ -560,38 +563,38 @@ class ToolIsolation(AppTool, Gerber):
elif isinstance(current_widget, FCComboBox):
current_widget.currentIndexChanged.connect(self.form_to_storage)
- self.ui.rest_cb.stateChanged.connect(self.on_rest_machining_check)
- self.ui.order_radio.activated_custom[str].connect(self.on_order_changed)
+ self.t_ui.rest_cb.stateChanged.connect(self.on_rest_machining_check)
+ self.t_ui.order_radio.activated_custom[str].connect(self.on_order_changed)
def ui_disconnect(self):
try:
# if connected, disconnect the signal from the slot on item_changed as it creates issues
- self.ui.tools_table.itemChanged.disconnect()
+ self.t_ui.tools_table.itemChanged.disconnect()
except (TypeError, AttributeError):
pass
try:
# if connected, disconnect the signal from the slot on item_changed as it creates issues
- self.ui.tool_type_radio.activated_custom.disconnect()
+ self.t_ui.tool_type_radio.activated_custom.disconnect()
except (TypeError, AttributeError):
pass
# rows selected
try:
- self.ui.tools_table.clicked.disconnect()
+ self.t_ui.tools_table.clicked.disconnect()
except (TypeError, AttributeError):
pass
try:
- self.ui.tools_table.horizontalHeader().sectionClicked.disconnect()
+ self.t_ui.tools_table.horizontalHeader().sectionClicked.disconnect()
except (TypeError, AttributeError):
pass
# tool table widgets
- for row in range(self.ui.tools_table.rowCount()):
+ for row in range(self.t_ui.tools_table.rowCount()):
try:
- self.ui.tools_table.cellWidget(row, 2).currentIndexChanged.disconnect()
+ self.t_ui.tools_table.cellWidget(row, 2).currentIndexChanged.disconnect()
except (TypeError, AttributeError):
pass
@@ -620,11 +623,11 @@ class ToolIsolation(AppTool, Gerber):
pass
try:
- self.ui.rest_cb.stateChanged.disconnect()
+ self.t_ui.rest_cb.stateChanged.disconnect()
except (TypeError, ValueError):
pass
try:
- self.ui.order_radio.activated_custom[str].disconnect()
+ self.t_ui.order_radio.activated_custom[str].disconnect()
except (TypeError, ValueError):
pass
@@ -634,7 +637,7 @@ class ToolIsolation(AppTool, Gerber):
:return:
"""
- sel_model = self.ui.tools_table.selectionModel()
+ sel_model = self.t_ui.tools_table.selectionModel()
sel_indexes = sel_model.selectedIndexes()
# it will iterate over all indexes which means all items in all columns too but I'm interested only on rows
@@ -642,10 +645,10 @@ class ToolIsolation(AppTool, Gerber):
for idx in sel_indexes:
sel_rows.add(idx.row())
- if len(sel_rows) == self.ui.tools_table.rowCount():
- self.ui.tools_table.clearSelection()
+ if len(sel_rows) == self.t_ui.tools_table.rowCount():
+ self.t_ui.tools_table.clearSelection()
else:
- self.ui.tools_table.selectAll()
+ self.t_ui.tools_table.selectAll()
self.update_ui()
def on_row_selection_change(self):
@@ -655,26 +658,26 @@ class ToolIsolation(AppTool, Gerber):
self.blockSignals(True)
sel_rows = set()
- table_items = self.ui.tools_table.selectedItems()
+ table_items = self.t_ui.tools_table.selectedItems()
if table_items:
for it in table_items:
sel_rows.add(it.row())
- # sel_rows = sorted(set(index.row() for index in self.ui.tools_table.selectedIndexes()))
+ # sel_rows = sorted(set(index.row() for index in self.t_ui.tools_table.selectedIndexes()))
if not sel_rows or len(sel_rows) == 0:
- self.ui.generate_iso_button.setDisabled(True)
- self.ui.tool_data_label.setText(
+ self.t_ui.generate_iso_button.setDisabled(True)
+ self.t_ui.tool_data_label.setText(
"%s: %s" % (_('Parameters for'), _("No Tool Selected"))
)
self.blockSignals(False)
return
else:
- self.ui.generate_iso_button.setDisabled(False)
+ self.t_ui.generate_iso_button.setDisabled(False)
for current_row in sel_rows:
# populate the form with the data from the tool associated with the row parameter
try:
- item = self.ui.tools_table.item(current_row, 3)
+ item = self.t_ui.tools_table.item(current_row, 3)
if item is not None:
tooluid = int(item.text())
else:
@@ -686,7 +689,7 @@ class ToolIsolation(AppTool, Gerber):
# update the QLabel that shows for which Tool we have the parameters in the UI form
if len(sel_rows) == 1:
cr = current_row + 1
- self.ui.tool_data_label.setText(
+ self.t_ui.tool_data_label.setText(
"%s: %s %d" % (_('Parameters for'), _("Tool"), cr)
)
try:
@@ -699,7 +702,7 @@ class ToolIsolation(AppTool, Gerber):
except Exception as e:
log.debug("ToolIsolation ---> update_ui() " + str(e))
else:
- self.ui.tool_data_label.setText(
+ self.t_ui.tool_data_label.setText(
"%s: %s" % (_('Parameters for'), _("Multiple Tools"))
)
@@ -716,7 +719,7 @@ class ToolIsolation(AppTool, Gerber):
pass
def form_to_storage(self):
- if self.ui.tools_table.rowCount() == 0:
+ if self.t_ui.tools_table.rowCount() == 0:
# there is no tool in tool table so we can't save the GUI elements values to storage
return
@@ -726,12 +729,12 @@ class ToolIsolation(AppTool, Gerber):
wdg_objname = widget_changed.objectName()
option_changed = self.name2option[wdg_objname]
- # row = self.ui.tools_table.currentRow()
- rows = sorted(set(index.row() for index in self.ui.tools_table.selectedIndexes()))
+ # row = self.t_ui.tools_table.currentRow()
+ rows = sorted(set(index.row() for index in self.t_ui.tools_table.selectedIndexes()))
for row in rows:
if row < 0:
row = 0
- tooluid_item = int(self.ui.tools_table.item(row, 3).text())
+ tooluid_item = int(self.t_ui.tools_table.item(row, 3).text())
for tooluid_key, tooluid_val in self.iso_tools.items():
if int(tooluid_key) == tooluid_item:
@@ -744,18 +747,18 @@ class ToolIsolation(AppTool, Gerber):
self.blockSignals(False)
def on_apply_param_to_all_clicked(self):
- if self.ui.tools_table.rowCount() == 0:
+ if self.t_ui.tools_table.rowCount() == 0:
# there is no tool in tool table so we can't save the GUI elements values to storage
log.debug("ToolIsolation.on_apply_param_to_all_clicked() --> no tool in Tools Table, aborting.")
return
self.blockSignals(True)
- row = self.ui.tools_table.currentRow()
+ row = self.t_ui.tools_table.currentRow()
if row < 0:
row = 0
- tooluid_item = int(self.ui.tools_table.item(row, 3).text())
+ tooluid_item = int(self.t_ui.tools_table.item(row, 3).text())
temp_tool_data = {}
for tooluid_key, tooluid_val in self.iso_tools.items():
@@ -788,62 +791,62 @@ class ToolIsolation(AppTool, Gerber):
self.app.inform.emit('[WARNING_NOTCL] %s...' % _("Adding Tool cancelled"))
def on_tooldia_updated(self):
- if self.ui.tool_type_radio.get_value() == 'C1':
- self.old_tool_dia = self.ui.addtool_entry.get_value()
+ if self.t_ui.tool_type_radio.get_value() == 'C1':
+ self.old_tool_dia = self.t_ui.addtool_entry.get_value()
def on_reference_combo_changed(self):
- obj_type = self.ui.reference_combo_type.currentIndex()
- self.ui.reference_combo.setRootModelIndex(self.app.collection.index(obj_type, 0, QtCore.QModelIndex()))
- self.ui.reference_combo.setCurrentIndex(0)
- self.ui.reference_combo.obj_type = {
+ obj_type = self.t_ui.reference_combo_type.currentIndex()
+ self.t_ui.reference_combo.setRootModelIndex(self.app.collection.index(obj_type, 0, QtCore.QModelIndex()))
+ self.t_ui.reference_combo.setCurrentIndex(0)
+ self.t_ui.reference_combo.obj_type = {
_("Gerber"): "Gerber", _("Excellon"): "Excellon", _("Geometry"): "Geometry"
- }[self.ui.reference_combo_type.get_value()]
+ }[self.t_ui.reference_combo_type.get_value()]
def on_toggle_reference(self):
- val = self.ui.select_combo.get_value()
+ val = self.t_ui.select_combo.get_value()
if val == _("All"):
- self.ui.reference_combo.hide()
- self.ui.reference_combo_label.hide()
- self.ui.reference_combo_type.hide()
- self.ui.reference_combo_type_label.hide()
- self.ui.area_shape_label.hide()
- self.ui.area_shape_radio.hide()
- self.ui.poly_int_cb.hide()
+ self.t_ui.reference_combo.hide()
+ self.t_ui.reference_combo_label.hide()
+ self.t_ui.reference_combo_type.hide()
+ self.t_ui.reference_combo_type_label.hide()
+ self.t_ui.area_shape_label.hide()
+ self.t_ui.area_shape_radio.hide()
+ self.t_ui.poly_int_cb.hide()
# disable rest-machining for area painting
- self.ui.rest_cb.setDisabled(False)
+ self.t_ui.rest_cb.setDisabled(False)
elif val == _("Area Selection"):
- self.ui.reference_combo.hide()
- self.ui.reference_combo_label.hide()
- self.ui.reference_combo_type.hide()
- self.ui.reference_combo_type_label.hide()
- self.ui.area_shape_label.show()
- self.ui.area_shape_radio.show()
- self.ui.poly_int_cb.hide()
+ self.t_ui.reference_combo.hide()
+ self.t_ui.reference_combo_label.hide()
+ self.t_ui.reference_combo_type.hide()
+ self.t_ui.reference_combo_type_label.hide()
+ self.t_ui.area_shape_label.show()
+ self.t_ui.area_shape_radio.show()
+ self.t_ui.poly_int_cb.hide()
# disable rest-machining for area isolation
- self.ui.rest_cb.set_value(False)
- self.ui.rest_cb.setDisabled(True)
+ self.t_ui.rest_cb.set_value(False)
+ self.t_ui.rest_cb.setDisabled(True)
elif val == _("Polygon Selection"):
- self.ui.reference_combo.hide()
- self.ui.reference_combo_label.hide()
- self.ui.reference_combo_type.hide()
- self.ui.reference_combo_type_label.hide()
- self.ui.area_shape_label.hide()
- self.ui.area_shape_radio.hide()
- self.ui.poly_int_cb.show()
+ self.t_ui.reference_combo.hide()
+ self.t_ui.reference_combo_label.hide()
+ self.t_ui.reference_combo_type.hide()
+ self.t_ui.reference_combo_type_label.hide()
+ self.t_ui.area_shape_label.hide()
+ self.t_ui.area_shape_radio.hide()
+ self.t_ui.poly_int_cb.show()
else:
- self.ui.reference_combo.show()
- self.ui.reference_combo_label.show()
- self.ui.reference_combo_type.show()
- self.ui.reference_combo_type_label.show()
- self.ui.area_shape_label.hide()
- self.ui.area_shape_radio.hide()
- self.ui.poly_int_cb.hide()
+ self.t_ui.reference_combo.show()
+ self.t_ui.reference_combo_label.show()
+ self.t_ui.reference_combo_type.show()
+ self.t_ui.reference_combo_type_label.show()
+ self.t_ui.area_shape_label.hide()
+ self.t_ui.area_shape_radio.hide()
+ self.t_ui.poly_int_cb.hide()
# disable rest-machining for area painting
- self.ui.rest_cb.setDisabled(False)
+ self.t_ui.rest_cb.setDisabled(False)
def on_order_changed(self, order):
if order != 'no':
@@ -851,34 +854,34 @@ class ToolIsolation(AppTool, Gerber):
def on_rest_machining_check(self, state):
if state:
- self.ui.order_radio.set_value('rev')
- self.ui.order_label.setDisabled(True)
- self.ui.order_radio.setDisabled(True)
+ self.t_ui.order_radio.set_value('rev')
+ self.t_ui.order_label.setDisabled(True)
+ self.t_ui.order_radio.setDisabled(True)
- self.old_combine_state = self.ui.combine_passes_cb.get_value()
- self.ui.combine_passes_cb.set_value(True)
- self.ui.combine_passes_cb.setDisabled(True)
+ self.old_combine_state = self.t_ui.combine_passes_cb.get_value()
+ self.t_ui.combine_passes_cb.set_value(True)
+ self.t_ui.combine_passes_cb.setDisabled(True)
- self.ui.forced_rest_iso_cb.setDisabled(False)
+ self.t_ui.forced_rest_iso_cb.setDisabled(False)
else:
- self.ui.order_label.setDisabled(False)
- self.ui.order_radio.setDisabled(False)
+ self.t_ui.order_label.setDisabled(False)
+ self.t_ui.order_radio.setDisabled(False)
- self.ui.combine_passes_cb.set_value(self.old_combine_state)
- self.ui.combine_passes_cb.setDisabled(False)
+ self.t_ui.combine_passes_cb.set_value(self.old_combine_state)
+ self.t_ui.combine_passes_cb.setDisabled(False)
- self.ui.forced_rest_iso_cb.setDisabled(True)
+ self.t_ui.forced_rest_iso_cb.setDisabled(True)
def on_tooltable_cellwidget_change(self):
cw = self.sender()
assert isinstance(cw, QtWidgets.QComboBox), \
"Expected a QtWidgets.QComboBox, got %s" % isinstance(cw, QtWidgets.QComboBox)
- cw_index = self.ui.tools_table.indexAt(cw.pos())
+ cw_index = self.t_ui.tools_table.indexAt(cw.pos())
cw_row = cw_index.row()
cw_col = cw_index.column()
- current_uid = int(self.ui.tools_table.item(cw_row, 3).text())
+ current_uid = int(self.t_ui.tools_table.item(cw_row, 3).text())
# if the sender is in the column with index 2 then we update the tool_type key
if cw_col == 2:
@@ -892,29 +895,29 @@ class ToolIsolation(AppTool, Gerber):
def on_tool_type(self, val):
if val == 'V':
- self.ui.addtool_entry_lbl.setDisabled(True)
- self.ui.addtool_entry.setDisabled(True)
- self.ui.tipdialabel.show()
- self.ui.tipdia_entry.show()
- self.ui.tipanglelabel.show()
- self.ui.tipangle_entry.show()
+ self.t_ui.addtool_entry_lbl.setDisabled(True)
+ self.t_ui.addtool_entry.setDisabled(True)
+ self.t_ui.tipdialabel.show()
+ self.t_ui.tipdia_entry.show()
+ self.t_ui.tipanglelabel.show()
+ self.t_ui.tipangle_entry.show()
self.on_calculate_tooldia()
else:
- self.ui.addtool_entry_lbl.setDisabled(False)
- self.ui.addtool_entry.setDisabled(False)
- self.ui.tipdialabel.hide()
- self.ui.tipdia_entry.hide()
- self.ui.tipanglelabel.hide()
- self.ui.tipangle_entry.hide()
+ self.t_ui.addtool_entry_lbl.setDisabled(False)
+ self.t_ui.addtool_entry.setDisabled(False)
+ self.t_ui.tipdialabel.hide()
+ self.t_ui.tipdia_entry.hide()
+ self.t_ui.tipanglelabel.hide()
+ self.t_ui.tipangle_entry.hide()
- self.ui.addtool_entry.set_value(self.old_tool_dia)
+ self.t_ui.addtool_entry.set_value(self.old_tool_dia)
def on_calculate_tooldia(self):
- if self.ui.tool_type_radio.get_value() == 'V':
- tip_dia = float(self.ui.tipdia_entry.get_value())
- tip_angle = float(self.ui.tipangle_entry.get_value()) / 2.0
- cut_z = float(self.ui.cutz_entry.get_value())
+ if self.t_ui.tool_type_radio.get_value() == 'V':
+ tip_dia = float(self.t_ui.tipdia_entry.get_value())
+ tip_angle = float(self.t_ui.tipangle_entry.get_value()) / 2.0
+ cut_z = float(self.t_ui.cutz_entry.get_value())
cut_z = -cut_z if cut_z < 0 else cut_z
# calculated tool diameter so the cut_z parameter is obeyed
@@ -926,11 +929,11 @@ class ToolIsolation(AppTool, Gerber):
"vtipangle": (tip_angle * 2),
})
- self.ui.addtool_entry.set_value(tool_dia)
+ self.t_ui.addtool_entry.set_value(tool_dia)
return tool_dia
else:
- return float(self.ui.addtool_entry.get_value())
+ return float(self.t_ui.addtool_entry.get_value())
def on_tool_add(self, dia=None, muted=None):
self.blockSignals(True)
@@ -975,7 +978,7 @@ class ToolIsolation(AppTool, Gerber):
if float('%.*f' % (self.decimals, tool_dia)) in tool_dias:
if muted is None:
self.app.inform.emit('[WARNING_NOTCL] %s' % _("Cancelled. Tool already in Tool Table."))
- # self.ui.tools_table.itemChanged.connect(self.on_tool_edit)
+ # self.t_ui.tools_table.itemChanged.connect(self.on_tool_edit)
self.blockSignals(False)
return
@@ -988,7 +991,7 @@ class ToolIsolation(AppTool, Gerber):
'offset': 'Path',
'offset_value': 0.0,
'type': ' Iso',
- 'tool_type': self.ui.tool_type_radio.get_value(),
+ 'tool_type': self.t_ui.tool_type_radio.get_value(),
'data': deepcopy(self.default_data),
'solid_geometry': []
}
@@ -998,24 +1001,24 @@ class ToolIsolation(AppTool, Gerber):
self.build_ui()
# select the tool just added
- for row in range(self.ui.tools_table.rowCount()):
- if int(self.ui.tools_table.item(row, 3).text()) == self.tooluid:
- self.ui.tools_table.selectRow(row)
+ for row in range(self.t_ui.tools_table.rowCount()):
+ if int(self.t_ui.tools_table.item(row, 3).text()) == self.tooluid:
+ self.t_ui.tools_table.selectRow(row)
break
def on_tool_edit(self, item):
self.blockSignals(True)
edited_row = item.row()
- editeduid = int(self.ui.tools_table.item(edited_row, 3).text())
+ editeduid = int(self.t_ui.tools_table.item(edited_row, 3).text())
tool_dias = []
try:
- new_tool_dia = float(self.ui.tools_table.item(edited_row, 1).text())
+ new_tool_dia = float(self.t_ui.tools_table.item(edited_row, 1).text())
except ValueError:
# try to convert comma to decimal point. if it's still not working error message and return
try:
- new_tool_dia = float(self.ui.tools_table.item(edited_row, 1).text().replace(',', '.'))
+ new_tool_dia = float(self.t_ui.tools_table.item(edited_row, 1).text().replace(',', '.'))
except ValueError:
self.app.inform.emit('[ERROR_NOTCL] %s' % _("Wrong value format entered, use a number."))
self.blockSignals(False)
@@ -1036,7 +1039,7 @@ class ToolIsolation(AppTool, Gerber):
for k, v in self.iso_tools.items():
if k == editeduid:
old_tool_dia = v['tooldia']
- restore_dia_item = self.ui.tools_table.item(edited_row, 1)
+ restore_dia_item = self.t_ui.tools_table.item(edited_row, 1)
restore_dia_item.setText(str(old_tool_dia))
break
@@ -1065,10 +1068,10 @@ class ToolIsolation(AppTool, Gerber):
if rows_to_delete:
try:
for row in rows_to_delete:
- tooluid_del = int(self.ui.tools_table.item(row, 3).text())
+ tooluid_del = int(self.t_ui.tools_table.item(row, 3).text())
deleted_tools_list.append(tooluid_del)
except TypeError:
- tooluid_del = int(self.ui.tools_table.item(rows_to_delete, 3).text())
+ tooluid_del = int(self.t_ui.tools_table.item(rows_to_delete, 3).text())
deleted_tools_list.append(tooluid_del)
for t in deleted_tools_list:
@@ -1079,12 +1082,12 @@ class ToolIsolation(AppTool, Gerber):
return
try:
- if self.ui.tools_table.selectedItems():
- for row_sel in self.ui.tools_table.selectedItems():
+ if self.t_ui.tools_table.selectedItems():
+ for row_sel in self.t_ui.tools_table.selectedItems():
row = row_sel.row()
if row < 0:
continue
- tooluid_del = int(self.ui.tools_table.item(row, 3).text())
+ tooluid_del = int(self.t_ui.tools_table.item(row, 3).text())
deleted_tools_list.append(tooluid_del)
for t in deleted_tools_list:
@@ -1104,7 +1107,7 @@ class ToolIsolation(AppTool, Gerber):
def on_generate_buffer(self):
self.app.inform.emit('[WARNING_NOTCL] %s...' % _("Buffering solid geometry"))
- self.obj_name = self.ui.object_combo.currentText()
+ self.obj_name = self.t_ui.object_combo.currentText()
# Get source object.
try:
@@ -1131,7 +1134,7 @@ class ToolIsolation(AppTool, Gerber):
def on_iso_button_click(self):
- self.obj_name = self.ui.object_combo.currentText()
+ self.obj_name = self.t_ui.object_combo.currentText()
# Get source object.
try:
@@ -1193,7 +1196,7 @@ class ToolIsolation(AppTool, Gerber):
:type isolated_obj: AppObjects.FlatCAMGerber.GerberObject
:return: None
"""
- selection = self.ui.select_combo.get_value()
+ selection = self.t_ui.select_combo.get_value()
if selection == _("All"):
self.isolate(isolated_obj=isolated_obj)
@@ -1238,7 +1241,7 @@ class ToolIsolation(AppTool, Gerber):
self.poly_sel_disconnect_flag = True
elif selection == _("Reference Object"):
- ref_obj = self.app.collection.get_by_name(self.ui.reference_combo.get_value())
+ ref_obj = self.app.collection.get_by_name(self.t_ui.reference_combo.get_value())
ref_geo = cascaded_union(ref_obj.solid_geometry)
use_geo = cascaded_union(isolated_obj.solid_geometry).difference(ref_geo)
self.isolate(isolated_obj=isolated_obj, geometry=use_geo)
@@ -1260,14 +1263,14 @@ class ToolIsolation(AppTool, Gerber):
:return: None
"""
- combine = self.ui.combine_passes_cb.get_value()
+ combine = self.t_ui.combine_passes_cb.get_value()
tools_storage = self.iso_tools
sorted_tools = []
- table_items = self.ui.tools_table.selectedItems()
+ table_items = self.t_ui.tools_table.selectedItems()
sel_rows = {t.row() for t in table_items}
for row in sel_rows:
- tid = int(self.ui.tools_table.item(row, 3).text())
+ tid = int(self.t_ui.tools_table.item(row, 3).text())
sorted_tools.append(tid)
if not sorted_tools:
self.app.inform.emit('[ERROR_NOTCL] %s' % _("No selected tools in Tool Table."))
@@ -1277,14 +1280,14 @@ class ToolIsolation(AppTool, Gerber):
for tool_iso in self.iso_tools:
for key in self.iso_tools[tool_iso]:
if key == 'data':
- self.iso_tools[tool_iso][key]["tools_iso_rest"] = self.ui.rest_cb.get_value()
+ self.iso_tools[tool_iso][key]["tools_iso_rest"] = self.t_ui.rest_cb.get_value()
self.iso_tools[tool_iso][key]["tools_iso_combine_passes"] = combine
- self.iso_tools[tool_iso][key]["tools_iso_isoexcept"] = self.ui.except_cb.get_value()
- self.iso_tools[tool_iso][key]["tools_iso_selection"] = self.ui.select_combo.get_value()
- self.iso_tools[tool_iso][key]["tools_iso_area_shape"] = self.ui.area_shape_radio.get_value()
+ self.iso_tools[tool_iso][key]["tools_iso_isoexcept"] = self.t_ui.except_cb.get_value()
+ self.iso_tools[tool_iso][key]["tools_iso_selection"] = self.t_ui.select_combo.get_value()
+ self.iso_tools[tool_iso][key]["tools_iso_area_shape"] = self.t_ui.area_shape_radio.get_value()
if combine:
- if self.ui.rest_cb.get_value():
+ if self.t_ui.rest_cb.get_value():
self.combined_rest(iso_obj=isolated_obj, iso2geo=geometry, tools_storage=tools_storage,
lim_area=limited_area, negative_dia=negative_dia, plot=plot)
else:
@@ -1314,7 +1317,7 @@ class ToolIsolation(AppTool, Gerber):
milling_type = tool_data['tools_iso_milling_type']
- iso_except = self.ui.except_cb.get_value()
+ iso_except = self.t_ui.except_cb.get_value()
for i in range(passes):
tool_dia = tools_storage[tool]['tooldia']
@@ -1374,7 +1377,7 @@ class ToolIsolation(AppTool, Gerber):
# ############################################################
# ########## AREA SUBTRACTION ################################
# ############################################################
- if self.ui.except_cb.get_value():
+ if self.t_ui.except_cb.get_value():
self.app.proc_container.update_view_text(' %s' % _("Subtracting Geo"))
geo_obj.solid_geometry = self.area_subtraction(geo_obj.solid_geometry)
@@ -1457,15 +1460,15 @@ class ToolIsolation(AppTool, Gerber):
# sorted_tools.append(float('%.*f' % (self.decimals, float(v['tooldia']))))
sorted_tools = []
- table_items = self.ui.tools_table.selectedItems()
+ table_items = self.t_ui.tools_table.selectedItems()
sel_rows = {t.row() for t in table_items}
for row in sel_rows:
try:
- tdia = float(self.ui.tools_table.item(row, 1).text())
+ tdia = float(self.t_ui.tools_table.item(row, 1).text())
except ValueError:
# try to convert comma to decimal point. if it's still not working error message and return
try:
- tdia = float(self.ui.tools_table.item(row, 1).text().replace(',', '.'))
+ tdia = float(self.t_ui.tools_table.item(row, 1).text().replace(',', '.'))
except ValueError:
self.app.inform.emit('[ERROR_NOTCL] %s' % _("Wrong value format entered, use a number."))
continue
@@ -1475,7 +1478,7 @@ class ToolIsolation(AppTool, Gerber):
self.app.inform.emit('[ERROR_NOTCL] %s' % _("No selected tools in Tool Table."))
return 'fail'
- order = self.ui.order_radio.get_value()
+ order = self.t_ui.order_radio.get_value()
if order == 'fwd':
sorted_tools.sort(reverse=False)
elif order == 'rev':
@@ -1507,8 +1510,8 @@ class ToolIsolation(AppTool, Gerber):
'full': 2
}[tool_data['tools_iso_isotype']]
- forced_rest = self.ui.forced_rest_iso_cb.get_value()
- iso_except = self.ui.except_cb.get_value()
+ forced_rest = self.t_ui.forced_rest_iso_cb.get_value()
+ iso_except = self.t_ui.except_cb.get_value()
outname = "%s_%.*f" % (iso_obj.options["name"], self.decimals, float(tool_dia))
internal_name = outname + "_iso"
@@ -1653,10 +1656,10 @@ class ToolIsolation(AppTool, Gerber):
prog_plot = self.app.defaults["tools_iso_plotting"]
sorted_tools = []
- table_items = self.ui.tools_table.selectedItems()
+ table_items = self.t_ui.tools_table.selectedItems()
sel_rows = {t.row() for t in table_items}
for row in sel_rows:
- tid = int(self.ui.tools_table.item(row, 3).text())
+ tid = int(self.t_ui.tools_table.item(row, 3).text())
sorted_tools.append(tid)
if not sorted_tools:
self.app.inform.emit('[ERROR_NOTCL] %s' % _("No selected tools in Tool Table."))
@@ -1687,7 +1690,7 @@ class ToolIsolation(AppTool, Gerber):
milling_type = tool_data['tools_iso_milling_type']
- iso_except = self.ui.except_cb.get_value()
+ iso_except = self.t_ui.except_cb.get_value()
outname = "%s_%.*f" % (iso_obj.options["name"], self.decimals, float(tool_dia))
@@ -1815,7 +1818,7 @@ class ToolIsolation(AppTool, Gerber):
if subtraction_geo:
sub_union = cascaded_union(subtraction_geo)
else:
- name = self.ui.exc_obj_combo.currentText()
+ name = self.t_ui.exc_obj_combo.currentText()
subtractor_obj = self.app.collection.get_by_name(name)
sub_union = cascaded_union(subtractor_obj.solid_geometry)
@@ -1938,7 +1941,7 @@ class ToolIsolation(AppTool, Gerber):
curr_pos = (curr_pos[0], curr_pos[1])
if event.button == 1:
- if self.ui.poly_int_cb.get_value() is True:
+ if self.t_ui.poly_int_cb.get_value() is True:
clicked_poly = self.find_polygon_ignore_interiors(point=(curr_pos[0], curr_pos[1]),
geoset=self.grb_obj.solid_geometry)
@@ -2000,7 +2003,7 @@ class ToolIsolation(AppTool, Gerber):
if self.poly_dict:
poly_list = deepcopy(list(self.poly_dict.values()))
- if self.ui.poly_int_cb.get_value() is True:
+ if self.t_ui.poly_int_cb.get_value() is True:
# isolate the interior polygons with a negative tool
self.isolate(isolated_obj=self.grb_obj, geometry=poly_list, negative_dia=True)
else:
@@ -2138,7 +2141,7 @@ class ToolIsolation(AppTool, Gerber):
return ""
elif event.button == right_button and self.mouse_is_dragging is False:
- shape_type = self.ui.area_shape_radio.get_value()
+ shape_type = self.t_ui.area_shape_radio.get_value()
if shape_type == "square":
self.first_click = False
@@ -2198,7 +2201,7 @@ class ToolIsolation(AppTool, Gerber):
# called on mouse move
def on_mouse_move(self, event):
- shape_type = self.ui.area_shape_radio.get_value()
+ shape_type = self.t_ui.area_shape_radio.get_value()
if self.app.is_legacy is False:
event_pos = event.pos
@@ -2352,9 +2355,9 @@ class ToolIsolation(AppTool, Gerber):
# select last tool added
toolid = res
- for row in range(self.ui.tools_table.rowCount()):
- if int(self.ui.tools_table.item(row, 3).text()) == toolid:
- self.ui.tools_table.selectRow(row)
+ for row in range(self.t_ui.tools_table.rowCount()):
+ if int(self.t_ui.tools_table.item(row, 3).text()) == toolid:
+ self.t_ui.tools_table.selectRow(row)
self.on_row_selection_change()
def on_tool_from_db_inserted(self, tool):
@@ -2415,12 +2418,12 @@ class ToolIsolation(AppTool, Gerber):
self.build_ui()
# select the tool just added
- for row in range(self.ui.tools_table.rowCount()):
- if int(self.ui.tools_table.item(row, 3).text()) == self.tooluid:
- self.ui.tools_table.selectRow(row)
+ for row in range(self.t_ui.tools_table.rowCount()):
+ if int(self.t_ui.tools_table.item(row, 3).text()) == self.tooluid:
+ self.t_ui.tools_table.selectRow(row)
break
- # if self.ui.tools_table.rowCount() != 0:
+ # if self.t_ui.tools_table.rowCount() != 0:
# self.param_frame.setDisabled(False)
def on_tool_add_from_db_clicked(self):
diff --git a/defaults.py b/defaults.py
index c896b818..96294d41 100644
--- a/defaults.py
+++ b/defaults.py
@@ -251,7 +251,7 @@ class FlatCAMDefaults:
# Excellon Options
"excellon_operation": "drill",
- "excellon_tool_order": 'rev',
+ "excellon_tool_order": 'no',
"excellon_milling_type": "drills",
"excellon_milling_dia": 0.8,