moved value into DictListItem; DictListWidget holds dict of items
This commit is contained in:
@ -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)
|
||||||
|
|
||||||
|
|
||||||
|
@ -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]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -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)
|
||||||
|
Reference in New Issue
Block a user