static PyObject *DragObj_SetDropLocation(DragObjObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSErr _err;
	AEDesc dropLocation;
#ifndef SetDropLocation
	PyMac_PRECHECK(SetDropLocation);
#endif
	if (!PyArg_ParseTuple(_args, "O&",
	                      AEDesc_Convert, &dropLocation))
		return NULL;
	_err = SetDropLocation(_self->ob_itself,
	                       &dropLocation);
	if (_err != noErr) return PyMac_Error(_err);
	Py_INCREF(Py_None);
	_res = Py_None;
	return _res;
}
void nglDataFilesObject::GetFlavorData(DragRef dragRef, DragItemRef& itemRef, FlavorType flavorType)
{
	if (flavorType == kDragFlavorTypeHFS)
	{
		OSErr err = noErr;
		Size dataSize;
		err = ::GetFlavorDataSize (dragRef, itemRef, flavorType, &dataSize);
		
		NGL_ASSERT(!err);
		
		HFSFlavor hfsInfo;
		err = ::GetFlavorData(dragRef, itemRef, flavorType, &hfsInfo, &dataSize, 0);
		
		NGL_ASSERT(!err);
		
		FSRef fileRef;
		err = FSpMakeFSRef(&(hfsInfo.fileSpec), &fileRef);
		
		char path_str[255];
		err = FSRefMakePath(&fileRef, (UInt8*)path_str, 254);
		
		NGL_ASSERT(!err);
		//NGL_OUT("HFS Type: file: %s\n", path_str);
   
		AddFile(nglString(path_str));
	}
	else if (flavorType == kDragFlavorTypePromiseHFS)
	{
		OSErr err = noErr;
    
		PromiseHFSFlavor hfsInfo;
    Size dataSize = sizeof(PromiseHFSFlavor);
		err = ::GetFlavorData(dragRef, itemRef, flavorType, &hfsInfo, &dataSize, 0);
    
    // check for a drop from find file
		if (hfsInfo.promisedFlavor == kDragPromisedFlavorFindFile) 
		{
			// from find file, no need to set the file location... 
		}
		else
		{
      FSRef fsref;
      
			// we'll put promised files in temp dir
			err = FSFindFolder(kOnSystemDisk, kTemporaryFolderType, kCreateFolder, &fsref);
    
      NGL_ASSERT(!err);
    
      AEDesc dropLocation;
      err = AECreateDesc(typeFSRef, &fsref, sizeof(FSRef), &dropLocation);
    
      NGL_ASSERT(!err);
    
      err = SetDropLocation(dragRef, &dropLocation);
    
      NGL_ASSERT(!err);
    
      AEDisposeDesc(&dropLocation);
    }
    
    
    FSSpec fsspec;
		dataSize = sizeof(FSSpec);
		err = ::GetFlavorData(dragRef, itemRef, hfsInfo.promisedFlavor, &fsspec, &dataSize, 0);
		
		NGL_ASSERT(!err);
		
		FSRef fileRef;
		err = FSpMakeFSRef(&fsspec, &fileRef);
		
		NGL_ASSERT(!err);
		
		char path_str[255];
		err = FSRefMakePath(&fileRef, (UInt8*)path_str, 254);
		
		NGL_ASSERT(!err);
		//NGL_OUT("HFS Type: file: %s\n", path_str);
      
    AddFile(nglString(path_str));
    
		/*err = GetFlavorDataSize (dragRef, itemRef, flavorType, &dataSize);
		
		NGL_ASSERT(!err);
		
		PromiseHFSFlavor hfsInfo;
		err = ::GetFlavorData(dragRef, itemRef, flavorType, &hfsInfo, &dataSize, 0);
		
		NGL_ASSERT(!err);
		
		FSRef fsref;
		err = ::FSPathMakeRef((const UInt8*)("/tmp"), &fsref, NULL);
		
		NGL_ASSERT(!err);
		
		FSSpec folder;
		err = ::FSGetCatalogInfo(&fsref, kFSCatInfoNone, NULL, NULL, &folder, NULL);
		
		NGL_ASSERT(!err);
		
		err = ::SetDropFolder(dragRef, &folder);
		
		NGL_ASSERT(!err);
								
		FSSpec fsspec;
		dataSize = sizeof(FSSpec);
		err = ::GetFlavorData(dragRef, itemRef, hfsInfo.promisedFlavor, &fsspec, &dataSize, 0);
		
		NGL_ASSERT(!err);
		
		FSRef fileRef;
		err = FSpMakeFSRef(&fsspec, &fileRef);
		
		NGL_ASSERT(!err);
		
		char path_str[255];
		err = FSRefMakePath(&fileRef, (UInt8*)path_str, 254);
		
		NGL_ASSERT(!err);
		//NGL_OUT("HFS Type: file: %s\n", path_str);
		
		AddFile(nglString((char*)path_str));*/
	}
}