Thu, 01 Jan 2015 13:11:59 +0100
Updated copyright for 2015.
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 | |
4021
195a471c327b
Updated copyright for 2015.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3656
diff
changeset
|
3 | # Copyright (c) 2006 - 2015 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 the base class for all configuration pages. |
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 | |
3656
441956d8fce5
Started porting eric5 to PyQt5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3484
diff
changeset
|
12 | from PyQt5.QtCore import pyqtSlot |
441956d8fce5
Started porting eric5 to PyQt5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3484
diff
changeset
|
13 | from PyQt5.QtGui import QIcon, QPixmap, QColor |
441956d8fce5
Started porting eric5 to PyQt5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3484
diff
changeset
|
14 | from PyQt5.QtWidgets import QWidget, QColorDialog, QFontDialog |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
942
diff
changeset
|
16 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
17 | class ConfigurationPageBase(QWidget): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19 | Class implementing the base class for all configuration pages. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
21 | def __init__(self): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23 | Constructor |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24 | """ |
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
|
25 | super(ConfigurationPageBase, self).__init__() |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26 | |
2230
2b1b9265156c
Optimized the colour selection code of configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2229
diff
changeset
|
27 | self.__coloursDict = {} |
2b1b9265156c
Optimized the colour selection code of configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2229
diff
changeset
|
28 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29 | def polishPage(self): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31 | Public slot to perform some polishing actions. |
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 | return |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | def saveState(self): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | Public method to save the current state of the widget. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38 | """ |
2964
84b65fb9e780
Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
39 | return |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41 | def setState(self, state): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43 | Public method to set the state of the widget. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45 | @param state state data generated by saveState |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | return |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48 | |
3010
befeff46ec0f
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2964
diff
changeset
|
49 | def initColour(self, colourKey, button, prefMethod, byName=False, |
befeff46ec0f
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2964
diff
changeset
|
50 | hasAlpha=False): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52 | Public method to initialize a colour selection button. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53 | |
2230
2b1b9265156c
Optimized the colour selection code of configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2229
diff
changeset
|
54 | @param colourKey key of the colour resource (string) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55 | @param button reference to a button to show the colour on (QPushButton) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56 | @param prefMethod preferences method to get the colour |
3010
befeff46ec0f
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2964
diff
changeset
|
57 | @keyparam byName flag indicating to retrieve/save by colour name |
befeff46ec0f
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2964
diff
changeset
|
58 | (boolean) |
2230
2b1b9265156c
Optimized the colour selection code of configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2229
diff
changeset
|
59 | @keyparam hasAlpha flag indicating to allow alpha channel (boolean) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | """ |
2230
2b1b9265156c
Optimized the colour selection code of configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2229
diff
changeset
|
61 | colour = QColor(prefMethod(colourKey)) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62 | size = button.size() |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
942
diff
changeset
|
63 | pm = QPixmap(size.width() / 2, size.height() / 2) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64 | pm.fill(colour) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
65 | button.setIconSize(pm.size()) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | button.setIcon(QIcon(pm)) |
2230
2b1b9265156c
Optimized the colour selection code of configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2229
diff
changeset
|
67 | button.setProperty("colorKey", colourKey) |
2b1b9265156c
Optimized the colour selection code of configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2229
diff
changeset
|
68 | button.setProperty("hasAlpha", hasAlpha) |
3345
071afe8be2a1
Changed signal/slot usage to not use constructs like 'triggered[()].connect(...)' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3160
diff
changeset
|
69 | button.clicked.connect(self.__selectColourSlot) |
2230
2b1b9265156c
Optimized the colour selection code of configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2229
diff
changeset
|
70 | self.__coloursDict[colourKey] = [colour, byName] |
2229
78539385a8df
Optimized the IRC color selection code a bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2228
diff
changeset
|
71 | |
2230
2b1b9265156c
Optimized the colour selection code of configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2229
diff
changeset
|
72 | @pyqtSlot() |
2b1b9265156c
Optimized the colour selection code of configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2229
diff
changeset
|
73 | def __selectColourSlot(self): |
2229
78539385a8df
Optimized the IRC color selection code a bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2228
diff
changeset
|
74 | """ |
2230
2b1b9265156c
Optimized the colour selection code of configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2229
diff
changeset
|
75 | Private slot to select a color. |
2b1b9265156c
Optimized the colour selection code of configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2229
diff
changeset
|
76 | """ |
2b1b9265156c
Optimized the colour selection code of configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2229
diff
changeset
|
77 | button = self.sender() |
2b1b9265156c
Optimized the colour selection code of configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2229
diff
changeset
|
78 | colorKey = button.property("colorKey") |
2b1b9265156c
Optimized the colour selection code of configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2229
diff
changeset
|
79 | hasAlpha = button.property("hasAlpha") |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | |
2230
2b1b9265156c
Optimized the colour selection code of configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2229
diff
changeset
|
81 | if hasAlpha: |
3010
befeff46ec0f
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2964
diff
changeset
|
82 | colour = QColorDialog.getColor( |
befeff46ec0f
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2964
diff
changeset
|
83 | self.__coloursDict[colorKey][0], None, "", |
942
1d2a6b8509c6
Added capability to configure the alpha channel for some colors (as of QScintilla 2.5).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
791
diff
changeset
|
84 | QColorDialog.ShowAlphaChannel) |
1d2a6b8509c6
Added capability to configure the alpha channel for some colors (as of QScintilla 2.5).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
791
diff
changeset
|
85 | else: |
2230
2b1b9265156c
Optimized the colour selection code of configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2229
diff
changeset
|
86 | colour = QColorDialog.getColor(self.__coloursDict[colorKey][0]) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
87 | if colour.isValid(): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88 | size = button.iconSize() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
89 | pm = QPixmap(size.width(), size.height()) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
90 | pm.fill(colour) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
91 | button.setIcon(QIcon(pm)) |
2230
2b1b9265156c
Optimized the colour selection code of configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2229
diff
changeset
|
92 | self.__coloursDict[colorKey][0] = colour |
2b1b9265156c
Optimized the colour selection code of configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2229
diff
changeset
|
93 | |
2b1b9265156c
Optimized the colour selection code of configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2229
diff
changeset
|
94 | def saveColours(self, prefMethod): |
2b1b9265156c
Optimized the colour selection code of configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2229
diff
changeset
|
95 | """ |
2b1b9265156c
Optimized the colour selection code of configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2229
diff
changeset
|
96 | Public method to save the colour selections. |
2b1b9265156c
Optimized the colour selection code of configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2229
diff
changeset
|
97 | |
2b1b9265156c
Optimized the colour selection code of configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2229
diff
changeset
|
98 | @param prefMethod preferences method to set the colour |
2b1b9265156c
Optimized the colour selection code of configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2229
diff
changeset
|
99 | """ |
2b1b9265156c
Optimized the colour selection code of configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2229
diff
changeset
|
100 | for key in self.__coloursDict: |
2b1b9265156c
Optimized the colour selection code of configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2229
diff
changeset
|
101 | if self.__coloursDict[key][1]: |
2b1b9265156c
Optimized the colour selection code of configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2229
diff
changeset
|
102 | prefMethod(key, self.__coloursDict[key][0].name()) |
2b1b9265156c
Optimized the colour selection code of configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2229
diff
changeset
|
103 | else: |
2b1b9265156c
Optimized the colour selection code of configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2229
diff
changeset
|
104 | prefMethod(key, self.__coloursDict[key][0]) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
105 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
942
diff
changeset
|
106 | def selectFont(self, fontSample, fontVar, showFontInfo=False): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
107 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
108 | Public method used by the font selection buttons. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
109 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
110 | @param fontSample reference to the font sample widget (QLineEdit) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
111 | @param fontVar reference to the variable containing the font (QFont) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
112 | @param showFontInfo flag indicating to show some font info |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
113 | as the sample (boolean) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
114 | @return selected font (QFont) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
115 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
116 | font, ok = QFontDialog.getFont(fontVar) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
117 | if ok: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
118 | fontSample.setFont(font) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
119 | if showFontInfo: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
120 | fontSample.setText( |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
121 | "{0} {1}".format(font.family(), font.pointSize())) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
122 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
123 | font = fontVar |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
124 | return font |