def __setattr__(self, name, value): # Hm, this can be a propput, a propputref, or 'both' property. # (Or nothing at all.) # # Whether propput or propputref is called will depend on what # is available, and on the type of 'value' as determined by # comtypes._is_object(value). # # I think that the following table MAY be correct; although I # have no idea whether the cases marked (?) are really valid. # # invkind available | _is_object(value) | invkind we should use # --------------------------------------------------------------- # put | True | put (?) # put | False | put # putref | True | putref # putref | False | putref (?) # put, putref | True | putref # put, putref | False | put put = self.__bind(name, DISPATCH_PROPERTYPUT) putref = self.__bind(name, DISPATCH_PROPERTYPUTREF) if not put and not putref: raise AttributeError(name) if comtypes._is_object(value): descr = putref or put else: descr = put or putref if descr.cParams == 1: self._comobj._invoke(descr.memid, descr.invkind, 0, value) return raise AttributeError(name)
def __setitem__(self, *args): if _is_object(args[-1]): self._obj._comobj.Invoke(self._id, *args, **dict(_invkind=comtypes.automation.DISPATCH_PROPERTYPUTREF)) else: self._obj._comobj.Invoke(self._id, *args, **dict(_invkind=comtypes.automation.DISPATCH_PROPERTYPUT))
def __setattr__(self, name, value): dispid = self._ids.get(name) if not dispid: dispid = self._comobj.GetIDsOfNames(name)[0] self._ids[name] = dispid # Detect whether to use DISPATCH_PROPERTYPUT or # DISPATCH_PROPERTYPUTREF flags = 8 if _is_object(value) else 4 return self._comobj.Invoke(dispid, value, _invkind=flags)
def __setitem__(self, name, value): if comtypes._is_object(value): invkind = DISPATCH_PROPERTYPUTREF else: invkind = DISPATCH_PROPERTYPUT return self._comobj._invoke(DISPID_VALUE, invkind, 0, *[name, value])
def __setitem__(self, name, value): if comtypes._is_object(value): invkind = DISPATCH_PROPERTYPUTREF else: invkind = DISPATCH_PROPERTYPUT if isinstance(name, tuple): args = name + (value,) elif name == _all_slice: args = (value,) else: args = (name, value) return self._comobj._invoke(DISPID_VALUE, invkind, 0, *args)
def __setitem__(self, name, value): # See discussion in Dispatch.__setattr__ below. if not self.put and not self.putref: raise AttributeError(name) # XXX IndexError? if comtypes._is_object(value): descr = self.putref or self.put else: descr = self.put or self.putref if isinstance(name, tuple): self.disp._comobj._invoke(descr.memid, descr.invkind, 0, *(name + (value,))) else: self.disp._comobj._invoke(descr.memid, descr.invkind, 0, name, value)
def __setitem__(self, name, value): # See discussion in Dispatch.__setattr__ below. if self.put is None and self.putref is None: raise TypeError("object does not support item assignment") if comtypes._is_object(value): descr = self.putref or self.put else: descr = self.put or self.putref if isinstance(name, tuple): self.disp._comobj._invoke(descr.memid, descr.invkind, 0, *(name + (value,))) elif name == _all_slice: self.disp._comobj._invoke(descr.memid, descr.invkind, 0, value) else: self.disp._comobj._invoke(descr.memid, descr.invkind, 0, name, value)