@@ -273,12 +273,14 @@ def set_use_native_open_file_dialog(use):
273
273
global _use_native_open_file_dialog
274
274
_use_native_open_file_dialog = use
275
275
276
- def make_qt_name_filters (session , * , no_filter = "All files (*)" ):
276
+ def make_qt_name_filters (session , * , no_filter = "All files (*)" , format_names = None ):
277
277
openable_formats = [fmt for fmt in session .open_command .open_data_formats if fmt .suffixes ]
278
+ if format_names is not None :
279
+ openable_formats = [fmt for fmt in openable_formats if fmt .name in format_names ]
278
280
openable_formats .sort (key = lambda fmt : fmt .synopsis .casefold ())
279
281
file_filters = ["%s (%s)" % (fmt .synopsis , "*" + " *" .join (fmt .suffixes ))
280
282
for fmt in openable_formats ]
281
- if no_filter is not None :
283
+ if no_filter is not None and format_names is None :
282
284
file_filters = [no_filter ] + file_filters
283
285
return file_filters , openable_formats , no_filter
284
286
@@ -293,13 +295,16 @@ def show_fetch_by_id_dialog(session, database_name=None, *, debug=False):
293
295
_fetch_by_id_dialog .show ()
294
296
_fetch_by_id_dialog .raise_ ()
295
297
296
- def show_open_file_dialog (session , initial_directory = None , format_name = None ):
298
+ def show_open_file_dialog (session , initial_directory = None , format_names = None ):
297
299
if initial_directory is None :
298
300
initial_directory = ''
299
- file_filters , openable_formats , no_filter = make_qt_name_filters (session )
301
+ file_filters , openable_formats , no_filter = make_qt_name_filters (session , format_names = format_names )
300
302
fmt_name2filter = dict (zip ([fmt .name for fmt in openable_formats ], file_filters [1 :]))
301
- filter2fmt = dict (zip (file_filters [1 :], openable_formats ))
302
- filter2fmt [no_filter ] = None
303
+ if format_names is None :
304
+ filter2fmt = dict (zip (file_filters [1 :], openable_formats ))
305
+ filter2fmt [no_filter ] = None
306
+ else :
307
+ filter2fmt = dict (zip (file_filters , openable_formats ))
303
308
from Qt .QtWidgets import QFileDialog
304
309
qt_filter = ";;" .join (file_filters )
305
310
if _use_native_open_file_dialog :
0 commit comments