diff --git a/grum/dictlist/__init__.py b/grum/dictlist/__init__.py index d4d3455..cd01df8 100644 --- a/grum/dictlist/__init__.py +++ b/grum/dictlist/__init__.py @@ -1,5 +1,6 @@ -from .dictlistitem import DictListItem -from .dictlistwidget import DictListWidget +#from .dictlistitem import DictListItem +#from .dictlistwidget import DictListWidget +from .dictlist import DictList as DictListWidget #TODO: clean this up diff --git a/grum/dictlist/dictlist.py b/grum/dictlist/dictlist.py new file mode 100644 index 0000000..335dfe8 --- /dev/null +++ b/grum/dictlist/dictlist.py @@ -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) + + +