57
56
#### Abstract Classes
59
58
"Abstract Class - Interface for Loggers"
61
def __init__(self,level): abstract
62
def log(self,level,category,message,osd=False): abstract
63
def stat(self,statType, fromDT, toDT, tag, layoutID, scheduleID, mediaID): abstract
64
def setXmds(self,xmds):
60
def __init__(self, level): abstract
61
def log(self, level, category, message, osd = False): abstract
62
def stat(self, statType, fromDT, toDT, tag, layoutID, scheduleID, mediaID): abstract
63
def setXmds(self, xmds):
68
def setupInfo(self,p):
67
def setupInfo(self, p):
72
self.liftEnabled = config.get('Lift','enabled')
71
self.liftEnabled = config.get('Lift', 'enabled')
73
72
if self.liftEnabled == "false":
74
73
self.liftEnabled = False
75
log.log(3,"audit",_("Disabling lift functionality in Logger"))
74
log.log(3, "audit", _("Disabling lift functionality in Logger"))
77
76
self.liftEnabled = True
78
log.log(3,"audit",_("Enabling lift functionality in Logger"))
77
log.log(3, "audit", _("Enabling lift functionality in Logger"))
80
79
self.liftEnabled = False
81
log.log(3,"error",_("Lift->enabled not defined in configuration. Disabling lift functionality in Logger"))
80
log.log(3, "error", _("Lift->enabled not defined in configuration. Disabling lift functionality in Logger"))
83
82
# Populate the info screen
85
84
tmpXML = '<rect fillcolor="ffffff" id="infoBG" fillopacity="0.75" size="(400,300)" />'
86
self.p.enqueue('add',(tmpXML,'info'))
85
self.p.enqueue('add', (tmpXML, 'info'))
88
87
# Logo + version bottom right
89
88
tmpXML = '<image href="resources/logo.png" id="infoLOGO" opacity="1" width="50" height="18" x="345" y="276" />'
90
self.p.enqueue('add',(tmpXML,'info'))
89
self.p.enqueue('add', (tmpXML, 'info'))
91
90
tmpXML = '<words x="290" y="280" opacity="1" text="v' + version + '" font="Arial" color="000000" fontsize="12" />'
92
self.p.enqueue('add',(tmpXML,'info'))
91
self.p.enqueue('add', (tmpXML, 'info'))
94
93
# Required Files Traffic Light
95
94
tmpXML = '<image href="resources/dotgrey.png" id="infoRFGrey" opacity="1" width="20" height="20" x="5" y="275" />'
96
self.p.enqueue('add',(tmpXML,'info'))
95
self.p.enqueue('add', (tmpXML, 'info'))
97
96
tmpXML = '<image href="resources/dotred.png" id="infoRFRed" opacity="0" width="20" height="20" x="5" y="275" />'
98
self.p.enqueue('add',(tmpXML,'info'))
97
self.p.enqueue('add', (tmpXML, 'info'))
99
98
tmpXML = '<image href="resources/dotamber.png" id="infoRFAmber" opacity="0" width="20" height="20" x="5" y="275" />'
100
self.p.enqueue('add',(tmpXML,'info'))
99
self.p.enqueue('add', (tmpXML, 'info'))
101
100
tmpXML = '<image href="resources/dotgreen.png" id="infoRFGreen" opacity="0" width="20" height="20" x="5" y="275" />'
102
self.p.enqueue('add',(tmpXML,'info'))
101
self.p.enqueue('add', (tmpXML, 'info'))
103
102
tmpXML = '<words x="10" y="270" opacity="1" text="Required Files" font="Arial" color="000000" fontsize="10" angle="-1.57079633" pivot="(0,0)"/>'
104
self.p.enqueue('add',(tmpXML,'info'))
103
self.p.enqueue('add' ,(tmpXML, 'info'))
106
105
# GetFile Traffic Light
107
106
tmpXML = '<image href="resources/dotgrey.png" id="infoGFGrey" opacity="1" width="20" height="20" x="30" y="275" />'
108
self.p.enqueue('add',(tmpXML,'info'))
107
self.p.enqueue('add', (tmpXML, 'info'))
109
108
tmpXML = '<image href="resources/dotred.png" id="infoGFRed" opacity="0" width="20" height="20" x="30" y="275" />'
110
self.p.enqueue('add',(tmpXML,'info'))
109
self.p.enqueue('add', (tmpXML, 'info'))
111
110
tmpXML = '<image href="resources/dotamber.png" id="infoGFAmber" opacity="0" width="20" height="20" x="30" y="275" />'
112
self.p.enqueue('add',(tmpXML,'info'))
111
self.p.enqueue('add', (tmpXML, 'info'))
113
112
tmpXML = '<image href="resources/dotgreen.png" id="infoGFGreen" opacity="0" width="20" height="20" x="30" y="275" />'
114
self.p.enqueue('add',(tmpXML,'info'))
113
self.p.enqueue('add', (tmpXML, 'info'))
115
114
tmpXML = '<words x="35" y="270" opacity="1" text="Get File" font="Arial" color="000000" fontsize="10" angle="-1.57079633" pivot="(0,0)"/>'
116
self.p.enqueue('add',(tmpXML,'info'))
115
self.p.enqueue('add', (tmpXML, 'info'))
117
116
tmpXML = '<words id="infoRunningDownloads" x="37" y="278" opacity="1" text="0" font="Arial" color="000000" fontsize="10" />'
118
self.p.enqueue('add',(tmpXML,'info'))
117
self.p.enqueue('add', (tmpXML, 'info'))
120
119
# Schedule Traffic Light
121
120
tmpXML = '<image href="resources/dotgrey.png" id="infoSGrey" opacity="1" width="20" height="20" x="55" y="275" />'
122
self.p.enqueue('add',(tmpXML,'info'))
121
self.p.enqueue('add', (tmpXML, 'info'))
123
122
tmpXML = '<image href="resources/dotred.png" id="infoSRed" opacity="0" width="20" height="20" x="55" y="275" />'
124
self.p.enqueue('add',(tmpXML,'info'))
123
self.p.enqueue('add', (tmpXML, 'info'))
125
124
tmpXML = '<image href="resources/dotamber.png" id="infoSAmber" opacity="0" width="20" height="20" x="55" y="275" />'
126
self.p.enqueue('add',(tmpXML,'info'))
125
self.p.enqueue('add', (tmpXML, 'info'))
127
126
tmpXML = '<image href="resources/dotgreen.png" id="infoSGreen" opacity="0" width="20" height="20" x="55" y="275" />'
128
self.p.enqueue('add',(tmpXML,'info'))
127
self.p.enqueue('add', (tmpXML, 'info'))
129
128
tmpXML = '<words x="60" y="270" opacity="1" text="Schedule" font="Arial" color="000000" fontsize="10" angle="-1.57079633" pivot="(0,0)"/>'
130
self.p.enqueue('add',(tmpXML,'info'))
129
self.p.enqueue('add', (tmpXML, 'info'))
132
131
# RegisterDisplay Traffic Light
133
132
tmpXML = '<image href="resources/dotgrey.png" id="infoRDGrey" opacity="1" width="20" height="20" x="80" y="275" />'
134
self.p.enqueue('add',(tmpXML,'info'))
133
self.p.enqueue('add', (tmpXML, 'info'))
135
134
tmpXML = '<image href="resources/dotred.png" id="infoRDRed" opacity="0" width="20" height="20" x="80" y="275" />'
136
self.p.enqueue('add',(tmpXML,'info'))
135
self.p.enqueue('add', (tmpXML, 'info'))
137
136
tmpXML = '<image href="resources/dotamber.png" id="infoRDAmber" opacity="0" width="20" height="20" x="80" y="275" />'
138
self.p.enqueue('add',(tmpXML,'info'))
137
self.p.enqueue('add', (tmpXML, 'info'))
139
138
tmpXML = '<image href="resources/dotgreen.png" id="infoRDGreen" opacity="0" width="20" height="20" x="80" y="275" />'
140
self.p.enqueue('add',(tmpXML,'info'))
139
self.p.enqueue('add', (tmpXML, 'info'))
141
140
tmpXML = '<words x="85" y="270" opacity="1" text="Register Display" font="Arial" color="000000" fontsize="10" angle="-1.57079633" pivot="(0,0)"/>'
142
self.p.enqueue('add',(tmpXML,'info'))
141
self.p.enqueue('add', (tmpXML, 'info'))
144
143
# Logs Traffic Light
145
144
tmpXML = '<image href="resources/dotgrey.png" id="infoLogGrey" opacity="1" width="20" height="20" x="105" y="275" />'
146
self.p.enqueue('add',(tmpXML,'info'))
145
self.p.enqueue('add', (tmpXML, 'info'))
147
146
tmpXML = '<image href="resources/dotred.png" id="infoLogRed" opacity="0" width="20" height="20" x="105" y="275" />'
148
self.p.enqueue('add',(tmpXML,'info'))
147
self.p.enqueue('add', (tmpXML, 'info'))
149
148
tmpXML = '<image href="resources/dotamber.png" id="infoLogAmber" opacity="0" width="20" height="20" x="105" y="275" />'
150
self.p.enqueue('add',(tmpXML,'info'))
149
self.p.enqueue('add', (tmpXML, 'info'))
151
150
tmpXML = '<image href="resources/dotgreen.png" id="infoLogGreen" opacity="0" width="20" height="20" x="105" y="275" />'
152
self.p.enqueue('add',(tmpXML,'info'))
151
self.p.enqueue('add', (tmpXML, 'info'))
153
152
tmpXML = '<words x="110" y="270" opacity="1" text="Log" font="Arial" color="000000" fontsize="10" angle="-1.57079633" pivot="(0,0)"/>'
154
self.p.enqueue('add',(tmpXML,'info'))
153
self.p.enqueue('add', (tmpXML, 'info'))
156
155
# Stats Traffic Light
157
156
tmpXML = '<image href="resources/dotgrey.png" id="infoStatGrey" opacity="1" width="20" height="20" x="130" y="275" />'
158
self.p.enqueue('add',(tmpXML,'info'))
157
self.p.enqueue('add', (tmpXML, 'info'))
159
158
tmpXML = '<image href="resources/dotred.png" id="infoStatRed" opacity="0" width="20" height="20" x="130" y="275" />'
160
self.p.enqueue('add',(tmpXML,'info'))
159
self.p.enqueue('add', (tmpXML, 'info'))
161
160
tmpXML = '<image href="resources/dotamber.png" id="infoStatAmber" opacity="0" width="20" height="20" x="130" y="275" />'
162
self.p.enqueue('add',(tmpXML,'info'))
161
self.p.enqueue('add', (tmpXML, 'info'))
163
162
tmpXML = '<image href="resources/dotgreen.png" id="infoStatGreen" opacity="0" width="20" height="20" x="130" y="275" />'
164
self.p.enqueue('add',(tmpXML,'info'))
163
self.p.enqueue('add', (tmpXML, 'info'))
165
164
tmpXML = '<words x="135" y="270" opacity="1" text="Stats" font="Arial" color="000000" fontsize="10" angle="-1.57079633" pivot="(0,0)"/>'
166
self.p.enqueue('add',(tmpXML,'info'))
165
self.p.enqueue('add', (tmpXML, 'info'))
167
# Offline Update traffic light
168
tmpXML = '<image href="resources/dotamber.png" id="offlineUpdateAmber" opacity="0" width="20" height="20" x="20" y="20" />'
169
self.p.enqueue('add', (tmpXML, 'offlineUpdate'))
170
tmpXML = '<image href="resources/dotgreen.png" id="offlineUpdateGreen" opacity="0" width="20" height="20" x="20" y="20" />'
171
self.p.enqueue('add', (tmpXML, 'offlineUpdate'))
169
174
tmpXML = '<words x="5" y="5" opacity="1" text="IP Address: " font="Arial" color="000000" fontsize="11" />'
170
self.p.enqueue('add',(tmpXML,'info'))
175
self.p.enqueue('add', (tmpXML, 'info'))
171
176
tmpXML = '<words id="infoIP" x="75" y="5" opacity="1" text="" font="Arial" color="000000" fontsize="11" width="180" linespacing="10" alignment="left" />'
172
self.p.enqueue('add',(tmpXML,'info'))
177
self.p.enqueue('add', (tmpXML, 'info'))
175
180
tmpXML = '<words x="5" y="18" opacity="1" text="Disk Space: " font="Arial" color="000000" fontsize="11" />'
176
self.p.enqueue('add',(tmpXML,'info'))
181
self.p.enqueue('add', (tmpXML, 'info'))
177
182
tmpXML = '<words id="infoDisk" x="75" y="18" opacity="1" text="" font="Arial" color="000000" fontsize="11" width="180" linespacing="10" alignment="left" />'
178
self.p.enqueue('add',(tmpXML,'info'))
183
self.p.enqueue('add', (tmpXML, 'info'))
180
185
# Lift Traffic Lights
181
186
if self.liftEnabled:
182
187
tmpXML = '<image href="resources/dotgrey.png" id="infoLift1Grey" opacity="1" width="10" height="10" x="165" y="285" />'
183
self.p.enqueue('add',(tmpXML,'info'))
188
self.p.enqueue('add', (tmpXML, 'info'))
184
189
tmpXML = '<image href="resources/dotred.png" id="infoLift1Red" opacity="0" width="10" height="10" x="165" y="285" />'
185
self.p.enqueue('add',(tmpXML,'info'))
190
self.p.enqueue('add', (tmpXML, 'info'))
186
191
tmpXML = '<image href="resources/dotamber.png" id="infoLift1Amber" opacity="0" width="10" height="10" x="165" y="285" />'
187
self.p.enqueue('add',(tmpXML,'info'))
192
self.p.enqueue('add', (tmpXML, 'info'))
188
193
tmpXML = '<image href="resources/dotgreen.png" id="infoLift1Green" opacity="0" width="10" height="10" x="165" y="285" />'
189
self.p.enqueue('add',(tmpXML,'info'))
194
self.p.enqueue('add', (tmpXML, 'info'))
191
196
tmpXML = '<image href="resources/dotgrey.png" id="infoLift2Grey" opacity="1" width="10" height="10" x="180" y="285" />'
192
self.p.enqueue('add',(tmpXML,'info'))
197
self.p.enqueue('add', (tmpXML, 'info'))
193
198
tmpXML = '<image href="resources/dotred.png" id="infoLift2Red" opacity="0" width="10" height="10" x="180" y="285" />'
194
self.p.enqueue('add',(tmpXML,'info'))
199
self.p.enqueue('add', (tmpXML, 'info'))
195
200
tmpXML = '<image href="resources/dotamber.png" id="infoLift2Amber" opacity="0" width="10" height="10" x="180" y="285" />'
196
self.p.enqueue('add',(tmpXML,'info'))
201
self.p.enqueue('add', (tmpXML, 'info'))
197
202
tmpXML = '<image href="resources/dotgreen.png" id="infoLift2Green" opacity="0" width="10" height="10" x="180" y="285" />'
198
self.p.enqueue('add',(tmpXML,'info'))
203
self.p.enqueue('add', (tmpXML, 'info'))
200
205
tmpXML = '<image href="resources/dotgrey.png" id="infoLift3Grey" opacity="1" width="10" height="10" x="195" y="285" />'
201
self.p.enqueue('add',(tmpXML,'info'))
206
self.p.enqueue('add', (tmpXML, 'info'))
202
207
tmpXML = '<image href="resources/dotred.png" id="infoLift3Red" opacity="0" width="10" height="10" x="195" y="285" />'
203
self.p.enqueue('add',(tmpXML,'info'))
208
self.p.enqueue('add', (tmpXML, 'info'))
204
209
tmpXML = '<image href="resources/dotamber.png" id="infoLift3Amber" opacity="0" width="10" height="10" x="195" y="285" />'
205
self.p.enqueue('add',(tmpXML,'info'))
210
self.p.enqueue('add', (tmpXML, 'info'))
206
211
tmpXML = '<image href="resources/dotgreen.png" id="infoLift3Green" opacity="0" width="10" height="10" x="195" y="285" />'
207
self.p.enqueue('add',(tmpXML,'info'))
212
self.p.enqueue('add', (tmpXML, 'info'))
209
214
tmpXML = '<image href="resources/dotgrey.png" id="infoLift4Grey" opacity="1" width="10" height="10" x="210" y="285" />'
210
self.p.enqueue('add',(tmpXML,'info'))
215
self.p.enqueue('add', (tmpXML, 'info'))
211
216
tmpXML = '<image href="resources/dotred.png" id="infoLift4Red" opacity="0" width="10" height="10" x="210" y="285" />'
212
self.p.enqueue('add',(tmpXML,'info'))
217
self.p.enqueue('add', (tmpXML, 'info'))
213
218
tmpXML = '<image href="resources/dotamber.png" id="infoLift4Amber" opacity="0" width="10" height="10" x="210" y="285" />'
214
self.p.enqueue('add',(tmpXML,'info'))
219
self.p.enqueue('add', (tmpXML, 'info'))
215
220
tmpXML = '<image href="resources/dotgreen.png" id="infoLift4Green" opacity="0" width="10" height="10" x="210" y="285" />'
216
self.p.enqueue('add',(tmpXML,'info'))
221
self.p.enqueue('add', (tmpXML, 'info'))
218
223
tmpXML = '<image href="resources/dotgrey.png" id="infoLift5Grey" opacity="1" width="10" height="10" x="225" y="285" />'
219
self.p.enqueue('add',(tmpXML,'info'))
224
self.p.enqueue('add', (tmpXML, 'info'))
220
225
tmpXML = '<image href="resources/dotred.png" id="infoLift5Red" opacity="0" width="10" height="10" x="225" y="285" />'
221
self.p.enqueue('add',(tmpXML,'info'))
226
self.p.enqueue('add', (tmpXML, 'info'))
222
227
tmpXML = '<image href="resources/dotamber.png" id="infoLift5Amber" opacity="0" width="10" height="10" x="225" y="285" />'
223
self.p.enqueue('add',(tmpXML,'info'))
228
self.p.enqueue('add', (tmpXML, 'info'))
224
229
tmpXML = '<image href="resources/dotgreen.png" id="infoLift5Green" opacity="0" width="10" height="10" x="225" y="285" />'
225
self.p.enqueue('add',(tmpXML,'info'))
230
self.p.enqueue('add', (tmpXML, 'info'))
227
232
tmpXML = '<image href="resources/dotgrey.png" id="infoLift6Grey" opacity="1" width="10" height="10" x="240" y="285" />'
228
self.p.enqueue('add',(tmpXML,'info'))
233
self.p.enqueue('add', (tmpXML, 'info'))
229
234
tmpXML = '<image href="resources/dotred.png" id="infoLift6Red" opacity="0" width="10" height="10" x="240" y="285" />'
230
self.p.enqueue('add',(tmpXML,'info'))
235
self.p.enqueue('add', (tmpXML, 'info'))
231
236
tmpXML = '<image href="resources/dotamber.png" id="infoLift6Amber" opacity="0" width="10" height="10" x="240" y="285" />'
232
self.p.enqueue('add',(tmpXML,'info'))
237
self.p.enqueue('add', (tmpXML, 'info'))
233
238
tmpXML = '<image href="resources/dotgreen.png" id="infoLift6Green" opacity="0" width="10" height="10" x="240" y="285" />'
234
self.p.enqueue('add',(tmpXML,'info'))
239
self.p.enqueue('add', (tmpXML, 'info'))
236
241
tmpXML = '<image href="resources/dotgrey.png" id="infoLift7Grey" opacity="1" width="10" height="10" x="255" y="285" />'
237
self.p.enqueue('add',(tmpXML,'info'))
242
self.p.enqueue('add', (tmpXML, 'info'))
238
243
tmpXML = '<image href="resources/dotred.png" id="infoLift7Red" opacity="0" width="10" height="10" x="255" y="285" />'
239
self.p.enqueue('add',(tmpXML,'info'))
244
self.p.enqueue('add', (tmpXML, 'info'))
240
245
tmpXML = '<image href="resources/dotamber.png" id="infoLift7Amber" opacity="0" width="10" height="10" x="255" y="285" />'
241
self.p.enqueue('add',(tmpXML,'info'))
246
self.p.enqueue('add', (tmpXML, 'info'))
242
247
tmpXML = '<image href="resources/dotgreen.png" id="infoLift7Green" opacity="0" width="10" height="10" x="255" y="285" />'
243
self.p.enqueue('add',(tmpXML,'info'))
248
self.p.enqueue('add', (tmpXML, 'info'))
245
250
tmpXML = '<image href="resources/dotgrey.png" id="infoLift8Grey" opacity="1" width="10" height="10" x="270" y="285" />'
246
self.p.enqueue('add',(tmpXML,'info'))
251
self.p.enqueue('add', (tmpXML, 'info'))
247
252
tmpXML = '<image href="resources/dotred.png" id="infoLift8Red" opacity="0" width="10" height="10" x="270" y="285" />'
248
self.p.enqueue('add',(tmpXML,'info'))
253
self.p.enqueue('add', (tmpXML, 'info'))
249
254
tmpXML = '<image href="resources/dotamber.png" id="infoLift8Amber" opacity="0" width="10" height="10" x="270" y="285" />'
250
self.p.enqueue('add',(tmpXML,'info'))
255
self.p.enqueue('add', (tmpXML, 'info'))
251
256
tmpXML = '<image href="resources/dotgreen.png" id="infoLift8Green" opacity="0" width="10" height="10" x="270" y="285" />'
252
self.p.enqueue('add',(tmpXML,'info'))
257
self.p.enqueue('add', (tmpXML, 'info'))
255
260
tmpXML = '<words id="infoLiftTag" x="165" y="265" opacity="1" text="Current Tag: default" font="Arial" color="000000" fontsize="11" />'
256
self.p.enqueue('add',(tmpXML,'info'))
261
self.p.enqueue('add', (tmpXML, 'info'))
259
264
tmpXML = '<words x="5" y="75" opacity="1" text="Schedule" font="Arial" color="000000" fontsize="14" />'
260
self.p.enqueue('add',(tmpXML,'info'))
265
self.p.enqueue('add', (tmpXML, 'info'))
261
266
tmpXML = '<words id="infoCurrentSchedule" x="5" y="90" opacity="1" text="" font="Arial" color="000000" fontsize="11" width="180" linespacing="10" alignment="left" />'
262
self.p.enqueue('add',(tmpXML,'info'))
267
self.p.enqueue('add', (tmpXML, 'info'))
265
270
tmpXML = '<words x="5" y="40" opacity="1" text="Now Playing" font="Arial" color="000000" fontsize="14" />'
266
self.p.enqueue('add',(tmpXML,'info'))
271
self.p.enqueue('add', (tmpXML, 'info'))
267
272
tmpXML = '<words id="infoNowPlaying" x="5" y="55" opacity="1" text="" font="Arial" color="000000" fontsize="11" />'
268
self.p.enqueue('add',(tmpXML,'info'))
273
self.p.enqueue('add', (tmpXML, 'info'))
271
276
tmpXML = '<words x="205" y="5" opacity="1" text="Media" font="Arial" color="000000" fontsize="14" />'
272
self.p.enqueue('add',(tmpXML,'info'))
277
self.p.enqueue('add', (tmpXML, 'info'))
273
278
tmpXML = '<words id="infoMedia" x="205" y="20" opacity="1" text="" font="Arial" color="000000" fontsize="11" />'
274
self.p.enqueue('add',(tmpXML,'info'))
279
self.p.enqueue('add', (tmpXML, 'info'))
276
281
# On Screen Logging
277
282
tmpXML = '<rect fillcolor="ffffff" id="osLogBG" fillopacity="0.75" size="(%d,%d)" />' % (self.p.osLogX, 20)
278
self.p.enqueue('add',(tmpXML,'osLog'))
283
self.p.enqueue('add', (tmpXML, 'osLog'))
279
284
tmpXML = '<words id="osLogText" x="5" y="3" opacity="1" text="Xibo Client v%s" font="Arial" color="000000" fontsize="11" />' % version
280
self.p.enqueue('add',(tmpXML,'osLog'))
285
self.p.enqueue('add', (tmpXML, 'osLog'))
282
def lights(self,field,value):
287
def lights(self, field, value):
283
288
if value == "green":
284
self.p.enqueue('setOpacity',("info" + field + "Green", 1))
285
self.p.enqueue('setOpacity',("info" + field + "Grey", 0))
286
self.p.enqueue('setOpacity',("info" + field + "Amber", 0))
287
self.p.enqueue('setOpacity',("info" + field + "Red", 0))
289
self.p.enqueue('setOpacity', ("info" + field + "Green", 1))
290
self.p.enqueue('setOpacity', ("info" + field + "Grey", 0))
291
self.p.enqueue('setOpacity', ("info" + field + "Amber", 0))
292
self.p.enqueue('setOpacity', ("info" + field + "Red", 0))
288
293
if value == "red":
289
self.p.enqueue('setOpacity',("info" + field + "Green", 0))
290
self.p.enqueue('setOpacity',("info" + field + "Grey", 0))
291
self.p.enqueue('setOpacity',("info" + field + "Amber", 0))
292
self.p.enqueue('setOpacity',("info" + field + "Red", 1))
294
self.p.enqueue('setOpacity', ("info" + field + "Green", 0))
295
self.p.enqueue('setOpacity', ("info" + field + "Grey", 0))
296
self.p.enqueue('setOpacity', ("info" + field + "Amber", 0))
297
self.p.enqueue('setOpacity', ("info" + field + "Red", 1))
293
298
if value == "amber":
294
self.p.enqueue('setOpacity',("info" + field + "Green", 0))
295
self.p.enqueue('setOpacity',("info" + field + "Grey", 0))
296
self.p.enqueue('setOpacity',("info" + field + "Amber", 1))
297
self.p.enqueue('setOpacity',("info" + field + "Red", 0))
299
self.p.enqueue('setOpacity', ("info" + field + "Green", 0))
300
self.p.enqueue('setOpacity', ("info" + field + "Grey", 0))
301
self.p.enqueue('setOpacity', ("info" + field + "Amber", 1))
302
self.p.enqueue('setOpacity', ("info" + field + "Red", 0))
298
303
if value == "grey":
299
self.p.enqueue('setOpacity',("info" + field + "Green", 0))
300
self.p.enqueue('setOpacity',("info" + field + "Grey", 1))
301
self.p.enqueue('setOpacity',("info" + field + "Amber", 0))
302
self.p.enqueue('setOpacity',("info" + field + "Red", 0))
304
self.p.enqueue('setOpacity', ("info" + field + "Green", 0))
305
self.p.enqueue('setOpacity', ("info" + field + "Grey", 1))
306
self.p.enqueue('setOpacity', ("info" + field + "Amber", 0))
307
self.p.enqueue('setOpacity', ("info" + field + "Red", 0))
309
self.p.enqueue('setOpacity', ("%sAmber" % field, 1))
310
self.p.enqueue('setOpacity', ("%sGreen" % field, 0))
311
if value == "finish":
312
self.p.enqueue('setOpacity', ("%sAmber" % field, 0))
313
self.p.enqueue('setOpacity', ("%sGreen" % field, 1))
314
self.p.enqueue('anim', ('fadeOut', '%sGreen' % field, 3000, None))
304
def updateSchedule(self,schedule):
305
self.p.enqueue('del','infoCurrentSchedule')
316
def updateSchedule(self, schedule):
317
self.p.enqueue('del', 'infoCurrentSchedule')
306
318
tmpXML = '<words id="infoCurrentSchedule" x="5" y="90" opacity="1" text="' + schedule + '" font="Arial" color="000000" fontsize="11" width="180" linespacing="10" alignment="left" />'
307
self.p.enqueue('add',(tmpXML,'info'))
319
self.p.enqueue('add', (tmpXML, 'info'))
309
def updateNowPlaying(self,now):
310
self.p.enqueue('del','infoNowPlaying')
321
def updateNowPlaying(self, now):
322
self.p.enqueue('del', 'infoNowPlaying')
311
323
tmpXML = '<words id="infoNowPlaying" x="5" y="55" opacity="1" text="' + now + '" font="Arial" color="000000" fontsize="11" />'
312
self.p.enqueue('add',(tmpXML,'info'))
324
self.p.enqueue('add', (tmpXML, 'info'))
314
def updateMedia(self,media):
315
self.p.enqueue('del','infoMedia')
326
def updateMedia(self, media):
327
self.p.enqueue('del', 'infoMedia')
316
328
tmpXML = '<words id="infoMedia" x="205" y="20" opacity="1" font="Arial" color="000000" fontsize="11" width="180">' + media + '</words>'
317
self.p.enqueue('add',(tmpXML,'info'))
329
self.p.enqueue('add', (tmpXML, 'info'))
319
def updateRunningDownloads(self,num):
320
self.p.enqueue('del','infoRunningDownloads')
331
def updateRunningDownloads(self, num):
332
self.p.enqueue('del', 'infoRunningDownloads')
321
333
tmpXML = '<words id="infoRunningDownloads" x="37" y="278" opacity="1" text="' + str(num) + '" font="Arial" color="000000" fontsize="10" />'
322
self.p.enqueue('add',(tmpXML,'info'))
334
self.p.enqueue('add', (tmpXML, 'info'))
324
def updateIP(self,serverIP):
325
self.p.enqueue('del','infoIP')
336
def updateIP(self, serverIP):
337
self.p.enqueue('del', 'infoIP')
326
338
tmpXML = '<words id="infoIP" x="75" y="5" opacity="1" text="' + str(serverIP) + '" font="Arial" color="000000" fontsize="10" />'
327
self.p.enqueue('add',(tmpXML,'info'))
339
self.p.enqueue('add', (tmpXML, 'info'))
329
def updateFreeSpace(self,tup):
341
def updateFreeSpace(self, tup):
330
342
perc = int((tup[1] * 1.0 / tup[0]) * 100)
331
self.p.enqueue('del','infoDisk')
343
self.p.enqueue('del', 'infoDisk')
332
344
tmpXML = '<words id="infoDisk" x="75" y="18" opacity="1" text="' + self.bytestr(tup[1]) + ' (' + str(perc) + '%) free" font="Arial" color="000000" fontsize="10" />'
333
self.p.enqueue('add',(tmpXML,'info'))
345
self.p.enqueue('add', (tmpXML, 'info'))
335
347
# Convert a value in bytes to human readable format
336
348
# Taken from http://stackoverflow.com/questions/1094841/reusable-library-to-get-human-readable-version-of-file-size
337
349
# By Sridhar Ratnakumar
338
350
# Assumed Public Domain
339
def bytestr(self,size):
340
for x in ['bytes','KB','MB','GB','TB']:
351
def bytestr(self, size):
352
for x in ['bytes', 'KB', 'MB', 'GB', 'TB']:
341
353
if size < 1024.0:
342
354
return "%3.1f %s" % (size, x)
345
def updateLift(self,tag):
357
def updateLift(self, tag):
346
358
# Break out if lift is disabled
347
359
if not self.liftEnabled:
350
self.p.enqueue('del','infoLiftTag')
362
self.p.enqueue('del', 'infoLiftTag')
351
363
tmpXML = '<words id="infoLiftTag" x="165" y="265" opacity="1" text="Current Tag: ' + tag + '" font="Arial" color="000000" fontsize="11" />'
352
self.p.enqueue('add',(tmpXML,'info'))
364
self.p.enqueue('add', (tmpXML, 'info'))
354
def osLog(self,message):
355
self.p.enqueue('del','osLogText')
366
def osLog(self, message):
367
self.p.enqueue('del', 'osLogText')
356
368
tmpXML = '<words id="osLogText" x="5" y="3" opacity="1" text="%s" font="Arial" color="000000" fontsize="11" />' % message
357
self.p.enqueue('add',(tmpXML,'osLog'))
369
self.p.enqueue('add', (tmpXML, 'osLog'))
359
371
class XiboScheduler(Thread):
360
372
"Abstract Class - Interface for Schedulers"