diff --git a/openlp/core/ui/amendthemedialog.py b/openlp/core/ui/amendthemedialog.py
index 438542192..c713eb608 100644
--- a/openlp/core/ui/amendthemedialog.py
+++ b/openlp/core/ui/amendthemedialog.py
@@ -183,8 +183,6 @@ class Ui_AmendThemeDialog(object):
self.MainFontLayout.setWidget(4, QtGui.QFormLayout.LabelRole, self.FontMainWrapLineAdjustmentLabel)
self.FontMainLineAdjustmentSpinBox = QtGui.QSpinBox(self.FontMainGroupBox)
self.FontMainLineAdjustmentSpinBox.setObjectName("FontMainLineAdjustmentSpinBox")
- self.FontMainLineAdjustmentSpinBox.setMaximum(30)
- self.FontMainLineAdjustmentSpinBox.setMinimum(-30)
self.MainFontLayout.setWidget(4, QtGui.QFormLayout.FieldRole, self.FontMainLineAdjustmentSpinBox)
self.FontMainWrapIndentationLabel = QtGui.QLabel(self.FontMainGroupBox)
self.FontMainWrapIndentationLabel.setObjectName("FontMainWrapIndentationLabel")
diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py
index 5e7071449..6dfa7a83c 100644
--- a/openlp/core/ui/maindisplay.py
+++ b/openlp/core/ui/maindisplay.py
@@ -137,6 +137,10 @@ class MainDisplay(DisplayWidget):
QtCore.SIGNAL(u'maindisplay_hide'), self.hideDisplay)
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'maindisplay_show'), self.showDisplay)
+ QtCore.QObject.connect(Receiver.get_receiver(),
+ QtCore.SIGNAL(u'maindisplay_hide_theme'), self.hideThemeDisplay)
+# QtCore.QObject.connect(Receiver.get_receiver(),
+# QtCore.SIGNAL(u'maindisplay_show_theme'), self.showThemeDisplay)
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'videodisplay_start'), self.hideDisplay)
@@ -208,6 +212,14 @@ class MainDisplay(DisplayWidget):
self.display_text.setPixmap(self.transparent)
self.moveToTop()
+ def hideThemeDisplay(self):
+ log.debug(u'hideDisplay')
+ a=c
+ self.display_image.setPixmap(self.transparent)
+ self.display_alert.setPixmap(self.transparent)
+ self.display_text.setPixmap(self.transparent)
+ self.moveToTop()
+
def moveToTop(self):
log.debug(u'moveToTop')
self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint \
@@ -365,7 +377,7 @@ class VideoDisplay(Phonon.VideoWidget):
def onMediaQueue(self, message):
log.debug(u'VideoDisplay Queue new media message %s' % message)
- file = os.path.join(message[0].get_frame_path(),
+ file = os.path.join(message[0].get_frame_path(),
message[0].get_frame_title())
source = self.mediaObject.setCurrentSource(Phonon.MediaSource(file))
self.onMediaPlay()
diff --git a/openlp/core/ui/screen.py b/openlp/core/ui/screen.py
index 32cc5ba50..c498d46cb 100644
--- a/openlp/core/ui/screen.py
+++ b/openlp/core/ui/screen.py
@@ -64,7 +64,23 @@ class ScreenList(object):
self.current_display = 0
else:
self.current = self.screen_list[number]
+ self.override = self.current
self.preview = self.current
self.current_display = number
if self.display_count == 1:
self.preview = self.screen_list[0]
+
+ def set_override_display(self):
+ """
+ replace the current size with the override values
+ user wants to have their own screen attributes
+ """
+ self.current = self.override
+ self.preview = self.current
+
+ def reset_current(self):
+ """
+ replace the current values with the correct values
+ user wants to use the correct screen attributes
+ """
+ self.set_current_display(self.current_display)
diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py
index 2b34a7c0d..a41c56387 100644
--- a/openlp/core/ui/slidecontroller.py
+++ b/openlp/core/ui/slidecontroller.py
@@ -234,6 +234,16 @@ class SlideController(QtGui.QWidget):
self.Mediabar.addToolbarButton(
u'Media Stop', u':/slides/media_playback_stop.png',
self.trUtf8('Start playing media'), self.onMediaStop)
+ if self.isLive:
+ self.blankButton = self.Mediabar.addToolbarButton(
+ u'Blank Screen', u':/slides/slide_blank.png',
+ self.trUtf8('Blank Screen'), self.onBlankDisplay, True)
+ self.themeButton = self.Mediabar.addToolbarButton(
+ u'Display Theme', u':/slides/slide_theme.png',
+ self.trUtf8('Theme Screen'), self.onThemeDisplay, True)
+ self.hideButton = self.Mediabar.addToolbarButton(
+ u'Hide screen', u':/slides/slide_desktop.png',
+ self.trUtf8('Hide Screen'), self.onHideDisplay, True)
if not self.isLive:
self.seekSlider = Phonon.SeekSlider()
self.seekSlider.setGeometry(QtCore.QRect(90, 260, 221, 24))
@@ -259,7 +269,7 @@ class SlideController(QtGui.QWidget):
self.PreviewFrame = QtGui.QFrame(self.Splitter)
self.PreviewFrame.setGeometry(QtCore.QRect(0, 0, 300, 225))
self.PreviewFrame.setSizePolicy(QtGui.QSizePolicy(
- QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Minimum,
+ QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Minimum,
QtGui.QSizePolicy.Label))
self.PreviewFrame.setFrameShape(QtGui.QFrame.StyledPanel)
self.PreviewFrame.setFrameShadow(QtGui.QFrame.Sunken)
@@ -316,26 +326,26 @@ class SlideController(QtGui.QWidget):
QtCore.SIGNAL(u'slidecontroller_%s_stop_loop' % self.type_prefix),
self.onStopLoop)
QtCore.QObject.connect(Receiver.get_receiver(),
- QtCore.SIGNAL(u'slidecontroller_%s_first' % self.type_prefix),
+ QtCore.SIGNAL(u'slidecontroller_%s_first' % self.type_prefix),
self.onSlideSelectedFirst)
QtCore.QObject.connect(Receiver.get_receiver(),
- QtCore.SIGNAL(u'slidecontroller_%s_next' % self.type_prefix),
+ QtCore.SIGNAL(u'slidecontroller_%s_next' % self.type_prefix),
self.onSlideSelectedNext)
QtCore.QObject.connect(Receiver.get_receiver(),
- QtCore.SIGNAL(u'slidecontroller_%s_previous' % self.type_prefix),
+ QtCore.SIGNAL(u'slidecontroller_%s_previous' % self.type_prefix),
self.onSlideSelectedPrevious)
QtCore.QObject.connect(Receiver.get_receiver(),
- QtCore.SIGNAL(u'slidecontroller_%s_next_noloop' % self.type_prefix),
+ QtCore.SIGNAL(u'slidecontroller_%s_next_noloop' % self.type_prefix),
self.onSlideSelectedNextNoloop)
QtCore.QObject.connect(Receiver.get_receiver(),
- QtCore.SIGNAL(u'slidecontroller_%s_previous_noloop' %
+ QtCore.SIGNAL(u'slidecontroller_%s_previous_noloop' %
self.type_prefix),
self.onSlideSelectedPreviousNoloop)
QtCore.QObject.connect(Receiver.get_receiver(),
- QtCore.SIGNAL(u'slidecontroller_%s_last' % self.type_prefix),
+ QtCore.SIGNAL(u'slidecontroller_%s_last' % self.type_prefix),
self.onSlideSelectedLast)
QtCore.QObject.connect(Receiver.get_receiver(),
- QtCore.SIGNAL(u'slidecontroller_%s_change' % self.type_prefix),
+ QtCore.SIGNAL(u'slidecontroller_%s_change' % self.type_prefix),
self.onSlideChange)
QtCore.QObject.connect(self.Splitter,
QtCore.SIGNAL(u'splitterMoved(int, int)'), self.trackSplitter)
@@ -481,7 +491,7 @@ class SlideController(QtGui.QWidget):
blanked = self.blankButton.isChecked()
else:
blanked = False
- Receiver.send_message(u'%s_start' % serviceItem.name.lower(),
+ Receiver.send_message(u'%s_start' % serviceItem.name.lower(),
[serviceItem, self.isLive, blanked, slideno])
self.slideList = {}
width = self.parent.ControlSplitter.sizes()[self.split]
@@ -554,9 +564,9 @@ class SlideController(QtGui.QWidget):
self.enableToolBar(serviceItem)
self.onSlideSelected()
self.PreviewListWidget.setFocus()
- Receiver.send_message(u'%s_%s_started' %
- (self.serviceItem.name.lower(),
- 'live' if self.isLive else 'preview'),
+ Receiver.send_message(u'%s_%s_started' %
+ (self.serviceItem.name.lower(),
+ 'live' if self.isLive else 'preview'),
[serviceItem])
log.log(15, u'Display Rendering took %4s' % (time.time() - before))
@@ -567,7 +577,7 @@ class SlideController(QtGui.QWidget):
"""
if not self.serviceItem:
return
- Receiver.send_message(u'%s_first' % self.serviceItem.name.lower(),
+ Receiver.send_message(u'%s_first' % self.serviceItem.name.lower(),
[self.serviceItem, self.isLive])
if self.serviceItem.is_command():
self.updatePreview()
@@ -593,7 +603,10 @@ class SlideController(QtGui.QWidget):
log.debug(u'onThemeDisplay %d' % force)
if force:
self.themeButton.setChecked(True)
- self.blankScreen(HideMode.Theme, self.themeButton.isChecked())
+ if self.themeButton.isChecked():
+ Receiver.send_message(u'maindisplay_show_theme')
+ else:
+ Receiver.send_message(u'maindisplay_hide_theme')
def onHideDisplay(self, force=False):
"""
@@ -603,9 +616,9 @@ class SlideController(QtGui.QWidget):
if force:
self.hideButton.setChecked(True)
if self.hideButton.isChecked():
- self.parent.mainDisplay.hideDisplay()
+ Receiver.send_message(u'maindisplay_hide')
else:
- self.parent.mainDisplay.showDisplay()
+ Receiver.send_message(u'maindisplay_show')
def blankScreen(self, blankType, blanked=False):
"""
@@ -613,15 +626,15 @@ class SlideController(QtGui.QWidget):
"""
if self.serviceItem is not None:
if blanked:
- Receiver.send_message(u'%s_blank' % self.serviceItem.name.lower(),
+ Receiver.send_message(u'%s_blank' % self.serviceItem.name.lower(),
[self.serviceItem, self.isLive])
else:
- Receiver.send_message(u'%s_unblank'
- % self.serviceItem.name.lower(),
+ Receiver.send_message(u'%s_unblank'
+ % self.serviceItem.name.lower(),
[self.serviceItem, self.isLive])
- self.parent.mainDisplay.blankDisplay(blankType, blanked)
+ self.parent.displayManager.mainDisplay.blankDisplay(blankType, blanked)
else:
- self.parent.mainDisplay.blankDisplay(blankType, blanked)
+ self.parent.displayManager.mainDisplay.blankDisplay(blankType, blanked)
def onSlideSelected(self):
"""
@@ -685,7 +698,7 @@ class SlideController(QtGui.QWidget):
"""
if not self.serviceItem:
return
- Receiver.send_message(u'%s_next' % self.serviceItem.name.lower(),
+ Receiver.send_message(u'%s_next' % self.serviceItem.name.lower(),
[self.serviceItem, self.isLive])
if self.serviceItem.is_command():
self.updatePreview()
@@ -709,7 +722,7 @@ class SlideController(QtGui.QWidget):
"""
if not self.serviceItem:
return
- Receiver.send_message(u'%s_previous' % self.serviceItem.name.lower(),
+ Receiver.send_message(u'%s_previous' % self.serviceItem.name.lower(),
[self.serviceItem, self.isLive])
if self.serviceItem.is_command():
self.updatePreview()
@@ -729,7 +742,7 @@ class SlideController(QtGui.QWidget):
"""
if not self.serviceItem:
return
- Receiver.send_message(u'%s_last' % self.serviceItem.name.lower(),
+ Receiver.send_message(u'%s_last' % self.serviceItem.name.lower(),
[self.serviceItem, self.isLive])
if self.serviceItem.is_command():
self.updatePreview()
@@ -775,7 +788,7 @@ class SlideController(QtGui.QWidget):
def onMediaStart(self, item):
if self.isLive:
- Receiver.send_message(u'videodisplay_start',
+ Receiver.send_message(u'videodisplay_start',
[item, self.blankButton.isChecked()])
else:
self.mediaObject.stop()
diff --git a/openlp/plugins/display/__init__.py b/openlp/plugins/display/__init__.py
new file mode 100644
index 000000000..1a348a0df
--- /dev/null
+++ b/openlp/plugins/display/__init__.py
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4
+
+###############################################################################
+# OpenLP - Open Source Lyrics Projection #
+# --------------------------------------------------------------------------- #
+# Copyright (c) 2008-2010 Raoul Snyman #
+# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin #
+# Thompson, Jon Tibble, Carsten Tinggaard #
+# --------------------------------------------------------------------------- #
+# 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; version 2 of the License. #
+# #
+# 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., 59 #
+# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
+###############################################################################
diff --git a/openlp/plugins/display/displaysplugin.py b/openlp/plugins/display/displaysplugin.py
new file mode 100644
index 000000000..052b28b5e
--- /dev/null
+++ b/openlp/plugins/display/displaysplugin.py
@@ -0,0 +1,117 @@
+from openlp.plugins.alerts.forms import AlertsTab, AlertForm# -*- coding: utf-8 -*-
+# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4
+
+###############################################################################
+# OpenLP - Open Source Lyrics Projection #
+# --------------------------------------------------------------------------- #
+# Copyright (c) 2008-2010 Raoul Snyman #
+# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin #
+# Thompson, Jon Tibble, Carsten Tinggaard #
+# --------------------------------------------------------------------------- #
+# 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; version 2 of the License. #
+# #
+# 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., 59 #
+# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
+###############################################################################
+
+from datetime import datetime
+import logging
+
+from PyQt4 import QtCore, QtGui
+
+from openlp.core.lib import Plugin, Receiver, str_to_bool, build_icon
+from openlp.plugins.display.forms import DisplayForm
+
+log = logging.getLogger(__name__)
+
+class DisplayPlugin(Plugin):
+ log.info(u'Display Plugin loaded')
+
+ def __init__(self, plugin_helpers):
+ Plugin.__init__(self, u'Display', u'1.9.1', plugin_helpers)
+ self.weight = -2
+ self.icon = build_icon(u':/media/media_image.png')
+
+ def add_tools_menu_item(self, tools_menu):
+ """
+ Give the Display plugin the opportunity to add items to the
+ **Tools** menu.
+
+ ``tools_menu``
+ The actual **Tools** menu item, so that your actions can
+ use it as their parent.
+ """
+ log.info(u'add tools menu')
+ self.toolsMenu = tools_menu
+ self.DisplayMenu = QtGui.QMenu(tools_menu)
+ self.DisplayMenu.setObjectName(u'DisplayMenu')
+ self.DisplayMenu.setTitle(tools_menu.trUtf8('&Override Display'))
+ #Display Delete
+ self.DisplayOverride = QtGui.QAction(tools_menu)
+ self.DisplayOverride.setText(
+ tools_menu.trUtf8('&Change Display Attributes'))
+ self.DisplayOverride.setStatusTip(
+ tools_menu.trUtf8('Amend the display attributes'))
+ self.DisplayOverride.setObjectName(u'DisplayOverride')
+ #Display activation
+ DisplayIcon = build_icon(u':/tools/tools_alert.png')
+ self.DisplayStatus = QtGui.QAction(tools_menu)
+ self.DisplayStatus.setIcon(DisplayIcon)
+ self.DisplayStatus.setCheckable(True)
+ self.DisplayStatus.setChecked(False)
+ self.DisplayStatus.setText(tools_menu.trUtf8('Use Display Override'))
+ self.DisplayStatus.setStatusTip(
+ tools_menu.trUtf8('Change start/stop using Display Override'))
+ self.DisplayStatus.setShortcut(u'FX')
+ self.DisplayStatus.setObjectName(u'DisplayStatus')
+ #Add Menus together
+ self.toolsMenu.addAction(self.DisplayMenu.menuAction())
+ self.DisplayMenu.addAction(self.DisplayStatus)
+ self.DisplayMenu.addSeparator()
+ self.DisplayMenu.addAction(self.DisplayOverride)
+ # Signals and slots
+ QtCore.QObject.connect(self.DisplayStatus,
+ QtCore.SIGNAL(u'visibilityChanged(bool)'),
+ self.DisplayStatus.setChecked)
+ QtCore.QObject.connect(self.DisplayStatus,
+ QtCore.SIGNAL(u'triggered(bool)'),
+ self.toggleDisplayState)
+ QtCore.QObject.connect(self.DisplayOverride,
+ QtCore.SIGNAL(u'triggered()'), self.onDisplayOverride)
+ self.DisplayMenu.menuAction().setVisible(False)
+
+ def initialise(self):
+ log.info(u'Display Initialising')
+ Plugin.initialise(self)
+ self.DisplayStatus.setChecked(False)
+ self.screens = self.maindisplay.screens
+ self.displayform = DisplayForm(self, self.screens)
+ self.DisplayMenu.menuAction().setVisible(True)
+
+ def finalise(self):
+ log.info(u'Plugin Finalise')
+ self.DisplayMenu.menuAction().setVisible(False)
+
+ def toggleDisplayState(self):
+ Receiver.send_message(u'config_screen_changed')
+
+ def onDisplayOverride(self):
+ self.displayform.initialise()
+ self.displayform.exec_()
+ if self.DisplayStatus.isChecked():
+ Receiver.send_message(u'config_screen_changed')
+
+ def about(self):
+ about_text = self.trUtf8('Display Plugin
This plugin '
+ 'allows the dimensions of the live display to be changed.\n'
+ 'These changes are not stored.')
+ return about_text
diff --git a/openlp/plugins/display/forms/__init__.py b/openlp/plugins/display/forms/__init__.py
new file mode 100644
index 000000000..e6a60c3a2
--- /dev/null
+++ b/openlp/plugins/display/forms/__init__.py
@@ -0,0 +1,26 @@
+# -*- coding: utf-8 -*-
+# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4
+
+###############################################################################
+# OpenLP - Open Source Lyrics Projection #
+# --------------------------------------------------------------------------- #
+# Copyright (c) 2008-2010 Raoul Snyman #
+# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin #
+# Thompson, Jon Tibble, Carsten Tinggaard #
+# --------------------------------------------------------------------------- #
+# 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; version 2 of the License. #
+# #
+# 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., 59 #
+# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
+###############################################################################
+
+from displayform import DisplayForm
diff --git a/openlp/plugins/display/forms/displaydialog.py b/openlp/plugins/display/forms/displaydialog.py
new file mode 100644
index 000000000..8c145b73f
--- /dev/null
+++ b/openlp/plugins/display/forms/displaydialog.py
@@ -0,0 +1,82 @@
+# -*- coding: utf-8 -*-
+
+# Form implementation generated from reading ui file 'displaydialog.ui'
+#
+# Created: Sat Apr 24 17:20:48 2010
+# by: PyQt4 UI code generator 4.7.2
+#
+# WARNING! All changes made in this file will be lost!
+
+from PyQt4 import QtCore, QtGui
+
+class Ui_DisplaysDialog(object):
+ def setupUi(self, DisplaysDialog):
+ DisplaysDialog.setObjectName("DisplaysDialog")
+ DisplaysDialog.resize(327, 224)
+ self.OkpushButton = QtGui.QPushButton(DisplaysDialog)
+ self.OkpushButton.setGeometry(QtCore.QRect(210, 200, 97, 24))
+ self.OkpushButton.setObjectName("OkpushButton")
+ self.widget = QtGui.QWidget(DisplaysDialog)
+ self.widget.setGeometry(QtCore.QRect(10, 0, 301, 191))
+ self.widget.setObjectName("widget")
+ self.verticalLayout = QtGui.QVBoxLayout(self.widget)
+ self.verticalLayout.setObjectName("verticalLayout")
+ self.CurrentGroupBox = QtGui.QGroupBox(self.widget)
+ self.CurrentGroupBox.setObjectName("CurrentGroupBox")
+ self.layoutWidget = QtGui.QWidget(self.CurrentGroupBox)
+ self.layoutWidget.setGeometry(QtCore.QRect(20, 30, 261, 17))
+ self.layoutWidget.setObjectName("layoutWidget")
+ self.horizontalLayout = QtGui.QHBoxLayout(self.layoutWidget)
+ self.horizontalLayout.setObjectName("horizontalLayout")
+ self.Xpos = QtGui.QLabel(self.layoutWidget)
+ self.Xpos.setAlignment(QtCore.Qt.AlignCenter)
+ self.Xpos.setObjectName("Xpos")
+ self.horizontalLayout.addWidget(self.Xpos)
+ self.Ypos = QtGui.QLabel(self.layoutWidget)
+ self.Ypos.setAlignment(QtCore.Qt.AlignCenter)
+ self.Ypos.setObjectName("Ypos")
+ self.horizontalLayout.addWidget(self.Ypos)
+ self.Height = QtGui.QLabel(self.layoutWidget)
+ self.Height.setAlignment(QtCore.Qt.AlignCenter)
+ self.Height.setObjectName("Height")
+ self.horizontalLayout.addWidget(self.Height)
+ self.Width = QtGui.QLabel(self.layoutWidget)
+ self.Width.setAlignment(QtCore.Qt.AlignCenter)
+ self.Width.setObjectName("Width")
+ self.horizontalLayout.addWidget(self.Width)
+ self.verticalLayout.addWidget(self.CurrentGroupBox)
+ self.CurrentGroupBox_2 = QtGui.QGroupBox(self.widget)
+ self.CurrentGroupBox_2.setObjectName("CurrentGroupBox_2")
+ self.layoutWidget1 = QtGui.QWidget(self.CurrentGroupBox_2)
+ self.layoutWidget1.setGeometry(QtCore.QRect(20, 30, 261, 27))
+ self.layoutWidget1.setObjectName("layoutWidget1")
+ self.horizontalLayout_2 = QtGui.QHBoxLayout(self.layoutWidget1)
+ self.horizontalLayout_2.setObjectName("horizontalLayout_2")
+ self.XposEdit = QtGui.QLineEdit(self.layoutWidget1)
+ self.XposEdit.setObjectName("XposEdit")
+ self.horizontalLayout_2.addWidget(self.XposEdit)
+ self.YposEdit = QtGui.QLineEdit(self.layoutWidget1)
+ self.YposEdit.setObjectName("YposEdit")
+ self.horizontalLayout_2.addWidget(self.YposEdit)
+ self.HeightEdit = QtGui.QLineEdit(self.layoutWidget1)
+ self.HeightEdit.setObjectName("HeightEdit")
+ self.horizontalLayout_2.addWidget(self.HeightEdit)
+ self.WidthEdit = QtGui.QLineEdit(self.layoutWidget1)
+ self.WidthEdit.setObjectName("WidthEdit")
+ self.horizontalLayout_2.addWidget(self.WidthEdit)
+ self.verticalLayout.addWidget(self.CurrentGroupBox_2)
+
+ self.retranslateUi(DisplaysDialog)
+ QtCore.QObject.connect(self.OkpushButton, QtCore.SIGNAL("pressed()"), DisplaysDialog.close)
+ QtCore.QMetaObject.connectSlotsByName(DisplaysDialog)
+
+ def retranslateUi(self, DisplaysDialog):
+ DisplaysDialog.setWindowTitle(QtGui.QApplication.translate("DisplaysDialog", "Amend Display Settings", None, QtGui.QApplication.UnicodeUTF8))
+ self.OkpushButton.setText(QtGui.QApplication.translate("DisplaysDialog", "Ok", None, QtGui.QApplication.UnicodeUTF8))
+ self.CurrentGroupBox.setTitle(QtGui.QApplication.translate("DisplaysDialog", "Default Settings", None, QtGui.QApplication.UnicodeUTF8))
+ self.Xpos.setText(QtGui.QApplication.translate("DisplaysDialog", "0", None, QtGui.QApplication.UnicodeUTF8))
+ self.Ypos.setText(QtGui.QApplication.translate("DisplaysDialog", "0", None, QtGui.QApplication.UnicodeUTF8))
+ self.Height.setText(QtGui.QApplication.translate("DisplaysDialog", "0", None, QtGui.QApplication.UnicodeUTF8))
+ self.Width.setText(QtGui.QApplication.translate("DisplaysDialog", "0", None, QtGui.QApplication.UnicodeUTF8))
+ self.CurrentGroupBox_2.setTitle(QtGui.QApplication.translate("DisplaysDialog", "Amend Settings", None, QtGui.QApplication.UnicodeUTF8))
+
diff --git a/openlp/plugins/display/forms/displayform.py b/openlp/plugins/display/forms/displayform.py
new file mode 100644
index 000000000..cb6550a84
--- /dev/null
+++ b/openlp/plugins/display/forms/displayform.py
@@ -0,0 +1,163 @@
+# -*- coding: utf-8 -*-
+# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4
+
+###############################################################################
+# OpenLP - Open Source Lyrics Projection #
+# --------------------------------------------------------------------------- #
+# Copyright (c) 2008-2010 Raoul Snyman #
+# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin #
+# Thompson, Jon Tibble, Carsten Tinggaard #
+# --------------------------------------------------------------------------- #
+# 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; version 2 of the License. #
+# #
+# 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., 59 #
+# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
+###############################################################################
+
+from PyQt4 import QtGui, QtCore
+
+from openlp.plugins.alerts.lib.models import AlertItem
+
+from displaydialog import Ui_DisplaysDialog
+
+class DisplayForm(QtGui.QDialog, Ui_DisplaysDialog):
+ """
+ Class documentation goes here.
+ """
+ def __init__(self, parent, screens):
+ """
+ Constructor
+ """
+ self.parent = parent
+ self.screens = screens
+ self.item_id = None
+ QtGui.QDialog.__init__(self, None)
+ self.setupUi(self)
+# QtCore.QObject.connect(self.DisplayButton,
+# QtCore.SIGNAL(u'clicked()'),
+# self.onDisplayClicked)
+# QtCore.QObject.connect(self.DisplayCloseButton,
+# QtCore.SIGNAL(u'clicked()'),
+# self.onDisplayCloseClicked)
+# QtCore.QObject.connect(self.AlertTextEdit,
+# QtCore.SIGNAL(u'textChanged(const QString&)'),
+# self.onTextChanged)
+# QtCore.QObject.connect(self.NewButton,
+# QtCore.SIGNAL(u'clicked()'),
+# self.onNewClick)
+# QtCore.QObject.connect(self.DeleteButton,
+# QtCore.SIGNAL(u'clicked()'),
+# self.onDeleteClick)
+# QtCore.QObject.connect(self.SaveButton,
+# QtCore.SIGNAL(u'clicked()'),
+# self.onSaveClick)
+# QtCore.QObject.connect(self.AlertListWidget,
+# QtCore.SIGNAL(u'doubleClicked(QModelIndex)'),
+# self.onDoubleClick)
+# QtCore.QObject.connect(self.AlertListWidget,
+# QtCore.SIGNAL(u'clicked(QModelIndex)'),
+# self.onSingleClick)
+
+ def initialise(self):
+ self.Xpos.setText(unicode(self.screens.current[u'size'].x()))
+ self.Ypos.setText(unicode(self.screens.current[u'size'].y()))
+ self.Height.setText(unicode(self.screens.current[u'size'].height()))
+ self.Width.setText(unicode(self.screens.current[u'size'].width()))
+ self.XposEdit.setText(unicode(self.screens.override[u'size'].x()))
+ self.YposEdit.setText(unicode(self.screens.override[u'size'].y()))
+ self.HeightEdit.setText(unicode(self.screens.override[u'size'].height()))
+ self.WidthEdit.setText(unicode(self.screens.override[u'size'].width()))
+
+ def close(self):
+ self.screens.override[u'size'] = QtCore.QRect(int(self.XposEdit.text()),\
+ int(self.YposEdit.text()), int(self.WidthEdit.text()),\
+ int(self.HeightEdit.text()))
+ return QtGui.QDialog.close(self)
+
+ def onDisplayClicked(self):
+ if self.triggerAlert(unicode(self.AlertTextEdit.text())):
+ self.loadList()
+
+ def onDisplayCloseClicked(self):
+ if self.triggerAlert(unicode(self.AlertTextEdit.text())):
+ self.close()
+
+ def onDeleteClick(self):
+ item = self.AlertListWidget.currentItem()
+ if item:
+ item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
+ self.parent.manager.delete_alert(item_id)
+ row = self.AlertListWidget.row(item)
+ self.AlertListWidget.takeItem(row)
+ self.AlertTextEdit.setText(u'')
+ self.SaveButton.setEnabled(False)
+ self.DeleteButton.setEnabled(False)
+ self.EditButton.setEnabled(False)
+
+ def onNewClick(self):
+ if len(self.AlertTextEdit.text()) == 0:
+ QtGui.QMessageBox.information(self,
+ self.trUtf8('Item selected to Add'),
+ self.trUtf8('Missing data'))
+ else:
+ alert = AlertItem()
+ alert.text = unicode(self.AlertTextEdit.text())
+ self.manager.save_alert(alert)
+ self.AlertTextEdit.setText(u'')
+ self.loadList()
+
+ def onSaveClick(self):
+ if self.item_id:
+ alert = self.manager.get_alert(self.item_id)
+ alert.text = unicode(self.AlertTextEdit.text())
+ self.manager.save_alert(alert)
+ self.item_id = None
+ self.loadList()
+ else:
+ self.onNewClick()
+
+ def onTextChanged(self):
+ #Data has changed by editing it so potential storage required
+ self.SaveButton.setEnabled(True)
+
+ def onDoubleClick(self):
+ """
+ List item has been double clicked to display it
+ """
+ items = self.AlertListWidget.selectedIndexes()
+ for item in items:
+ bitem = self.AlertListWidget.item(item.row())
+ self.triggerAlert(bitem.text())
+ self.AlertTextEdit.setText(bitem.text())
+ self.item_id = (bitem.data(QtCore.Qt.UserRole)).toInt()[0]
+ self.SaveButton.setEnabled(False)
+ self.DeleteButton.setEnabled(True)
+
+ def onSingleClick(self):
+ """
+ List item has been single clicked to add it to
+ the edit field so it can be changed.
+ """
+ items = self.AlertListWidget.selectedIndexes()
+ for item in items:
+ bitem = self.AlertListWidget.item(item.row())
+ self.AlertTextEdit.setText(bitem.text())
+ self.item_id = (bitem.data(QtCore.Qt.UserRole)).toInt()[0]
+ self.SaveButton.setEnabled(False)
+ self.DeleteButton.setEnabled(True)
+
+ def triggerAlert(self, text):
+ if text:
+ text = text.replace(u'<>', unicode(self.ParameterEdit.text()))
+ self.parent.alertsmanager.displayAlert(text)
+ return True
+ return False
diff --git a/resources/forms/displaydialog.ui b/resources/forms/displaydialog.ui
new file mode 100644
index 000000000..a8feb7842
--- /dev/null
+++ b/resources/forms/displaydialog.ui
@@ -0,0 +1,151 @@
+
+
+ DisplaysDialog
+
+
+
+ 0
+ 0
+ 327
+ 224
+
+
+
+ Amend Display Settings
+
+
+
+
+ 210
+ 200
+ 97
+ 24
+
+
+
+ Ok
+
+
+
+
+
+ 10
+ 0
+ 301
+ 191
+
+
+
+ -
+
+
+ Default Settings
+
+
+
+
+ 20
+ 30
+ 261
+ 17
+
+
+
+
-
+
+
+ 0
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+ 0
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+ 0
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+ 0
+
+
+ Qt::AlignCenter
+
+
+
+
+
+
+
+ -
+
+
+ Amend Settings
+
+
+
+
+ 20
+ 30
+ 261
+ 27
+
+
+
+
-
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+ OkpushButton
+ pressed()
+ DisplaysDialog
+ close()
+
+
+ 258
+ 211
+
+
+ 163
+ 111
+
+
+
+
+