From afcdefc9499515b9b86ea44c78491fc828b91acd Mon Sep 17 00:00:00 2001 From: Marco Marche Date: Wed, 14 Feb 2024 10:03:15 +0100 Subject: [PATCH 1/3] fix: bad ItemFlag to int cast in table drop handler --- appGUI/GUIElements.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appGUI/GUIElements.py b/appGUI/GUIElements.py index 5db4bf51..0a55c24e 100644 --- a/appGUI/GUIElements.py +++ b/appGUI/GUIElements.py @@ -4599,7 +4599,7 @@ class FCTable(QtWidgets.QTableWidget): elif rect.bottom() - pos.y() < margin: return True # noinspection PyTypeChecker - drop_enabled = int(self.model().flags(index)) & Qt.ItemFlag.ItemIsDropEnabled + drop_enabled = self.model().flags(index) & Qt.ItemFlag.ItemIsDropEnabled return rect.contains(pos, True) and not drop_enabled and pos.y() >= rect.center().y() From 8ee38c8e181bed658d5e5a918f0de6f35df6782d Mon Sep 17 00:00:00 2001 From: Marco Marche Date: Wed, 14 Feb 2024 10:20:59 +0100 Subject: [PATCH 2/3] fix(ToolMilling): enable tools table items dragging --- appPlugins/ToolMilling.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/appPlugins/ToolMilling.py b/appPlugins/ToolMilling.py index c3bbb843..d2adc41b 100644 --- a/appPlugins/ToolMilling.py +++ b/appPlugins/ToolMilling.py @@ -1014,12 +1014,14 @@ class ToolMilling(AppTool, Excellon): # -------------------- ID ------------------------------------------ # tool_id = QtWidgets.QTableWidgetItem('%d' % int(row_idx + 1)) - tool_id.setFlags(QtCore.Qt.ItemFlag.ItemIsSelectable | QtCore.Qt.ItemFlag.ItemIsEnabled) + tool_id.setFlags(QtCore.Qt.ItemFlag.ItemIsSelectable | QtCore.Qt.ItemFlag.ItemIsEnabled | + QtCore.Qt.ItemFlag.ItemIsDragEnabled) self.ui.tools_table_mill_geo.setItem(row_idx, 0, tool_id) # Tool name/id # -------------------- DIAMETER ------------------------------------- # dia_item = QtWidgets.QTableWidgetItem('%.*f' % (self.decimals, float(tooluid_value['tooldia']))) - dia_item.setFlags(QtCore.Qt.ItemFlag.ItemIsEnabled) + dia_item.setFlags(QtCore.Qt.ItemFlag.ItemIsSelectable | QtCore.Qt.ItemFlag.ItemIsEnabled | + QtCore.Qt.ItemFlag.ItemIsDragEnabled) self.ui.tools_table_mill_geo.setItem(row_idx, 1, dia_item) # Diameter # -------------------- TOOL TYPE ------------------------------------- # @@ -1055,7 +1057,8 @@ class ToolMilling(AppTool, Excellon): for row in range(row_idx): self.ui.tools_table_mill_geo.item(row, 1).setFlags(QtCore.Qt.ItemFlag.ItemIsSelectable | QtCore.Qt.ItemFlag.ItemIsEditable | - QtCore.Qt.ItemFlag.ItemIsEnabled) + QtCore.Qt.ItemFlag.ItemIsEnabled | + QtCore.Qt.ItemFlag.ItemIsDragEnabled) # sort the tool diameter column # self.ui.tools_table_mill_geo.sortItems(1) @@ -1173,17 +1176,19 @@ class ToolMilling(AppTool, Excellon): # Tool name/id exc_id_item = QtWidgets.QTableWidgetItem('%d' % int(tool_no)) - exc_id_item.setFlags(QtCore.Qt.ItemFlag.ItemIsSelectable | QtCore.Qt.ItemFlag.ItemIsEnabled) + exc_id_item.setFlags(QtCore.Qt.ItemFlag.ItemIsSelectable | QtCore.Qt.ItemFlag.ItemIsEnabled | + QtCore.Qt.ItemFlag.ItemIsDragEnabled) self.ui.tools_table_mill_exc.setItem(self.tool_row, 0, exc_id_item) # Tool Diameter dia_item = QtWidgets.QTableWidgetItem('%.*f' % (self.decimals, self.target_obj.tools[tool_no]['tooldia'])) - dia_item.setFlags(QtCore.Qt.ItemFlag.ItemIsEnabled) + dia_item.setFlags(QtCore.Qt.ItemFlag.ItemIsSelectable | QtCore.Qt.ItemFlag.ItemIsEnabled | + QtCore.Qt.ItemFlag.ItemIsDragEnabled) self.ui.tools_table_mill_exc.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.ItemFlag.ItemIsEnabled) + drill_count_item.setFlags(QtCore.Qt.ItemFlag.ItemIsEnabled | QtCore.Qt.ItemFlag.ItemIsDragEnabled) self.ui.tools_table_mill_exc.setItem(self.tool_row, 2, drill_count_item) # Tool unique ID @@ -1195,7 +1200,7 @@ class ToolMilling(AppTool, Excellon): # 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.ItemFlag.ItemIsEnabled) + slot_count_item.setFlags(QtCore.Qt.ItemFlag.ItemIsEnabled | QtCore.Qt.ItemFlag.ItemIsDragEnabled) self.ui.tools_table_mill_exc.setItem(self.tool_row, 4, slot_count_item) self.tool_row += 1 From 7e729822590241ba8eb9d4d8d3b10a5fe6739635 Mon Sep 17 00:00:00 2001 From: Marco Marche Date: Wed, 14 Feb 2024 10:27:36 +0100 Subject: [PATCH 3/3] fix(ToolMilling): don't iterate over totals rows on excellon table rebuild --- appPlugins/ToolMilling.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/appPlugins/ToolMilling.py b/appPlugins/ToolMilling.py index d2adc41b..e6de180e 100644 --- a/appPlugins/ToolMilling.py +++ b/appPlugins/ToolMilling.py @@ -845,7 +845,8 @@ class ToolMilling(AppTool, Excellon): def on_exc_rebuild_ui(self): # read the table tools uid current_uid_list = [] - for row in range(self.ui.tools_table_mill_exc.rowCount()): + # we have (n+2) rows because there are 'n' tools, each a row, plus the last 2 rows for totals. + for row in range(self.ui.tools_table_mill_exc.rowCount() - 2): uid = int(self.ui.tools_table_mill_exc.item(row, 3).text()) current_uid_list.append(uid)