36 lines
937 B
Python
36 lines
937 B
Python
|
import os
|
||
|
|
||
|
from ..qt import QtWidgets
|
||
|
|
||
|
|
||
|
__all__ = ['open_file_dialog', 'save_file_dialog']
|
||
|
|
||
|
|
||
|
def _format_filename(filename):
|
||
|
if isinstance(filename, tuple):
|
||
|
# Handle discrepancy between PyQt4 and PySide APIs.
|
||
|
filename = filename[0]
|
||
|
if len(filename) == 0:
|
||
|
return None
|
||
|
return str(filename)
|
||
|
|
||
|
|
||
|
def open_file_dialog():
|
||
|
"""Return user-selected file path."""
|
||
|
filename = QtWidgets.QFileDialog.getOpenFileName()
|
||
|
filename = _format_filename(filename)
|
||
|
return filename
|
||
|
|
||
|
|
||
|
def save_file_dialog(default_format='png'):
|
||
|
"""Return user-selected file path."""
|
||
|
filename = QtWidgets.QFileDialog.getSaveFileName()
|
||
|
filename = _format_filename(filename)
|
||
|
if filename is None:
|
||
|
return None
|
||
|
# TODO: io plugins should assign default image formats
|
||
|
basename, ext = os.path.splitext(filename)
|
||
|
if not ext:
|
||
|
filename = '%s.%s' % (filename, default_format)
|
||
|
return filename
|