refactor
This commit is contained in:
15
dictlist.py
15
dictlist.py
@ -1,11 +1,12 @@
|
||||
from collections import defaultdict
|
||||
from PyQt5.QtWidgets import QListWidget, QListWidgetItem
|
||||
|
||||
|
||||
class DictList(QListWidget):
|
||||
|
||||
def __init__(self, data, *args, **kwargs):
|
||||
def __init__(self, data, *args, factory=list, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
self.data = {}
|
||||
self.data = defaultdict(factory)
|
||||
self.update(data)
|
||||
|
||||
def update(self, data):
|
||||
@ -13,17 +14,17 @@ class DictList(QListWidget):
|
||||
self.add(k, v)
|
||||
|
||||
def add(self, key, value):
|
||||
if key not in self.data:
|
||||
itm = QListWidgetItem(key)
|
||||
self.prependItem(itm)
|
||||
self.prepend_item_if_missing(key)
|
||||
self.data[key] = value
|
||||
|
||||
def append(self, key, value):
|
||||
self.prepend_item_if_missing(key)
|
||||
self.data[key].append(value)
|
||||
|
||||
def prepend_item_if_missing(self, key):
|
||||
if key not in self.data:
|
||||
itm = QListWidgetItem(key)
|
||||
self.prependItem(itm)
|
||||
self.data[key] = [] #TODO: this should be a factory
|
||||
self.data[key].append(value)
|
||||
|
||||
def prependItem(self, itm):
|
||||
self.insertItem(0, itm)
|
||||
|
Reference in New Issue
Block a user