Example #1
0
 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)
Example #2
0
 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)
Example #3
0
 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 __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))
Example #5
0
 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)
Example #6
0
 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])
Example #7
0
 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])
Example #8
0
 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)
Example #9
0
    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)
Example #10
0
 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)
Example #11
0
 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)
Example #12
0
 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)