[Python-checkins] python/dist/src/Mac/Modules Nav.c,1.18,1.19
jackjansen@users.sourceforge.net
jackjansen@users.sourceforge.net
Fri, 22 Nov 2002 15:39:54 -0800
Update of /cvsroot/python/python/dist/src/Mac/Modules
In directory sc8-pr-cvs1:/tmp/cvs-serv11590
Modified Files:
Nav.c
Log Message:
Allow access to the returned value(s) as FSRefs. Unfortunately for some
reason getting at saveFileName doesn't work, so it currently only really
works for opening files for reading.
Index: Nav.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Mac/Modules/Nav.c,v
retrieving revision 1.18
retrieving revision 1.19
diff -C2 -d -r1.18 -r1.19
*** Nav.c 17 Jul 2002 16:30:34 -0000 1.18
--- Nav.c 22 Nov 2002 23:39:52 -0000 1.19
***************
*** 317,324 ****
{
FSSpec fss;
if( strcmp(name, "__members__") == 0 )
! return Py_BuildValue("sssssss", "version", "validRecord", "replacing",
! "isStationery", "translationNeeded", "selection", "fileTranslation");
if( strcmp(name, "version") == 0 )
return Py_BuildValue("h", self->itself.version);
--- 317,326 ----
{
FSSpec fss;
+ FSRef fsr;
if( strcmp(name, "__members__") == 0 )
! return Py_BuildValue("ssssssssss", "version", "validRecord", "replacing",
! "isStationery", "translationNeeded", "selection", "selection_fsr",
! "fileTranslation", "keyScript", "saveFileName");
if( strcmp(name, "version") == 0 )
return Py_BuildValue("h", self->itself.version);
***************
*** 365,370 ****
--- 367,406 ----
return rv;
}
+ if( strcmp(name, "selection_fsr") == 0 ) {
+ SInt32 i, count;
+ OSErr err;
+ PyObject *rv, *rvitem;
+ AEDesc desc;
+
+ if (err=AECountItems(&self->itself.selection, &count)) {
+ PyErr_Mac(ErrorObject, err);
+ return NULL;
+ }
+ if ( (rv=PyList_New(count)) == NULL )
+ return NULL;
+ for(i=0; i<count; i++) {
+ desc.dataHandle = NULL;
+ if (err=AEGetNthDesc(&self->itself.selection, i+1, typeFSRef, NULL, &desc)) {
+ Py_DECREF(rv);
+ PyErr_Mac(ErrorObject, err);
+ return NULL;
+ }
+ if (err=AEGetDescData(&desc, &fsr, sizeof(FSRef))) {
+ Py_DECREF(rv);
+ PyErr_Mac(ErrorObject, err);
+ return NULL;
+ }
+ rvitem = PyMac_BuildFSRef(&fsr);
+ PyList_SetItem(rv, i, rvitem);
+ AEDisposeDesc(&desc);
+ }
+ return rv;
+ }
if( strcmp(name, "fileTranslation") == 0 )
return ResObj_New((Handle)self->itself.fileTranslation);
+ if( strcmp(name, "keyScript") == 0 )
+ return Py_BuildValue("h", (short)self->itself.keyScript);
+ if( strcmp(name, "saveFileName") == 0 )
+ return Py_BuildValue("O&", CFStringRefObj_New, self->itself.saveFileName);