added DictList: DictListWidget with search box
This commit is contained in:
@ -1,5 +1,6 @@
|
|||||||
|
|
||||||
from .dictlistitem import DictListItem
|
#from .dictlistitem import DictListItem
|
||||||
from .dictlistwidget import DictListWidget
|
#from .dictlistwidget import DictListWidget
|
||||||
|
from .dictlist import DictList as DictListWidget #TODO: clean this up
|
||||||
|
|
||||||
|
|
||||||
|
39
grum/dictlist/dictlist.py
Normal file
39
grum/dictlist/dictlist.py
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
from PyQt5.QtWidgets import QWidget, QLineEdit, QVBoxLayout
|
||||||
|
|
||||||
|
from .dictlistwidget import DictListWidget
|
||||||
|
|
||||||
|
|
||||||
|
class DictList(QWidget):
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super().__init__()
|
||||||
|
|
||||||
|
search = QLineEdit()
|
||||||
|
search.setPlaceholderText("Search...")
|
||||||
|
self.lst = lst = DictListWidget(*args, **kwargs)
|
||||||
|
|
||||||
|
lay = QVBoxLayout()
|
||||||
|
lay.setContentsMargins(0, 0, 0, 0)
|
||||||
|
lay.setSpacing(2)
|
||||||
|
lay.addWidget(lst)
|
||||||
|
lay.addWidget(search)
|
||||||
|
self.setLayout(lay)
|
||||||
|
|
||||||
|
# QWidget has an update method already
|
||||||
|
self.update = lst.update
|
||||||
|
|
||||||
|
search.textChanged.connect(self.hide_not_matching)
|
||||||
|
|
||||||
|
|
||||||
|
# behave like encapsulated DictListWidget
|
||||||
|
def __getattr__(self, name):
|
||||||
|
return getattr(self.lst, name)
|
||||||
|
|
||||||
|
|
||||||
|
def hide_not_matching(self, pattern):
|
||||||
|
for name, itm in self.lst.items.items():
|
||||||
|
state = (pattern not in name)
|
||||||
|
itm.setHidden(state)
|
||||||
|
|
||||||
|
|
||||||
|
|
Reference in New Issue
Block a user