MCPcopy Index your code
hub / github.com/PyQt5/PyQt / QModelMapper

Class QModelMapper

QTreeView/Lib/qmodelmapper.py:39–239  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

37
38
39class QModelMapper(QObject):
40 Debug = False
41 valueChanged = Signal()
42 Signal = (
43 "dateTimeChanged",
44 "currentTextChanged",
45 "valueChanged",
46 "toggled",
47 "textChanged",
48 )
49 Props = (
50 "dateTime",
51 "html",
52 "plainText",
53 "currentText",
54 "checked",
55 "value",
56 "text",
57 )
58
59 def __init__(self, *args, **kwargs):
60 self._delay = kwargs.pop("delay", 50)
61 data = kwargs.pop("data", {})
62 super().__init__(*args, **kwargs)
63 self._old = deepcopy(data)
64 self._widgetkey = {}
65 self._keywidget = {}
66 self._timer = QTimer(self)
67 self._timer.setSingleShot(True)
68 self._timer.timeout.connect(self.valueChanged.emit)
69 self._model = QJsonModel(self.parent(), data=data)
70 self._model.dataChanged.connect(self.onItemDataChanged)
71
72 def bind(self, widget: QWidget, key: str, default: Any = None, prop: str = ""):
73 if widget not in self._widgetkey:
74 self._widgetkey[widget] = {
75 "key": key,
76 "prop": self.getProperty(widget, prop),
77 }
78 self._setValue(widget, key, default)
79
80 # record all widgets for key
81 if key not in self._keywidget:
82 self._keywidget[key] = set()
83 self._keywidget[key].add(widget)
84
85 for signal in self.Signal:
86 signal = getattr(widget, signal, None)
87 if signal:
88 signal.connect(self._setData)
89 break
90
91 def isModify(self) -> bool:
92 return self._model.toDict() != self._old
93
94 def getModel(self) -> QJsonModel:
95 return self._model
96

Callers 1

__init__Method · 0.90

Calls

no outgoing calls

Tested by 1

__init__Method · 0.72