Linux: Fix kdialog based file dialogs not supporting multiple file name filter groups

This commit is contained in:
Kovid Goyal 2017-08-05 23:30:20 +05:30
parent b57708dd67
commit c3cdafb59f
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -152,16 +152,12 @@ def kdialog_choose_dir(window, name, title, default_dir='~', no_save_dir=False):
def kdialog_filters(filters, all_files=True):
# Currently kdialog has no way to specify multiple filters
if all_files or not filters:
return '*'
if len(filters) == 1:
text, exts = filters[0]
return '{} ({})'.format(text, ' '.join('*.' + x for x in exts))
ans = set()
for text, exts in filters:
ans |= set(exts)
return ' '.join('*.' + x for x in ans)
ans = []
for name, exts in filters:
ans.append('{} ({})'.format(name, ' '.join('*.' + x for x in exts)))
if all_files:
ans.append(_('All files') + ' (*)')
return '\n'.join(ans)
def kdialog_choose_files(
@ -344,9 +340,9 @@ def check_for_linux_native_dialogs():
if __name__ == '__main__':
print(repr(kdialog_choose_dir(None, 'testkddcd', 'Testing choose dir...')))
# print(repr(kdialog_choose_files(None, 'testkddcf', 'Testing choose files...', select_only_single_file=True, filters=[
# ('moo', 'epub png'.split()), ('boo', 'docx'.split())], all_files=False)))
# print(repr(kdialog_choose_dir(None, 'testkddcd', 'Testing choose dir...')))
print(repr(kdialog_choose_files(None, 'testkddcf', 'Testing choose files...', select_only_single_file=True, filters=[
('moo', 'epub png'.split()), ('boo', 'docx'.split())], all_files=True)))
# print(repr(kdialog_choose_images(None, 'testkddci', 'Testing choose images...')))
# print(repr(kdialog_choose_save_file(None, 'testkddcs', 'Testing choose save file...', initial_filename='moo.x')))
# print(repr(zenity_choose_dir(None, 'testzcd', 'Testing choose dir...')))