mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 07:31:38 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			973 lines
		
	
	
	
		
			27 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			973 lines
		
	
	
	
		
			27 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/***********************************************************
 | 
						|
Copyright 1991-1995 by Stichting Mathematisch Centrum, Amsterdam,
 | 
						|
The Netherlands.
 | 
						|
 | 
						|
                        All Rights Reserved
 | 
						|
 | 
						|
Permission to use, copy, modify, and distribute this software and its
 | 
						|
documentation for any purpose and without fee is hereby granted,
 | 
						|
provided that the above copyright notice appear in all copies and that
 | 
						|
both that copyright notice and this permission notice appear in
 | 
						|
supporting documentation, and that the names of Stichting Mathematisch
 | 
						|
Centrum or CWI or Corporation for National Research Initiatives or
 | 
						|
CNRI not be used in advertising or publicity pertaining to
 | 
						|
distribution of the software without specific, written prior
 | 
						|
permission.
 | 
						|
 | 
						|
While CWI is the initial source for this software, a modified version
 | 
						|
is made available by the Corporation for National Research Initiatives
 | 
						|
(CNRI) at the Internet address ftp://ftp.python.org.
 | 
						|
 | 
						|
STICHTING MATHEMATISCH CENTRUM AND CNRI DISCLAIM ALL WARRANTIES WITH
 | 
						|
REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
 | 
						|
MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH
 | 
						|
CENTRUM OR CNRI BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
 | 
						|
DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
 | 
						|
PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
 | 
						|
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 | 
						|
PERFORMANCE OF THIS SOFTWARE.
 | 
						|
 | 
						|
******************************************************************/
 | 
						|
 | 
						|
#include "Python.h"
 | 
						|
#include "macglue.h"
 | 
						|
#include "pymactoolbox.h"
 | 
						|
#include <Navigation.h>
 | 
						|
 | 
						|
static PyObject *ErrorObject;
 | 
						|
 | 
						|
static NavEventUPP my_eventProcUPP;
 | 
						|
static NavPreviewUPP my_previewProcUPP;
 | 
						|
static NavObjectFilterUPP my_filterProcUPP;
 | 
						|
 | 
						|
/* Callback functions */
 | 
						|
static pascal void
 | 
						|
my_eventProc(NavEventCallbackMessage callBackSelector,
 | 
						|
			 NavCBRecPtr callBackParms,
 | 
						|
			 NavCallBackUserData callbackUD)
 | 
						|
{
 | 
						|
	PyObject *dict = (PyObject *)callbackUD;
 | 
						|
	PyObject *pyfunc;
 | 
						|
	PyObject *rv;
 | 
						|
	
 | 
						|
	if (!dict) return;
 | 
						|
	if ( (pyfunc = PyDict_GetItemString(dict, "eventProc")) == NULL ) {
 | 
						|
		PyErr_Clear();
 | 
						|
		return;
 | 
						|
	}
 | 
						|
	if ( pyfunc == Py_None ) {
 | 
						|
		/* Special case: give update events to the Python event handling code */
 | 
						|
		if ( callBackSelector == kNavCBEvent && 
 | 
						|
				callBackParms->eventData.eventDataParms.event->what == updateEvt)
 | 
						|
			PyMac_HandleEvent(callBackParms->eventData.eventDataParms.event);
 | 
						|
		/* Ignore others */
 | 
						|
		return;
 | 
						|
	}
 | 
						|
	rv = PyObject_CallFunction(pyfunc, "ls#", (long)callBackSelector,
 | 
						|
			(void *)callBackParms, sizeof(NavCBRec));
 | 
						|
	if ( rv )
 | 
						|
		Py_DECREF(rv);
 | 
						|
	else {
 | 
						|
		fprintf(stderr, "Nav: exception in eventProc callback\n");
 | 
						|
		PyErr_Clear();
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
static pascal Boolean
 | 
						|
my_previewProc(NavCBRecPtr callBackParms,
 | 
						|
			   NavCallBackUserData callbackUD)
 | 
						|
{
 | 
						|
	PyObject *dict = (PyObject *)callbackUD;
 | 
						|
	PyObject *pyfunc;
 | 
						|
	PyObject *rv;
 | 
						|
	Boolean c_rv = false;
 | 
						|
	
 | 
						|
	if (!dict) return;
 | 
						|
	if ( (pyfunc = PyDict_GetItemString(dict, "previewProc")) == NULL ) {
 | 
						|
		PyErr_Clear();
 | 
						|
		return;
 | 
						|
	}
 | 
						|
	rv = PyObject_CallFunction(pyfunc, "s#", (void *)callBackParms, sizeof(NavCBRec));
 | 
						|
	if ( rv ) {
 | 
						|
		c_rv = PyObject_IsTrue(rv);
 | 
						|
		Py_DECREF(rv);
 | 
						|
	} else {
 | 
						|
		fprintf(stderr, "Nav: exception in previewProc callback\n");
 | 
						|
		PyErr_Clear();
 | 
						|
	}
 | 
						|
	return c_rv;
 | 
						|
}
 | 
						|
 | 
						|
static pascal Boolean
 | 
						|
my_filterProc(AEDesc *theItem, void *info,
 | 
						|
			  NavCallBackUserData callbackUD,
 | 
						|
			  NavFilterModes filterMode)
 | 
						|
{
 | 
						|
	PyObject *dict = (PyObject *)callbackUD;
 | 
						|
	PyObject *pyfunc;
 | 
						|
	PyObject *rv;
 | 
						|
	Boolean c_rv = false;
 | 
						|
	
 | 
						|
	if (!dict) return;
 | 
						|
	if ( (pyfunc = PyDict_GetItemString(dict, "filterProc")) == NULL ) {
 | 
						|
		PyErr_Clear();
 | 
						|
		return;
 | 
						|
	}
 | 
						|
	rv = PyObject_CallFunction(pyfunc, "O&s#h",
 | 
						|
		AEDesc_New, 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();
 | 
						|
	}
 | 
						|
	return c_rv;
 | 
						|
}
 | 
						|
 | 
						|
/* ----------------------------------------------------- */
 | 
						|
static int
 | 
						|
filldialogoptions(PyObject *d,
 | 
						|
		AEDesc **defaultLocationP,
 | 
						|
		NavDialogOptions *opt,
 | 
						|
		NavEventUPP *eventProcP,
 | 
						|
		NavPreviewUPP *previewProcP,
 | 
						|
		NavObjectFilterUPP *filterProcP,
 | 
						|
		NavTypeListHandle *typeListP,
 | 
						|
		OSType *fileTypeP,
 | 
						|
		OSType *fileCreatorP)
 | 
						|
{
 | 
						|
	int pos = 0;
 | 
						|
	PyObject *key, *value;
 | 
						|
	char *keystr;
 | 
						|
	AEDesc *defaultLocation_storage;
 | 
						|
	
 | 
						|
	NavGetDefaultDialogOptions(opt);
 | 
						|
 | 
						|
	while ( PyDict_Next(d, &pos, &key, &value) ) {
 | 
						|
		if ( !key || !value || !PyString_Check(key) ) {
 | 
						|
			PyErr_SetString(ErrorObject, "DialogOption has non-string key");
 | 
						|
			return 0;
 | 
						|
		}
 | 
						|
		keystr = PyString_AsString(key);
 | 
						|
		if( strcmp(keystr, "defaultLocation") == 0 ) {
 | 
						|
			if ( (defaultLocation_storage = PyMem_NEW(AEDesc, 1)) == NULL ) {
 | 
						|
				PyErr_NoMemory();
 | 
						|
				return 0;
 | 
						|
			}
 | 
						|
			if ( !PyArg_Parse(value, "O&", AEDesc_Convert, defaultLocation_storage) ) {
 | 
						|
				PyMem_DEL(defaultLocation_storage);
 | 
						|
				return 0;
 | 
						|
			}
 | 
						|
			*defaultLocationP = defaultLocation_storage;
 | 
						|
		} else if( strcmp(keystr, "version") == 0 ) {
 | 
						|
			if ( !PyArg_Parse(value, "h", &opt->version) )
 | 
						|
				return 0;
 | 
						|
		} else if( strcmp(keystr, "dialogOptionFlags") == 0 ) {
 | 
						|
			if ( !PyArg_Parse(value, "l", &opt->dialogOptionFlags) )
 | 
						|
				return 0;
 | 
						|
		} else if( strcmp(keystr, "location") == 0 ) {
 | 
						|
			if ( !PyArg_Parse(value, "O&", PyMac_GetPoint, &opt->location) )
 | 
						|
				return 0;
 | 
						|
		} else if( strcmp(keystr, "clientName") == 0 ) {
 | 
						|
			if ( !PyArg_Parse(value, "O&", PyMac_GetStr255, &opt->clientName) )
 | 
						|
				return 0;
 | 
						|
		} else if( strcmp(keystr, "windowTitle") == 0 ) {
 | 
						|
			if ( !PyArg_Parse(value, "O&", PyMac_GetStr255, &opt->windowTitle) )
 | 
						|
				return 0;
 | 
						|
		} else if( strcmp(keystr, "actionButtonLabel") == 0 ) {
 | 
						|
			if ( !PyArg_Parse(value, "O&", PyMac_GetStr255, &opt->actionButtonLabel) )
 | 
						|
				return 0;
 | 
						|
		} else if( strcmp(keystr, "cancelButtonLabel") == 0 ) {
 | 
						|
			if ( !PyArg_Parse(value, "O&", PyMac_GetStr255, &opt->cancelButtonLabel) )
 | 
						|
				return 0;
 | 
						|
		} else if( strcmp(keystr, "savedFileName") == 0 ) {
 | 
						|
			if ( !PyArg_Parse(value, "O&", PyMac_GetStr255, &opt->savedFileName) )
 | 
						|
				return 0;
 | 
						|
		} else if( strcmp(keystr, "message") == 0 ) {
 | 
						|
			if ( !PyArg_Parse(value, "O&", PyMac_GetStr255, &opt->message) )
 | 
						|
				return 0;
 | 
						|
		} else if( strcmp(keystr, "preferenceKey") == 0 ) {
 | 
						|
			if ( !PyArg_Parse(value, "O&", PyMac_GetOSType, &opt->preferenceKey) )
 | 
						|
				return 0;
 | 
						|
		} else if( strcmp(keystr, "popupExtension") == 0 ) {
 | 
						|
			if ( !PyArg_Parse(value, "O&", ResObj_Convert, &opt->popupExtension) )
 | 
						|
				return 0;
 | 
						|
		} else if( eventProcP && strcmp(keystr, "eventProc") == 0 ) {
 | 
						|
			*eventProcP = my_eventProcUPP;
 | 
						|
		} else if( previewProcP && strcmp(keystr, "previewProc") == 0 ) {
 | 
						|
			PyErr_SetString(ErrorObject, "No callbacks implemented yet");
 | 
						|
			return 0;
 | 
						|
		} else if( filterProcP && strcmp(keystr, "filterProc") == 0 ) {
 | 
						|
			PyErr_SetString(ErrorObject, "No callbacks implemented yet");
 | 
						|
			return 0;
 | 
						|
		} else if( typeListP && strcmp(keystr, "typeList") == 0 ) {
 | 
						|
			if ( !PyArg_Parse(value, "O&", ResObj_Convert, typeListP) )
 | 
						|
				return 0;
 | 
						|
		} else if( fileTypeP && strcmp(keystr, "fileType") == 0 ) {
 | 
						|
			if ( !PyArg_Parse(value, "O&", PyMac_GetOSType, fileTypeP) )
 | 
						|
				return 0;
 | 
						|
		} else if( fileCreatorP && strcmp(keystr, "fileCreator") == 0 ) {
 | 
						|
			if ( !PyArg_Parse(value, "O&", PyMac_GetOSType, fileCreatorP) )
 | 
						|
				return 0;
 | 
						|
		} else {
 | 
						|
			PyErr_Format(ErrorObject, "Unknown DialogOption key: %s", keystr);
 | 
						|
			return 0;
 | 
						|
		}
 | 
						|
	}
 | 
						|
	return 1;
 | 
						|
}
 | 
						|
 | 
						|
/* ----------------------------------------------------- */
 | 
						|
 | 
						|
/* Declarations for objects of type NavReplyRecord */
 | 
						|
 | 
						|
typedef struct {
 | 
						|
	PyObject_HEAD
 | 
						|
	NavReplyRecord itself;
 | 
						|
} navrrobject;
 | 
						|
 | 
						|
staticforward PyTypeObject Navrrtype;
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/* ---------------------------------------------------------------- */
 | 
						|
 | 
						|
static char nav_NavTranslateFile__doc__[] =
 | 
						|
"(NavTranslationOptions)->None"
 | 
						|
;
 | 
						|
 | 
						|
static PyObject *
 | 
						|
nav_NavTranslateFile(self, args)
 | 
						|
	navrrobject *self;
 | 
						|
	PyObject *args;
 | 
						|
{
 | 
						|
	NavTranslationOptions howToTranslate;
 | 
						|
	OSErr err;
 | 
						|
 | 
						|
	if (!PyArg_ParseTuple(args, "l", &howToTranslate))
 | 
						|
		return NULL;
 | 
						|
	err = NavTranslateFile(&self->itself, howToTranslate);
 | 
						|
	if ( err ) {
 | 
						|
		PyErr_Mac(ErrorObject, err);
 | 
						|
		return NULL;
 | 
						|
	}
 | 
						|
	Py_INCREF(Py_None);
 | 
						|
	return Py_None;
 | 
						|
}
 | 
						|
 | 
						|
static char nav_NavCompleteSave__doc__[] =
 | 
						|
"(NavTranslationOptions)->None"
 | 
						|
;
 | 
						|
 | 
						|
static PyObject *
 | 
						|
nav_NavCompleteSave(self, args)
 | 
						|
	navrrobject *self;
 | 
						|
	PyObject *args;
 | 
						|
{
 | 
						|
	NavTranslationOptions howToTranslate;
 | 
						|
	OSErr err;
 | 
						|
 | 
						|
	if (!PyArg_ParseTuple(args, "l", &howToTranslate))
 | 
						|
		return NULL;
 | 
						|
	err = NavCompleteSave(&self->itself, howToTranslate);
 | 
						|
	if ( err ) {
 | 
						|
		PyErr_Mac(ErrorObject, err);
 | 
						|
		return NULL;
 | 
						|
	}
 | 
						|
	Py_INCREF(Py_None);
 | 
						|
	return Py_None;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
static struct PyMethodDef navrr_methods[] = {
 | 
						|
 {"NavTranslateFile",	(PyCFunction)nav_NavTranslateFile,	METH_VARARGS,	nav_NavTranslateFile__doc__},
 | 
						|
 {"NavCompleteSave",	(PyCFunction)nav_NavCompleteSave,	METH_VARARGS,	nav_NavCompleteSave__doc__},
 | 
						|
	
 | 
						|
	{NULL,		NULL}		/* sentinel */
 | 
						|
};
 | 
						|
 | 
						|
/* ---------- */
 | 
						|
 | 
						|
 | 
						|
static navrrobject *
 | 
						|
newnavrrobject(NavReplyRecord *itself)
 | 
						|
{
 | 
						|
	navrrobject *self;
 | 
						|
	
 | 
						|
	self = PyObject_NEW(navrrobject, &Navrrtype);
 | 
						|
	if (self == NULL)
 | 
						|
		return NULL;
 | 
						|
	self->itself = *itself;
 | 
						|
	return self;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
static void
 | 
						|
navrr_dealloc(self)
 | 
						|
	navrrobject *self;
 | 
						|
{
 | 
						|
	NavDisposeReply(&self->itself);
 | 
						|
	PyMem_DEL(self);
 | 
						|
}
 | 
						|
 | 
						|
static PyObject *
 | 
						|
navrr_getattr(self, name)
 | 
						|
	navrrobject *self;
 | 
						|
	char *name;
 | 
						|
{
 | 
						|
	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);
 | 
						|
	if( strcmp(name, "validRecord") == 0 )
 | 
						|
		return Py_BuildValue("l", (long)self->itself.validRecord);
 | 
						|
	if( strcmp(name, "replacing") == 0 )
 | 
						|
		return Py_BuildValue("l", (long)self->itself.replacing);
 | 
						|
	if( strcmp(name, "isStationery") == 0 )
 | 
						|
		return Py_BuildValue("l", (long)self->itself.isStationery);
 | 
						|
	if( strcmp(name, "translationNeeded") == 0 )
 | 
						|
		return Py_BuildValue("l", (long)self->itself.translationNeeded);
 | 
						|
	if( strcmp(name, "selection") == 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, typeFSS, NULL, &desc)) {
 | 
						|
				Py_DECREF(rv);
 | 
						|
				PyErr_Mac(ErrorObject, err);
 | 
						|
				return NULL;
 | 
						|
			}
 | 
						|
#if TARGET_API_MAC_CARBON
 | 
						|
			if (err=AEGetDescData(&desc, &fss, sizeof(FSSpec))) {
 | 
						|
				Py_DECREF(rv);
 | 
						|
				PyErr_Mac(ErrorObject, err);
 | 
						|
				return NULL;
 | 
						|
			}
 | 
						|
#else
 | 
						|
			memcpy((void *)&fss, (void *)*desc.dataHandle, sizeof(FSSpec));
 | 
						|
#endif
 | 
						|
			rvitem = PyMac_BuildFSSpec(&fss);
 | 
						|
			PyList_SetItem(rv, i, rvitem);
 | 
						|
			AEDisposeDesc(&desc);
 | 
						|
		}
 | 
						|
		return rv;
 | 
						|
	}
 | 
						|
	if( strcmp(name, "fileTranslation") == 0 )
 | 
						|
		return ResObj_New((Handle)self->itself.fileTranslation);
 | 
						|
 | 
						|
 | 
						|
	return Py_FindMethod(navrr_methods, (PyObject *)self, name);
 | 
						|
}
 | 
						|
 | 
						|
static int
 | 
						|
navrr_setattr(self, name, v)
 | 
						|
	navrrobject *self;
 | 
						|
	char *name;
 | 
						|
	PyObject *v;
 | 
						|
{
 | 
						|
	/* Set attribute 'name' to value 'v'. v==NULL means delete */
 | 
						|
	
 | 
						|
	/* XXXX Add your own setattr code here */
 | 
						|
	return -1;
 | 
						|
}
 | 
						|
 | 
						|
static char Navrrtype__doc__[] = 
 | 
						|
"Record containing result of a Nav file selection call. Use dir() for member names."
 | 
						|
;
 | 
						|
 | 
						|
static PyTypeObject Navrrtype = {
 | 
						|
	PyObject_HEAD_INIT(&PyType_Type)
 | 
						|
	0,				/*ob_size*/
 | 
						|
	"NavReplyRecord",			/*tp_name*/
 | 
						|
	sizeof(navrrobject),		/*tp_basicsize*/
 | 
						|
	0,				/*tp_itemsize*/
 | 
						|
	/* methods */
 | 
						|
	(destructor)navrr_dealloc,	/*tp_dealloc*/
 | 
						|
	(printfunc)0,		/*tp_print*/
 | 
						|
	(getattrfunc)navrr_getattr,	/*tp_getattr*/
 | 
						|
	(setattrfunc)navrr_setattr,	/*tp_setattr*/
 | 
						|
	(cmpfunc)0,		/*tp_compare*/
 | 
						|
	(reprfunc)0,		/*tp_repr*/
 | 
						|
	0,			/*tp_as_number*/
 | 
						|
	0,		/*tp_as_sequence*/
 | 
						|
	0,		/*tp_as_mapping*/
 | 
						|
	(hashfunc)0,		/*tp_hash*/
 | 
						|
	(ternaryfunc)0,		/*tp_call*/
 | 
						|
	(reprfunc)0,		/*tp_str*/
 | 
						|
 | 
						|
	/* Space for future expansion */
 | 
						|
	0L,0L,0L,0L,
 | 
						|
	Navrrtype__doc__ /* Documentation string */
 | 
						|
};
 | 
						|
 | 
						|
/* End of code for NavReplyRecord objects */
 | 
						|
		
 | 
						|
/* ----------------------------------------------------- */
 | 
						|
 | 
						|
static char nav_NavGetFile__doc__[] =
 | 
						|
"(DialogOptions dict or kwargs+defaultLocation,eventProc,previewProc,filterProc,typeList) -> NavReplyRecord"
 | 
						|
;
 | 
						|
 | 
						|
static PyObject *
 | 
						|
nav_NavGetFile(self, args, kw)
 | 
						|
	PyObject *self;	/* Not used */
 | 
						|
	PyObject *args;
 | 
						|
	PyObject *kw;
 | 
						|
{
 | 
						|
	PyObject *dict;
 | 
						|
	AEDesc	*defaultLocation = NULL;
 | 
						|
	NavReplyRecord reply;
 | 
						|
	NavDialogOptions dialogOptions;
 | 
						|
	NavEventUPP eventProc = NULL;
 | 
						|
	NavPreviewUPP previewProc = NULL;
 | 
						|
	NavObjectFilterUPP filterProc = NULL;
 | 
						|
	NavTypeListHandle typeList = NULL;
 | 
						|
	OSErr err;
 | 
						|
 | 
						|
	if ( kw ) {
 | 
						|
		if (!PyArg_ParseTuple(args, ""))
 | 
						|
			return NULL;
 | 
						|
		dict = kw;
 | 
						|
	} else if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &dict))
 | 
						|
		return NULL;
 | 
						|
	if (!filldialogoptions(dict, &defaultLocation, &dialogOptions, &eventProc, &previewProc, &filterProc, &typeList, NULL, NULL))
 | 
						|
		return NULL;
 | 
						|
	err = NavGetFile(defaultLocation, &reply, &dialogOptions,
 | 
						|
			eventProc, previewProc, filterProc, typeList, (void *)dict);
 | 
						|
	PyMem_DEL(defaultLocation);
 | 
						|
	if ( err ) {
 | 
						|
		PyErr_Mac(ErrorObject, err);
 | 
						|
		return NULL;
 | 
						|
	}
 | 
						|
	return (PyObject *)newnavrrobject(&reply);
 | 
						|
}
 | 
						|
 | 
						|
static char nav_NavPutFile__doc__[] =
 | 
						|
"(DialogOptions dict or kwargs+defaultLocation,eventProc,fileCreator,fileType) -> NavReplyRecord"
 | 
						|
;
 | 
						|
 | 
						|
static PyObject *
 | 
						|
nav_NavPutFile(self, args, kw)
 | 
						|
	PyObject *self;	/* Not used */
 | 
						|
	PyObject *args;
 | 
						|
	PyObject *kw;
 | 
						|
{
 | 
						|
	PyObject *dict;
 | 
						|
	AEDesc	*defaultLocation = NULL;
 | 
						|
	NavReplyRecord reply;
 | 
						|
	NavDialogOptions dialogOptions;
 | 
						|
	NavEventUPP eventProc = NULL;
 | 
						|
	OSType fileType;
 | 
						|
	OSType fileCreator;
 | 
						|
	OSErr err;
 | 
						|
 | 
						|
	if ( kw ) {
 | 
						|
		if (!PyArg_ParseTuple(args, ""))
 | 
						|
			return NULL;
 | 
						|
		dict = kw;
 | 
						|
	} else if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &dict))
 | 
						|
		return NULL;
 | 
						|
	if (!filldialogoptions(dict, &defaultLocation, &dialogOptions, &eventProc, NULL, NULL, NULL, &fileType, &fileCreator))
 | 
						|
		return NULL;
 | 
						|
	err = NavPutFile(defaultLocation, &reply, &dialogOptions,
 | 
						|
			eventProc, fileType, fileCreator, (void *)dict);
 | 
						|
	PyMem_DEL(defaultLocation);
 | 
						|
	if ( err ) {
 | 
						|
		PyErr_Mac(ErrorObject, err);
 | 
						|
		return NULL;
 | 
						|
	}
 | 
						|
	return (PyObject *)newnavrrobject(&reply);
 | 
						|
}
 | 
						|
 | 
						|
static char nav_NavAskSaveChanges__doc__[] =
 | 
						|
"(NavAskSaveChangesAction, DialogOptions dict or kwargs+eventProc) -> NavAskSaveChangesResult"
 | 
						|
 | 
						|
;
 | 
						|
 | 
						|
static PyObject *
 | 
						|
nav_NavAskSaveChanges(self, args, kw)
 | 
						|
	PyObject *self;	/* Not used */
 | 
						|
	PyObject *args;
 | 
						|
	PyObject *kw;
 | 
						|
{
 | 
						|
	PyObject *dict;
 | 
						|
	NavDialogOptions dialogOptions;
 | 
						|
	NavAskSaveChangesAction action;
 | 
						|
	NavAskSaveChangesResult reply;
 | 
						|
	NavEventUPP eventProc = NULL;
 | 
						|
	OSErr err;
 | 
						|
 | 
						|
	if ( kw ) {
 | 
						|
		if (!PyArg_ParseTuple(args, "l", &action))
 | 
						|
			return NULL;
 | 
						|
		dict = kw;
 | 
						|
	} else if (!PyArg_ParseTuple(args, "lO!", &action, &PyDict_Type, &dict))
 | 
						|
		return NULL;
 | 
						|
	if (!filldialogoptions(dict, NULL, &dialogOptions, &eventProc, NULL, NULL, NULL, NULL, NULL))
 | 
						|
		return NULL;
 | 
						|
	err = NavAskSaveChanges(&dialogOptions, action, &reply, eventProc, (void *)dict);
 | 
						|
	if ( err ) {
 | 
						|
		PyErr_Mac(ErrorObject, err);
 | 
						|
		return NULL;
 | 
						|
	}
 | 
						|
	return Py_BuildValue("l", (long)reply);
 | 
						|
}
 | 
						|
 | 
						|
static char nav_NavCustomAskSaveChanges__doc__[] =
 | 
						|
"(DialogOptions dict or kwargs+eventProc) -> NavAskSaveChangesResult"
 | 
						|
;
 | 
						|
 | 
						|
static PyObject *
 | 
						|
nav_NavCustomAskSaveChanges(self, args, kw)
 | 
						|
	PyObject *self;	/* Not used */
 | 
						|
	PyObject *args;
 | 
						|
	PyObject *kw;
 | 
						|
{
 | 
						|
	PyObject *dict;
 | 
						|
	NavDialogOptions dialogOptions;
 | 
						|
	NavAskSaveChangesResult reply;
 | 
						|
	NavEventUPP eventProc = NULL;
 | 
						|
	OSErr err;
 | 
						|
 | 
						|
	if ( kw ) {
 | 
						|
		if (!PyArg_ParseTuple(args, ""))
 | 
						|
			return NULL;
 | 
						|
		dict = kw;
 | 
						|
	} else if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &dict))
 | 
						|
		return NULL;
 | 
						|
	if (!filldialogoptions(dict, NULL, &dialogOptions, &eventProc, NULL, NULL, NULL, NULL, NULL))
 | 
						|
		return NULL;
 | 
						|
	err = NavCustomAskSaveChanges(&dialogOptions, &reply, eventProc, (void *)dict);
 | 
						|
	if ( err ) {
 | 
						|
		PyErr_Mac(ErrorObject, err);
 | 
						|
		return NULL;
 | 
						|
	}
 | 
						|
	return Py_BuildValue("l", (long)reply);
 | 
						|
}
 | 
						|
 | 
						|
static char nav_NavAskDiscardChanges__doc__[] =
 | 
						|
"(DialogOptions dict or kwargs+eventProc) -> NavAskSaveChangesResult"
 | 
						|
;
 | 
						|
 | 
						|
static PyObject *
 | 
						|
nav_NavAskDiscardChanges(self, args, kw)
 | 
						|
	PyObject *self;	/* Not used */
 | 
						|
	PyObject *args;
 | 
						|
	PyObject *kw;
 | 
						|
{
 | 
						|
	PyObject *dict;
 | 
						|
	NavDialogOptions dialogOptions;
 | 
						|
	NavAskSaveChangesResult reply;
 | 
						|
	NavEventUPP eventProc = NULL;
 | 
						|
	OSErr err;
 | 
						|
 | 
						|
	if ( kw ) {
 | 
						|
		if (!PyArg_ParseTuple(args, ""))
 | 
						|
			return NULL;
 | 
						|
		dict = kw;
 | 
						|
	} else if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &dict))
 | 
						|
		return NULL;
 | 
						|
	if (!filldialogoptions(dict, NULL, &dialogOptions, &eventProc, NULL, NULL, NULL, NULL, NULL))
 | 
						|
		return NULL;
 | 
						|
	err = NavAskDiscardChanges(&dialogOptions, &reply, eventProc, (void *)dict);
 | 
						|
	if ( err ) {
 | 
						|
		PyErr_Mac(ErrorObject, err);
 | 
						|
		return NULL;
 | 
						|
	}
 | 
						|
	return Py_BuildValue("l", (long)reply);
 | 
						|
}
 | 
						|
 | 
						|
static char nav_NavChooseFile__doc__[] =
 | 
						|
"(DialogOptions dict or kwargs+defaultLocation,eventProc,previewProc,filterProc,typeList) -> NavReplyRecord"
 | 
						|
;
 | 
						|
 | 
						|
static PyObject *
 | 
						|
nav_NavChooseFile(self, args, kw)
 | 
						|
	PyObject *self;	/* Not used */
 | 
						|
	PyObject *args;
 | 
						|
	PyObject *kw;
 | 
						|
{
 | 
						|
	PyObject *dict;
 | 
						|
	AEDesc	*defaultLocation = NULL;
 | 
						|
	NavReplyRecord reply;
 | 
						|
	NavDialogOptions dialogOptions;
 | 
						|
	NavEventUPP eventProc = NULL;
 | 
						|
	NavPreviewUPP previewProc = NULL;
 | 
						|
	NavObjectFilterUPP filterProc = NULL;
 | 
						|
	NavTypeListHandle typeList = NULL;
 | 
						|
	OSErr err;
 | 
						|
 | 
						|
	if ( kw ) {
 | 
						|
		if (!PyArg_ParseTuple(args, ""))
 | 
						|
			return NULL;
 | 
						|
		dict = kw;
 | 
						|
	} else if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &dict))
 | 
						|
		return NULL;
 | 
						|
	if (!filldialogoptions(dict, &defaultLocation, &dialogOptions, &eventProc, &previewProc, &filterProc, &typeList, NULL, NULL))
 | 
						|
		return NULL;
 | 
						|
	err = NavChooseFile(defaultLocation, &reply, &dialogOptions,
 | 
						|
			eventProc, previewProc, filterProc, typeList, (void *)dict);
 | 
						|
	PyMem_DEL(defaultLocation);
 | 
						|
	if ( err ) {
 | 
						|
		PyErr_Mac(ErrorObject, err);
 | 
						|
		return NULL;
 | 
						|
	}
 | 
						|
	return (PyObject *)newnavrrobject(&reply);
 | 
						|
}
 | 
						|
 | 
						|
static char nav_NavChooseFolder__doc__[] =
 | 
						|
"(DialogOptions dict or kwargs+defaultLocation,eventProc,filterProc) -> NavReplyRecord"
 | 
						|
;
 | 
						|
 | 
						|
static PyObject *
 | 
						|
nav_NavChooseFolder(self, args, kw)
 | 
						|
	PyObject *self;	/* Not used */
 | 
						|
	PyObject *args;
 | 
						|
	PyObject *kw;
 | 
						|
{
 | 
						|
	PyObject *dict;
 | 
						|
	AEDesc	*defaultLocation = NULL;
 | 
						|
	NavReplyRecord reply;
 | 
						|
	NavDialogOptions dialogOptions;
 | 
						|
	NavEventUPP eventProc = NULL;
 | 
						|
	NavObjectFilterUPP filterProc = NULL;
 | 
						|
	OSErr err;
 | 
						|
 | 
						|
	if ( kw ) {
 | 
						|
		if (!PyArg_ParseTuple(args, ""))
 | 
						|
			return NULL;
 | 
						|
		dict = kw;
 | 
						|
	} else if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &dict))
 | 
						|
		return NULL;
 | 
						|
	if (!filldialogoptions(dict, &defaultLocation, &dialogOptions, &eventProc, NULL, &filterProc, NULL, NULL, NULL))
 | 
						|
		return NULL;
 | 
						|
	err = NavChooseFolder(defaultLocation, &reply, &dialogOptions,
 | 
						|
			eventProc, filterProc, (void *)dict);
 | 
						|
	PyMem_DEL(defaultLocation);
 | 
						|
	if ( err ) {
 | 
						|
		PyErr_Mac(ErrorObject, err);
 | 
						|
		return NULL;
 | 
						|
	}
 | 
						|
	return (PyObject *)newnavrrobject(&reply);
 | 
						|
}
 | 
						|
 | 
						|
static char nav_NavChooseVolume__doc__[] =
 | 
						|
"(DialogOptions dict or kwargs+defaultLocation,eventProc,filterProc) -> NavReplyRecord"
 | 
						|
;
 | 
						|
 | 
						|
static PyObject *
 | 
						|
nav_NavChooseVolume(self, args, kw)
 | 
						|
	PyObject *self;	/* Not used */
 | 
						|
	PyObject *args;
 | 
						|
	PyObject *kw;
 | 
						|
{
 | 
						|
	PyObject *dict;
 | 
						|
	AEDesc	*defaultLocation = NULL;
 | 
						|
	NavReplyRecord reply;
 | 
						|
	NavDialogOptions dialogOptions;
 | 
						|
	NavEventUPP eventProc = NULL;
 | 
						|
	NavObjectFilterUPP filterProc = NULL;
 | 
						|
	OSErr err;
 | 
						|
 | 
						|
	if ( kw ) {
 | 
						|
		if (!PyArg_ParseTuple(args, ""))
 | 
						|
			return NULL;
 | 
						|
		dict = kw;
 | 
						|
	} else if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &dict))
 | 
						|
		return NULL;
 | 
						|
	if (!filldialogoptions(dict, &defaultLocation, &dialogOptions, &eventProc, NULL, &filterProc, NULL, NULL, NULL))
 | 
						|
		return NULL;
 | 
						|
	err = NavChooseVolume(defaultLocation, &reply, &dialogOptions,
 | 
						|
			eventProc, filterProc, (void *)dict);
 | 
						|
	PyMem_DEL(defaultLocation);
 | 
						|
	if ( err ) {
 | 
						|
		PyErr_Mac(ErrorObject, err);
 | 
						|
		return NULL;
 | 
						|
	}
 | 
						|
	return (PyObject *)newnavrrobject(&reply);
 | 
						|
}
 | 
						|
 | 
						|
static char nav_NavChooseObject__doc__[] =
 | 
						|
"(DialogOptions dict or kwargs+defaultLocation,eventProc,filterProc) -> NavReplyRecord"
 | 
						|
;
 | 
						|
 | 
						|
static PyObject *
 | 
						|
nav_NavChooseObject(self, args, kw)
 | 
						|
	PyObject *self;	/* Not used */
 | 
						|
	PyObject *args;
 | 
						|
	PyObject *kw;
 | 
						|
{
 | 
						|
	PyObject *dict;
 | 
						|
	AEDesc	*defaultLocation = NULL;
 | 
						|
	NavReplyRecord reply;
 | 
						|
	NavDialogOptions dialogOptions;
 | 
						|
	NavEventUPP eventProc = NULL;
 | 
						|
	NavObjectFilterUPP filterProc = NULL;
 | 
						|
	OSErr err;
 | 
						|
 | 
						|
	if ( kw ) {
 | 
						|
		if (!PyArg_ParseTuple(args, ""))
 | 
						|
			return NULL;
 | 
						|
		dict = kw;
 | 
						|
	} else if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &dict))
 | 
						|
		return NULL;
 | 
						|
	if (!filldialogoptions(dict, &defaultLocation, &dialogOptions, &eventProc, NULL, &filterProc, NULL, NULL, NULL))
 | 
						|
		return NULL;
 | 
						|
	err = NavChooseObject(defaultLocation, &reply, &dialogOptions,
 | 
						|
			eventProc, filterProc, (void *)dict);
 | 
						|
	PyMem_DEL(defaultLocation);
 | 
						|
	if ( err ) {
 | 
						|
		PyErr_Mac(ErrorObject, err);
 | 
						|
		return NULL;
 | 
						|
	}
 | 
						|
	return (PyObject *)newnavrrobject(&reply);
 | 
						|
}
 | 
						|
 | 
						|
static char nav_NavNewFolder__doc__[] =
 | 
						|
"(DialogOptions dict or kwargs+defaultLocation,eventProc) -> NavReplyRecord"
 | 
						|
;
 | 
						|
 | 
						|
static PyObject *
 | 
						|
nav_NavNewFolder(self, args, kw)
 | 
						|
	PyObject *self;	/* Not used */
 | 
						|
	PyObject *args;
 | 
						|
	PyObject *kw;
 | 
						|
{
 | 
						|
	PyObject *dict;
 | 
						|
	AEDesc	*defaultLocation = NULL;
 | 
						|
	NavReplyRecord reply;
 | 
						|
	NavDialogOptions dialogOptions;
 | 
						|
	NavEventUPP eventProc = NULL;
 | 
						|
	OSErr err;
 | 
						|
 | 
						|
	if ( kw ) {
 | 
						|
		if (!PyArg_ParseTuple(args, ""))
 | 
						|
			return NULL;
 | 
						|
		dict = kw;
 | 
						|
	} else if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &dict))
 | 
						|
		return NULL;
 | 
						|
	if (!filldialogoptions(dict, &defaultLocation, &dialogOptions, &eventProc, NULL, NULL, NULL, NULL, NULL))
 | 
						|
		return NULL;
 | 
						|
	err = NavNewFolder(defaultLocation, &reply, &dialogOptions, eventProc, (void *)dict);
 | 
						|
	PyMem_DEL(defaultLocation);
 | 
						|
	if ( err ) {
 | 
						|
		PyErr_Mac(ErrorObject, err);
 | 
						|
		return NULL;
 | 
						|
	}
 | 
						|
	return (PyObject *)newnavrrobject(&reply);
 | 
						|
}
 | 
						|
 | 
						|
#if 0
 | 
						|
XXXX I don't know what to do with the void * argument
 | 
						|
static char nav_NavCustomControl__doc__[] =
 | 
						|
""
 | 
						|
;
 | 
						|
 | 
						|
 | 
						|
static PyObject *
 | 
						|
nav_NavCustomControl(self, args)
 | 
						|
	PyObject *self;	/* Not used */
 | 
						|
	PyObject *args;
 | 
						|
{
 | 
						|
 | 
						|
	if (!PyArg_ParseTuple(args, ""))
 | 
						|
		return NULL;
 | 
						|
	Py_INCREF(Py_None);
 | 
						|
	return Py_None;
 | 
						|
}
 | 
						|
#endif
 | 
						|
 | 
						|
static char nav_NavServicesCanRun__doc__[] =
 | 
						|
"()->int"
 | 
						|
;
 | 
						|
 | 
						|
static PyObject *
 | 
						|
nav_NavServicesCanRun(self, args)
 | 
						|
	PyObject *self;	/* Not used */
 | 
						|
	PyObject *args;
 | 
						|
{
 | 
						|
	Boolean rv;
 | 
						|
	if (!PyArg_ParseTuple(args, ""))
 | 
						|
		return NULL;
 | 
						|
	rv = NavServicesCanRun();
 | 
						|
	return Py_BuildValue("l", (long)rv);
 | 
						|
}
 | 
						|
 | 
						|
static char nav_NavServicesAvailable__doc__[] =
 | 
						|
"()->int"
 | 
						|
;
 | 
						|
 | 
						|
static PyObject *
 | 
						|
nav_NavServicesAvailable(self, args)
 | 
						|
	PyObject *self;	/* Not used */
 | 
						|
	PyObject *args;
 | 
						|
{
 | 
						|
	Boolean rv;
 | 
						|
	
 | 
						|
	if (!PyArg_ParseTuple(args, ""))
 | 
						|
		return NULL;
 | 
						|
	rv = NavServicesAvailable();
 | 
						|
	return Py_BuildValue("l", (long)rv);
 | 
						|
}
 | 
						|
/* XX */
 | 
						|
static char nav_NavLoad__doc__[] =
 | 
						|
"()->None"
 | 
						|
;
 | 
						|
 | 
						|
static PyObject *
 | 
						|
nav_NavLoad(self, args)
 | 
						|
	PyObject *self;	/* Not used */
 | 
						|
	PyObject *args;
 | 
						|
{
 | 
						|
 | 
						|
	if (!PyArg_ParseTuple(args, ""))
 | 
						|
		return NULL;
 | 
						|
	NavLoad();
 | 
						|
	Py_INCREF(Py_None);
 | 
						|
	return Py_None;
 | 
						|
}
 | 
						|
 | 
						|
static char nav_NavUnload__doc__[] =
 | 
						|
"()->None"
 | 
						|
;
 | 
						|
 | 
						|
static PyObject *
 | 
						|
nav_NavUnload(self, args)
 | 
						|
	PyObject *self;	/* Not used */
 | 
						|
	PyObject *args;
 | 
						|
{
 | 
						|
 | 
						|
	if (!PyArg_ParseTuple(args, ""))
 | 
						|
		return NULL;
 | 
						|
	NavUnload();
 | 
						|
	Py_INCREF(Py_None);
 | 
						|
	return Py_None;
 | 
						|
}
 | 
						|
 | 
						|
static char nav_NavLibraryVersion__doc__[] =
 | 
						|
"()->int"
 | 
						|
;
 | 
						|
 | 
						|
static PyObject *
 | 
						|
nav_NavLibraryVersion(self, args)
 | 
						|
	PyObject *self;	/* Not used */
 | 
						|
	PyObject *args;
 | 
						|
{
 | 
						|
	UInt32 rv;
 | 
						|
	
 | 
						|
	if (!PyArg_ParseTuple(args, ""))
 | 
						|
		return NULL;
 | 
						|
	rv = NavLibraryVersion();
 | 
						|
	return Py_BuildValue("l", (long)rv);
 | 
						|
}
 | 
						|
 | 
						|
static char nav_NavGetDefaultDialogOptions__doc__[] =
 | 
						|
"()->dict\nPass dict or keyword args with same names to other calls."
 | 
						|
;
 | 
						|
 | 
						|
static PyObject *
 | 
						|
nav_NavGetDefaultDialogOptions(self, args)
 | 
						|
	PyObject *self;	/* Not used */
 | 
						|
	PyObject *args;
 | 
						|
{
 | 
						|
	NavDialogOptions dialogOptions;
 | 
						|
	OSErr err;
 | 
						|
	
 | 
						|
	err = NavGetDefaultDialogOptions(&dialogOptions);
 | 
						|
	if ( err ) {
 | 
						|
		PyErr_Mac(ErrorObject, err);
 | 
						|
		return NULL;
 | 
						|
	}
 | 
						|
	return Py_BuildValue("{s:h,s:l,s:O&,s:O&,s:O&,s:O&,s:O&,s:O&,s:O&,s:O&,s:O&}",
 | 
						|
		"version", dialogOptions.version,
 | 
						|
		"dialogOptionFlags", dialogOptions.dialogOptionFlags,
 | 
						|
		"location", PyMac_BuildPoint, dialogOptions.location,
 | 
						|
		"clientName", PyMac_BuildStr255, &dialogOptions.clientName,
 | 
						|
		"windowTitle", PyMac_BuildStr255, &dialogOptions.windowTitle,
 | 
						|
		"actionButtonLabel", PyMac_BuildStr255, &dialogOptions.actionButtonLabel,
 | 
						|
		"cancelButtonLabel", PyMac_BuildStr255, &dialogOptions.cancelButtonLabel,
 | 
						|
		"savedFileName", PyMac_BuildStr255, &dialogOptions.savedFileName,
 | 
						|
		"message", PyMac_BuildStr255, &dialogOptions.message,
 | 
						|
		"preferenceKey", PyMac_BuildOSType, dialogOptions.preferenceKey,
 | 
						|
		"popupExtension", OptResObj_New, dialogOptions.popupExtension);
 | 
						|
}
 | 
						|
 | 
						|
/* List of methods defined in the module */
 | 
						|
 | 
						|
static struct PyMethodDef nav_methods[] = {
 | 
						|
	{"NavGetFile",	(PyCFunction)nav_NavGetFile,	METH_VARARGS|METH_KEYWORDS,	nav_NavGetFile__doc__},
 | 
						|
 {"NavPutFile",	(PyCFunction)nav_NavPutFile,	METH_VARARGS|METH_KEYWORDS,	nav_NavPutFile__doc__},
 | 
						|
 {"NavAskSaveChanges",	(PyCFunction)nav_NavAskSaveChanges,	METH_VARARGS|METH_KEYWORDS,	nav_NavAskSaveChanges__doc__},
 | 
						|
 {"NavCustomAskSaveChanges",	(PyCFunction)nav_NavCustomAskSaveChanges,	METH_VARARGS|METH_KEYWORDS,	nav_NavCustomAskSaveChanges__doc__},
 | 
						|
 {"NavAskDiscardChanges",	(PyCFunction)nav_NavAskDiscardChanges,	METH_VARARGS|METH_KEYWORDS,	nav_NavAskDiscardChanges__doc__},
 | 
						|
 {"NavChooseFile",	(PyCFunction)nav_NavChooseFile,	METH_VARARGS|METH_KEYWORDS,	nav_NavChooseFile__doc__},
 | 
						|
 {"NavChooseFolder",	(PyCFunction)nav_NavChooseFolder,	METH_VARARGS|METH_KEYWORDS,	nav_NavChooseFolder__doc__},
 | 
						|
 {"NavChooseVolume",	(PyCFunction)nav_NavChooseVolume,	METH_VARARGS|METH_KEYWORDS,	nav_NavChooseVolume__doc__},
 | 
						|
 {"NavChooseObject",	(PyCFunction)nav_NavChooseObject,	METH_VARARGS|METH_KEYWORDS,	nav_NavChooseObject__doc__},
 | 
						|
 {"NavNewFolder",	(PyCFunction)nav_NavNewFolder,	METH_VARARGS|METH_KEYWORDS,	nav_NavNewFolder__doc__},
 | 
						|
#if 0
 | 
						|
 {"NavCustomControl",	(PyCFunction)nav_NavCustomControl,	METH_VARARGS,	nav_NavCustomControl__doc__},
 | 
						|
#endif
 | 
						|
 {"NavServicesCanRun",	(PyCFunction)nav_NavServicesCanRun,	METH_VARARGS,	nav_NavServicesCanRun__doc__},
 | 
						|
 {"NavServicesAvailable",	(PyCFunction)nav_NavServicesAvailable,	METH_VARARGS,	nav_NavServicesAvailable__doc__},
 | 
						|
 {"NavLoad",	(PyCFunction)nav_NavLoad,	METH_VARARGS,	nav_NavLoad__doc__},
 | 
						|
 {"NavUnload",	(PyCFunction)nav_NavUnload,	METH_VARARGS,	nav_NavUnload__doc__},
 | 
						|
 {"NavLibraryVersion",	(PyCFunction)nav_NavLibraryVersion,	METH_VARARGS,	nav_NavLibraryVersion__doc__},
 | 
						|
 {"NavGetDefaultDialogOptions",	(PyCFunction)nav_NavGetDefaultDialogOptions,	METH_VARARGS,	nav_NavGetDefaultDialogOptions__doc__},
 | 
						|
	{NULL,	 (PyCFunction)NULL, 0, NULL}		/* sentinel */
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
/* Initialization function for the module (*must* be called initNav) */
 | 
						|
 | 
						|
static char Nav_module_documentation[] = 
 | 
						|
"Interface to Navigation Services\n"
 | 
						|
"Most calls accept a NavDialogOptions dictionary or keywords with the same names, pass {}\n"
 | 
						|
"if you want the default options.\n"
 | 
						|
"Use NavGetDefaultDialogOptions() to find out common option names.\n"
 | 
						|
"See individual docstrings for additional keyword args/dictentries supported by each call.\n"
 | 
						|
"Pass None as eventProc to get movable-modal dialogs that process updates through the standard Python mechanism."
 | 
						|
;
 | 
						|
 | 
						|
void
 | 
						|
initNav()
 | 
						|
{
 | 
						|
	PyObject *m, *d;
 | 
						|
 | 
						|
	/* Test that we have NavServices */
 | 
						|
	if ( !NavServicesAvailable() ) {
 | 
						|
		PyErr_SetString(PyExc_ImportError, "Navigation Services not available");
 | 
						|
		return;
 | 
						|
	}
 | 
						|
	/* Create the module and add the functions */
 | 
						|
	m = Py_InitModule4("Nav", nav_methods,
 | 
						|
		Nav_module_documentation,
 | 
						|
		(PyObject*)NULL,PYTHON_API_VERSION);
 | 
						|
 | 
						|
	/* Add some symbolic constants to the module */
 | 
						|
	d = PyModule_GetDict(m);
 | 
						|
	ErrorObject = PyString_FromString("Nav.error");
 | 
						|
	PyDict_SetItemString(d, "error", ErrorObject);
 | 
						|
 | 
						|
	/* XXXX Add constants here */
 | 
						|
	
 | 
						|
	/* Set UPPs */
 | 
						|
	my_eventProcUPP = NewNavEventProc(my_eventProc);
 | 
						|
	my_previewProcUPP = NewNavPreviewProc(my_previewProc);
 | 
						|
	my_filterProcUPP = NewNavObjectFilterProc(my_filterProc);
 | 
						|
	
 | 
						|
}
 | 
						|
 |