Allow access to the returned value(s) as FSRefs. Unfortunately for some
authorJack Jansen <jack.jansen@cwi.nl>
Fri, 22 Nov 2002 23:39:52 +0000 (23:39 +0000)
committerJack Jansen <jack.jansen@cwi.nl>
Fri, 22 Nov 2002 23:39:52 +0000 (23:39 +0000)
reason getting at saveFileName doesn't work, so it currently only really
works for opening files for reading.

Mac/Modules/Nav.c

index 7dfe3e5b196eaf5136f419f004a59b69637d1693..d9ca42ad3bf8eb31dc24e9adebaa5740abed5df8 100644 (file)
@@ -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);