src/eric7/Utilities/MimeTypes.py

Sat, 31 Dec 2022 16:23:21 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 31 Dec 2022 16:23:21 +0100
branch
eric7
changeset 9653
e67609152c5e
parent 9576
be9f8e7e42e0
child 9894
8f0da84f216f
permissions
-rw-r--r--

Updated copyright for 2023.

3565
8e1cd7721515 Added a utility function to handle mime types other than 'text' that are editable text files as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
8e1cd7721515 Added a utility function to handle mime types other than 'text' that are editable text files as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
9653
e67609152c5e Updated copyright for 2023.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9576
diff changeset
3 # Copyright (c) 2014 - 2023 Detlev Offenbach <detlev@die-offenbachs.de>
3565
8e1cd7721515 Added a utility function to handle mime types other than 'text' that are editable text files as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
8e1cd7721515 Added a utility function to handle mime types other than 'text' that are editable text files as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
8e1cd7721515 Added a utility function to handle mime types other than 'text' that are editable text files as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
8e1cd7721515 Added a utility function to handle mime types other than 'text' that are editable text files as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing mimetype dependent functions.
8e1cd7721515 Added a utility function to handle mime types other than 'text' that are editable text files as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
8e1cd7721515 Added a utility function to handle mime types other than 'text' that are editable text files as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
9563
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
10 import fnmatch
3565
8e1cd7721515 Added a utility function to handle mime types other than 'text' that are editable text files as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 import mimetypes
8e1cd7721515 Added a utility function to handle mime types other than 'text' that are editable text files as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12
9563
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
13 from PyQt6.QtCore import QCoreApplication
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
14
9413
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
15 from eric7 import Preferences
9563
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
16 from eric7.EricWidgets import EricMessageBox
3565
8e1cd7721515 Added a utility function to handle mime types other than 'text' that are editable text files as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17
8e1cd7721515 Added a utility function to handle mime types other than 'text' that are editable text files as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18
8e1cd7721515 Added a utility function to handle mime types other than 'text' that are editable text files as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 def isTextFile(filename):
8e1cd7721515 Added a utility function to handle mime types other than 'text' that are editable text files as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 """
8e1cd7721515 Added a utility function to handle mime types other than 'text' that are editable text files as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 Function to test, if the given file is a text (i.e. editable) file.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
22
8205
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
23 @param filename name of the file to be checked
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
24 @type str
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
25 @return flag indicating an editable file
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
26 @rtype bool
3565
8e1cd7721515 Added a utility function to handle mime types other than 'text' that are editable text files as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 """
9534
5ed8445f3b31 Improved the file type determination (i.e. is it text) and added a configurable option to even load files, whose type cannot be determine as being text.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
28 mimetype = mimetypes.guess_type(filename)[0]
9563
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
29 if mimetype is None:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
30 return (
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
31 Preferences.getUI("LoadUnknownMimeTypeFiles")
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
32 or any(
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
33 fnmatch.fnmatch(filename, pat)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
34 for pat in Preferences.getUI("TextFilePatterns")
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
35 )
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
36 or EricMessageBox.yesNo(
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
37 None,
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
38 QCoreApplication.translate("MimeTypes", "Open File"),
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
39 QCoreApplication.translate(
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
40 "MimeTypes",
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
41 "<p>Is the file <b>{0}</b> a text file to be opened in eric?</p>"
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
42 "<p><b>Note:</b> You may suppress this question by adding a pattern"
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
43 " to the list of known text files on the <b>MimeTypes</b>"
9576
be9f8e7e42e0 Corrected some 'wrong' string quotes caused by the Black line merging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9572
diff changeset
44 " configuration page.</p>",
9563
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
45 ).format(filename),
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
46 )
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
47 )
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
48 else:
9576
be9f8e7e42e0 Corrected some 'wrong' string quotes caused by the Black line merging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9572
diff changeset
49 return mimetype.split("/")[0] == "text" or mimetype in Preferences.getUI(
be9f8e7e42e0 Corrected some 'wrong' string quotes caused by the Black line merging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9572
diff changeset
50 "TextMimeTypes"
9534
5ed8445f3b31 Improved the file type determination (i.e. is it text) and added a configurable option to even load files, whose type cannot be determine as being text.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
51 )
4101
68c26f72c0d1 Added the capability to show a file's mime type and to add it to the text mime types list to the project others browser and the file browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4097
diff changeset
52
68c26f72c0d1 Added the capability to show a file's mime type and to add it to the text mime types list to the project others browser and the file browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4097
diff changeset
53
68c26f72c0d1 Added the capability to show a file's mime type and to add it to the text mime types list to the project others browser and the file browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4097
diff changeset
54 def mimeType(filename):
68c26f72c0d1 Added the capability to show a file's mime type and to add it to the text mime types list to the project others browser and the file browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4097
diff changeset
55 """
68c26f72c0d1 Added the capability to show a file's mime type and to add it to the text mime types list to the project others browser and the file browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4097
diff changeset
56 Function to get the mime type of a file.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
57
8205
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
58 @param filename name of the file to be checked
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
59 @type str
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
60 @return mime type of the file
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
61 @rtype str
4101
68c26f72c0d1 Added the capability to show a file's mime type and to add it to the text mime types list to the project others browser and the file browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4097
diff changeset
62 """
68c26f72c0d1 Added the capability to show a file's mime type and to add it to the text mime types list to the project others browser and the file browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4097
diff changeset
63 return mimetypes.guess_type(filename)[0]

eric ide

mercurial