summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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 7dfe3e5..d9ca42a 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);