123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- # MFC base classes.
-
- import win32ui
-
-
- class Object:
- def __init__(self, initObj=None):
- self.__dict__["_obj_"] = initObj
- # self._obj_ = initObj
- if initObj is not None:
- initObj.AttachObject(self)
-
- def __del__(self):
- self.close()
-
- def __getattr__(
- self, attr
- ): # Make this object look like the underlying win32ui one.
- # During cleanup __dict__ is not available, causing recursive death.
- if not attr.startswith("__"):
- try:
- o = self.__dict__["_obj_"]
- if o is not None:
- return getattr(o, attr)
- # Only raise this error for non "internal" names -
- # Python may be calling __len__, __nonzero__, etc, so
- # we dont want this exception
- if attr[0] != "_" and attr[-1] != "_":
- raise win32ui.error("The MFC object has died.")
- except KeyError:
- # No _obj_ at all - dont report MFC object died when there isnt one!
- pass
- raise AttributeError(attr)
-
- def OnAttachedObjectDeath(self):
- # print "object", self.__class__.__name__, "dieing"
- self._obj_ = None
-
- def close(self):
- if "_obj_" in self.__dict__:
- if self._obj_ is not None:
- self._obj_.AttachObject(None)
- self._obj_ = None
-
-
- class CmdTarget(Object):
- def __init__(self, initObj):
- Object.__init__(self, initObj)
-
- def HookNotifyRange(self, handler, firstID, lastID):
- oldhandlers = []
- for i in range(firstID, lastID + 1):
- oldhandlers.append(self.HookNotify(handler, i))
- return oldhandlers
-
- def HookCommandRange(self, handler, firstID, lastID):
- oldhandlers = []
- for i in range(firstID, lastID + 1):
- oldhandlers.append(self.HookCommand(handler, i))
- return oldhandlers
-
- def HookCommandUpdateRange(self, handler, firstID, lastID):
- oldhandlers = []
- for i in range(firstID, lastID + 1):
- oldhandlers.append(self.HookCommandUpdate(handler, i))
- return oldhandlers
|