moved value into DictListItem; DictListWidget holds dict of items

This commit is contained in:
2022-12-21 14:27:04 +01:00
parent 0207633188
commit 00875bd209
3 changed files with 23 additions and 23 deletions

View File

@ -7,8 +7,10 @@ from ..theme import DOT_PEN, DOT_BRUSH, DOT_SIZE
class DictListItem(QListWidgetItem): class DictListItem(QListWidgetItem):
def __init__(self, *args, **kwargs): def __init__(self, key, value, *args, **kwargs):
super().__init__(*args, **kwargs) super().__init__(key, *args, **kwargs)
self.key = key
self.value = value
self.set_alarm(False) self.set_alarm(False)

View File

@ -1,4 +1,3 @@
from collections import defaultdict
from PyQt5.QtCore import Qt from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QListWidget from PyQt5.QtWidgets import QListWidget
@ -7,33 +6,34 @@ from .dictlistitem import DictListItem
class DictListWidget(QListWidget): class DictListWidget(QListWidget):
def __init__(self, data, *args, factory=list, **kwargs): def __init__(self, *args, factory=list, **kwargs):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
self.data = defaultdict(factory) self.factory = factory
self.update(data) self.items = {}
def update(self, data): def update(self, data):
for k, v in data.items(): for k, v in data.items():
self.add(k, v) self.add(k, v)
def add(self, key, value): def add(self, key, value):
self.prepend_item_if_missing(key) self.prepend_item_if_missing(key, value)
self.data[key] = value self.items[key].value = value
def append(self, key, value): def append(self, key, entry):
self.prepend_item_if_missing(key) self.prepend_item_if_missing(key, self.factory())
self.data[key].append(value) self.items[key].value.append(entry)
def prepend_item_if_missing(self, key): def prepend_item_if_missing(self, key, value):
if key not in self.data: if key not in self.items:
itm = DictListItem(key) itm = DictListItem(key, value)
self.items[key] = itm
self.prependItem(itm) self.prependItem(itm)
def prependItem(self, itm): def prependItem(self, itm):
self.insertItem(0, itm) self.insertItem(0, itm)
def get(self, key): def get(self, key):
return self.findItems(key, Qt.MatchExactly)[0] return self.items[key]

View File

@ -18,7 +18,8 @@ class MainWindow(QMainWindow):
self.setWindowTitle(title) self.setWindowTitle(title)
self.setWindowIcon(assets.icon()) self.setWindowIcon(assets.icon())
self.lst = lst = DictListWidget(exampledata, factory=PlotDescription) self.lst = lst = DictListWidget(factory=PlotDescription)
lst.update(exampledata)
lst.setAlternatingRowColors(True) lst.setAlternatingRowColors(True)
lst.itemDoubleClicked.connect(self.on_select_list_item) lst.itemDoubleClicked.connect(self.on_select_list_item)
@ -49,21 +50,18 @@ class MainWindow(QMainWindow):
def append_data(self, name, point): def append_data(self, name, point):
self.lst.append(name, point) self.lst.append(name, point)
item = self.lst.get(name)
sub = self.mdi.findSubWindow(name) sub = self.mdi.findSubWindow(name)
if sub: if sub:
desc = self.lst.data[name] sub.plot.setData(*item.value.data)
sub.plot.setData(*desc.data)
else: else:
item = self.lst.get(name)
item.set_alarm(True) item.set_alarm(True)
def on_select_list_item(self, item): def on_select_list_item(self, item):
item.set_alarm(False) item.set_alarm(False)
name = item.key
name = item.text() desc = item.value
desc = self.lst.data[name]
sub = self.mdi.findSubWindow(name) sub = self.mdi.findSubWindow(name)
if sub: if sub:
self.mdi.setActiveSubWindow(sub) self.mdi.setActiveSubWindow(sub)