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

Function bindGetterSetter

QWebEngineView/Data/qwebchannel.js:360–407  ·  view source on GitHub ↗
(propertyInfo)

Source from the content-addressed store, hash-verified

358 }
359
360 function bindGetterSetter(propertyInfo)
361 {
362 var propertyIndex = propertyInfo[0];
363 var propertyName = propertyInfo[1];
364 var notifySignalData = propertyInfo[2];
365 // initialize property cache with current value
366 // NOTE: if this is an object, it is not directly unwrapped as it might
367 // reference other QObject that we do not know yet
368 object.__propertyCache__[propertyIndex] = propertyInfo[3];
369
370 if (notifySignalData) {
371 if (notifySignalData[0] === 1) {
372 // signal name is optimized away, reconstruct the actual name
373 notifySignalData[0] = propertyName + "Changed";
374 }
375 addSignal(notifySignalData, true);
376 }
377
378 Object.defineProperty(object, propertyName, {
379 configurable: true,
380 get: function () {
381 var propertyValue = object.__propertyCache__[propertyIndex];
382 if (propertyValue === undefined) {
383 // This shouldn't happen
384 console.warn("Undefined value in property cache for property \"" + propertyName + "\" in object " + object.__id__);
385 }
386
387 return propertyValue;
388 },
389 set: function(value) {
390 if (value === undefined) {
391 console.warn("Property setter for " + propertyName + " called with undefined value!");
392 return;
393 }
394 object.__propertyCache__[propertyIndex] = value;
395 var valueToSend = value;
396 if (valueToSend instanceof QObject && webChannel.objects[valueToSend.__id__] !== undefined)
397 valueToSend = { "id": valueToSend.__id__ };
398 webChannel.exec({
399 "type": QWebChannelMessageTypes.setProperty,
400 "object": object.__id__,
401 "property": propertyIndex,
402 "value": valueToSend
403 });
404 }
405 });
406
407 }
408
409 // ----------------------------------------------------------------------
410

Callers

nothing calls this directly

Calls 1

addSignalFunction · 0.70

Tested by

no test coverage detected