1import os
2
3from ..qt import QtWidgets
4
5
6__all__ = ['open_file_dialog', 'save_file_dialog']
7
8
9def _format_filename(filename):
10    if isinstance(filename, tuple):
11        # Handle discrepancy between PyQt4 and PySide APIs.
12        filename = filename[0]
13    if len(filename) == 0:
14        return None
15    return str(filename)
16
17
18def open_file_dialog():
19    """Return user-selected file path."""
20    filename = QtWidgets.QFileDialog.getOpenFileName()
21    filename = _format_filename(filename)
22    return filename
23
24
25def save_file_dialog(default_format='png'):
26    """Return user-selected file path."""
27    filename = QtWidgets.QFileDialog.getSaveFileName()
28    filename = _format_filename(filename)
29    if filename is None:
30        return None
31    # TODO: io plugins should assign default image formats
32    basename, ext = os.path.splitext(filename)
33    if not ext:
34        filename = '%s.%s' % (filename, default_format)
35    return filename
36