[common] introduce ListModel

*qt: for now, use QObjectListModel for both Dict and List models
This commit is contained in:
Yann Lanthony 2017-10-23 18:51:58 +02:00
parent d22c2f7f8e
commit d0c0a28d5d
3 changed files with 31 additions and 4 deletions

View file

@ -1,7 +1,7 @@
import meshroom
Model = None
DictModel = None
ListModel = None
Slot = None
Signal = None
Property = None
@ -10,10 +10,10 @@ Variant = None
if meshroom.backend == meshroom.Backend.PYSIDE:
# PySide types
from .qt import DictModel, Slot, Signal, Property, BaseObject, Variant
from .qt import DictModel, ListModel, Slot, Signal, Property, BaseObject, Variant
elif meshroom.backend == meshroom.Backend.STANDALONE:
# Core types
from .core import DictModel, Slot, Signal, Property, BaseObject, Variant
from .core import DictModel, ListModel, Slot, Signal, Property, BaseObject, Variant
class _BaseModel:

View file

@ -54,6 +54,32 @@ class CoreDictModel:
self.update(objects)
class CoreListModel:
def __init__(self, parent=None):
self._objects = []
def __iter__(self):
return self._objects.__iter__()
def at(self, idx):
return self._objects[idx]
def append(self, obj):
self._objects.append(obj)
def extend(self, iterable):
self._objects.extend(iterable)
def indexOf(self, obj):
self._objects.index(obj)
def removeAt(self, idx):
del self._objects[idx]
def remove(self, obj):
self._objects.remove(obj)
class CoreSignal:
""" Simple signal/callback implementation """
def __init__(self):
@ -91,6 +117,7 @@ class CoreObject(object):
DictModel = CoreDictModel
ListModel = CoreListModel
Slot = CoreSlot
Signal = CoreSignal
Property = CoreProperty

View file

@ -311,8 +311,8 @@ class QTypedObjectListModel(QObjectListModel):
super(QTypedObjectListModel, self)._referenceItem(item)
Model = QObjectListModel
DictModel = QObjectListModel
ListModel = QObjectListModel
Slot = QtCore.Slot
Signal = QtCore.Signal
Property = QtCore.Property