summaryrefslogtreecommitdiff
path: root/Mac/Modules/Nav.c
diff options
context:
space:
mode:
authorJack Jansen <jack.jansen@cwi.nl>2002-11-22 23:39:52 +0000
committerJack Jansen <jack.jansen@cwi.nl>2002-11-22 23:39:52 +0000
commit4b5c7a4f473cd3c7b99fd195b285aeba5e3c484a (patch)
treec30c97155771112bad69ccfb2d21c17c5f10735a /Mac/Modules/Nav.c
parent8d4c9817a2b7296b3ed828f2e455638604dc60d3 (diff)
downloadcpython-git-4b5c7a4f473cd3c7b99fd195b285aeba5e3c484a.tar.gz
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.
Diffstat (limited to 'Mac/Modules/Nav.c')
-rw-r--r--Mac/Modules/Nav.c40
1 files changed, 38 insertions, 2 deletions
diff --git a/Mac/Modules/Nav.c b/Mac/Modules/Nav.c
index 7dfe3e5b19..d9ca42ad3b 100644
--- a/Mac/Modules/Nav.c
+++ b/Mac/Modules/Nav.c
@@ -316,10 +316,12 @@ static PyObject *
navrr_getattr(navrrobject *self, char *name)
{
FSSpec fss;
+ FSRef fsr;
if( strcmp(name, "__members__") == 0 )
- return Py_BuildValue("sssssss", "version", "validRecord", "replacing",
- "isStationery", "translationNeeded", "selection", "fileTranslation");
+ 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);
if( strcmp(name, "validRecord") == 0 )
@@ -364,8 +366,42 @@ navrr_getattr(navrrobject *self, char *name)
}
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);
return Py_FindMethod(navrr_methods, (PyObject *)self, name);