-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathanalogclockplugin.py
195 lines (164 loc) · 5.67 KB
/
analogclockplugin.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
#!/usr/bin/env python
"""
analogclockplugin.py
An analog clock custom widget plugin for Qt Designer.
Copyright (C) 2006 David Boddie <[email protected]>
Copyright (C) 2005-2006 Trolltech ASA. All rights reserved.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
"""
from PyQt5.QtGui import QIcon, QPixmap
from PyQt5.QtDesigner import QPyDesignerCustomWidgetPlugin
from pluginwidgets.analogclock import PyAnalogClock
class PyAnalogClockPlugin(QPyDesignerCustomWidgetPlugin):
"""PyAnalogClockPlugin(QPyDesignerCustomWidgetPlugin)
Provides a Python custom plugin for Qt Designer by implementing the
QDesignerCustomWidgetPlugin via a PyQt-specific custom plugin class.
"""
# The __init__() method is only used to set up the plugin and define its
# initialized variable.
def __init__(self, parent=None):
super(PyAnalogClockPlugin, self).__init__(parent)
self.initialized = False
# The initialize() and isInitialized() methods allow the plugin to set up
# any required resources, ensuring that this can only happen once for each
# plugin.
def initialize(self, core):
if self.initialized:
return
self.initialized = True
def isInitialized(self):
return self.initialized
# This factory method creates new instances of our custom widget with the
# appropriate parent.
def createWidget(self, parent):
return PyAnalogClock(parent)
# This method returns the name of the custom widget class that is provided
# by this plugin.
def name(self):
return "PyAnalogClock"
# Returns the name of the group in Qt Designer's widget box that this
# widget belongs to.
def group(self):
return "PyQt Examples"
# Returns the icon used to represent the custom widget in Qt Designer's
# widget box.
def icon(self):
return QIcon(_logo_pixmap)
# Returns a short description of the custom widget for use in a tool tip.
def toolTip(self):
return ""
# Returns a short description of the custom widget for use in a "What's
# This?" help message for the widget.
def whatsThis(self):
return ""
# Returns True if the custom widget acts as a container for other widgets;
# otherwise returns False. Note that plugins for custom containers also
# need to provide an implementation of the QDesignerContainerExtension
# interface if they need to add custom editing support to Qt Designer.
def isContainer(self):
return False
# Returns an XML description of a custom widget instance that describes
# default values for its properties. Each custom widget created by this
# plugin will be configured using this description.
def domXml(self):
return '<widget class="PyAnalogClock" name="analogClock">\n' \
' <property name="toolTip">\n' \
' <string>The current time</string>\n' \
' </property>\n' \
' <property name="whatsThis">\n' \
' <string>The analog clock widget displays the current ' \
'time.</string>\n' \
' </property>\n' \
'</widget>\n'
# Returns the module containing the custom widget class. It may include
# a module path.
def includeFile(self):
return "analogclock"
# Define the image used for the icon.
_logo_16x16_xpm = [
"16 16 58 1",
"L c #2d2d2d",
"N c #4f4f4f",
"K c #636363",
"J c #666666",
"I c #696969",
"D c #727272",
"F c #737373",
"O c #757575",
"G c #7f7f7f",
"o c #878787",
"t c #888888",
"Y c #898989",
"c c #8a8a8a",
"d c #8b8b8b",
"H c #8d8d8d",
"Q c #8f8f8f",
"b c #909090",
"M c #959595",
"g c #979797",
"n c #989898",
"x c #999999",
"0 c #9a9a9a",
"X c #9b9b9b",
"a c #9d9d9d",
"E c #9e9e9e",
"1 c #9f9f9f",
"T c #a0a0a0",
"v c #a1a1a1",
"r c #a2a2a2",
"B c #a6a6a6",
"R c #a7a7a7",
"3 c #a8a8a8",
"z c #aaaaaa",
"A c #ababab",
"m c #acacac",
"h c #adadad",
"u c #b1b1b1",
"q c #b2b2b2",
"V c #bfbfbf",
"W c #c6c6c6",
"w c #c7c7c7",
"s c #c8c8c8",
"p c #c9c9c9",
"k c #cdcdcd",
"l c #cfcfcf",
"2 c #d3d3d3",
"S c #d4d4d4",
"C c #d5d5d5",
"y c #d8d8d8",
"# c #d9d9d9",
"e c #dadada",
"i c #dbdbdb",
"P c #dcdcdc",
"U c #dfdfdf",
"j c #e1e1e1",
"f c #fbfbfb",
"Z c #fcfcfc",
". c #ffffff",
"....#abcdbae....",
"..fghijkljimnf..",
".fopjjjqrjjjstf.",
".gsjjjjuvjjjjwx.",
"yvjjjjjzbjjjjjAi",
"BCjjjjjaDjjjjjiE",
"bjjjjjjEFjjjjjjG",
"HjjjjjjIJjjjjjjc",
"HjjjjjjnKLtjjjjc",
"bjjjjjjj#MNOPjjQ",
"RSjjjjjjjj#mdPiE",
"#TjjjjjjjjjjUjzP",
".nVjjjjjjjjjjWX.",
".fEVjjjjjjjjWYZ.",
"..f012jjjj2EXZ..",
"....i3QccQ3P...."]
_logo_pixmap = QPixmap(_logo_16x16_xpm)