diff --git a/grum/dictlist/dictlistitem.py b/grum/dictlist/dictlistitem.py index 9e860d1..476c809 100644 --- a/grum/dictlist/dictlistitem.py +++ b/grum/dictlist/dictlistitem.py @@ -7,8 +7,10 @@ from ..theme import DOT_PEN, DOT_BRUSH, DOT_SIZE class DictListItem(QListWidgetItem): - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) + def __init__(self, key, value, *args, **kwargs): + super().__init__(key, *args, **kwargs) + self.key = key + self.value = value self.set_alarm(False) diff --git a/grum/dictlist/dictlistwidget.py b/grum/dictlist/dictlistwidget.py index 39f2a8d..7f680cf 100644 --- a/grum/dictlist/dictlistwidget.py +++ b/grum/dictlist/dictlistwidget.py @@ -1,4 +1,3 @@ -from collections import defaultdict from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QListWidget @@ -7,33 +6,34 @@ from .dictlistitem import DictListItem class DictListWidget(QListWidget): - def __init__(self, data, *args, factory=list, **kwargs): + def __init__(self, *args, factory=list, **kwargs): super().__init__(*args, **kwargs) - self.data = defaultdict(factory) - self.update(data) + self.factory = factory + self.items = {} def update(self, data): for k, v in data.items(): self.add(k, v) def add(self, key, value): - self.prepend_item_if_missing(key) - self.data[key] = value + self.prepend_item_if_missing(key, value) + self.items[key].value = value - def append(self, key, value): - self.prepend_item_if_missing(key) - self.data[key].append(value) + def append(self, key, entry): + self.prepend_item_if_missing(key, self.factory()) + self.items[key].value.append(entry) - def prepend_item_if_missing(self, key): - if key not in self.data: - itm = DictListItem(key) + def prepend_item_if_missing(self, key, value): + if key not in self.items: + itm = DictListItem(key, value) + self.items[key] = itm self.prependItem(itm) def prependItem(self, itm): self.insertItem(0, itm) def get(self, key): - return self.findItems(key, Qt.MatchExactly)[0] + return self.items[key] diff --git a/grum/mainwin.py b/grum/mainwin.py index d026925..e9e2add 100644 --- a/grum/mainwin.py +++ b/grum/mainwin.py @@ -18,7 +18,8 @@ class MainWindow(QMainWindow): self.setWindowTitle(title) self.setWindowIcon(assets.icon()) - self.lst = lst = DictListWidget(exampledata, factory=PlotDescription) + self.lst = lst = DictListWidget(factory=PlotDescription) + lst.update(exampledata) lst.setAlternatingRowColors(True) lst.itemDoubleClicked.connect(self.on_select_list_item) @@ -49,21 +50,18 @@ class MainWindow(QMainWindow): def append_data(self, name, point): self.lst.append(name, point) + item = self.lst.get(name) sub = self.mdi.findSubWindow(name) if sub: - desc = self.lst.data[name] - sub.plot.setData(*desc.data) + sub.plot.setData(*item.value.data) else: - item = self.lst.get(name) item.set_alarm(True) def on_select_list_item(self, item): item.set_alarm(False) - - name = item.text() - desc = self.lst.data[name] - + name = item.key + desc = item.value sub = self.mdi.findSubWindow(name) if sub: self.mdi.setActiveSubWindow(sub)