summaryrefslogtreecommitdiffstats
path: root/Mac/Modules/res/ressupport.py
diff options
context:
space:
mode:
Diffstat (limited to 'Mac/Modules/res/ressupport.py')
-rw-r--r--Mac/Modules/res/ressupport.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/Mac/Modules/res/ressupport.py b/Mac/Modules/res/ressupport.py
index efc7571..e2bfa79 100644
--- a/Mac/Modules/res/ressupport.py
+++ b/Mac/Modules/res/ressupport.py
@@ -56,6 +56,34 @@ if (strcmp(name, "__members__") == 0)
return Py_BuildValue("[ss]", "data", "size");
"""
+setattrCode = """
+static int
+ResObj_setattr(self, name, value)
+ ResourceObject *self;
+ char *name;
+ PyObject *value;
+{
+ char *data;
+ long size;
+
+ if (strcmp(name, "data") != 0 || value == NULL )
+ return -1;
+ if ( !PyString_Check(value) )
+ return -1;
+ size = PyString_Size(value);
+ data = PyString_AsString(value);
+ /* XXXX Do I need the GetState/SetState calls? */
+ SetHandleSize(self->ob_itself, size);
+ if ( MemError())
+ return -1;
+ HLock(self->ob_itself);
+ memcpy((char *)*self->ob_itself, data, size);
+ HUnlock(self->ob_itself);
+ /* XXXX Should I do the Changed call immedeately? */
+ return 0;
+}
+"""
+
class ResDefiniton(GlobalObjectDefinition):
def outputCheckNewArg(self):
@@ -63,6 +91,9 @@ class ResDefiniton(GlobalObjectDefinition):
def outputGetattrHook(self):
Output(getattrHookCode)
+
+ def outputSetattr(self):
+ Output(setattrCode)
resobject = ResDefiniton('Resource', 'ResObj', 'Handle')