Fixed the first two bugs in the new file dialogs (found by Just):
- AskFileForSave didn't work for string return values - filterProc didn't work.
This commit is contained in:
parent
b2a57722a8
commit
e58962af4d
|
@ -30,6 +30,7 @@ from Carbon.ControlAccessor import * # Also import Controls constants
|
|||
import Carbon.File
|
||||
import macfs
|
||||
import macresource
|
||||
import os
|
||||
|
||||
_initialized = 0
|
||||
|
||||
|
@ -660,7 +661,7 @@ def AskFileForSave(**args):
|
|||
# This is gross, and probably incorrect too
|
||||
vrefnum, dirid, name = rr.selection[0].as_tuple()
|
||||
pardir_fss = Carbon.File.FSSpec((vrefnum, dirid, ''))
|
||||
pardir_fsr = Carbon.File.FSRef(fss)
|
||||
pardir_fsr = Carbon.File.FSRef(pardir_fss)
|
||||
pardir_path = pardir_fsr.FSRefMakePath() # This is utf-8
|
||||
name_utf8 = unicode(name, 'macroman').encode('utf8')
|
||||
fullpath = os.path.join(pardir_path, name_utf8)
|
||||
|
|
|
@ -56,7 +56,7 @@ my_eventProc(NavEventCallbackMessage callBackSelector,
|
|||
|
||||
if (!dict) return;
|
||||
if ( (pyfunc = PyDict_GetItemString(dict, "eventProc")) == NULL ) {
|
||||
PyErr_Clear();
|
||||
PyErr_Print();
|
||||
return;
|
||||
}
|
||||
if ( pyfunc == Py_None ) {
|
||||
|
@ -74,8 +74,8 @@ my_eventProc(NavEventCallbackMessage callBackSelector,
|
|||
if ( rv )
|
||||
Py_DECREF(rv);
|
||||
else {
|
||||
fprintf(stderr, "Nav: exception in eventProc callback\n");
|
||||
PyErr_Clear();
|
||||
PySys_WriteStderr("Nav: exception in eventProc callback\n");
|
||||
PyErr_Print();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -90,7 +90,7 @@ my_previewProc(NavCBRecPtr callBackParms,
|
|||
|
||||
if (!dict) return false;
|
||||
if ( (pyfunc = PyDict_GetItemString(dict, "previewProc")) == NULL ) {
|
||||
PyErr_Clear();
|
||||
PyErr_Print();
|
||||
return false;
|
||||
}
|
||||
rv = PyObject_CallFunction(pyfunc, "s#", (void *)callBackParms, sizeof(NavCBRec));
|
||||
|
@ -98,8 +98,8 @@ my_previewProc(NavCBRecPtr callBackParms,
|
|||
c_rv = PyObject_IsTrue(rv);
|
||||
Py_DECREF(rv);
|
||||
} else {
|
||||
fprintf(stderr, "Nav: exception in previewProc callback\n");
|
||||
PyErr_Clear();
|
||||
PySys_WriteStderr("Nav: exception in previewProc callback\n");
|
||||
PyErr_Print();
|
||||
}
|
||||
return c_rv;
|
||||
}
|
||||
|
@ -113,20 +113,21 @@ my_filterProc(AEDesc *theItem, void *info,
|
|||
PyObject *pyfunc;
|
||||
PyObject *rv;
|
||||
Boolean c_rv = false;
|
||||
PyObject theItemCopy;
|
||||
|
||||
if (!dict) return false;
|
||||
if ( (pyfunc = PyDict_GetItemString(dict, "filterProc")) == NULL ) {
|
||||
PyErr_Clear();
|
||||
PyErr_Print();
|
||||
return false;
|
||||
}
|
||||
rv = PyObject_CallFunction(pyfunc, "O&s#h",
|
||||
AEDesc_New, theItem, info, sizeof(NavFileOrFolderInfo), (short)filterMode);
|
||||
AEDesc_NewBorrowed, theItem, info, sizeof(NavFileOrFolderInfo), (short)filterMode);
|
||||
if ( rv ) {
|
||||
c_rv = PyObject_IsTrue(rv);
|
||||
Py_DECREF(rv);
|
||||
} else {
|
||||
fprintf(stderr, "Nav: exception in filterProc callback\n");
|
||||
PyErr_Clear();
|
||||
PySys_WriteStderr("Nav: exception in filterProc callback\n");
|
||||
PyErr_Print();
|
||||
}
|
||||
return c_rv;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue