64 lines
2.0 KiB
Python
64 lines
2.0 KiB
Python
#
|
|
# Python GUI - File selection dialogs - Cocoa
|
|
#
|
|
|
|
from AppKit import NSOpenPanel, NSSavePanel, NSOKButton
|
|
from GUI.Files import FileRef
|
|
from GUI import application
|
|
|
|
#------------------------------------------------------------------
|
|
|
|
def _request_old(prompt, default_dir, file_types, dir, multiple):
|
|
ns_panel = NSOpenPanel.openPanel()
|
|
if prompt.endswith(":"):
|
|
prompt = prompt[:-1]
|
|
ns_panel.setTitle_(prompt)
|
|
ns_panel.setCanChooseFiles_(not dir)
|
|
ns_panel.setCanChooseDirectories_(dir)
|
|
ns_panel.setAllowsMultipleSelection_(multiple)
|
|
if default_dir:
|
|
ns_dir = default_dir.path
|
|
else:
|
|
ns_dir = None
|
|
if file_types:
|
|
ns_types = []
|
|
for type in file_types:
|
|
ns_types.extend(type._ns_file_types())
|
|
else:
|
|
ns_types = None
|
|
result = ns_panel.runModalForDirectory_file_types_(ns_dir, None, ns_types)
|
|
if result == NSOKButton:
|
|
if multiple:
|
|
return [FileRef(path = path) for path in ns_panel.filenames()]
|
|
else:
|
|
return FileRef(path = ns_panel.filename())
|
|
else:
|
|
return None
|
|
|
|
#------------------------------------------------------------------
|
|
|
|
def _request_new(prompt, default_dir, default_name, file_type, dir):
|
|
ns_panel = NSSavePanel.savePanel()
|
|
#if prompt.endswith(":"):
|
|
# prompt = prompt[:-1]
|
|
#if prompt.lower().endswith(" as"):
|
|
# prompt = prompt[:-3]
|
|
#ns_panel.setTitle_(prompt)
|
|
#print "_request_new: setting label to", repr(prompt) ###
|
|
ns_panel.setNameFieldLabel_(prompt)
|
|
if default_dir:
|
|
ns_dir = default_dir.path
|
|
else:
|
|
ns_dir = None
|
|
if file_type:
|
|
suffix = file_type.suffix
|
|
if suffix:
|
|
ns_panel.setCanSelectHiddenExtension_(True)
|
|
if not file_type.mac_type or file_type.mac_force_suffix:
|
|
ns_panel.setRequiredFileType_(suffix)
|
|
result = ns_panel.runModalForDirectory_file_(ns_dir, default_name)
|
|
if result == NSOKButton:
|
|
return FileRef(path = ns_panel.filename())
|
|
else:
|
|
return None
|