From 77e01825c2d10c7e6692e73d507995c0cc2fabd6 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Sun, 1 Mar 2020 01:55:35 +0200 Subject: [PATCH] - wip on the new tools database --- FlatCAMCommon.py | 26 +++++++++++++++++++------- flatcamGUI/GUIElements.py | 16 +++++++++++++++- 2 files changed, 34 insertions(+), 8 deletions(-) diff --git a/FlatCAMCommon.py b/FlatCAMCommon.py index 4a68cdaa..f324fe4c 100644 --- a/FlatCAMCommon.py +++ b/FlatCAMCommon.py @@ -1422,9 +1422,16 @@ class ToolsDB2(QtWidgets.QWidget): tree_layout = QtWidgets.QVBoxLayout() grid_layout.addLayout(tree_layout, 0, 0) - self.tree_widget = FCTree(columns=2, header_hidden=False) + self.tree_widget = FCTree(columns=2, header_hidden=False, protected_column=[0]) self.tree_widget.setHeaderLabels(["ID", "Tool Name"]) self.tree_widget.setIndentation(0) + + # set alternating colors + # self.tree_widget.setAlternatingRowColors(True) + # p = QtGui.QPalette() + # p.setColor(QtGui.QPalette.AlternateBase, QtGui.QColor(226, 237, 253) ) + # self.tree_widget.setPalette(p) + self.tree_widget.setSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.MinimumExpanding) tree_layout.addWidget(self.tree_widget) @@ -1516,16 +1523,21 @@ class ToolsDB2(QtWidgets.QWidget): self.add_tool_from_db.clicked.connect(self.on_tool_requested_from_app) self.cancel_tool_from_db.clicked.connect(self.on_cancel_tool) - self.tree_widget.selectionModel().selectionChanged.connect(self.on_list_selection_change) + # self.tree_widget.selectionModel().selectionChanged.connect(self.on_list_selection_change) + self.tree_widget.currentItemChanged.connect(self.on_list_selection_change) self.tree_widget.itemChanged.connect(self.on_list_item_edited) + self.setup_db_ui() - def on_list_selection_change(self, current): - return - for idx in current.indexes(): - print(idx.data()) + def on_list_selection_change(self, current, previous): + # for idx in current.indexes(): + # print(idx.data()) + print(current.text(0)) + self.table_widget.selectRow(int(current.text(0))-1) - def on_list_item_edited(self, item, idx): + def on_list_item_edited(self, item, column): + if column == 0: + return row = int(item.text(0)) - 1 self.table_widget.item(row, 1).setText(item.text(1)) diff --git a/flatcamGUI/GUIElements.py b/flatcamGUI/GUIElements.py index 144280c9..da536279 100644 --- a/flatcamGUI/GUIElements.py +++ b/flatcamGUI/GUIElements.py @@ -154,7 +154,7 @@ class RadioSet(QtWidgets.QWidget): class FCTree(QtWidgets.QTreeWidget): - def __init__(self, parent=None, columns=2, header_hidden=True, extended_sel=False): + def __init__(self, parent=None, columns=2, header_hidden=True, extended_sel=False, protected_column=None): super(FCTree, self).__init__(parent) self.setColumnCount(columns) @@ -165,6 +165,20 @@ class FCTree(QtWidgets.QTreeWidget): if extended_sel: self.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection) + self.protected_column = protected_column + self.itemDoubleClicked.connect(self.on_double_click) + + def on_double_click(self, item, column): + # from here: https://stackoverflow.com/questions/2801959/making-only-one-column-of-a-qtreewidgetitem-editable + tmp_flags = item.flags() + if self.is_editable(column): + item.setFlags(tmp_flags | QtCore.Qt.ItemIsEditable) + elif tmp_flags & QtCore.Qt.ItemIsEditable: + item.setFlags(tmp_flags ^ QtCore.Qt.ItemIsEditable) + + def is_editable(self, tested_col): + return False if tested_col in self.protected_column else True + def addParent(self, parent, title, expanded=False, color=None, font=None): item = QtWidgets.QTreeWidgetItem(parent, [title]) item.setChildIndicatorPolicy(QtWidgets.QTreeWidgetItem.ShowIndicator)