diff -r ffa851df0825 -r 2fb8b9db1c86 symbian-qemu-0.9.1-12/python-2.6.1/Mac/Modules/res/resedit.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/symbian-qemu-0.9.1-12/python-2.6.1/Mac/Modules/res/resedit.py Fri Jul 31 15:01:17 2009 +0100 @@ -0,0 +1,102 @@ +##resource_body = """ +##char *buf; +##int len; +##Handle h; +## +##if (!PyArg_ParseTuple(_args, "s#", &buf, &len)) +## return NULL; +##h = NewHandle(len); +##if ( h == NULL ) { +## PyErr_NoMemory(); +## return NULL; +##} +##HLock(h); +##memcpy(*h, buf, len); +##HUnlock(h); +##_res = ResObj_New(h); +##return _res; +##""" +## +##f = ManualGenerator("Resource", resource_body) +##f.docstring = lambda: """Convert a string to a resource object. +## +##The created resource object is actually just a handle, +##apply AddResource() to write it to a resource file. +##See also the Handle() docstring. +##""" +##functions.append(f) + +handle_body = """ +char *buf; +int len; +Handle h; +ResourceObject *rv; + +if (!PyArg_ParseTuple(_args, "s#", &buf, &len)) + return NULL; +h = NewHandle(len); +if ( h == NULL ) { + PyErr_NoMemory(); + return NULL; +} +HLock(h); +memcpy(*h, buf, len); +HUnlock(h); +rv = (ResourceObject *)ResObj_New(h); +rv->ob_freeit = PyMac_AutoDisposeHandle; +_res = (PyObject *)rv; +return _res; +""" + +f = ManualGenerator("Handle", handle_body) +f.docstring = lambda: """Convert a string to a Handle object. + +Resource() and Handle() are very similar, but objects created with Handle() are +by default automatically DisposeHandle()d upon object cleanup. Use AutoDispose() +to change this. +""" +functions.append(f) + +# Convert resources to other things. + +as_xxx_body = """ +_res = %sObj_New((%sHandle)_self->ob_itself); +return _res; +""" + +def genresconverter(longname, shortname): + + f = ManualGenerator("as_%s"%longname, as_xxx_body%(shortname, longname)) + docstring = "Return this resource/handle as a %s"%longname + f.docstring = lambda docstring=docstring: docstring + return f + +resmethods.append(genresconverter("Control", "Ctl")) +resmethods.append(genresconverter("Menu", "Menu")) + +# The definition of this one is MacLoadResource, so we do it by hand... + +f = ResMethod(void, 'LoadResource', + (Handle, 'theResource', InMode), +) +resmethods.append(f) + +# +# A method to set the auto-dispose flag +# +AutoDispose_body = """ +int onoff, old = 0; +if (!PyArg_ParseTuple(_args, "i", &onoff)) + return NULL; +if ( _self->ob_freeit ) + old = 1; +if ( onoff ) + _self->ob_freeit = PyMac_AutoDisposeHandle; +else + _self->ob_freeit = NULL; +_res = Py_BuildValue("i", old); +return _res; +""" +f = ManualGenerator("AutoDispose", AutoDispose_body) +f.docstring = lambda: "(int)->int. Automatically DisposeHandle the object on Python object cleanup" +resmethods.append(f)