UI/PixmapCache.py

Sat, 23 Feb 2019 16:07:02 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 23 Feb 2019 16:07:02 +0100
branch
pypi
changeset 6808
d952d3ffc50d
parent 6787
3de088ae0782
permissions
-rw-r--r--

Development of pip interface finished.

0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
6645
ad476851d7e0 Updated copyright for 2019.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
3 # Copyright (c) 2004 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a pixmap cache for icons.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
3145
a9de05d4a22f # __IGNORE_WARNING__ added/ removed.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3057
diff changeset
10 from __future__ import unicode_literals
2525
8b507a9a2d40 Script changes: Future import added, super calls modified and unicode behavior for str.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 2302
diff changeset
11
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 import os
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13
3656
441956d8fce5 Started porting eric5 to PyQt5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3621
diff changeset
14 from PyQt5.QtCore import Qt, QSize
441956d8fce5 Started porting eric5 to PyQt5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3621
diff changeset
15 from PyQt5.QtGui import QPixmap, QIcon, QPainter
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
17
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 class PixmapCache(object):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 Class implementing a pixmap cache for icons.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 """
6756
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
22 SupportedExtensions = [".svgz", ".svg", ".png"]
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
23
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 def __init__(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 Constructor
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 self.pixmapCache = {}
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 self.searchPath = []
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30
6756
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
31 def getPixmap(self, key, size=None):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 Public method to retrieve a pixmap.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34
6756
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
35 @param key name of the wanted pixmap
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
36 @type str
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
37 @param size requested size
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
38 @type QSize
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
39 @return the requested pixmap
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
40 @rtype QPixmap
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 if key:
6756
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
43 basename, ext = os.path.splitext(key)
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
44 if size and not size.isEmpty():
6787
3de088ae0782 PixmapCache: fixed a format issue generating the pixmap key when a size was given.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6772
diff changeset
45 key = "{0}_{1}_{2}".format(
3de088ae0782 PixmapCache: fixed a format issue generating the pixmap key when a size was given.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6772
diff changeset
46 basename, size.width(), size.height())
6756
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
47 else:
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
48 key = basename
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
49
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 try:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 return self.pixmapCache[key]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 except KeyError:
6756
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
53 pm = QPixmap()
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
54 for extension in self.SupportedExtensions:
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
55 filename = basename + extension
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
56 if not os.path.isabs(filename):
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
57 for path in self.searchPath:
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
58 pm = QPixmap(path + "/" + filename)
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
59 if not pm.isNull():
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
60 break
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 else:
6756
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
62 pm = QPixmap(filename)
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
63 if not pm.isNull():
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
64 if size and not size.isEmpty():
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
65 pm = pm.scaled(size)
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
66 break
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 else:
6756
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
68 pm = QPixmap()
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
69
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 self.pixmapCache[key] = pm
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 return self.pixmapCache[key]
6756
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
72
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 return QPixmap()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 def addSearchPath(self, path):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 Public method to add a path to the search path.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 @param path path to add (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 """
3621
15f23ed3f216 Fixed a few source code style issues found by the updated pe8 checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3484
diff changeset
81 if path not in self.searchPath:
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 self.searchPath.append(path)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 pixCache = PixmapCache()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
86
6756
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
87 def getPixmap(key, size=None, cache=pixCache):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 Module function to retrieve a pixmap.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90
6756
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
91 @param key name of the wanted pixmap
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
92 @type str
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
93 @param size requested size
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
94 @type QSize
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
95 @param cache reference to the pixmap cache object
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
96 @type PixmapCache
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
97 @return the requested pixmap
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
98 @rtype QPixmap
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 """
6756
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
100 return cache.getPixmap(key, size=size)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
102
6756
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
103 def getIcon(key, size=None, cache=pixCache):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 Module function to retrieve an icon.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106
6756
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
107 @param key name of the wanted pixmap
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
108 @type str
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
109 @param size requested size
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
110 @type QSize
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
111 @param cache reference to the pixmap cache object
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
112 @type PixmapCache
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
113 @return the requested icon
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
114 @rtype QIcon
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 """
6756
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
116 return QIcon(cache.getPixmap(key, size=size))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
118
6756
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
119 def getSymlinkIcon(key, size=None, cache=pixCache):
103
59137afca666 Added code to indicate directories and files being symbolic links.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
120 """
59137afca666 Added code to indicate directories and files being symbolic links.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
121 Module function to retrieve a symbolic link icon.
59137afca666 Added code to indicate directories and files being symbolic links.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
122
6756
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
123 @param key name of the wanted pixmap
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
124 @type str
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
125 @param size requested size
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
126 @type QSize
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
127 @param cache reference to the pixmap cache object
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
128 @type PixmapCache
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
129 @return the requested icon
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
130 @rtype QIcon
103
59137afca666 Added code to indicate directories and files being symbolic links.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
131 """
6756
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
132 pix1 = QPixmap(cache.getPixmap(key, size=size))
103
59137afca666 Added code to indicate directories and files being symbolic links.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
133 pix2 = cache.getPixmap("symlink.png")
59137afca666 Added code to indicate directories and files being symbolic links.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
134 painter = QPainter(pix1)
59137afca666 Added code to indicate directories and files being symbolic links.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
135 painter.drawPixmap(0, 10, pix2)
59137afca666 Added code to indicate directories and files being symbolic links.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
136 painter.end()
59137afca666 Added code to indicate directories and files being symbolic links.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
137 return QIcon(pix1)
59137afca666 Added code to indicate directories and files being symbolic links.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
138
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
139
6756
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
140 def getCombinedIcon(keys, size=None, cache=pixCache):
3270
d8532d902e76 Extended Tabview and Listview to show an editor's state using two icons (modified, syntax error/warning).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
141 """
d8532d902e76 Extended Tabview and Listview to show an editor's state using two icons (modified, syntax error/warning).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
142 Module function to retrieve a symbolic link icon.
d8532d902e76 Extended Tabview and Listview to show an editor's state using two icons (modified, syntax error/warning).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
143
6756
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
144 @param keys list of names of icons
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
145 @type list of str
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
146 @param size requested size of individual icons
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
147 @type QSize
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
148 @param cache reference to the pixmap cache object
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
149 @type PixmapCache
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
150 @return the requested icon
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
151 @rtype QIcon
3270
d8532d902e76 Extended Tabview and Listview to show an editor's state using two icons (modified, syntax error/warning).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
152 """
d8532d902e76 Extended Tabview and Listview to show an editor's state using two icons (modified, syntax error/warning).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
153 height = width = 0
d8532d902e76 Extended Tabview and Listview to show an editor's state using two icons (modified, syntax error/warning).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
154 pixmaps = []
d8532d902e76 Extended Tabview and Listview to show an editor's state using two icons (modified, syntax error/warning).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
155 for key in keys:
6756
7556c951dce8 PixmapCache: prepared the pixmap cache to be able to load SVG files. Order of precedence is .svgz, .svg and .png. The key is calculated from the basename and the size.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
156 pix = cache.getPixmap(key, size=size)
3270
d8532d902e76 Extended Tabview and Listview to show an editor's state using two icons (modified, syntax error/warning).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
157 if not pix.isNull():
d8532d902e76 Extended Tabview and Listview to show an editor's state using two icons (modified, syntax error/warning).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
158 height = max(height, pix.height())
d8532d902e76 Extended Tabview and Listview to show an editor's state using two icons (modified, syntax error/warning).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
159 width = max(width, pix.width())
d8532d902e76 Extended Tabview and Listview to show an editor's state using two icons (modified, syntax error/warning).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
160 pixmaps.append(pix)
d8532d902e76 Extended Tabview and Listview to show an editor's state using two icons (modified, syntax error/warning).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
161 if pixmaps:
d8532d902e76 Extended Tabview and Listview to show an editor's state using two icons (modified, syntax error/warning).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
162 pix = QPixmap(len(pixmaps) * width, height)
d8532d902e76 Extended Tabview and Listview to show an editor's state using two icons (modified, syntax error/warning).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
163 pix.fill(Qt.transparent)
d8532d902e76 Extended Tabview and Listview to show an editor's state using two icons (modified, syntax error/warning).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
164 painter = QPainter(pix)
d8532d902e76 Extended Tabview and Listview to show an editor's state using two icons (modified, syntax error/warning).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
165 x = 0
d8532d902e76 Extended Tabview and Listview to show an editor's state using two icons (modified, syntax error/warning).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
166 for pixmap in pixmaps:
d8532d902e76 Extended Tabview and Listview to show an editor's state using two icons (modified, syntax error/warning).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
167 painter.drawPixmap(x, 0, pixmap.scaled(QSize(width, height)))
d8532d902e76 Extended Tabview and Listview to show an editor's state using two icons (modified, syntax error/warning).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
168 x += width
d8532d902e76 Extended Tabview and Listview to show an editor's state using two icons (modified, syntax error/warning).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
169 painter.end()
d8532d902e76 Extended Tabview and Listview to show an editor's state using two icons (modified, syntax error/warning).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
170 icon = QIcon(pix)
d8532d902e76 Extended Tabview and Listview to show an editor's state using two icons (modified, syntax error/warning).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
171 else:
d8532d902e76 Extended Tabview and Listview to show an editor's state using two icons (modified, syntax error/warning).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
172 icon = QIcon()
d8532d902e76 Extended Tabview and Listview to show an editor's state using two icons (modified, syntax error/warning).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
173 return icon
d8532d902e76 Extended Tabview and Listview to show an editor's state using two icons (modified, syntax error/warning).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
174
d8532d902e76 Extended Tabview and Listview to show an editor's state using two icons (modified, syntax error/warning).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
175
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
176 def addSearchPath(path, cache=pixCache):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 Module function to add a path to the search path.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 @param path path to add (string)
2965
d133c7edd88a Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
181 @param cache reference to the pixmap cache object (PixmapCache)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 cache.addSearchPath(path)

eric ide

mercurial