|
1 # -*- coding: utf-8 -*- |
|
2 |
|
3 # Copyright (c) 2010 Detlev Offenbach <detlev@die-offenbachs.de> |
|
4 # |
|
5 |
|
6 """ |
|
7 Module implementing alternative functions for the QFileDialog static methods |
|
8 to cope with dustributor's usage of KDE wrapper dialogs for Qt file dialogs. |
|
9 """ |
|
10 |
|
11 from PyQt4.QtGui import QFileDialog |
|
12 |
|
13 def __reorderFilter(filter, initialFilter = ""): |
|
14 """ |
|
15 Private function to reorder the file filter to cope with a KDE issue introduced |
|
16 by distributor's usage of KDE file dialogs. |
|
17 |
|
18 @param filter Qt file filter (string) |
|
19 @param initialFilter initial filter (string) |
|
20 @return the rearranged Qt file filter (string) |
|
21 """ |
|
22 if initialFilter: |
|
23 fileFilters = filter.split(';;') |
|
24 if len(fileFilters < 10) and initialFilter in fileFilters: |
|
25 fileFilters.remove(initialFilter) |
|
26 fileFilters.insert(0, initialFilter) |
|
27 return ";;".join(fileFilters) |
|
28 else: |
|
29 return filter |
|
30 |
|
31 def getOpenFileNameAndFilter(parent = None, caption = "", directory = "", |
|
32 filter = "", initialFilter = "", |
|
33 options = QFileDialog.Options()): |
|
34 """ |
|
35 Module function to get the name of a file for opening it and the selected |
|
36 file name filter. |
|
37 |
|
38 @param parent parent widget of the dialog (QWidget) |
|
39 @param caption window title of the dialog (string) |
|
40 @param directory working directory of the dialog (string) |
|
41 @param filter filter string for the dialog (string) |
|
42 @param initialFilter initial filter for the dialog (string) |
|
43 @param options various options for the dialog (QFileDialog.Options) |
|
44 @return name of file to be opened and selected filter (string, string) |
|
45 """ |
|
46 newfilter = __reorderFilter(filter, initialFilter) |
|
47 return QFileDialog.getOpenFileNameAndFilter(parent, caption, directory, |
|
48 newfilter, initialFilter, options) |
|
49 |
|
50 def getOpenFileNamesAndFilter(parent = None, caption = "", directory = "", |
|
51 filter = "", initialFilter = "", |
|
52 options = QFileDialog.Options()): |
|
53 """ |
|
54 Module function to get a list of names of files for opening and the selected |
|
55 file name filter. |
|
56 |
|
57 @param parent parent widget of the dialog (QWidget) |
|
58 @param caption window title of the dialog (string) |
|
59 @param directory working directory of the dialog (string) |
|
60 @param filter filter string for the dialog (string) |
|
61 @param initialFilter initial filter for the dialog (string) |
|
62 @param options various options for the dialog (QFileDialog.Options) |
|
63 @return list of file names to be opened and selected filter |
|
64 (list of string, string) |
|
65 """ |
|
66 newfilter = __reorderFilter(filter, initialFilter) |
|
67 return QFileDialog.getOpenFileNamesAndFilter(parent, caption, directory, |
|
68 newfilter, initialFilter, options) |
|
69 |
|
70 def getSaveFileNameAndFilter(parent = None, caption = "", directory = "", |
|
71 filter = "", initialFilter = "", |
|
72 options = QFileDialog.Options()): |
|
73 """ |
|
74 Module function to get the name of a file for saving it and the selected |
|
75 file name filter. |
|
76 |
|
77 @param parent parent widget of the dialog (QWidget) |
|
78 @param caption window title of the dialog (string) |
|
79 @param directory working directory of the dialog (string) |
|
80 @param filter filter string for the dialog (string) |
|
81 @param initialFilter initial filter for the dialog (string) |
|
82 @param options various options for the dialog (QFileDialog.Options) |
|
83 @return name of file to be saved and selected filter (string, string) |
|
84 """ |
|
85 newfilter = __reorderFilter(filter, initialFilter) |
|
86 return QFileDialog.getSaveFileNameAndFilter(parent, caption, directory, |
|
87 newfilter, initialFilter, options) |