Browse Source

chore(tree)!: remove selected status from the treeWidgetItem (#584)

The selection state is now managed entirely by TTkTreeWidget instead of 
individual items. This improves performance and simplifies the API.

BREAKING CHANGE: The following APIs have been removed from TTkTreeWidgetItem:
- `isSelected()` method - use `TTkTreeWidget.selectedItems()` to check selection
- `setSelected(bool)` method - selection is now managed by TTkTreeWidget  
- `selected` parameter in constructor - no longer supported

Migration guide:
- Replace `item.isSelected()` with `item in treeWidget.selectedItems()`
- Remove calls to `item.setSelected(True/False)` - use tree widget selection methods
- Remove `selected=True` from TTkTreeWidgetItem() constructor calls
pull/583/head
Pier CeccoPierangioliEugenio 2 months ago committed by GitHub
parent
commit
b434b330f9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 9
      libs/pyTermTk/TermTk/TTkWidgets/TTkModelView/treewidget.py
  2. 16
      libs/pyTermTk/TermTk/TTkWidgets/TTkModelView/treewidgetitem.py

9
libs/pyTermTk/TermTk/TTkWidgets/TTkModelView/treewidget.py

@ -566,11 +566,8 @@ class TTkTreeWidget(TTkAbstractScrollView):
self.itemExpanded.emit(item)
else:
self.itemCollapsed.emit(item)
for _s in self._selected:
_s.setSelected(False)
self._selectedId = y
self._selected = [item]
item.setSelected(True)
col = -1
for i, c in enumerate(self._columnsPos):
if x < c:
@ -623,17 +620,13 @@ class TTkTreeWidget(TTkAbstractScrollView):
if self._selectionMode in (TTkK.SelectionMode.SingleSelection,TTkK.SelectionMode.MultiSelection):
_multiSelect = self._selectionMode == TTkK.SelectionMode.MultiSelection
if not ( bool(evt.mod & TTkK.ControlModifier) and _multiSelect ):
for _s in self._selected:
_s.setSelected(False)
self._selected.clear()
self._selectedId = y
# Unselect Items if already selected in multiselect mode
if item in self._selected and _multiSelect:
self._selected.remove(item)
item.setSelected(False)
else:
self._selected.append(item)
item.setSelected(True)
col = -1
for i, c in enumerate(self._columnsPos):
if x < c:
@ -768,6 +761,6 @@ class TTkTreeWidget(TTkAbstractScrollView):
_text=_icon+_data[_yi]
else: # Other columns
_text=_data[_yi]
if _i.isSelected():
if _i in self._selected:
_text = (_text + ' '*_width).completeColor(selectedColor)
canvas.drawTTkString(text=_text,pos=(_lx-x,_y+1),width=_width)

16
libs/pyTermTk/TermTk/TTkWidgets/TTkModelView/treewidgetitem.py

@ -251,7 +251,7 @@ class TTkTreeWidgetItem(TTkAbstractItemModel):
__slots__ = (
'_parent', '_data', '_widgets', '_height', '_alignment',
'_children', '_expanded', '_selected', '_hidden',
'_children', '_expanded', '_hidden',
'_childIndicatorPolicy', '_icon', '_defaultIcon',
'_sortColumn', '_sortOrder', '_hasWidgets',
'_buffer', '_level',
@ -271,7 +271,6 @@ class TTkTreeWidgetItem(TTkAbstractItemModel):
def __init__(self, *args,
parent:Optional[TTkTreeWidgetItem]=None,
expanded:bool=False,
selected:bool=False,
hidden:bool=False,
icon:TTkStringType='',
childIndicatorPolicy:TTkK.ChildIndicatorPolicy =TTkK.ChildIndicatorPolicy.DontShowIndicatorWhenChildless,
@ -291,7 +290,6 @@ class TTkTreeWidgetItem(TTkAbstractItemModel):
self._childIndicatorPolicy = childIndicatorPolicy
self._defaultIcon = True
self._expanded = expanded
self._selected = selected
self._hidden = hidden
self._sortColumn = -1
self._sortOrder = TTkK.AscendingOrder
@ -535,9 +533,6 @@ class TTkTreeWidgetItem(TTkAbstractItemModel):
def emitDataChanged(self) -> None:
self.dataChanged.emit()
# def setDisabled(disabled):
# pass
def setExpanded(self, expand:bool) -> None:
if self._expanded != expand and self._children:
if expand:
@ -548,18 +543,9 @@ class TTkTreeWidgetItem(TTkAbstractItemModel):
self._setDefaultIcon()
self.dataChanged.emit()
def setSelected(self, select:bool) -> None:
self._selected = select
# def isDisabled():
# pass
def isExpanded(self) -> bool:
return self._expanded
def isSelected(self) -> bool:
return self._selected
def size(self) -> int:
if self._hidden:
return 0

Loading…
Cancel
Save