Lightningbeam/PyGUI-2.5.3/build/lib/GUI/BaseFileDialogs.py

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