forked from openlp/openlp
Clean up settings and alerts
This commit is contained in:
parent
b7cd1456a9
commit
bd0ff619a9
@ -36,9 +36,8 @@ import sys
|
|||||||
|
|
||||||
from PyQt4 import QtCore, QtGui
|
from PyQt4 import QtCore, QtGui
|
||||||
|
|
||||||
from openlp.core.lib import SlideLimits
|
from openlp.core.lib import SlideLimits, UiStrings
|
||||||
from openlp.core.lib.theme import ThemeLevel
|
from openlp.core.lib.theme import ThemeLevel
|
||||||
from openlp.core.lib import UiStrings
|
|
||||||
|
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
@ -70,7 +69,8 @@ class Settings(QtCore.QSettings):
|
|||||||
``__obsolete_settings__``
|
``__obsolete_settings__``
|
||||||
Each entry is structured in the following way::
|
Each entry is structured in the following way::
|
||||||
|
|
||||||
(u'general/enable slide loop', u'advanced/slide limits', [(SlideLimits.Wrap, True), (SlideLimits.End, False)])
|
(u'general/enable slide loop', u'advanced/slide limits',
|
||||||
|
[(SlideLimits.Wrap, True), (SlideLimits.End, False)])
|
||||||
|
|
||||||
The first entry is the *old key*; it will be removed.
|
The first entry is the *old key*; it will be removed.
|
||||||
|
|
||||||
@ -259,7 +259,6 @@ class Settings(QtCore.QSettings):
|
|||||||
"""
|
"""
|
||||||
Settings.__default_settings__ = dict(default_values.items() + Settings.__default_settings__.items())
|
Settings.__default_settings__ = dict(default_values.items() + Settings.__default_settings__.items())
|
||||||
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def set_filename(ini_file):
|
def set_filename(ini_file):
|
||||||
"""
|
"""
|
||||||
|
@ -106,7 +106,7 @@ class ExceptionForm(QtGui.QDialog, Ui_ExceptionDialog):
|
|||||||
"""
|
"""
|
||||||
QtGui.QDialog.__init__(self, parent)
|
QtGui.QDialog.__init__(self, parent)
|
||||||
self.setupUi(self)
|
self.setupUi(self)
|
||||||
self.settingsSection = u'crashreport'
|
self.settings_section = u'crashreport'
|
||||||
|
|
||||||
def exec_(self):
|
def exec_(self):
|
||||||
"""
|
"""
|
||||||
@ -159,12 +159,11 @@ class ExceptionForm(QtGui.QDialog, Ui_ExceptionDialog):
|
|||||||
'--- Library Versions ---\n%s\n')
|
'--- Library Versions ---\n%s\n')
|
||||||
filename = QtGui.QFileDialog.getSaveFileName(self,
|
filename = QtGui.QFileDialog.getSaveFileName(self,
|
||||||
translate('OpenLP.ExceptionForm', 'Save Crash Report'),
|
translate('OpenLP.ExceptionForm', 'Save Crash Report'),
|
||||||
Settings().value(self.settingsSection + u'/last directory'),
|
Settings().value(self.settings_section + u'/last directory'),
|
||||||
translate('OpenLP.ExceptionForm',
|
translate('OpenLP.ExceptionForm', 'Text files (*.txt *.log *.text)'))
|
||||||
'Text files (*.txt *.log *.text)'))
|
|
||||||
if filename:
|
if filename:
|
||||||
filename = unicode(filename).replace(u'/', os.path.sep)
|
filename = unicode(filename).replace(u'/', os.path.sep)
|
||||||
Settings().setValue(self.settingsSection + u'/last directory', os.path.dirname(filename))
|
Settings().setValue(self.settings_section + u'/last directory', os.path.dirname(filename))
|
||||||
report_text = report_text % self._createReport()
|
report_text = report_text % self._createReport()
|
||||||
try:
|
try:
|
||||||
report_file = open(filename, u'w')
|
report_file = open(filename, u'w')
|
||||||
@ -230,7 +229,7 @@ class ExceptionForm(QtGui.QDialog, Ui_ExceptionDialog):
|
|||||||
"""
|
"""
|
||||||
files = QtGui.QFileDialog.getOpenFileName(
|
files = QtGui.QFileDialog.getOpenFileName(
|
||||||
self, translate('ImagePlugin.ExceptionDialog', 'Select Attachment'),
|
self, translate('ImagePlugin.ExceptionDialog', 'Select Attachment'),
|
||||||
Settings().value(self.settingsSection + u'/last directory'), u'%s (*.*) (*)' % UiStrings().AllFiles)
|
Settings().value(self.settings_section + u'/last directory'), u'%s (*.*) (*)' % UiStrings().AllFiles)
|
||||||
log.info(u'New files(s) %s', unicode(files))
|
log.info(u'New files(s) %s', unicode(files))
|
||||||
if files:
|
if files:
|
||||||
self.fileAttachment = unicode(files)
|
self.fileAttachment = unicode(files)
|
||||||
|
@ -300,7 +300,7 @@ class MainDisplay(Display):
|
|||||||
self.image(path)
|
self.image(path)
|
||||||
# Update the preview frame.
|
# Update the preview frame.
|
||||||
if self.isLive:
|
if self.isLive:
|
||||||
self.parent().updatePreview()
|
self.live_controller.updatePreview()
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def image(self, path):
|
def image(self, path):
|
||||||
@ -513,6 +513,16 @@ class MainDisplay(Display):
|
|||||||
|
|
||||||
application = property(_get_application)
|
application = property(_get_application)
|
||||||
|
|
||||||
|
def _get_live_controller(self):
|
||||||
|
"""
|
||||||
|
Adds the live controller to the class dynamically
|
||||||
|
"""
|
||||||
|
if not hasattr(self, u'_live_controller'):
|
||||||
|
self._live_controller = Registry().get(u'live_controller')
|
||||||
|
return self._live_controller
|
||||||
|
|
||||||
|
live_controller = property(_get_live_controller)
|
||||||
|
|
||||||
|
|
||||||
class AudioPlayer(QtCore.QObject):
|
class AudioPlayer(QtCore.QObject):
|
||||||
"""
|
"""
|
||||||
|
@ -230,7 +230,7 @@ class SlideController(DisplayController):
|
|||||||
self.playSlidesOnce = create_action(self, u'playSlidesOnce', text=UiStrings().PlaySlidesToEnd,
|
self.playSlidesOnce = create_action(self, u'playSlidesOnce', text=UiStrings().PlaySlidesToEnd,
|
||||||
icon=u':/media/media_time.png', checked=False, shortcuts=[],
|
icon=u':/media/media_time.png', checked=False, shortcuts=[],
|
||||||
category=self.category, triggers=self.onPlaySlidesOnce)
|
category=self.category, triggers=self.onPlaySlidesOnce)
|
||||||
if Settings().value(self.parent().advancedSettingsSection + u'/slide limits') == SlideLimits.Wrap:
|
if Settings().value(self.main_window.advancedSettingsSection + u'/slide limits') == SlideLimits.Wrap:
|
||||||
self.playSlidesMenu.setDefaultAction(self.playSlidesLoop)
|
self.playSlidesMenu.setDefaultAction(self.playSlidesLoop)
|
||||||
else:
|
else:
|
||||||
self.playSlidesMenu.setDefaultAction(self.playSlidesOnce)
|
self.playSlidesMenu.setDefaultAction(self.playSlidesOnce)
|
||||||
@ -582,7 +582,7 @@ class SlideController(DisplayController):
|
|||||||
self.previewListWidget.resizeRowsToContents()
|
self.previewListWidget.resizeRowsToContents()
|
||||||
else:
|
else:
|
||||||
# Sort out image heights.
|
# Sort out image heights.
|
||||||
width = self.parent().controlSplitter.sizes()[self.split]
|
width = self.main_window.controlSplitter.sizes()[self.split]
|
||||||
for framenumber in range(len(self.serviceItem.get_frames())):
|
for framenumber in range(len(self.serviceItem.get_frames())):
|
||||||
self.previewListWidget.setRowHeight(framenumber, width / self.ratio)
|
self.previewListWidget.setRowHeight(framenumber, width / self.ratio)
|
||||||
self.onControllerSizeChanged(self.controller.width(), self.controller.height())
|
self.onControllerSizeChanged(self.controller.width(), self.controller.height())
|
||||||
@ -618,7 +618,7 @@ class SlideController(DisplayController):
|
|||||||
"""
|
"""
|
||||||
Updates the Slide Limits variable from the settings.
|
Updates the Slide Limits variable from the settings.
|
||||||
"""
|
"""
|
||||||
self.slide_limits = Settings().value(self.parent().advancedSettingsSection + u'/slide limits')
|
self.slide_limits = Settings().value(self.main_window.advancedSettingsSection + u'/slide limits')
|
||||||
|
|
||||||
def enableToolBar(self, item):
|
def enableToolBar(self, item):
|
||||||
"""
|
"""
|
||||||
@ -646,7 +646,7 @@ class SlideController(DisplayController):
|
|||||||
self.playSlidesLoop.setChecked(False)
|
self.playSlidesLoop.setChecked(False)
|
||||||
self.playSlidesLoop.setIcon(build_icon(u':/media/media_time.png'))
|
self.playSlidesLoop.setIcon(build_icon(u':/media/media_time.png'))
|
||||||
if item.is_text():
|
if item.is_text():
|
||||||
if Settings().value(self.parent().songsSettingsSection + u'/display songbar') and self.slideList:
|
if Settings().value(self.main_window.songsSettingsSection + u'/display songbar') and self.slideList:
|
||||||
self.songMenu.show()
|
self.songMenu.show()
|
||||||
if item.is_capable(ItemCapabilities.CanLoop) and len(item.get_frames()) > 1:
|
if item.is_capable(ItemCapabilities.CanLoop) and len(item.get_frames()) > 1:
|
||||||
self.toolbar.setWidgetVisible(self.loopList)
|
self.toolbar.setWidgetVisible(self.loopList)
|
||||||
@ -748,7 +748,7 @@ class SlideController(DisplayController):
|
|||||||
self._resetBlank()
|
self._resetBlank()
|
||||||
Registry().execute(u'%s_start' % serviceItem.name.lower(), [serviceItem, self.isLive, self.hideMode(), slideno])
|
Registry().execute(u'%s_start' % serviceItem.name.lower(), [serviceItem, self.isLive, self.hideMode(), slideno])
|
||||||
self.slideList = {}
|
self.slideList = {}
|
||||||
width = self.parent().controlSplitter.sizes()[self.split]
|
width = self.main_window.controlSplitter.sizes()[self.split]
|
||||||
self.previewListWidget.clear()
|
self.previewListWidget.clear()
|
||||||
self.previewListWidget.setRowCount(0)
|
self.previewListWidget.setRowCount(0)
|
||||||
self.previewListWidget.setColumnWidth(0, width)
|
self.previewListWidget.setColumnWidth(0, width)
|
||||||
@ -767,8 +767,8 @@ class SlideController(DisplayController):
|
|||||||
action.setData(counter)
|
action.setData(counter)
|
||||||
QtCore.QObject.connect(action, QtCore.SIGNAL(u'triggered(bool)'), self.onTrackTriggered)
|
QtCore.QObject.connect(action, QtCore.SIGNAL(u'triggered(bool)'), self.onTrackTriggered)
|
||||||
self.display.audioPlayer.repeat = Settings().value(
|
self.display.audioPlayer.repeat = Settings().value(
|
||||||
self.parent().generalSettingsSection + u'/audio repeat list')
|
self.main_window.generalSettingsSection + u'/audio repeat list')
|
||||||
if Settings().value(self.parent().generalSettingsSection + u'/audio start paused'):
|
if Settings().value(self.main_window.generalSettingsSection + u'/audio start paused'):
|
||||||
self.audioPauseItem.setChecked(True)
|
self.audioPauseItem.setChecked(True)
|
||||||
self.display.audioPlayer.pause()
|
self.display.audioPlayer.pause()
|
||||||
else:
|
else:
|
||||||
@ -877,7 +877,7 @@ class SlideController(DisplayController):
|
|||||||
Allow the main display to blank the main display at startup time
|
Allow the main display to blank the main display at startup time
|
||||||
"""
|
"""
|
||||||
log.debug(u'mainDisplaySetBackground live = %s' % self.isLive)
|
log.debug(u'mainDisplaySetBackground live = %s' % self.isLive)
|
||||||
display_type = Settings().value(self.parent().generalSettingsSection + u'/screen blank')
|
display_type = Settings().value(self.main_window.generalSettingsSection + u'/screen blank')
|
||||||
if self.screens.which_screen(self.window()) != self.screens.which_screen(self.display):
|
if self.screens.which_screen(self.window()) != self.screens.which_screen(self.display):
|
||||||
# Order done to handle initial conversion
|
# Order done to handle initial conversion
|
||||||
if display_type == u'themed':
|
if display_type == u'themed':
|
||||||
@ -915,9 +915,9 @@ class SlideController(DisplayController):
|
|||||||
self.themeScreen.setChecked(False)
|
self.themeScreen.setChecked(False)
|
||||||
self.desktopScreen.setChecked(False)
|
self.desktopScreen.setChecked(False)
|
||||||
if checked:
|
if checked:
|
||||||
Settings().setValue(self.parent().generalSettingsSection + u'/screen blank', u'blanked')
|
Settings().setValue(self.main_window.generalSettingsSection + u'/screen blank', u'blanked')
|
||||||
else:
|
else:
|
||||||
Settings().remove(self.parent().generalSettingsSection + u'/screen blank')
|
Settings().remove(self.main_window.generalSettingsSection + u'/screen blank')
|
||||||
self.blankPlugin()
|
self.blankPlugin()
|
||||||
self.updatePreview()
|
self.updatePreview()
|
||||||
self.onToggleLoop()
|
self.onToggleLoop()
|
||||||
@ -934,9 +934,9 @@ class SlideController(DisplayController):
|
|||||||
self.themeScreen.setChecked(checked)
|
self.themeScreen.setChecked(checked)
|
||||||
self.desktopScreen.setChecked(False)
|
self.desktopScreen.setChecked(False)
|
||||||
if checked:
|
if checked:
|
||||||
Settings().setValue(self.parent().generalSettingsSection + u'/screen blank', u'themed')
|
Settings().setValue(self.main_window.generalSettingsSection + u'/screen blank', u'themed')
|
||||||
else:
|
else:
|
||||||
Settings().remove(self.parent().generalSettingsSection + u'/screen blank')
|
Settings().remove(self.main_window.generalSettingsSection + u'/screen blank')
|
||||||
self.blankPlugin()
|
self.blankPlugin()
|
||||||
self.updatePreview()
|
self.updatePreview()
|
||||||
self.onToggleLoop()
|
self.onToggleLoop()
|
||||||
@ -953,9 +953,9 @@ class SlideController(DisplayController):
|
|||||||
self.themeScreen.setChecked(False)
|
self.themeScreen.setChecked(False)
|
||||||
self.desktopScreen.setChecked(checked)
|
self.desktopScreen.setChecked(checked)
|
||||||
if checked:
|
if checked:
|
||||||
Settings().setValue(self.parent().generalSettingsSection + u'/screen blank', u'hidden')
|
Settings().setValue(self.main_window.generalSettingsSection + u'/screen blank', u'hidden')
|
||||||
else:
|
else:
|
||||||
Settings().remove(self.parent().generalSettingsSection + u'/screen blank')
|
Settings().remove(self.main_window.generalSettingsSection + u'/screen blank')
|
||||||
self.hidePlugin(checked)
|
self.hidePlugin(checked)
|
||||||
self.updatePreview()
|
self.updatePreview()
|
||||||
self.onToggleLoop()
|
self.onToggleLoop()
|
||||||
@ -1255,7 +1255,7 @@ class SlideController(DisplayController):
|
|||||||
|
|
||||||
def onGoLive(self):
|
def onGoLive(self):
|
||||||
"""
|
"""
|
||||||
If preview copy slide item to live
|
If preview copy slide item to live controller from Preview Controller
|
||||||
"""
|
"""
|
||||||
row = self.previewListWidget.currentRow()
|
row = self.previewListWidget.currentRow()
|
||||||
if -1 < row < self.previewListWidget.rowCount():
|
if -1 < row < self.previewListWidget.rowCount():
|
||||||
@ -1384,3 +1384,14 @@ class SlideController(DisplayController):
|
|||||||
return self._live_controller
|
return self._live_controller
|
||||||
|
|
||||||
live_controller = property(_get_live_controller)
|
live_controller = property(_get_live_controller)
|
||||||
|
|
||||||
|
def _get_main_window(self):
|
||||||
|
"""
|
||||||
|
Adds the main window to the class dynamically
|
||||||
|
"""
|
||||||
|
if not hasattr(self, u'_main_window'):
|
||||||
|
self._main_window = Registry().get(u'main_window')
|
||||||
|
return self._main_window
|
||||||
|
|
||||||
|
main_window = property(_get_main_window)
|
||||||
|
|
||||||
|
@ -133,7 +133,7 @@ class AlertsPlugin(Plugin):
|
|||||||
self.weight = -3
|
self.weight = -3
|
||||||
self.iconPath = u':/plugins/plugin_alerts.png'
|
self.iconPath = u':/plugins/plugin_alerts.png'
|
||||||
self.icon = build_icon(self.iconPath)
|
self.icon = build_icon(self.iconPath)
|
||||||
self.alertsmanager = AlertsManager(self)
|
self.alerts_manager = AlertsManager(self)
|
||||||
self.manager = Manager(u'alerts', init_schema)
|
self.manager = Manager(u'alerts', init_schema)
|
||||||
self.alertForm = AlertForm(self)
|
self.alertForm = AlertForm(self)
|
||||||
|
|
||||||
@ -176,7 +176,7 @@ class AlertsPlugin(Plugin):
|
|||||||
Settings().setValue(self.settingsSection + u'/active', self.alertsActive)
|
Settings().setValue(self.settingsSection + u'/active', self.alertsActive)
|
||||||
|
|
||||||
def onAlertsTrigger(self):
|
def onAlertsTrigger(self):
|
||||||
self.alertForm.loadList()
|
self.alertForm.load_list()
|
||||||
self.alertForm.exec_()
|
self.alertForm.exec_()
|
||||||
|
|
||||||
def about(self):
|
def about(self):
|
||||||
@ -194,7 +194,8 @@ class AlertsPlugin(Plugin):
|
|||||||
u'plural': translate('AlertsPlugin', 'Alerts', 'name plural')
|
u'plural': translate('AlertsPlugin', 'Alerts', 'name plural')
|
||||||
}
|
}
|
||||||
## Name for MediaDockManager, SettingsManager ##
|
## Name for MediaDockManager, SettingsManager ##
|
||||||
self.textStrings[StringContent.VisibleName] = {u'title': translate('AlertsPlugin', 'Alerts', 'container title')
|
self.textStrings[StringContent.VisibleName] = {
|
||||||
|
u'title': translate('AlertsPlugin', 'Alerts', 'container title')
|
||||||
}
|
}
|
||||||
|
|
||||||
def getDisplayJavaScript(self):
|
def getDisplayJavaScript(self):
|
||||||
|
@ -32,61 +32,63 @@ from PyQt4 import QtGui
|
|||||||
from openlp.core.lib import build_icon, translate
|
from openlp.core.lib import build_icon, translate
|
||||||
from openlp.core.lib.ui import create_button, create_button_box
|
from openlp.core.lib.ui import create_button, create_button_box
|
||||||
|
|
||||||
class Ui_AlertDialog(object):
|
|
||||||
def setupUi(self, alertDialog):
|
|
||||||
alertDialog.setObjectName(u'alertDialog')
|
|
||||||
alertDialog.resize(400, 300)
|
|
||||||
alertDialog.setWindowIcon(build_icon(u':/icon/openlp-logo-16x16.png'))
|
|
||||||
self.alertDialogLayout = QtGui.QGridLayout(alertDialog)
|
|
||||||
self.alertDialogLayout.setObjectName(u'alertDialogLayout')
|
|
||||||
self.alertTextLayout = QtGui.QFormLayout()
|
|
||||||
self.alertTextLayout.setObjectName(u'alertTextLayout')
|
|
||||||
self.alertEntryLabel = QtGui.QLabel(alertDialog)
|
|
||||||
self.alertEntryLabel.setObjectName(u'alertEntryLabel')
|
|
||||||
self.alertTextEdit = QtGui.QLineEdit(alertDialog)
|
|
||||||
self.alertTextEdit.setObjectName(u'alertTextEdit')
|
|
||||||
self.alertEntryLabel.setBuddy(self.alertTextEdit)
|
|
||||||
self.alertTextLayout.addRow(self.alertEntryLabel, self.alertTextEdit)
|
|
||||||
self.alertParameter = QtGui.QLabel(alertDialog)
|
|
||||||
self.alertParameter.setObjectName(u'alertParameter')
|
|
||||||
self.parameterEdit = QtGui.QLineEdit(alertDialog)
|
|
||||||
self.parameterEdit.setObjectName(u'parameterEdit')
|
|
||||||
self.alertParameter.setBuddy(self.parameterEdit)
|
|
||||||
self.alertTextLayout.addRow(self.alertParameter, self.parameterEdit)
|
|
||||||
self.alertDialogLayout.addLayout(self.alertTextLayout, 0, 0, 1, 2)
|
|
||||||
self.alertListWidget = QtGui.QListWidget(alertDialog)
|
|
||||||
self.alertListWidget.setAlternatingRowColors(True)
|
|
||||||
self.alertListWidget.setObjectName(u'alertListWidget')
|
|
||||||
self.alertDialogLayout.addWidget(self.alertListWidget, 1, 0)
|
|
||||||
self.manageButtonLayout = QtGui.QVBoxLayout()
|
|
||||||
self.manageButtonLayout.setObjectName(u'manageButtonLayout')
|
|
||||||
self.newButton = QtGui.QPushButton(alertDialog)
|
|
||||||
self.newButton.setIcon(build_icon(u':/general/general_new.png'))
|
|
||||||
self.newButton.setObjectName(u'newButton')
|
|
||||||
self.manageButtonLayout.addWidget(self.newButton)
|
|
||||||
self.saveButton = QtGui.QPushButton(alertDialog)
|
|
||||||
self.saveButton.setEnabled(False)
|
|
||||||
self.saveButton.setIcon(build_icon(u':/general/general_save.png'))
|
|
||||||
self.saveButton.setObjectName(u'saveButton')
|
|
||||||
self.manageButtonLayout.addWidget(self.saveButton)
|
|
||||||
self.deleteButton = create_button(alertDialog, u'deleteButton', role=u'delete', enabled=False,
|
|
||||||
click=alertDialog.onDeleteButtonClicked)
|
|
||||||
self.manageButtonLayout.addWidget(self.deleteButton)
|
|
||||||
self.manageButtonLayout.addStretch()
|
|
||||||
self.alertDialogLayout.addLayout(self.manageButtonLayout, 1, 1)
|
|
||||||
displayIcon = build_icon(u':/general/general_live.png')
|
|
||||||
self.displayButton = create_button(alertDialog, u'displayButton', icon=displayIcon, enabled=False)
|
|
||||||
self.displayCloseButton = create_button(alertDialog, u'displayCloseButton', icon=displayIcon, enabled=False)
|
|
||||||
self.button_box = create_button_box(alertDialog, u'button_box', [u'close'],
|
|
||||||
[self.displayButton, self.displayCloseButton])
|
|
||||||
self.alertDialogLayout.addWidget(self.button_box, 2, 0, 1, 2)
|
|
||||||
self.retranslateUi(alertDialog)
|
|
||||||
|
|
||||||
def retranslateUi(self, alertDialog):
|
class Ui_AlertDialog(object):
|
||||||
alertDialog.setWindowTitle(translate('AlertsPlugin.AlertForm', 'Alert Message'))
|
def setupUi(self, alert_dialog):
|
||||||
self.alertEntryLabel.setText(translate('AlertsPlugin.AlertForm', 'Alert &text:'))
|
alert_dialog.setObjectName(u'alert_dialog')
|
||||||
self.alertParameter.setText(translate('AlertsPlugin.AlertForm', '&Parameter:'))
|
alert_dialog.resize(400, 300)
|
||||||
self.newButton.setText(translate('AlertsPlugin.AlertForm', '&New'))
|
alert_dialog.setWindowIcon(build_icon(u':/icon/openlp-logo-16x16.png'))
|
||||||
self.saveButton.setText(translate('AlertsPlugin.AlertForm', '&Save'))
|
self.alert_dialog_layout = QtGui.QGridLayout(alert_dialog)
|
||||||
self.displayButton.setText(translate('AlertsPlugin.AlertForm', 'Displ&ay'))
|
self.alert_dialog_layout.setObjectName(u'alert_dialog_layout')
|
||||||
self.displayCloseButton.setText(translate('AlertsPlugin.AlertForm', 'Display && Cl&ose'))
|
self.alert_text_layout = QtGui.QFormLayout()
|
||||||
|
self.alert_text_layout.setObjectName(u'alert_text_layout')
|
||||||
|
self.alert_entry_label = QtGui.QLabel(alert_dialog)
|
||||||
|
self.alert_entry_label.setObjectName(u'alert_entry_label')
|
||||||
|
self.alert_text_edit = QtGui.QLineEdit(alert_dialog)
|
||||||
|
self.alert_text_edit.setObjectName(u'alert_text_edit')
|
||||||
|
self.alert_entry_label.setBuddy(self.alert_text_edit)
|
||||||
|
self.alert_text_layout.addRow(self.alert_entry_label, self.alert_text_edit)
|
||||||
|
self.alert_parameter = QtGui.QLabel(alert_dialog)
|
||||||
|
self.alert_parameter.setObjectName(u'alert_parameter')
|
||||||
|
self.parameter_edit = QtGui.QLineEdit(alert_dialog)
|
||||||
|
self.parameter_edit.setObjectName(u'parameter_edit')
|
||||||
|
self.alert_parameter.setBuddy(self.parameter_edit)
|
||||||
|
self.alert_text_layout.addRow(self.alert_parameter, self.parameter_edit)
|
||||||
|
self.alert_dialog_layout.addLayout(self.alert_text_layout, 0, 0, 1, 2)
|
||||||
|
self.alert_list_widget = QtGui.QListWidget(alert_dialog)
|
||||||
|
self.alert_list_widget.setAlternatingRowColors(True)
|
||||||
|
self.alert_list_widget.setObjectName(u'alert_list_widget')
|
||||||
|
self.alert_dialog_layout.addWidget(self.alert_list_widget, 1, 0)
|
||||||
|
self.manage_button_layout = QtGui.QVBoxLayout()
|
||||||
|
self.manage_button_layout.setObjectName(u'manage_button_layout')
|
||||||
|
self.new_button = QtGui.QPushButton(alert_dialog)
|
||||||
|
self.new_button.setIcon(build_icon(u':/general/general_new.png'))
|
||||||
|
self.new_button.setObjectName(u'new_button')
|
||||||
|
self.manage_button_layout.addWidget(self.new_button)
|
||||||
|
self.save_button = QtGui.QPushButton(alert_dialog)
|
||||||
|
self.save_button.setEnabled(False)
|
||||||
|
self.save_button.setIcon(build_icon(u':/general/general_save.png'))
|
||||||
|
self.save_button.setObjectName(u'save_button')
|
||||||
|
self.manage_button_layout.addWidget(self.save_button)
|
||||||
|
self.delete_button = create_button(alert_dialog, u'delete_button', role=u'delete', enabled=False,
|
||||||
|
click=alert_dialog.onDeleteButtonClicked)
|
||||||
|
self.manage_button_layout.addWidget(self.delete_button)
|
||||||
|
self.manage_button_layout.addStretch()
|
||||||
|
self.alert_dialog_layout.addLayout(self.manage_button_layout, 1, 1)
|
||||||
|
displayIcon = build_icon(u':/general/general_live.png')
|
||||||
|
self.display_button = create_button(alert_dialog, u'display_button', icon=displayIcon, enabled=False)
|
||||||
|
self.display_close_button = create_button(alert_dialog, u'display_close_button', icon=displayIcon,
|
||||||
|
enabled=False)
|
||||||
|
self.button_box = create_button_box(alert_dialog, u'button_box', [u'close'],
|
||||||
|
[self.display_button, self.display_close_button])
|
||||||
|
self.alert_dialog_layout.addWidget(self.button_box, 2, 0, 1, 2)
|
||||||
|
self.retranslateUi(alert_dialog)
|
||||||
|
|
||||||
|
def retranslateUi(self, alert_dialog):
|
||||||
|
alert_dialog.setWindowTitle(translate('AlertsPlugin.AlertForm', 'Alert Message'))
|
||||||
|
self.alert_entry_label.setText(translate('AlertsPlugin.AlertForm', 'Alert &text:'))
|
||||||
|
self.alert_parameter.setText(translate('AlertsPlugin.AlertForm', '&Parameter:'))
|
||||||
|
self.new_button.setText(translate('AlertsPlugin.AlertForm', '&New'))
|
||||||
|
self.save_button.setText(translate('AlertsPlugin.AlertForm', '&Save'))
|
||||||
|
self.display_button.setText(translate('AlertsPlugin.AlertForm', 'Displ&ay'))
|
||||||
|
self.display_close_button.setText(translate('AlertsPlugin.AlertForm', 'Display && Cl&ose'))
|
||||||
|
@ -48,131 +48,131 @@ class AlertForm(QtGui.QDialog, Ui_AlertDialog):
|
|||||||
self.item_id = None
|
self.item_id = None
|
||||||
super(AlertForm, self).__init__(self.plugin.main_window)
|
super(AlertForm, self).__init__(self.plugin.main_window)
|
||||||
self.setupUi(self)
|
self.setupUi(self)
|
||||||
QtCore.QObject.connect(self.displayButton, QtCore.SIGNAL(u'clicked()'), self.onDisplayClicked)
|
self.display_button.clicked.connect(self.on_display_clicked)
|
||||||
QtCore.QObject.connect(self.displayCloseButton, QtCore.SIGNAL(u'clicked()'), self.onDisplayCloseClicked)
|
self.display_close_button.clicked.connect(self.on_display_close_clicked)
|
||||||
QtCore.QObject.connect(self.alertTextEdit, QtCore.SIGNAL(u'textChanged(const QString&)'), self.onTextChanged)
|
self.alert_text_edit.textChanged.connect(self.on_text_changed)
|
||||||
QtCore.QObject.connect(self.newButton, QtCore.SIGNAL(u'clicked()'), self.onNewClick)
|
self.new_button.clicked.connect(self.on_new_click)
|
||||||
QtCore.QObject.connect(self.saveButton, QtCore.SIGNAL(u'clicked()'), self.onSaveClick)
|
self.save_button.clicked.connect(self.on_save_all)
|
||||||
QtCore.QObject.connect(self.alertListWidget, QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.onDoubleClick)
|
self.alert_list_widget.doubleClicked.connect(self.on_double_click)
|
||||||
QtCore.QObject.connect(self.alertListWidget, QtCore.SIGNAL(u'clicked(QModelIndex)'), self.onSingleClick)
|
self.alert_list_widget.clicked.connect(self.on_single_click)
|
||||||
QtCore.QObject.connect(self.alertListWidget, QtCore.SIGNAL(u'currentRowChanged(int)'), self.onCurrentRowChanged)
|
self.alert_list_widget.currentRowChanged.connect(self.on_current_row_changed)
|
||||||
|
|
||||||
def exec_(self):
|
def exec_(self):
|
||||||
"""
|
"""
|
||||||
Execute the dialog and return the exit code.
|
Execute the dialog and return the exit code.
|
||||||
"""
|
"""
|
||||||
self.displayButton.setEnabled(False)
|
self.display_button.setEnabled(False)
|
||||||
self.displayCloseButton.setEnabled(False)
|
self.display_close_button.setEnabled(False)
|
||||||
self.alertTextEdit.setText(u'')
|
self.alert_text_edit.setText(u'')
|
||||||
return QtGui.QDialog.exec_(self)
|
return QtGui.QDialog.exec_(self)
|
||||||
|
|
||||||
def loadList(self):
|
def load_list(self):
|
||||||
"""
|
"""
|
||||||
Loads the list with alerts.
|
Loads the list with alerts.
|
||||||
"""
|
"""
|
||||||
self.alertListWidget.clear()
|
self.alert_list_widget.clear()
|
||||||
alerts = self.manager.get_all_objects(AlertItem, order_by_ref=AlertItem.text)
|
alerts = self.manager.get_all_objects(AlertItem, order_by_ref=AlertItem.text)
|
||||||
for alert in alerts:
|
for alert in alerts:
|
||||||
item_name = QtGui.QListWidgetItem(alert.text)
|
item_name = QtGui.QListWidgetItem(alert.text)
|
||||||
item_name.setData(QtCore.Qt.UserRole, alert.id)
|
item_name.setData(QtCore.Qt.UserRole, alert.id)
|
||||||
self.alertListWidget.addItem(item_name)
|
self.alert_list_widget.addItem(item_name)
|
||||||
if alert.text == unicode(self.alertTextEdit.text()):
|
if alert.text == unicode(self.alert_text_edit.text()):
|
||||||
self.item_id = alert.id
|
self.item_id = alert.id
|
||||||
self.alertListWidget.setCurrentRow(self.alertListWidget.row(item_name))
|
self.alert_list_widget.setCurrentRow(self.alert_list_widget.row(item_name))
|
||||||
|
|
||||||
def onDisplayClicked(self):
|
def on_display_clicked(self):
|
||||||
"""
|
"""
|
||||||
Display the current alert text.
|
Display the current alert text.
|
||||||
"""
|
"""
|
||||||
self.triggerAlert(self.alertTextEdit.text())
|
self.trigger_alert(self.alert_text_edit.text())
|
||||||
|
|
||||||
def onDisplayCloseClicked(self):
|
def on_display_close_clicked(self):
|
||||||
"""
|
"""
|
||||||
Close the alert preview.
|
Close the alert preview.
|
||||||
"""
|
"""
|
||||||
if self.triggerAlert(self.alertTextEdit.text()):
|
if self.trigger_alert(self.alert_text_edit.text()):
|
||||||
self.close()
|
self.close()
|
||||||
|
|
||||||
def onDeleteButtonClicked(self):
|
def onDeleteButtonClicked(self):
|
||||||
"""
|
"""
|
||||||
Deletes the selected item.
|
Deletes the selected item.
|
||||||
"""
|
"""
|
||||||
item = self.alertListWidget.currentItem()
|
item = self.alert_list_widget.currentItem()
|
||||||
if item:
|
if item:
|
||||||
item_id = item.data(QtCore.Qt.UserRole)
|
item_id = item.data(QtCore.Qt.UserRole)
|
||||||
self.manager.delete_object(AlertItem, item_id)
|
self.manager.delete_object(AlertItem, item_id)
|
||||||
row = self.alertListWidget.row(item)
|
row = self.alert_list_widget.row(item)
|
||||||
self.alertListWidget.takeItem(row)
|
self.alert_list_widget.takeItem(row)
|
||||||
self.item_id = None
|
self.item_id = None
|
||||||
self.alertTextEdit.setText(u'')
|
self.alert_text_edit.setText(u'')
|
||||||
|
|
||||||
def onNewClick(self):
|
def on_new_click(self):
|
||||||
"""
|
"""
|
||||||
Create a new alert.
|
Create a new alert.
|
||||||
"""
|
"""
|
||||||
if not self.alertTextEdit.text():
|
if not self.alert_text_edit.text():
|
||||||
QtGui.QMessageBox.information(self,
|
QtGui.QMessageBox.information(self,
|
||||||
translate('AlertsPlugin.AlertForm', 'New Alert'),
|
translate('AlertsPlugin.AlertForm', 'New Alert'),
|
||||||
translate('AlertsPlugin.AlertForm', 'You haven\'t specified any text for your alert. \n'
|
translate('AlertsPlugin.AlertForm', 'You haven\'t specified any text for your alert. \n'
|
||||||
'Please type in some text before clicking New.'))
|
'Please type in some text before clicking New.'))
|
||||||
else:
|
else:
|
||||||
alert = AlertItem()
|
alert = AlertItem()
|
||||||
alert.text = self.alertTextEdit.text()
|
alert.text = self.alert_text_edit.text()
|
||||||
self.manager.save_object(alert)
|
self.manager.save_object(alert)
|
||||||
self.loadList()
|
self.load_list()
|
||||||
|
|
||||||
def onSaveClick(self):
|
def on_save_all(self):
|
||||||
"""
|
"""
|
||||||
Save the alert, we are editing.
|
Save the alert, we are editing.
|
||||||
"""
|
"""
|
||||||
if self.item_id:
|
if self.item_id:
|
||||||
alert = self.manager.get_object(AlertItem, self.item_id)
|
alert = self.manager.get_object(AlertItem, self.item_id)
|
||||||
alert.text = self.alertTextEdit.text()
|
alert.text = self.alert_text_edit.text()
|
||||||
self.manager.save_object(alert)
|
self.manager.save_object(alert)
|
||||||
self.item_id = None
|
self.item_id = None
|
||||||
self.loadList()
|
self.load_list()
|
||||||
self.saveButton.setEnabled(False)
|
self.save_button.setEnabled(False)
|
||||||
|
|
||||||
def onTextChanged(self):
|
def on_text_changed(self):
|
||||||
"""
|
"""
|
||||||
Enable save button when data has been changed by editing the form.
|
Enable save button when data has been changed by editing the form.
|
||||||
"""
|
"""
|
||||||
# Only enable the button, if we are editing an item.
|
# Only enable the button, if we are editing an item.
|
||||||
if self.item_id:
|
if self.item_id:
|
||||||
self.saveButton.setEnabled(True)
|
self.save_button.setEnabled(True)
|
||||||
if self.alertTextEdit.text():
|
if self.alert_text_edit.text():
|
||||||
self.displayButton.setEnabled(True)
|
self.display_button.setEnabled(True)
|
||||||
self.displayCloseButton.setEnabled(True)
|
self.display_close_button.setEnabled(True)
|
||||||
else:
|
else:
|
||||||
self.displayButton.setEnabled(False)
|
self.display_button.setEnabled(False)
|
||||||
self.displayCloseButton.setEnabled(False)
|
self.display_close_button.setEnabled(False)
|
||||||
|
|
||||||
def onDoubleClick(self):
|
def on_double_click(self):
|
||||||
"""
|
"""
|
||||||
List item has been double clicked to display it.
|
List item has been double clicked to display it.
|
||||||
"""
|
"""
|
||||||
item = self.alertListWidget.selectedIndexes()[0]
|
item = self.alert_list_widget.selectedIndexes()[0]
|
||||||
bitem = self.alertListWidget.item(item.row())
|
bitem = self.alert_list_widget.item(item.row())
|
||||||
self.triggerAlert(bitem.text())
|
self.trigger_alert(bitem.text())
|
||||||
self.alertTextEdit.setText(bitem.text())
|
self.alert_text_edit.setText(bitem.text())
|
||||||
self.item_id = bitem.data(QtCore.Qt.UserRole)
|
self.item_id = bitem.data(QtCore.Qt.UserRole)
|
||||||
self.saveButton.setEnabled(False)
|
self.save_button.setEnabled(False)
|
||||||
|
|
||||||
def onSingleClick(self):
|
def on_single_click(self):
|
||||||
"""
|
"""
|
||||||
List item has been single clicked to add it to the edit field so it can
|
List item has been single clicked to add it to the edit field so it can
|
||||||
be changed.
|
be changed.
|
||||||
"""
|
"""
|
||||||
item = self.alertListWidget.selectedIndexes()[0]
|
item = self.alert_list_widget.selectedIndexes()[0]
|
||||||
bitem = self.alertListWidget.item(item.row())
|
bitem = self.alert_list_widget.item(item.row())
|
||||||
self.alertTextEdit.setText(bitem.text())
|
self.alert_text_edit.setText(bitem.text())
|
||||||
self.item_id = bitem.data(QtCore.Qt.UserRole)
|
self.item_id = bitem.data(QtCore.Qt.UserRole)
|
||||||
# If the alert does not contain '<>' we clear the ParameterEdit field.
|
# If the alert does not contain '<>' we clear the ParameterEdit field.
|
||||||
if self.alertTextEdit.text().find(u'<>') == -1:
|
if self.alert_text_edit.text().find(u'<>') == -1:
|
||||||
self.parameterEdit.setText(u'')
|
self.parameter_edit.setText(u'')
|
||||||
self.saveButton.setEnabled(False)
|
self.save_button.setEnabled(False)
|
||||||
|
|
||||||
def triggerAlert(self, text):
|
def trigger_alert(self, text):
|
||||||
"""
|
"""
|
||||||
Prepares the alert text for displaying.
|
Prepares the alert text for displaying.
|
||||||
|
|
||||||
@ -182,42 +182,42 @@ class AlertForm(QtGui.QDialog, Ui_AlertDialog):
|
|||||||
if not text:
|
if not text:
|
||||||
return False
|
return False
|
||||||
# We found '<>' in the alert text, but the ParameterEdit field is empty.
|
# We found '<>' in the alert text, but the ParameterEdit field is empty.
|
||||||
if text.find(u'<>') != -1 and not self.parameterEdit.text() and QtGui.QMessageBox.question(self,
|
if text.find(u'<>') != -1 and not self.parameter_edit.text() and QtGui.QMessageBox.question(self,
|
||||||
translate('AlertsPlugin.AlertForm', 'No Parameter Found'),
|
translate('AlertsPlugin.AlertForm', 'No Parameter Found'),
|
||||||
translate('AlertsPlugin.AlertForm', 'You have not entered a parameter to be replaced.\n'
|
translate('AlertsPlugin.AlertForm', 'You have not entered a parameter to be replaced.\n'
|
||||||
'Do you want to continue anyway?'),
|
'Do you want to continue anyway?'),
|
||||||
QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.No | QtGui.QMessageBox.Yes)) == QtGui.QMessageBox.No:
|
QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.No | QtGui.QMessageBox.Yes)) == QtGui.QMessageBox.No:
|
||||||
self.parameterEdit.setFocus()
|
self.parameter_edit.setFocus()
|
||||||
return False
|
return False
|
||||||
# The ParameterEdit field is not empty, but we have not found '<>'
|
# The ParameterEdit field is not empty, but we have not found '<>'
|
||||||
# in the alert text.
|
# in the alert text.
|
||||||
elif text.find(u'<>') == -1 and self.parameterEdit.text() and QtGui.QMessageBox.question(self,
|
elif text.find(u'<>') == -1 and self.parameter_edit.text() and QtGui.QMessageBox.question(self,
|
||||||
translate('AlertsPlugin.AlertForm', 'No Placeholder Found'),
|
translate('AlertsPlugin.AlertForm', 'No Placeholder Found'),
|
||||||
translate('AlertsPlugin.AlertForm', 'The alert text does not contain \'<>\'.\n'
|
translate('AlertsPlugin.AlertForm', 'The alert text does not contain \'<>\'.\n'
|
||||||
'Do you want to continue anyway?'),
|
'Do you want to continue anyway?'),
|
||||||
QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.No | QtGui.QMessageBox.Yes)) == QtGui.QMessageBox.No:
|
QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.No | QtGui.QMessageBox.Yes)) == QtGui.QMessageBox.No:
|
||||||
self.parameterEdit.setFocus()
|
self.parameter_edit.setFocus()
|
||||||
return False
|
return False
|
||||||
text = text.replace(u'<>', self.parameterEdit.text())
|
text = text.replace(u'<>', self.parameter_edit.text())
|
||||||
self.plugin.alertsmanager.displayAlert(text)
|
self.plugin.alerts_manager.display_alert(text)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def onCurrentRowChanged(self, row):
|
def on_current_row_changed(self, row):
|
||||||
"""
|
"""
|
||||||
Called when the *alertListWidget*'s current row has been changed. This
|
Called when the *alert_list_widget*'s current row has been changed. This
|
||||||
enables or disables buttons which require an item to act on.
|
enables or disables buttons which require an item to act on.
|
||||||
|
|
||||||
``row``
|
``row``
|
||||||
The row (int). If there is no current row, the value is -1.
|
The row (int). If there is no current row, the value is -1.
|
||||||
"""
|
"""
|
||||||
if row == -1:
|
if row == -1:
|
||||||
self.displayButton.setEnabled(False)
|
self.display_button.setEnabled(False)
|
||||||
self.displayCloseButton.setEnabled(False)
|
self.display_close_button.setEnabled(False)
|
||||||
self.saveButton.setEnabled(False)
|
self.save_button.setEnabled(False)
|
||||||
self.deleteButton.setEnabled(False)
|
self.delete_button.setEnabled(False)
|
||||||
else:
|
else:
|
||||||
self.displayButton.setEnabled(True)
|
self.display_button.setEnabled(True)
|
||||||
self.displayCloseButton.setEnabled(True)
|
self.display_close_button.setEnabled(True)
|
||||||
self.deleteButton.setEnabled(True)
|
self.delete_button.setEnabled(True)
|
||||||
# We do not need to enable the save button, as it is only enabled
|
# We do not need to enable the save button, as it is only enabled
|
||||||
# when typing text in the "alertTextEdit".
|
# when typing text in the "alert_text_edit".
|
||||||
|
@ -47,7 +47,6 @@ class AlertsManager(QtCore.QObject):
|
|||||||
|
|
||||||
def __init__(self, parent):
|
def __init__(self, parent):
|
||||||
QtCore.QObject.__init__(self, parent)
|
QtCore.QObject.__init__(self, parent)
|
||||||
self.screen = None
|
|
||||||
self.timer_id = 0
|
self.timer_id = 0
|
||||||
self.alert_list = []
|
self.alert_list = []
|
||||||
Registry().register_function(u'live_display_active', self.generate_alert)
|
Registry().register_function(u'live_display_active', self.generate_alert)
|
||||||
@ -87,7 +86,7 @@ class AlertsManager(QtCore.QObject):
|
|||||||
return
|
return
|
||||||
text = self.alert_list.pop(0)
|
text = self.alert_list.pop(0)
|
||||||
alertTab = self.parent().settingsTab
|
alertTab = self.parent().settingsTab
|
||||||
self.parent().liveController.display.alert(text, alertTab.location)
|
self.live_controller.display.alert(text, alertTab.location)
|
||||||
# Check to see if we have a timer running.
|
# Check to see if we have a timer running.
|
||||||
if self.timer_id == 0:
|
if self.timer_id == 0:
|
||||||
self.timer_id = self.startTimer(int(alertTab.timeout) * 1000)
|
self.timer_id = self.startTimer(int(alertTab.timeout) * 1000)
|
||||||
@ -103,7 +102,7 @@ class AlertsManager(QtCore.QObject):
|
|||||||
log.debug(u'timer event')
|
log.debug(u'timer event')
|
||||||
if event.timerId() == self.timer_id:
|
if event.timerId() == self.timer_id:
|
||||||
alertTab = self.parent().settingsTab
|
alertTab = self.parent().settingsTab
|
||||||
self.parent().liveController.display.alert(u'', alertTab.location)
|
self.live_controller.display.alert(u'', alertTab.location)
|
||||||
self.killTimer(self.timer_id)
|
self.killTimer(self.timer_id)
|
||||||
self.timer_id = 0
|
self.timer_id = 0
|
||||||
self.generate_alert()
|
self.generate_alert()
|
||||||
@ -117,3 +116,13 @@ class AlertsManager(QtCore.QObject):
|
|||||||
return self._main_window
|
return self._main_window
|
||||||
|
|
||||||
main_window = property(_get_main_window)
|
main_window = property(_get_main_window)
|
||||||
|
|
||||||
|
def _get_live_controller(self):
|
||||||
|
"""
|
||||||
|
Adds the live controller to the class dynamically
|
||||||
|
"""
|
||||||
|
if not hasattr(self, u'_live_controller'):
|
||||||
|
self._live_controller = Registry().get(u'live_controller')
|
||||||
|
return self._live_controller
|
||||||
|
|
||||||
|
live_controller = property(_get_live_controller)
|
||||||
|
@ -42,7 +42,7 @@ class TestSettings(TestCase):
|
|||||||
default_value = Settings().value(u'general/has run wizard')
|
default_value = Settings().value(u'general/has run wizard')
|
||||||
|
|
||||||
# THEN the default value is returned
|
# THEN the default value is returned
|
||||||
assert default_value is False, u'The default value defined has not been returned'
|
assert default_value is False, u'The default value should be False'
|
||||||
|
|
||||||
# WHEN a new value is saved into config
|
# WHEN a new value is saved into config
|
||||||
Settings().setValue(u'general/has run wizard', True)
|
Settings().setValue(u'general/has run wizard', True)
|
||||||
|
Loading…
Reference in New Issue
Block a user