1
# -*- coding: utf-8 -*-
2
# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4
4
###############################################################################
5
# OpenLP - Open Source Lyrics Projection #
6
# --------------------------------------------------------------------------- #
7
# Copyright (c) 2008-2012 Raoul Snyman #
8
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
9
# Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, #
10
# Armin Kƶhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias #
11
# PƵldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, #
12
# Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund #
13
# --------------------------------------------------------------------------- #
14
# This program is free software; you can redistribute it and/or modify it #
15
# under the terms of the GNU General Public License as published by the Free #
16
# Software Foundation; version 2 of the License. #
18
# This program is distributed in the hope that it will be useful, but WITHOUT #
19
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or #
20
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for #
23
# You should have received a copy of the GNU General Public License along #
24
# with this program; if not, write to the Free Software Foundation, Inc., 59 #
25
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
26
###############################################################################
28
The :mod:`advancedtab` provides an advanced settings facility.
30
from datetime import datetime, timedelta
32
from PyQt4 import QtCore, QtGui
34
from openlp.core.lib import SettingsTab, translate, build_icon, Receiver
35
from openlp.core.lib.ui import UiStrings
36
from openlp.core.lib import SlideLimits
37
from openlp.core.utils import get_images_filter
39
class AdvancedTab(SettingsTab):
41
The :class:`AdvancedTab` manages the advanced settings tab including the UI
42
and the loading and saving of the displayed settings.
44
def __init__(self, parent):
46
Initialise the settings tab
48
self.displayChanged = False
49
# 7 stands for now, 0 to 6 is Monday to Sunday.
50
self.defaultServiceDay = 7
51
# 11 o'clock is the most popular time for morning service.
52
self.defaultServiceHour = 11
53
self.defaultServiceMinute = 0
54
self.defaultServiceName = unicode(translate('OpenLP.AdvancedTab',
55
'Service %Y-%m-%d %H-%M',
56
'This may not contain any of the following characters: '
58
'See http://docs.python.org/library/datetime.html'
59
'#strftime-strptime-behavior for more information.'))
60
self.defaultImage = u':/graphics/openlp-splash-screen.png'
61
self.defaultColor = u'#ffffff'
62
self.icon_path = u':/system/system_settings.png'
63
advanced_translated = translate('OpenLP.AdvancedTab', 'Advanced')
64
SettingsTab.__init__(self, parent, u'Advanced', advanced_translated)
68
Configure the UI elements for the tab.
70
self.setObjectName(u'AdvancedTab')
71
SettingsTab.setupUi(self)
72
self.uiGroupBox = QtGui.QGroupBox(self.leftColumn)
73
self.uiGroupBox.setObjectName(u'uiGroupBox')
74
self.uiLayout = QtGui.QFormLayout(self.uiGroupBox)
75
self.uiLayout.setObjectName(u'uiLayout')
76
self.recentLabel = QtGui.QLabel(self.uiGroupBox)
77
self.recentLabel.setObjectName(u'recentLabel')
78
self.recentSpinBox = QtGui.QSpinBox(self.uiGroupBox)
79
self.recentSpinBox.setObjectName(u'recentSpinBox')
80
self.recentSpinBox.setMinimum(0)
81
self.uiLayout.addRow(self.recentLabel, self.recentSpinBox)
82
self.mediaPluginCheckBox = QtGui.QCheckBox(self.uiGroupBox)
83
self.mediaPluginCheckBox.setObjectName(u'mediaPluginCheckBox')
84
self.uiLayout.addRow(self.mediaPluginCheckBox)
85
self.doubleClickLiveCheckBox = QtGui.QCheckBox(self.uiGroupBox)
86
self.doubleClickLiveCheckBox.setObjectName(u'doubleClickLiveCheckBox')
87
self.uiLayout.addRow(self.doubleClickLiveCheckBox)
88
self.singleClickPreviewCheckBox = QtGui.QCheckBox(self.uiGroupBox)
89
self.singleClickPreviewCheckBox.setObjectName(
90
u'singleClickPreviewCheckBox')
91
self.uiLayout.addRow(self.singleClickPreviewCheckBox)
92
self.expandServiceItemCheckBox = QtGui.QCheckBox(self.uiGroupBox)
93
self.expandServiceItemCheckBox.setObjectName(
94
u'expandServiceItemCheckBox')
95
self.uiLayout.addRow(self.expandServiceItemCheckBox)
96
self.enableAutoCloseCheckBox = QtGui.QCheckBox(self.uiGroupBox)
97
self.enableAutoCloseCheckBox.setObjectName(
98
u'enableAutoCloseCheckBox')
99
self.uiLayout.addRow(self.enableAutoCloseCheckBox)
100
self.leftLayout.addWidget(self.uiGroupBox)
101
# Default service name
102
self.serviceNameGroupBox = QtGui.QGroupBox(self.leftColumn)
103
self.serviceNameGroupBox.setObjectName(u'serviceNameGroupBox')
104
self.serviceNameLayout = QtGui.QFormLayout(
105
self.serviceNameGroupBox)
106
self.serviceNameCheckBox = QtGui.QCheckBox(
107
self.serviceNameGroupBox)
108
self.serviceNameCheckBox.setObjectName(u'serviceNameCheckBox')
109
self.serviceNameLayout.setObjectName(u'serviceNameLayout')
110
self.serviceNameLayout.addRow(self.serviceNameCheckBox)
111
self.serviceNameTimeLabel = QtGui.QLabel(self.serviceNameGroupBox)
112
self.serviceNameTimeLabel.setObjectName(u'serviceNameTimeLabel')
113
self.serviceNameDay = QtGui.QComboBox(
114
self.serviceNameGroupBox)
115
self.serviceNameDay.addItems(
116
[u'', u'', u'', u'', u'', u'', u'', u''])
117
self.serviceNameDay.setObjectName(
119
self.serviceNameTime = QtGui.QTimeEdit(self.serviceNameGroupBox)
120
self.serviceNameTime.setObjectName(u'serviceNameTime')
121
self.serviceNameTimeHBox = QtGui.QHBoxLayout()
122
self.serviceNameTimeHBox.setObjectName(u'serviceNameTimeHBox')
123
self.serviceNameTimeHBox.addWidget(self.serviceNameDay)
124
self.serviceNameTimeHBox.addWidget(self.serviceNameTime)
125
self.serviceNameLayout.addRow(self.serviceNameTimeLabel,
126
self.serviceNameTimeHBox)
127
self.serviceNameLabel = QtGui.QLabel(self.serviceNameGroupBox)
128
self.serviceNameLabel.setObjectName(u'serviceNameLabel')
129
self.serviceNameEdit = QtGui.QLineEdit(self.serviceNameGroupBox)
130
self.serviceNameEdit.setObjectName(u'serviceNameEdit')
131
self.serviceNameEdit.setValidator(QtGui.QRegExpValidator(
132
QtCore.QRegExp(r'[^/\\?*|<>\[\]":+]+'), self))
133
self.serviceNameRevertButton = QtGui.QToolButton(
134
self.serviceNameGroupBox)
135
self.serviceNameRevertButton.setObjectName(
136
u'serviceNameRevertButton')
137
self.serviceNameRevertButton.setIcon(
138
build_icon(u':/general/general_revert.png'))
139
self.serviceNameHBox = QtGui.QHBoxLayout()
140
self.serviceNameHBox.setObjectName(u'serviceNameHBox')
141
self.serviceNameHBox.addWidget(self.serviceNameEdit)
142
self.serviceNameHBox.addWidget(self.serviceNameRevertButton)
143
self.serviceNameLayout.addRow(self.serviceNameLabel,
144
self.serviceNameHBox)
145
self.serviceNameExampleLabel = QtGui.QLabel(
146
self.serviceNameGroupBox)
147
self.serviceNameExampleLabel.setObjectName(
148
u'serviceNameExampleLabel')
149
self.serviceNameExample = QtGui.QLabel(self.serviceNameGroupBox)
150
self.serviceNameExample.setObjectName(u'serviceNameExample')
151
self.serviceNameLayout.addRow(self.serviceNameExampleLabel,
152
self.serviceNameExample)
153
self.leftLayout.addWidget(self.serviceNameGroupBox)
154
self.leftLayout.addStretch()
156
self.defaultImageGroupBox = QtGui.QGroupBox(self.rightColumn)
157
self.defaultImageGroupBox.setObjectName(u'defaultImageGroupBox')
158
self.defaultImageLayout = QtGui.QFormLayout(self.defaultImageGroupBox)
159
self.defaultImageLayout.setObjectName(u'defaultImageLayout')
160
self.defaultColorLabel = QtGui.QLabel(self.defaultImageGroupBox)
161
self.defaultColorLabel.setObjectName(u'defaultColorLabel')
162
self.defaultColorButton = QtGui.QPushButton(self.defaultImageGroupBox)
163
self.defaultColorButton.setObjectName(u'defaultColorButton')
164
self.defaultImageLayout.addRow(self.defaultColorLabel,
165
self.defaultColorButton)
166
self.defaultFileLabel = QtGui.QLabel(self.defaultImageGroupBox)
167
self.defaultFileLabel.setObjectName(u'defaultFileLabel')
168
self.defaultFileEdit = QtGui.QLineEdit(self.defaultImageGroupBox)
169
self.defaultFileEdit.setObjectName(u'defaultFileEdit')
170
self.defaultBrowseButton = QtGui.QToolButton(self.defaultImageGroupBox)
171
self.defaultBrowseButton.setObjectName(u'defaultBrowseButton')
172
self.defaultBrowseButton.setIcon(
173
build_icon(u':/general/general_open.png'))
174
self.defaultRevertButton = QtGui.QToolButton(self.defaultImageGroupBox)
175
self.defaultRevertButton.setObjectName(u'defaultRevertButton')
176
self.defaultRevertButton.setIcon(
177
build_icon(u':/general/general_revert.png'))
178
self.defaultFileLayout = QtGui.QHBoxLayout()
179
self.defaultFileLayout.setObjectName(u'defaultFileLayout')
180
self.defaultFileLayout.addWidget(self.defaultFileEdit)
181
self.defaultFileLayout.addWidget(self.defaultBrowseButton)
182
self.defaultFileLayout.addWidget(self.defaultRevertButton)
183
self.defaultImageLayout.addRow(self.defaultFileLabel,
184
self.defaultFileLayout)
185
self.rightLayout.addWidget(self.defaultImageGroupBox)
187
self.hideMouseGroupBox = QtGui.QGroupBox(self.rightColumn)
188
self.hideMouseGroupBox.setObjectName(u'hideMouseGroupBox')
189
self.hideMouseLayout = QtGui.QVBoxLayout(self.hideMouseGroupBox)
190
self.hideMouseLayout.setObjectName(u'hideMouseLayout')
191
self.hideMouseCheckBox = QtGui.QCheckBox(self.hideMouseGroupBox)
192
self.hideMouseCheckBox.setObjectName(u'hideMouseCheckBox')
193
self.hideMouseLayout.addWidget(self.hideMouseCheckBox)
194
self.rightLayout.addWidget(self.hideMouseGroupBox)
195
# Service Item Slide Limits
196
self.slideGroupBox = QtGui.QGroupBox(self.rightColumn)
197
self.slideGroupBox.setObjectName(u'slideGroupBox')
198
self.slideLayout = QtGui.QFormLayout(self.slideGroupBox)
199
self.slideLayout.setLabelAlignment(
200
QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop)
201
self.slideLayout.setFormAlignment(
202
QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop)
203
self.slideLayout.setObjectName(u'slideLayout')
204
self.endSlideRadioButton = QtGui.QRadioButton(self.slideGroupBox)
205
self.endSlideRadioButton.setObjectName(u'endSlideRadioButton')
206
self.endSlideLabel = QtGui.QLabel(self.slideGroupBox)
207
self.endSlideLabel.setWordWrap(True)
208
self.endSlideLabel.setObjectName(u'endSlideLabel')
209
self.slideLayout.addRow(self.endSlideRadioButton, self.endSlideLabel)
210
self.wrapSlideRadioButton = QtGui.QRadioButton(self.slideGroupBox)
211
self.wrapSlideRadioButton.setObjectName(u'wrapSlideRadioButton')
212
self.wrapSlideLabel = QtGui.QLabel(self.slideGroupBox)
213
self.wrapSlideLabel.setWordWrap(True)
214
self.wrapSlideLabel.setObjectName(u'wrapSlideLabel')
215
self.slideLayout.addRow(self.wrapSlideRadioButton,
217
self.nextItemRadioButton = QtGui.QRadioButton(self.slideGroupBox)
218
self.nextItemRadioButton.setChecked(True)
219
self.nextItemRadioButton.setObjectName(u'nextItemRadioButton')
220
self.nextItemLabel = QtGui.QLabel(self.slideGroupBox)
221
self.nextItemLabel.setWordWrap(True)
222
self.nextItemLabel.setObjectName(u'nextItemLabel')
223
self.slideLayout.addRow(self.nextItemRadioButton,
225
self.rightLayout.addWidget(self.slideGroupBox)
226
self.x11GroupBox = QtGui.QGroupBox(self.leftColumn)
227
self.x11GroupBox.setObjectName(u'x11GroupBox')
228
self.x11Layout = QtGui.QVBoxLayout(self.x11GroupBox)
229
self.x11Layout.setObjectName(u'x11Layout')
230
self.x11BypassCheckBox = QtGui.QCheckBox(self.x11GroupBox)
231
self.x11BypassCheckBox.setObjectName(u'x11BypassCheckBox')
232
self.x11Layout.addWidget(self.x11BypassCheckBox)
233
self.rightLayout.addWidget(self.x11GroupBox)
234
self.rightLayout.addStretch()
236
self.shouldUpdateServiceNameExample = False
237
QtCore.QObject.connect(self.serviceNameCheckBox,
238
QtCore.SIGNAL(u'toggled(bool)'), self.serviceNameCheckBoxToggled)
239
QtCore.QObject.connect(self.serviceNameDay,
240
QtCore.SIGNAL(u'currentIndexChanged(int)'),
241
self.onServiceNameDayChanged)
242
QtCore.QObject.connect(self.serviceNameTime,
243
QtCore.SIGNAL(u'timeChanged(QTime)'),
244
self.updateServiceNameExample)
245
QtCore.QObject.connect(self.serviceNameEdit,
246
QtCore.SIGNAL(u'textChanged(QString)'),
247
self.updateServiceNameExample)
248
QtCore.QObject.connect(self.serviceNameRevertButton,
249
QtCore.SIGNAL(u'pressed()'),
250
self.onServiceNameRevertButtonPressed)
251
QtCore.QObject.connect(self.defaultColorButton,
252
QtCore.SIGNAL(u'pressed()'), self.onDefaultColorButtonPressed)
253
QtCore.QObject.connect(self.defaultBrowseButton,
254
QtCore.SIGNAL(u'pressed()'), self.onDefaultBrowseButtonPressed)
255
QtCore.QObject.connect(self.defaultRevertButton,
256
QtCore.SIGNAL(u'pressed()'), self.onDefaultRevertButtonPressed)
257
QtCore.QObject.connect(self.x11BypassCheckBox,
258
QtCore.SIGNAL(u'toggled(bool)'), self.onX11BypassCheckBoxToggled)
259
QtCore.QObject.connect(self.endSlideRadioButton,
260
QtCore.SIGNAL(u'pressed()'), self.onEndSlideButtonPressed)
261
QtCore.QObject.connect(self.wrapSlideRadioButton,
262
QtCore.SIGNAL(u'pressed()'), self.onWrapSlideButtonPressed)
263
QtCore.QObject.connect(self.nextItemRadioButton,
264
QtCore.SIGNAL(u'pressed()'), self.onnextItemButtonPressed)
266
def retranslateUi(self):
268
Setup the interface translation strings.
270
self.tabTitleVisible = UiStrings().Advanced
271
self.uiGroupBox.setTitle(
272
translate('OpenLP.AdvancedTab', 'UI Settings'))
273
self.recentLabel.setText(
274
translate('OpenLP.AdvancedTab',
275
'Number of recent files to display:'))
276
self.mediaPluginCheckBox.setText(translate('OpenLP.AdvancedTab',
277
'Remember active media manager tab on startup'))
278
self.doubleClickLiveCheckBox.setText(translate('OpenLP.AdvancedTab',
279
'Double-click to send items straight to live'))
280
self.singleClickPreviewCheckBox.setText(translate('OpenLP.AdvancedTab',
281
'Preview items when clicked in Media Manager'))
282
self.expandServiceItemCheckBox.setText(translate('OpenLP.AdvancedTab',
283
'Expand new service items on creation'))
284
self.enableAutoCloseCheckBox.setText(translate('OpenLP.AdvancedTab',
285
'Enable application exit confirmation'))
286
self.serviceNameGroupBox.setTitle(
287
translate('OpenLP.AdvancedTab', 'Default Service Name'))
288
self.serviceNameCheckBox.setText(
289
translate('OpenLP.AdvancedTab', 'Enable default service name'))
290
self.serviceNameTimeLabel.setText(
291
translate('OpenLP.AdvancedTab', 'Date and Time:'))
292
self.serviceNameDay.setItemText(0,
293
translate('OpenLP.AdvancedTab', 'Monday'))
294
self.serviceNameDay.setItemText(1,
295
translate('OpenLP.AdvancedTab', 'Tuesday'))
296
self.serviceNameDay.setItemText(2,
297
translate('OpenLP.AdvancedTab', 'Wednesday'))
298
self.serviceNameDay.setItemText(3,
299
translate('OpenLP.AdvancedTab', 'Thurdsday'))
300
self.serviceNameDay.setItemText(4,
301
translate('OpenLP.AdvancedTab', 'Friday'))
302
self.serviceNameDay.setItemText(5,
303
translate('OpenLP.AdvancedTab', 'Saturday'))
304
self.serviceNameDay.setItemText(6,
305
translate('OpenLP.AdvancedTab', 'Sunday'))
306
self.serviceNameDay.setItemText(7,
307
translate('OpenLP.AdvancedTab', 'Now'))
308
self.serviceNameTime.setToolTip(translate('OpenLP.AdvancedTab',
309
'Time when usual service starts.'))
310
self.serviceNameLabel.setText(
311
translate('OpenLP.AdvancedTab', 'Name:'))
312
self.serviceNameEdit.setToolTip(translate('OpenLP.AdvancedTab',
313
'Consult the OpenLP manual for usage.'))
314
self.serviceNameRevertButton.setToolTip(unicode(
315
translate('OpenLP.AdvancedTab',
316
'Revert to the default service name "%s".')) %
317
self.defaultServiceName)
318
self.serviceNameExampleLabel.setText(translate('OpenLP.AdvancedTab',
320
self.hideMouseGroupBox.setTitle(translate('OpenLP.AdvancedTab',
322
self.hideMouseCheckBox.setText(translate('OpenLP.AdvancedTab',
323
'Hide mouse cursor when over display window'))
324
self.defaultImageGroupBox.setTitle(translate('OpenLP.AdvancedTab',
326
self.defaultColorLabel.setText(translate('OpenLP.AdvancedTab',
327
'Background color:'))
328
self.defaultColorButton.setToolTip(translate('OpenLP.AdvancedTab',
329
'Click to select a color.'))
330
self.defaultFileLabel.setText(translate('OpenLP.AdvancedTab',
332
self.defaultBrowseButton.setToolTip(translate('OpenLP.AdvancedTab',
333
'Browse for an image file to display.'))
334
self.defaultRevertButton.setToolTip(translate('OpenLP.AdvancedTab',
335
'Revert to the default OpenLP logo.'))
336
self.x11GroupBox.setTitle(translate('OpenLP.AdvancedTab',
338
self.x11BypassCheckBox.setText(translate('OpenLP.AdvancedTab',
339
'Bypass X11 Window Manager'))
341
self.slideGroupBox.setTitle(
342
translate('OpenLP.GeneralTab', 'Service Item Slide Limits'))
343
self.endSlideRadioButton.setText(
344
translate('OpenLP.GeneralTab', '&End Slide'))
345
self.endSlideLabel.setText(
346
translate('OpenLP.GeneralTab', 'Up and down arrow keys '
347
'stop at the top and bottom slides of each Service Item.'))
348
self.wrapSlideRadioButton.setText(
349
translate('OpenLP.GeneralTab', '&Wrap Slide'))
350
self.wrapSlideLabel.setText(
351
translate('OpenLP.GeneralTab', 'Up and down arrow keys '
352
'wrap around at the top and bottom slides of each Service Item.'))
353
self.nextItemRadioButton.setText(
354
translate('OpenLP.GeneralTab', '&Next Item'))
355
self.nextItemLabel.setText(
356
translate('OpenLP.GeneralTab', 'Up and down arrow keys '
357
'advance to the next or previous Service Item from the '
358
'top and bottom slides of each Service Item.'))
362
Load settings from disk.
364
settings = QtCore.QSettings()
365
settings.beginGroup(self.settingsSection)
366
# The max recent files value does not have an interface and so never
367
# gets actually stored in the settings therefore the default value of
368
# 20 will always be used.
369
self.recentSpinBox.setMaximum(QtCore.QSettings().value(
370
u'max recent files', QtCore.QVariant(20)).toInt()[0])
371
self.recentSpinBox.setValue(settings.value(u'recent file count',
372
QtCore.QVariant(4)).toInt()[0])
373
self.mediaPluginCheckBox.setChecked(
374
settings.value(u'save current plugin',
375
QtCore.QVariant(False)).toBool())
376
self.doubleClickLiveCheckBox.setChecked(
377
settings.value(u'double click live',
378
QtCore.QVariant(False)).toBool())
379
self.singleClickPreviewCheckBox.setChecked(
380
settings.value(u'single click preview',
381
QtCore.QVariant(False)).toBool())
382
self.expandServiceItemCheckBox.setChecked(
383
settings.value(u'expand service item',
384
QtCore.QVariant(False)).toBool())
385
self.enableAutoCloseCheckBox.setChecked(
386
settings.value(u'enable exit confirmation',
387
QtCore.QVariant(True)).toBool())
388
self.hideMouseCheckBox.setChecked(
389
settings.value(u'hide mouse', QtCore.QVariant(False)).toBool())
390
self.serviceNameDay.setCurrentIndex(
391
settings.value(u'default service day',
392
QtCore.QVariant(self.defaultServiceDay)).toInt()[0])
393
self.serviceNameTime.setTime(QtCore.QTime(
394
settings.value(u'default service hour',
395
self.defaultServiceHour).toInt()[0],
396
settings.value(u'default service minute',
397
self.defaultServiceMinute).toInt()[0]))
398
self.shouldUpdateServiceNameExample = True
399
self.serviceNameEdit.setText(settings.value(u'default service name',
400
self.defaultServiceName).toString())
401
default_service_enabled = settings.value(u'default service enabled',
402
QtCore.QVariant(True)).toBool()
403
self.serviceNameCheckBox.setChecked(default_service_enabled)
404
self.serviceNameCheckBoxToggled(default_service_enabled)
405
self.x11BypassCheckBox.setChecked(
406
settings.value(u'x11 bypass wm', QtCore.QVariant(True)).toBool())
407
self.defaultColor = settings.value(u'default color',
408
QtCore.QVariant(u'#ffffff')).toString()
409
self.defaultFileEdit.setText(settings.value(u'default image',
410
QtCore.QVariant(u':/graphics/openlp-splash-screen.png'))\
412
self.slide_limits = settings.value(
413
u'slide limits', QtCore.QVariant(SlideLimits.End)).toInt()[0]
414
if self.slide_limits == SlideLimits.End:
415
self.endSlideRadioButton.setChecked(True)
416
elif self.slide_limits == SlideLimits.Wrap:
417
self.wrapSlideRadioButton.setChecked(True)
419
self.nextItemRadioButton.setChecked(True)
421
self.defaultColorButton.setStyleSheet(
422
u'background-color: %s' % self.defaultColor)
426
Save settings to disk.
428
settings = QtCore.QSettings()
429
settings.beginGroup(self.settingsSection)
430
settings.setValue(u'default service enabled',
431
self.serviceNameCheckBox.isChecked())
432
service_name = unicode(self.serviceNameEdit.text())
433
preset_is_valid = self.generateServiceNameExample()[0]
434
if service_name == self.defaultServiceName or not preset_is_valid:
435
settings.remove(u'default service name')
436
self.serviceNameEdit.setText(service_name)
438
settings.setValue(u'default service name', service_name)
439
settings.setValue(u'default service day',
440
self.serviceNameDay.currentIndex())
441
settings.setValue(u'default service hour',
442
self.serviceNameTime.time().hour())
443
settings.setValue(u'default service minute',
444
self.serviceNameTime.time().minute())
445
settings.setValue(u'recent file count',
446
QtCore.QVariant(self.recentSpinBox.value()))
447
settings.setValue(u'save current plugin',
448
QtCore.QVariant(self.mediaPluginCheckBox.isChecked()))
449
settings.setValue(u'double click live',
450
QtCore.QVariant(self.doubleClickLiveCheckBox.isChecked()))
451
settings.setValue(u'single click preview',
452
QtCore.QVariant(self.singleClickPreviewCheckBox.isChecked()))
453
settings.setValue(u'expand service item',
454
QtCore.QVariant(self.expandServiceItemCheckBox.isChecked()))
455
settings.setValue(u'enable exit confirmation',
456
QtCore.QVariant(self.enableAutoCloseCheckBox.isChecked()))
457
settings.setValue(u'hide mouse',
458
QtCore.QVariant(self.hideMouseCheckBox.isChecked()))
459
settings.setValue(u'x11 bypass wm',
460
QtCore.QVariant(self.x11BypassCheckBox.isChecked()))
461
settings.setValue(u'default color', self.defaultColor)
462
settings.setValue(u'default image', self.defaultFileEdit.text())
463
settings.setValue(u'slide limits', QtCore.QVariant(self.slide_limits))
465
if self.displayChanged:
466
Receiver.send_message(u'config_screen_changed')
467
self.displayChanged = False
468
Receiver.send_message(u'slidecontroller_update_slide_limits')
470
def serviceNameCheckBoxToggled(self, default_service_enabled):
471
self.serviceNameDay.setEnabled(default_service_enabled)
472
time_enabled = default_service_enabled and \
473
self.serviceNameDay.currentIndex() is not 7
474
self.serviceNameTime.setEnabled(time_enabled)
475
self.serviceNameEdit.setEnabled(default_service_enabled)
476
self.serviceNameRevertButton.setEnabled(default_service_enabled)
478
def generateServiceNameExample(self):
479
preset_is_valid = True
480
if self.serviceNameDay.currentIndex() == 7:
481
time = datetime.now()
484
day_delta = self.serviceNameDay.currentIndex() - now.weekday()
487
time = now + timedelta(days=day_delta)
488
time = time.replace(hour = self.serviceNameTime.time().hour(),
489
minute = self.serviceNameTime.time().minute())
491
service_name_example = time.strftime(unicode(
492
self.serviceNameEdit.text()))
494
preset_is_valid = False
495
service_name_example = translate('OpenLP.AdvancedTab',
497
return preset_is_valid, service_name_example
499
def updateServiceNameExample(self, returned_value):
500
if not self.shouldUpdateServiceNameExample:
502
name_example = self.generateServiceNameExample()[1]
503
self.serviceNameExample.setText(name_example)
505
def onServiceNameDayChanged(self, service_day):
506
self.serviceNameTime.setEnabled(service_day is not 7)
507
self.updateServiceNameExample(None)
509
def onServiceNameRevertButtonPressed(self):
510
self.serviceNameEdit.setText(self.defaultServiceName)
511
self.serviceNameEdit.setFocus()
513
def onDefaultColorButtonPressed(self):
514
new_color = QtGui.QColorDialog.getColor(
515
QtGui.QColor(self.defaultColor), self)
516
if new_color.isValid():
517
self.defaultColor = new_color.name()
518
self.defaultColorButton.setStyleSheet(
519
u'background-color: %s' % self.defaultColor)
521
def onDefaultBrowseButtonPressed(self):
522
file_filters = u'%s;;%s (*.*) (*)' % (get_images_filter(),
523
UiStrings().AllFiles)
524
filename = QtGui.QFileDialog.getOpenFileName(self,
525
translate('OpenLP.AdvancedTab', 'Open File'), '',
528
self.defaultFileEdit.setText(filename)
529
self.defaultFileEdit.setFocus()
531
def onDefaultRevertButtonPressed(self):
532
self.defaultFileEdit.setText(u':/graphics/openlp-splash-screen.png')
533
self.defaultFileEdit.setFocus()
535
def onX11BypassCheckBoxToggled(self, checked):
537
Toggle X11 bypass flag on maindisplay depending on check box state.
540
The state of the check box (boolean).
542
self.displayChanged = True
544
def onEndSlideButtonPressed(self):
545
self.slide_limits = SlideLimits.End
547
def onWrapSlideButtonPressed(self):
548
self.slide_limits = SlideLimits.Wrap
550
def onnextItemButtonPressed(self):
551
self.slide_limits = SlideLimits.Next