Here's a modified version of my previous post, returning file names in a more common form
Code: Select all
#RequesterTypeOpen = 0
#RequesterTypeSave = 1
Procedure.s FileRequester(RequesterType, Title.s, DefaultFile.s = "", AllowedFileTypes.s = "", Message.s = "", Flags = 0)
Protected Result.s, Path.s, NSPanel, NSEnumerator, NSURL, NSString
If RequesterType = #RequesterTypeSave
NSPanel = CocoaMessage(0, 0, "NSSavePanel savePanel")
Else
NSPanel = CocoaMessage(0, 0, "NSOpenPanel openPanel")
If Flags & #PB_Requester_MultiSelection
CocoaMessage(0, NSPanel, "setAllowsMultipleSelection:", #YES)
EndIf
EndIf
Path = GetPathPart(DefaultFile)
DefaultFile = GetFilePart(DefaultFile)
CocoaMessage(0, NSPanel, "setTitle:$", @Title)
CocoaMessage(0, NSPanel, "setMessage:$", @Message)
CocoaMessage(0, NSPanel, "setAllowedFileTypes:", CocoaMessage(0, CocoaMessage(0, 0, "NSString stringWithString:$", @AllowedFileTypes), "componentsSeparatedByString:$", @"|"))
CocoaMessage(0, NSPanel, "setDirectoryURL:", CocoaMessage(0, 0, "NSURL fileURLWithPath:$", @Path))
CocoaMessage(0, NSPanel, "setNameFieldStringValue:$", @DefaultFile)
If CocoaMessage(0, NSPanel, "runModal")
If RequesterType = #RequesterTypeSave
Result = PeekS(CocoaMessage(0, CocoaMessage(0, CocoaMessage(0, NSPanel, "URL"), "path"), "fileSystemRepresentation"), -1, #PB_Ascii)
Else
NSEnumerator = CocoaMessage(0, CocoaMessage(0, NSPanel, "URLs"), "objectEnumerator")
NSURL = CocoaMessage(0, NSEnumerator, "nextObject")
If NSURL
Result = PeekS(CocoaMessage(0, CocoaMessage(0, NSURL, "path"), "fileSystemRepresentation"), -1, #PB_Ascii)
NSURL = CocoaMessage(0, NSEnumerator, "nextObject")
While NSURL
Result + "|" + PeekS(CocoaMessage(0, CocoaMessage(0, NSURL, "path"), "fileSystemRepresentation"), -1, #PB_Ascii)
NSURL = CocoaMessage(0, NSEnumerator, "nextObject")
Wend
EndIf
EndIf
EndIf
ProcedureReturn Result
EndProcedure
Debug FileRequester(#RequesterTypeOpen,
"Please choose file to open",
"/users/",
"pb|pbi|txt",
"Optional message",
#PB_Requester_MultiSelection)