openlp-core team mailing list archive
-
openlp-core team
-
Mailing list archive
-
Message #01481
[Merge] lp:~trb143/openlp/working into lp:openlp
Tim Bentley has proposed merging lp:~trb143/openlp/working into lp:openlp.
Requested reviews:
OpenLP Core (openlp-core)
Fix the hide buttons so they work for text and videos. Presentations needs looking at!
Fix presentations so they work
Add new attribute to themes so line spacing can be adjusted bigger and smaller
Alerts over videos now works correctly.
Add new setting so Text frames can be sized and positioned for use where a monitor is different size to the final output.
--
https://code.launchpad.net/~trb143/openlp/working/+merge/24502
Your team OpenLP Core is subscribed to branch lp:openlp.
=== modified file 'openlp/core/lib/renderer.py'
--- openlp/core/lib/renderer.py 2010-04-21 16:59:48 +0000
+++ openlp/core/lib/renderer.py 2010-04-30 14:37:20 +0000
@@ -244,7 +244,8 @@
bbox1 = self._render_lines_unaligned(footer_lines, True)
# reset the frame. first time do not worry about what you paint on.
self._frame = QtGui.QImage(self.bg_frame)
- self._frameOp = QtGui.QImage(self.bg_frame)
+ if self._theme.display_slideTransition:
+ self._frameOp = QtGui.QImage(self.bg_frame)
x, y = self._correctAlignment(self._rect, bbox)
bbox = self._render_lines_unaligned(lines, False, (x, y), True)
if footer_lines:
@@ -463,10 +464,11 @@
# now draw the text, and any outlines/shadows
if self._theme.display_shadow:
self._get_extent_and_render(line, footer,
- tlcorner=(x + display_shadow_size, y + display_shadow_size),
- draw=True, color = self._theme.display_shadow_color)
- self._get_extent_and_render(line, footer, tlcorner=(x, y), draw=True,
- outline_size=display_outline_size)
+ tlcorner=(x + display_shadow_size,
+ y + display_shadow_size),
+ draw=True, color = self._theme.display_shadow_color)
+ self._get_extent_and_render(line, footer, tlcorner=(x, y),
+ draw=True, outline_size=display_outline_size)
y += h
if linenum == 0:
self._first_line_right_extent = rightextent
@@ -532,7 +534,7 @@
font = self.mainFont
metrics = QtGui.QFontMetrics(font)
w = metrics.width(line)
- h = metrics.height()
+ h = metrics.height() + int(self._theme.font_main_line_adjustment)
if draw:
self.painter.setFont(font)
if color is None:
@@ -543,27 +545,29 @@
else:
pen = QtGui.QColor(color)
x, y = tlcorner
+ rowpos = y + metrics.ascent()
if self._theme.display_outline and outline_size != 0 and not footer:
path = QtGui.QPainterPath()
- path.addText(QtCore.QPointF(x, y + metrics.ascent()), font, line)
+ path.addText(QtCore.QPointF(x, rowpos), font, line)
self.painter.setBrush(self.painter.pen().brush())
self.painter.setPen(QtGui.QPen(
QtGui.QColor(self._theme.display_outline_color), outline_size))
self.painter.drawPath(path)
self.painter.setPen(pen)
- self.painter.drawText(x, y + metrics.ascent(), line)
+ self.painter.drawText(x, rowpos, line)
if self._theme.display_slideTransition:
# Print 2nd image with 70% weight
if self._theme.display_outline and outline_size != 0 and not footer:
path = QtGui.QPainterPath()
- path.addText(QtCore.QPointF(x, y + metrics.ascent()), font, line)
+ path.addText(QtCore.QPointF(x, rowpos), font, line)
self.painter2.setBrush(self.painter2.pen().brush())
self.painter2.setPen(QtGui.QPen(
- QtGui.QColor(self._theme.display_outline_color), outline_size))
+ QtGui.QColor(self._theme.display_outline_color),
+ outline_size))
self.painter2.drawPath(path)
self.painter2.setFont(font)
self.painter2.setPen(pen)
- self.painter2.drawText(x, y + metrics.ascent(), line)
+ self.painter2.drawText(x, rowpos, line)
return (w, h)
def snoop_Image(self, image, image2=None):
=== modified file 'openlp/core/lib/serviceitem.py'
--- openlp/core/lib/serviceitem.py 2010-04-23 20:39:27 +0000
+++ openlp/core/lib/serviceitem.py 2010-04-30 14:37:20 +0000
@@ -49,7 +49,6 @@
RequiresMedia = 4
AllowsLoop = 5
-
class ServiceItem(object):
"""
The service item is a base class for the plugins to use to interact with
=== modified file 'openlp/core/lib/themexmlhandler.py'
--- openlp/core/lib/themexmlhandler.py 2010-03-21 23:58:01 +0000
+++ openlp/core/lib/themexmlhandler.py 2010-04-30 14:37:20 +0000
@@ -53,6 +53,7 @@
<weight>Normal</weight>
<italics>False</italics>
<indentation>0</indentation>
+ <line_adjustment>0</line_adjustment>
<location override="False" x="10" y="10" width="1004" height="730"/>
</font>
<font type="footer">
@@ -62,6 +63,7 @@
<weight>Normal</weight>
<italics>False</italics>
<indentation>0</indentation>
+ <line_adjustment>0</line_adjustment>
<location override="False" x="10" y="730" width="1004" height="38"/>
</font>
<display>
@@ -171,8 +173,8 @@
self.child_element(background, u'filename', filename)
def add_font(self, name, color, proportion, override, fonttype=u'main',
- weight=u'Normal', italics=u'False', indentation=0, xpos=0, ypos=0,
- width=0, height=0):
+ weight=u'Normal', italics=u'False', indentation=0, line_adjustment=0,
+ xpos=0, ypos=0, width=0, height=0):
"""
Add a Font.
@@ -227,6 +229,8 @@
self.child_element(background, u'italics', italics)
#Create indentation name element
self.child_element(background, u'indentation', unicode(indentation))
+ #Create indentation name element
+ self.child_element(background, u'line_adjustment', unicode(line_adjustment))
#Create Location element
element = self.theme_xml.createElement(u'location')
=== modified file 'openlp/core/ui/__init__.py'
--- openlp/core/ui/__init__.py 2010-04-13 15:53:00 +0000
+++ openlp/core/ui/__init__.py 2010-04-30 14:37:20 +0000
@@ -23,6 +23,16 @@
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
###############################################################################
+class HideMode(object):
+ """
+ This is basically an enumeration class which specifies the mode of a Bible.
+ Mode refers to whether or not a Bible in OpenLP is a full Bible or needs to
+ be downloaded from the Internet on an as-needed basis.
+ """
+ Blank = 1
+ Theme = 2
+ Screen = 3
+
from slidecontroller import HideMode
from servicenoteform import ServiceNoteForm
from serviceitemeditform import ServiceItemEditForm
@@ -33,6 +43,7 @@
from amendthemeform import AmendThemeForm
from slidecontroller import SlideController
from splashscreen import SplashScreen
+from displaytab import DisplayTab
from generaltab import GeneralTab
from themestab import ThemesTab
from aboutform import AboutForm
=== modified file 'openlp/core/ui/amendthemedialog.py'
--- openlp/core/ui/amendthemedialog.py 2010-03-23 19:04:15 +0000
+++ openlp/core/ui/amendthemedialog.py 2010-04-30 14:37:20 +0000
@@ -178,16 +178,22 @@
self.FontMainWeightLabel.setObjectName("FontMainWeightLabel")
self.MainFontLayout.setWidget(3, QtGui.QFormLayout.LabelRole, self.FontMainWeightLabel)
self.MainLeftLayout.addWidget(self.FontMainGroupBox)
+ self.FontMainWrapLineAdjustmentLabel = QtGui.QLabel(self.FontMainGroupBox)
+ self.FontMainWrapLineAdjustmentLabel.setObjectName("FontMainWrapLineAdjustmentLabel")
+ self.MainFontLayout.setWidget(4, QtGui.QFormLayout.LabelRole, self.FontMainWrapLineAdjustmentLabel)
+ self.FontMainLineAdjustmentSpinBox = QtGui.QSpinBox(self.FontMainGroupBox)
+ self.FontMainLineAdjustmentSpinBox.setObjectName("FontMainLineAdjustmentSpinBox")
+ self.MainFontLayout.setWidget(4, QtGui.QFormLayout.FieldRole, self.FontMainLineAdjustmentSpinBox)
self.FontMainWrapIndentationLabel = QtGui.QLabel(self.FontMainGroupBox)
self.FontMainWrapIndentationLabel.setObjectName("FontMainWrapIndentationLabel")
- self.MainFontLayout.setWidget(4, QtGui.QFormLayout.LabelRole, self.FontMainWrapIndentationLabel)
+ self.MainFontLayout.setWidget(5, QtGui.QFormLayout.LabelRole, self.FontMainWrapIndentationLabel)
self.FontMainLineSpacingSpinBox = QtGui.QSpinBox(self.FontMainGroupBox)
self.FontMainLineSpacingSpinBox.setObjectName("FontMainLineSpacingSpinBox")
self.FontMainLineSpacingSpinBox.setMaximum(10)
- self.MainFontLayout.setWidget(4, QtGui.QFormLayout.FieldRole, self.FontMainLineSpacingSpinBox)
+ self.MainFontLayout.setWidget(5, QtGui.QFormLayout.FieldRole, self.FontMainLineSpacingSpinBox)
self.FontMainLinesPageLabel = QtGui.QLabel(self.FontMainGroupBox)
self.FontMainLinesPageLabel.setObjectName("FontMainLinesPageLabel")
- self.MainFontLayout.setWidget(5, QtGui.QFormLayout.LabelRole, self.FontMainLinesPageLabel)
+ self.MainFontLayout.setWidget(6, QtGui.QFormLayout.LabelRole, self.FontMainLinesPageLabel)
spacerItem1 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
self.MainLeftLayout.addItem(spacerItem1)
self.FontMainLayout.addWidget(self.MainLeftWidget)
@@ -620,6 +626,7 @@
self.FontMainSize.setText(self.trUtf8('Size:'))
self.FontMainSizeSpinBox.setSuffix(self.trUtf8('pt'))
self.FontMainWrapIndentationLabel.setText(self.trUtf8('Wrap Indentation'))
+ self.FontMainWrapLineAdjustmentLabel.setText(self.trUtf8('Adjust Line Spacing'))
self.FontMainWeightComboBox.setItemText(0, self.trUtf8('Normal'))
self.FontMainWeightComboBox.setItemText(1, self.trUtf8('Bold'))
self.FontMainWeightComboBox.setItemText(2, self.trUtf8('Italics'))
=== modified file 'openlp/core/ui/amendthemeform.py'
--- openlp/core/ui/amendthemeform.py 2010-03-26 20:48:46 +0000
+++ openlp/core/ui/amendthemeform.py 2010-04-30 14:37:20 +0000
@@ -101,6 +101,9 @@
QtCore.QObject.connect(self.FontMainHeightSpinBox,
QtCore.SIGNAL(u'editingFinished()'),
self.onFontMainHeightSpinBoxChanged)
+ QtCore.QObject.connect(self.FontMainLineAdjustmentSpinBox,
+ QtCore.SIGNAL(u'editingFinished()'),
+ self.onFontMainLineAdjustmentSpinBoxChanged)
QtCore.QObject.connect(self.FontMainLineSpacingSpinBox,
QtCore.SIGNAL(u'editingFinished()'),
self.onFontMainLineSpacingSpinBoxChanged)
@@ -163,6 +166,7 @@
unicode(self.theme.font_main_weight),
unicode(self.theme.font_main_italics),
unicode(self.theme.font_main_indentation),
+ unicode(self.theme.font_main_line_adjustment),
unicode(self.theme.font_main_x),
unicode(self.theme.font_main_y),
unicode(self.theme.font_main_width),
@@ -173,7 +177,8 @@
unicode(self.theme.font_footer_override), u'footer',
unicode(self.theme.font_footer_weight),
unicode(self.theme.font_footer_italics),
- 0,
+ 0, # indentation
+ 0, # line adjustment
unicode(self.theme.font_footer_x),
unicode(self.theme.font_footer_y),
unicode(self.theme.font_footer_width),
@@ -261,6 +266,8 @@
self.FontMainYSpinBox.setValue(self.theme.font_main_y)
self.FontMainWidthSpinBox.setValue(self.theme.font_main_width)
self.FontMainHeightSpinBox.setValue(self.theme.font_main_height)
+ self.FontMainLineAdjustmentSpinBox.setValue(
+ self.theme.font_main_line_adjustment)
self.FontMainLineSpacingSpinBox.setValue(
self.theme.font_main_indentation)
self.stateChanging(self.theme)
@@ -281,6 +288,13 @@
self.theme.font_main_width = self.FontMainWidthSpinBox.value()
self.previewTheme()
+ def onFontMainLineAdjustmentSpinBoxChanged(self):
+ if self.theme.font_main_line_adjustment != \
+ self.FontMainLineAdjustmentSpinBox.value():
+ self.theme.font_main_line_adjustment = \
+ self.FontMainLineAdjustmentSpinBox.value()
+ self.previewTheme()
+
def onFontMainLineSpacingSpinBoxChanged(self):
if self.theme.font_main_indentation != \
self.FontMainLineSpacingSpinBox.value():
@@ -687,7 +701,8 @@
if self.allowPreview:
#calculate main number of rows
metrics = self._getThemeMetrics()
- line_height = metrics.height()
+ line_height = metrics.height() \
+ + int(self.theme.font_main_line_adjustment)
if self.theme.display_shadow:
line_height += int(self.theme.display_shadow_size)
if self.theme.display_outline:
@@ -700,7 +715,6 @@
page_length))
page_length_text = unicode(self.trUtf8('Slide Height is %s rows'))
self.FontMainLinesPageLabel.setText(page_length_text % page_length)
- #a=c
frame = self.thememanager.generateImage(self.theme)
self.ThemePreview.setPixmap(QtGui.QPixmap.fromImage(frame))
=== added file 'openlp/core/ui/displaytab.py'
--- openlp/core/ui/displaytab.py 1970-01-01 00:00:00 +0000
+++ openlp/core/ui/displaytab.py 2010-04-30 14:37:20 +0000
@@ -0,0 +1,235 @@
+# -*- 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.core.lib import SettingsTab, Receiver
+
+class DisplayTab(SettingsTab):
+ """
+ Class documentation goes here.
+ """
+ def __init__(self, screens):
+ """
+ Constructor
+ """
+ self.screens = screens
+ SettingsTab.__init__(self, u'Display')
+
+ def setupUi(self):
+ self.tabTitleVisible = self.trUtf8('Displays')
+ self.layoutWidget = QtGui.QWidget(self)
+ self.layoutWidget.setGeometry(QtCore.QRect(0, 40, 241, 79))
+ self.layoutWidget.setObjectName("layoutWidget")
+ self.verticalLayout = QtGui.QVBoxLayout(self.layoutWidget)
+ self.verticalLayout.setObjectName("verticalLayout")
+ self.CurrentGroupBox = QtGui.QGroupBox(self.layoutWidget)
+ self.CurrentGroupBox.setObjectName("CurrentGroupBox")
+ self.horizontalLayout = QtGui.QHBoxLayout(self.CurrentGroupBox)
+ self.horizontalLayout.setObjectName("horizontalLayout")
+ self.verticalLayout_6 = QtGui.QVBoxLayout()
+ self.verticalLayout_6.setObjectName("verticalLayout_6")
+ self.XLabel = QtGui.QLabel(self.CurrentGroupBox)
+ self.XLabel.setAlignment(QtCore.Qt.AlignCenter)
+ self.XLabel.setObjectName("XLabel")
+ self.verticalLayout_6.addWidget(self.XLabel)
+ self.Xpos = QtGui.QLabel(self.CurrentGroupBox)
+ self.Xpos.setAlignment(QtCore.Qt.AlignCenter)
+ self.Xpos.setObjectName("Xpos")
+ self.verticalLayout_6.addWidget(self.Xpos)
+ self.horizontalLayout.addLayout(self.verticalLayout_6)
+ self.verticalLayout_7 = QtGui.QVBoxLayout()
+ self.verticalLayout_7.setObjectName("verticalLayout_7")
+ self.YLabel = QtGui.QLabel(self.CurrentGroupBox)
+ self.YLabel.setAlignment(QtCore.Qt.AlignCenter)
+ self.YLabel.setObjectName("YLabel")
+ self.verticalLayout_7.addWidget(self.YLabel)
+ self.Ypos = QtGui.QLabel(self.CurrentGroupBox)
+ self.Ypos.setAlignment(QtCore.Qt.AlignCenter)
+ self.Ypos.setObjectName("Ypos")
+ self.verticalLayout_7.addWidget(self.Ypos)
+ self.horizontalLayout.addLayout(self.verticalLayout_7)
+ self.verticalLayout_9 = QtGui.QVBoxLayout()
+ self.verticalLayout_9.setObjectName("verticalLayout_9")
+ self.HeightLabel = QtGui.QLabel(self.CurrentGroupBox)
+ self.HeightLabel.setMaximumSize(QtCore.QSize(100, 16777215))
+ self.HeightLabel.setAlignment(QtCore.Qt.AlignCenter)
+ self.HeightLabel.setObjectName("HeightLabel")
+ self.verticalLayout_9.addWidget(self.HeightLabel)
+ self.Height = QtGui.QLabel(self.CurrentGroupBox)
+ self.Height.setAlignment(QtCore.Qt.AlignCenter)
+ self.Height.setObjectName("Height")
+ self.verticalLayout_9.addWidget(self.Height)
+ self.horizontalLayout.addLayout(self.verticalLayout_9)
+ self.verticalLayout_8 = QtGui.QVBoxLayout()
+ self.verticalLayout_8.setObjectName("verticalLayout_8")
+ self.WidthLabel = QtGui.QLabel(self.CurrentGroupBox)
+ self.WidthLabel.setAlignment(QtCore.Qt.AlignCenter)
+ self.WidthLabel.setObjectName("WidthLabel")
+ self.verticalLayout_8.addWidget(self.WidthLabel)
+ self.Width = QtGui.QLabel(self.CurrentGroupBox)
+ self.Width.setAlignment(QtCore.Qt.AlignCenter)
+ self.Width.setObjectName("Width")
+ self.verticalLayout_8.addWidget(self.Width)
+ self.horizontalLayout.addLayout(self.verticalLayout_8)
+ self.verticalLayout.addWidget(self.CurrentGroupBox)
+ self.CurrentGroupBox_2 = QtGui.QGroupBox(self)
+ self.CurrentGroupBox_2.setGeometry(QtCore.QRect(0, 130, 248, 87))
+ self.CurrentGroupBox_2.setMaximumSize(QtCore.QSize(500, 16777215))
+ self.CurrentGroupBox_2.setObjectName("CurrentGroupBox_2")
+ self.horizontalLayout_2 = QtGui.QHBoxLayout(self.CurrentGroupBox_2)
+ self.horizontalLayout_2.setObjectName("horizontalLayout_2")
+ self.verticalLayout_2 = QtGui.QVBoxLayout()
+ self.verticalLayout_2.setObjectName("verticalLayout_2")
+ self.XAmendLabel = QtGui.QLabel(self.CurrentGroupBox_2)
+ self.XAmendLabel.setAlignment(QtCore.Qt.AlignCenter)
+ self.XAmendLabel.setObjectName("XAmendLabel")
+ self.verticalLayout_2.addWidget(self.XAmendLabel)
+ self.XposEdit = QtGui.QLineEdit(self.CurrentGroupBox_2)
+ self.XposEdit.setMaximumSize(QtCore.QSize(50, 16777215))
+ self.XposEdit.setMaxLength(4)
+ self.XposEdit.setObjectName("XposEdit")
+ self.verticalLayout_2.addWidget(self.XposEdit)
+ self.horizontalLayout_2.addLayout(self.verticalLayout_2)
+ self.verticalLayout_3 = QtGui.QVBoxLayout()
+ self.verticalLayout_3.setObjectName("verticalLayout_3")
+ self.YAmendLabel = QtGui.QLabel(self.CurrentGroupBox_2)
+ self.YAmendLabel.setAlignment(QtCore.Qt.AlignCenter)
+ self.YAmendLabel.setObjectName("YAmendLabel")
+ self.verticalLayout_3.addWidget(self.YAmendLabel)
+ self.YposEdit = QtGui.QLineEdit(self.CurrentGroupBox_2)
+ self.YposEdit.setMaximumSize(QtCore.QSize(50, 16777215))
+ self.YposEdit.setMaxLength(4)
+ self.YposEdit.setObjectName("YposEdit")
+ self.verticalLayout_3.addWidget(self.YposEdit)
+ self.horizontalLayout_2.addLayout(self.verticalLayout_3)
+ self.verticalLayout_4 = QtGui.QVBoxLayout()
+ self.verticalLayout_4.setObjectName("verticalLayout_4")
+ self.HeightAmendLabel = QtGui.QLabel(self.CurrentGroupBox_2)
+ self.HeightAmendLabel.setAlignment(QtCore.Qt.AlignCenter)
+ self.HeightAmendLabel.setObjectName("HeightAmendLabel")
+ self.verticalLayout_4.addWidget(self.HeightAmendLabel)
+ self.HeightEdit = QtGui.QLineEdit(self.CurrentGroupBox_2)
+ self.HeightEdit.setMaximumSize(QtCore.QSize(50, 16777215))
+ self.HeightEdit.setMaxLength(4)
+ self.HeightEdit.setObjectName("HeightEdit")
+ self.verticalLayout_4.addWidget(self.HeightEdit)
+ self.horizontalLayout_2.addLayout(self.verticalLayout_4)
+ self.verticalLayout_5 = QtGui.QVBoxLayout()
+ self.verticalLayout_5.setSizeConstraint(QtGui.QLayout.SetMinimumSize)
+ self.verticalLayout_5.setObjectName("verticalLayout_5")
+ self.WidthAmendLabel = QtGui.QLabel(self.CurrentGroupBox_2)
+ self.WidthAmendLabel.setMaximumSize(QtCore.QSize(100, 16777215))
+ self.WidthAmendLabel.setAlignment(QtCore.Qt.AlignCenter)
+ self.WidthAmendLabel.setObjectName("WidthAmendLabel")
+ self.verticalLayout_5.addWidget(self.WidthAmendLabel)
+ self.WidthEdit = QtGui.QLineEdit(self.CurrentGroupBox_2)
+ self.WidthEdit.setMaximumSize(QtCore.QSize(60, 16777215))
+ self.WidthEdit.setObjectName("WidthEdit")
+ self.verticalLayout_5.addWidget(self.WidthEdit)
+ self.horizontalLayout_2.addLayout(self.verticalLayout_5)
+ self.OverrideCheckBox = QtGui.QCheckBox(self)
+ self.OverrideCheckBox.setGeometry(QtCore.QRect(0, 10, 191, 23))
+ self.OverrideCheckBox.setObjectName("OverrideCheckBox")
+ QtCore.QMetaObject.connectSlotsByName(self)
+ QtCore.QObject.connect(self.OverrideCheckBox,
+ QtCore.SIGNAL(u'stateChanged(int)'),
+ self.onOverrideCheckBoxChanged)
+
+ def retranslateUi(self):
+ self.setWindowTitle(QtGui.QApplication.translate("self", "Amend Display Settings", None, QtGui.QApplication.UnicodeUTF8))
+ self.CurrentGroupBox.setTitle(QtGui.QApplication.translate("self", "Default Settings", None, QtGui.QApplication.UnicodeUTF8))
+ self.XLabel.setText(QtGui.QApplication.translate("self", "X", None, QtGui.QApplication.UnicodeUTF8))
+ self.Xpos.setText(QtGui.QApplication.translate("self", "0", None, QtGui.QApplication.UnicodeUTF8))
+ self.YLabel.setText(QtGui.QApplication.translate("self", "Y", None, QtGui.QApplication.UnicodeUTF8))
+ self.Ypos.setText(QtGui.QApplication.translate("self", "0", None, QtGui.QApplication.UnicodeUTF8))
+ self.HeightLabel.setText(QtGui.QApplication.translate("self", "Height", None, QtGui.QApplication.UnicodeUTF8))
+ self.Height.setText(QtGui.QApplication.translate("self", "0", None, QtGui.QApplication.UnicodeUTF8))
+ self.WidthLabel.setText(QtGui.QApplication.translate("self", "Width", None, QtGui.QApplication.UnicodeUTF8))
+ self.Width.setText(QtGui.QApplication.translate("self", "0", None, QtGui.QApplication.UnicodeUTF8))
+ self.CurrentGroupBox_2.setTitle(QtGui.QApplication.translate("self", "Amend Settings", None, QtGui.QApplication.UnicodeUTF8))
+ self.XAmendLabel.setText(QtGui.QApplication.translate("self", "X", None, QtGui.QApplication.UnicodeUTF8))
+ self.YAmendLabel.setText(QtGui.QApplication.translate("self", "Y", None, QtGui.QApplication.UnicodeUTF8))
+ self.HeightAmendLabel.setText(QtGui.QApplication.translate("self", "Height", None, QtGui.QApplication.UnicodeUTF8))
+ self.WidthAmendLabel.setText(QtGui.QApplication.translate("self", "Width", None, QtGui.QApplication.UnicodeUTF8))
+ self.OverrideCheckBox.setText(QtGui.QApplication.translate("self", "Override Output Display", None, QtGui.QApplication.UnicodeUTF8))
+
+ def load(self):
+ settings = QtCore.QSettings()
+ settings.beginGroup(self.settings_section)
+ 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()))
+ xpos = settings.value(u'x position',
+ QtCore.QVariant(self.screens.current[u'size'].x())).toString()
+ self.XposEdit.setText(xpos)
+ ypos = settings.value(u'y position',
+ QtCore.QVariant(self.screens.current[u'size'].y())).toString()
+ self.YposEdit.setText(ypos)
+ height = settings.value(u'height',
+ QtCore.QVariant(self.screens.current[u'size'].height())).toString()
+ self.HeightEdit.setText(height)
+ width = settings.value(u'width',
+ QtCore.QVariant(self.screens.current[u'size'].width())).toString()
+ self.WidthEdit.setText(width)
+ self.amend_display = settings.value(u'amend display',
+ QtCore.QVariant(False)).toBool()
+ self.OverrideCheckBox.setChecked(self.amend_display)
+ self.amend_display_start = self.amend_display
+
+ def onOverrideCheckBoxChanged(self, check_state):
+ self.amend_display = False
+ # we have a set value convert to True/False
+ if check_state == QtCore.Qt.Checked:
+ self.amend_display = True
+
+ def save(self):
+ settings = QtCore.QSettings()
+ settings.beginGroup(self.settings_section)
+ settings.setValue('x position',
+ QtCore.QVariant(self.XposEdit.text()))
+ settings.setValue('y position',
+ QtCore.QVariant(self.YposEdit.text()))
+ settings.setValue('height',
+ QtCore.QVariant(self.HeightEdit.text()))
+ settings.setValue('width',
+ QtCore.QVariant(self.WidthEdit.text()))
+ settings.setValue('amend display',
+ QtCore.QVariant(self.amend_display))
+ self.postSetUp()
+
+ def postSetUp(self):
+ self.screens.override[u'size'] = QtCore.QRect(int(self.XposEdit.text()),\
+ int(self.YposEdit.text()), int(self.WidthEdit.text()),\
+ int(self.HeightEdit.text()))
+ if self.amend_display:
+ self.screens.set_override_display()
+ else:
+ self.screens.reset_current_display()
+ #only trigger event if data has changed in this edit session
+ if self.amend_display_start != self.amend_display:
+ self.amend_display_start = self.amend_display
+ Receiver.send_message(u'config_screen_changed')
=== modified file 'openlp/core/ui/generaltab.py'
--- openlp/core/ui/generaltab.py 2010-04-30 01:31:41 +0000
+++ openlp/core/ui/generaltab.py 2010-04-30 14:37:20 +0000
@@ -181,7 +181,7 @@
self.MonitorLabel.setText(
self.trUtf8('Select monitor for output display:'))
self.DisplayOnMonitorCheck.setText(
- self.trUtf8('Display if in single screen'))
+ self.trUtf8('Display if a single screen'))
self.StartupGroupBox.setTitle(self.trUtf8('Application Startup'))
self.WarningCheckBox.setText(self.trUtf8('Show blank screen warning'))
self.AutoOpenCheckBox.setText(
=== modified file 'openlp/core/ui/maindisplay.py'
--- openlp/core/ui/maindisplay.py 2010-04-27 22:36:50 +0000
+++ openlp/core/ui/maindisplay.py 2010-04-30 14:37:20 +0000
@@ -40,6 +40,7 @@
Wrapper class to hold the display widgets.
I will provide API's in future to access the screens allow for
extra displays to be added.
+ RenderManager is poked in by MainWindow
"""
def __init__(self, screens):
QtGui.QWidget.__init__(self)
@@ -130,15 +131,12 @@
self.displayBlank = False
self.blankFrame = None
self.frame = None
- self.firstTime = True
- self.hasTransition = False
- self.mediaBackground = False
+ QtCore.QObject.connect(Receiver.get_receiver(),
+ QtCore.SIGNAL(u'videodisplay_start'), self.hideDisplayForVideo)
QtCore.QObject.connect(Receiver.get_receiver(),
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'videodisplay_start'), self.hideDisplay)
def setup(self):
"""
@@ -149,12 +147,12 @@
self.setVisible(False)
self.screen = self.screens.current
#Sort out screen locations and sizes
- self.setGeometry(self.screen[u'size'])
self.display_alert.setGeometry(self.screen[u'size'])
self.display_image.resize(self.screen[u'size'].width(),
self.screen[u'size'].height())
self.display_text.resize(self.screen[u'size'].width(),
self.screen[u'size'].height())
+ self.setGeometry(self.screen[u'size'])
#Build a custom splash screen
self.InitialFrame = QtGui.QImage(
self.screen[u'size'].width(),
@@ -201,11 +199,32 @@
else:
self.showFullScreen()
- def hideDisplay(self):
- log.debug(u'hideDisplay')
- self.display_image.setPixmap(self.transparent)
+ def hideDisplayForVideo(self):
+ """
+ Hides the main display if for the video to be played
+ """
+ self.hideDisplay(HideMode.Screen)
+
+ def hideDisplay(self, mode=HideMode.Screen):
+ """
+ Hide the display by making all layers transparent
+ Store the images so they can be replaced when required
+ """
+ log.debug(u'hideDisplay mode = %d', mode)
+ self.storeImage = QtGui.QPixmap(self.display_image.pixmap())
+ self.storeText = QtGui.QPixmap(self.display_text.pixmap())
self.display_alert.setPixmap(self.transparent)
self.display_text.setPixmap(self.transparent)
+ if mode == HideMode.Screen:
+ self.display_image.setPixmap(self.transparent)
+ elif mode == HideMode.Blank:
+ self.display_image.setPixmap(QtGui.QPixmap.fromImage(self.blankFrame))
+ else:
+ if self.parent.renderManager.renderer.bg_frame:
+ self.display_image.setPixmap(QtGui.QPixmap.fromImage(\
+ self.parent.renderManager.renderer.bg_frame))
+ else:
+ self.display_image.setPixmap(QtGui.QPixmap.fromImage(self.blankFrame))
self.moveToTop()
def moveToTop(self):
@@ -215,10 +234,20 @@
self.show()
def showDisplay(self):
+ """
+ Show the stored layers so the screen reappears as it was
+ originally.
+ Make the stored images None to release memory.
+ """
log.debug(u'showDisplay')
- if not self.primary:
- self.setVisible(True)
- self.showFullScreen()
+ if self.storeImage:
+ self.display_image.setPixmap(self.storeImage)
+ self.display_alert.setPixmap(self.transparent)
+ if self.storeText:
+ self.display_text.setPixmap(self.storeText)
+ self.storeImage = None
+ self.store = None
+ self.moveToTop()
Receiver.send_message(u'maindisplay_active')
def addImageWithText(self, frame):
@@ -280,27 +309,6 @@
self.waitingFrame = frame
self.waitingFrameTrans = transition
- def blankDisplay(self, blankType=HideMode.Blank, blanked=True):
- log.debug(u'Blank main Display %d' % blanked)
- if blanked:
- self.displayBlank = True
- if blankType == HideMode.Blank:
- self.display_text.setPixmap(
- QtGui.QPixmap.fromImage(self.blankFrame))
- elif blankType == HideMode.Theme:
- theme = self.parent.RenderManager.renderer.bg_frame
- if not theme:
- theme = self.blankFrame
- self.display_text.setPixmap(QtGui.QPixmap.fromImage(theme))
- self.waitingFrame = None
- self.waitingFrameTrans = False
- else:
- self.displayBlank = False
- if self.waitingFrame:
- self.frameView(self.waitingFrame, self.waitingFrameTrans)
- elif self.display_frame:
- self.frameView(self.display_frame)
-
class VideoDisplay(Phonon.VideoWidget):
"""
This is the form that is used to display videos on the projector.
@@ -323,11 +331,18 @@
self.setWindowTitle(u'OpenLP Video Display')
self.parent = parent
self.screens = screens
+ self.hidden = False
self.mediaObject = Phonon.MediaObject()
self.setAspectRatio(aspect)
self.audioObject = Phonon.AudioOutput(Phonon.VideoCategory)
Phonon.createPath(self.mediaObject, self)
Phonon.createPath(self.mediaObject, self.audioObject)
+ self.setWindowFlags(QtCore.Qt.WindowStaysOnBottomHint \
+ | QtCore.Qt.FramelessWindowHint | QtCore.Qt.Dialog)
+ QtCore.QObject.connect(Receiver.get_receiver(),
+ QtCore.SIGNAL(u'maindisplay_hide'), self.mediaHide)
+ QtCore.QObject.connect(Receiver.get_receiver(),
+ QtCore.SIGNAL(u'maindisplay_show'), self.mediaShow)
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'videodisplay_start'), self.onMediaQueue)
QtCore.QObject.connect(Receiver.get_receiver(),
@@ -338,6 +353,7 @@
QtCore.SIGNAL(u'videodisplay_stop'), self.onMediaStop)
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'config_updated'), self.setup)
+ self.setVisible(False)
def keyPressEvent(self, event):
if type(event) == QtGui.QKeyEvent:
@@ -355,12 +371,11 @@
"""
log.debug(u'VideoDisplay Setup %s for %s ' %(self.screens,
self.screens.monitor_number))
- self.setVisible(False)
self.screen = self.screens.current
#Sort out screen locations and sizes
self.setGeometry(self.screen[u'size'])
# To display or not to display?
- if not self.screen[u'primary']:
+ if not self.screen[u'primary'] and self.isVisible():
self.showFullScreen()
self.primary = False
else:
@@ -369,13 +384,18 @@
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()
+ self._play()
def onMediaPlay(self):
- log.debug(u'VideoDisplay Play the new media, Live ')
+ if not self.hidden:
+ log.debug(u'VideoDisplay Play the new media, Live ')
+ self._play()
+
+ def _play(self):
+ log.debug(u'VideoDisplay _play called')
self.mediaObject.play()
self.setVisible(True)
self.showFullScreen()
@@ -394,3 +414,14 @@
log.debug(u'VideoDisplay Reached end of media playlist')
self.mediaObject.clearQueue()
self.setVisible(False)
+
+ def mediaHide(self):
+ self.mediaObject.pause()
+ self.hidden = True
+ self.setVisible(False)
+
+ def mediaShow(self):
+ if self.hidden:
+ self.hidden = False
+ self._play()
+
=== modified file 'openlp/core/ui/mainwindow.py'
--- openlp/core/ui/mainwindow.py 2010-04-30 01:31:41 +0000
+++ openlp/core/ui/mainwindow.py 2010-04-30 14:37:20 +0000
@@ -513,6 +513,7 @@
#ThemeManager needs to call RenderManager
self.RenderManager = RenderManager(
self.ThemeManagerContents, self.screens)
+ self.displayManager.renderManager = self.RenderManager
#Define the media Dock Manager
self.mediaDockManager = MediaDockManager(self.MediaToolBox)
log.info(u'Load Plugins')
=== modified file 'openlp/core/ui/screen.py'
--- openlp/core/ui/screen.py 2010-04-02 18:12:54 +0000
+++ openlp/core/ui/screen.py 2010-04-30 14:37:20 +0000
@@ -24,6 +24,7 @@
###############################################################################
import logging
+import copy
log = logging.getLogger(__name__)
@@ -36,6 +37,7 @@
def __init__(self):
self.preview = None
self.current = None
+ self.override = None
self.screen_list = []
self.display_count = 0
#actual display number
@@ -59,12 +61,31 @@
"""
Set up the current screen dimensions
"""
+ log.debug(u'set_override_display %s', number, )
if number + 1 > self.display_count:
self.current = self.screen_list[0]
self.current_display = 0
else:
self.current = self.screen_list[number]
- self.preview = self.current
+ self.override = copy.deepcopy(self.current)
+ self.preview = copy.deepcopy(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
+ """
+ log.debug(u'set_override_display')
+ self.current = copy.deepcopy(self.override)
+ self.preview = copy.deepcopy(self.current)
+
+ def reset_current_display(self):
+ """
+ replace the current values with the correct values
+ user wants to use the correct screen attributes
+ """
+ log.debug(u'reset_current_display')
+ self.set_current_display(self.current_display)
=== modified file 'openlp/core/ui/settingsform.py'
--- openlp/core/ui/settingsform.py 2010-04-02 18:12:54 +0000
+++ openlp/core/ui/settingsform.py 2010-04-30 14:37:20 +0000
@@ -27,7 +27,7 @@
from PyQt4 import QtGui
-from openlp.core.ui import GeneralTab, ThemesTab
+from openlp.core.ui import GeneralTab, ThemesTab, DisplayTab
from settingsdialog import Ui_SettingsDialog
log = logging.getLogger(__name__)
@@ -43,6 +43,9 @@
# Themes tab
self.ThemesTab = ThemesTab(mainWindow)
self.addTab(u'Themes', self.ThemesTab)
+ # Display tab
+ self.DisplayTab = DisplayTab(screens)
+ self.addTab(u'Display', self.DisplayTab)
def addTab(self, name, tab):
log.info(u'Adding %s tab' % tab.tabTitle)
=== modified file 'openlp/core/ui/slidecontroller.py'
--- openlp/core/ui/slidecontroller.py 2010-04-30 01:31:41 +0000
+++ openlp/core/ui/slidecontroller.py 2010-04-30 14:37:20 +0000
@@ -30,18 +30,9 @@
from PyQt4 import QtCore, QtGui
from PyQt4.phonon import Phonon
-from openlp.core.lib import ItemCapabilities
-
-class HideMode(object):
- """
- This is basically an enumeration class which specifies the mode of a Bible.
- Mode refers to whether or not a Bible in OpenLP is a full Bible or needs to
- be downloaded from the Internet on an as-needed basis.
- """
- Blank = 1
- Theme = 2
-
-from openlp.core.lib import OpenLPToolbar, Receiver, resize_image
+from openlp.core.ui import HideMode
+from openlp.core.lib import OpenLPToolbar, Receiver, resize_image, \
+ItemCapabilities
log = logging.getLogger(__name__)
@@ -197,8 +188,6 @@
self.hideButton = self.Toolbar.addToolbarButton(
u'Hide screen', u':/slides/slide_desktop.png',
self.trUtf8('Hide Screen'), self.onHideDisplay, True)
- QtCore.QObject.connect(Receiver.get_receiver(),
- QtCore.SIGNAL(u'maindisplay_blank'), self.blankScreen)
if not self.isLive:
self.Toolbar.addToolbarSeparator(u'Close Separator')
self.Toolbar.addToolbarButton(
@@ -236,6 +225,16 @@
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))
@@ -261,7 +260,7 @@
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)
@@ -318,26 +317,26 @@
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)
@@ -484,7 +483,7 @@
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]
@@ -557,9 +556,9 @@
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))
@@ -570,7 +569,7 @@
"""
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()
@@ -578,55 +577,46 @@
self.PreviewListWidget.selectRow(0)
self.onSlideSelected()
- def onBlankDisplay(self, force=False):
+ def onBlankDisplay(self, checked):
"""
Handle the blank screen button
"""
- log.debug(u'onBlankDisplay %d' % force)
- if force:
- self.blankButton.setChecked(True)
- self.blankScreen(HideMode.Blank, self.blankButton.isChecked())
+ log.debug(u'onBlankDisplay %d' % checked)
+ self.hideButton.setChecked(False)
+ self.themeButton.setChecked(False)
QtCore.QSettings().setValue(
self.parent.general_settings_section + u'/screen blank',
- QtCore.QVariant(self.blankButton.isChecked()))
+ QtCore.QVariant(checked))
+ if checked:
+ Receiver.send_message(u'maindisplay_hide', HideMode.Blank)
+ Receiver.send_message(u'presentation_blank')
+ else:
+ Receiver.send_message(u'maindisplay_show')
+ Receiver.send_message(u'presentation_unblank')
- def onThemeDisplay(self, force=False):
+ def onThemeDisplay(self, checked):
"""
Handle the Theme screen button
"""
- log.debug(u'onThemeDisplay %d' % force)
- if force:
- self.themeButton.setChecked(True)
- self.blankScreen(HideMode.Theme, self.themeButton.isChecked())
+ log.debug(u'onThemeDisplay %d' % checked)
+ self.blankButton.setChecked(False)
+ self.hideButton.setChecked(False)
+ if checked:
+ Receiver.send_message(u'maindisplay_hide', HideMode.Theme)
+ else:
+ Receiver.send_message(u'maindisplay_show')
- def onHideDisplay(self, force=False):
+ def onHideDisplay(self, checked):
"""
Handle the Hide screen button
"""
- log.debug(u'onHideDisplay %d' % force)
- if force:
- self.hideButton.setChecked(True)
- if self.hideButton.isChecked():
- self.mainDisplay.hideDisplay()
- else:
- self.mainDisplay.showDisplay()
-
- def blankScreen(self, blankType, blanked=False):
- """
- Blank the display screen.
- """
- if self.serviceItem is not None:
- if blanked:
- 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(),
- [self.serviceItem, self.isLive])
- self.mainDisplay.blankDisplay(blankType, blanked)
- else:
- self.mainDisplay.blankDisplay(blankType, blanked)
+ log.debug(u'onHideDisplay %d' % checked)
+ self.blankButton.setChecked(False)
+ self.themeButton.setChecked(False)
+ if checked:
+ Receiver.send_message(u'maindisplay_hide', HideMode.Screen)
+ else:
+ Receiver.send_message(u'maindisplay_show')
def onSlideSelected(self):
"""
@@ -693,7 +683,7 @@
"""
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()
@@ -717,7 +707,7 @@
"""
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()
@@ -737,7 +727,7 @@
"""
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()
@@ -768,6 +758,9 @@
self.onSlideSelectedNext()
def onEditSong(self):
+ """
+ From the preview display requires the service Item to be editied
+ """
self.songEdit = True
Receiver.send_message(u'%s_edit' % self.serviceItem.name.lower(),
u'P:%s' % self.serviceItem.editId)
@@ -782,8 +775,12 @@
self.serviceItem, row)
def onMediaStart(self, item):
+ """
+ Respond to the arrival of a media service item
+ """
+ log.debug(u'SlideController onMediaStart')
if self.isLive:
- Receiver.send_message(u'videodisplay_start',
+ Receiver.send_message(u'videodisplay_start',
[item, self.blankButton.isChecked()])
else:
self.mediaObject.stop()
@@ -795,12 +792,20 @@
self.onMediaPlay()
def onMediaPause(self):
+ """
+ Respond to the Pause from the media Toolbar
+ """
+ log.debug(u'SlideController onMediaPause')
if self.isLive:
Receiver.send_message(u'videodisplay_pause')
else:
self.mediaObject.pause()
def onMediaPlay(self):
+ """
+ Respond to the Play from the media Toolbar
+ """
+ log.debug(u'SlideController onMediaPlay')
if self.isLive:
Receiver.send_message(u'videodisplay_play')
else:
@@ -809,6 +814,10 @@
self.mediaObject.play()
def onMediaStop(self):
+ """
+ Respond to the Stop from the media Toolbar
+ """
+ log.debug(u'SlideController onMediaStop')
if self.isLive:
Receiver.send_message(u'videodisplay_stop')
else:
=== modified file 'openlp/core/ui/thememanager.py'
--- openlp/core/ui/thememanager.py 2010-04-30 01:31:41 +0000
+++ openlp/core/ui/thememanager.py 2010-04-30 14:37:20 +0000
@@ -108,7 +108,7 @@
self.themelist = []
self.path = AppLocation.get_section_data_path(self.settings_section)
self.checkThemesExists(self.path)
- self.thumbPath = os.path.join(self.path, u'.thumbnails')
+ self.thumbPath = os.path.join(self.path, u'thumbnails')
self.checkThemesExists(self.thumbPath)
self.amendThemeForm.path = self.path
# Last little bits of setting up
=== modified file 'openlp/plugins/images/lib/mediaitem.py'
--- openlp/plugins/images/lib/mediaitem.py 2010-04-30 01:31:41 +0000
+++ openlp/plugins/images/lib/mediaitem.py 2010-04-30 14:37:20 +0000
@@ -78,7 +78,7 @@
self.ListView.setIconSize(QtCore.QSize(88,50))
self.servicePath = os.path.join(
AppLocation.get_section_data_path(self.settings_section),
- u'.thumbnails')
+ u'thumbnails')
if not os.path.exists(self.servicePath):
os.mkdir(self.servicePath)
self.loadList(SettingsManager.load_list(
=== modified file 'openlp/plugins/presentations/lib/messagelistener.py'
--- openlp/plugins/presentations/lib/messagelistener.py 2010-04-27 22:36:50 +0000
+++ openlp/plugins/presentations/lib/messagelistener.py 2010-04-30 14:37:20 +0000
@@ -215,9 +215,9 @@
Save the handler as any new presentations start here
"""
isLive, item = self.decode_message(message)
- log.debug(u'Startup called with message %s' % message)
+ log.debug(u'Startup called with message ' % message)
isBlank = message[2]
- file = os.path.join(item.get_frame_path(),
+ file = os.path.join(item.get_frame_path(),
item.get_frame_title())
self.handler = item.title
if self.handler == self.mediaitem.Automatic:
@@ -231,14 +231,17 @@
controller.addHandler(self.controllers[self.handler], file, isBlank)
def decode_message(self, message):
- return message[1], message[0]
-
+ if len(message) == 3:
+ return message[1], message[0], message[2]
+ else:
+ return message[1], message[0]
+
def slide(self, message):
- isLive, item = self.decode_message(message)
+ isLive, item, slide = self.decode_message(message)
if isLive:
- self.liveHandler.slide(slide, live)
+ self.liveHandler.slide(slide, isLive)
else:
- self.previewHandler.slide(slide, live)
+ self.previewHandler.slide(slide, isLive)
def first(self, message):
isLive, item = self.decode_message(message)
@@ -285,6 +288,6 @@
isLive, item = self.decode_message(message)
if isLive:
self.liveHandler.unblank()
-
+
def timeout(self):
self.liveHandler.poll()
=== added file 'resources/forms/displaytab.py'
--- resources/forms/displaytab.py 1970-01-01 00:00:00 +0000
+++ resources/forms/displaytab.py 2010-04-30 14:37:20 +0000
@@ -0,0 +1,150 @@
+# -*- coding: utf-8 -*-
+
+# Form implementation generated from reading ui file 'displaytab.ui'
+#
+# Created: Tue Apr 27 06:10:08 2010
+# by: PyQt4 UI code generator 4.7.3
+#
+# 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(620, 716)
+ self.layoutWidget = QtGui.QWidget(DisplaysDialog)
+ self.layoutWidget.setGeometry(QtCore.QRect(0, 40, 241, 79))
+ self.layoutWidget.setObjectName("layoutWidget")
+ self.verticalLayout = QtGui.QVBoxLayout(self.layoutWidget)
+ self.verticalLayout.setObjectName("verticalLayout")
+ self.CurrentGroupBox = QtGui.QGroupBox(self.layoutWidget)
+ self.CurrentGroupBox.setObjectName("CurrentGroupBox")
+ self.horizontalLayout = QtGui.QHBoxLayout(self.CurrentGroupBox)
+ self.horizontalLayout.setObjectName("horizontalLayout")
+ self.verticalLayout_6 = QtGui.QVBoxLayout()
+ self.verticalLayout_6.setObjectName("verticalLayout_6")
+ self.XLabel = QtGui.QLabel(self.CurrentGroupBox)
+ self.XLabel.setAlignment(QtCore.Qt.AlignCenter)
+ self.XLabel.setObjectName("XLabel")
+ self.verticalLayout_6.addWidget(self.XLabel)
+ self.Xpos = QtGui.QLabel(self.CurrentGroupBox)
+ self.Xpos.setAlignment(QtCore.Qt.AlignCenter)
+ self.Xpos.setObjectName("Xpos")
+ self.verticalLayout_6.addWidget(self.Xpos)
+ self.horizontalLayout.addLayout(self.verticalLayout_6)
+ self.verticalLayout_7 = QtGui.QVBoxLayout()
+ self.verticalLayout_7.setObjectName("verticalLayout_7")
+ self.YLabel = QtGui.QLabel(self.CurrentGroupBox)
+ self.YLabel.setAlignment(QtCore.Qt.AlignCenter)
+ self.YLabel.setObjectName("YLabel")
+ self.verticalLayout_7.addWidget(self.YLabel)
+ self.Ypos = QtGui.QLabel(self.CurrentGroupBox)
+ self.Ypos.setAlignment(QtCore.Qt.AlignCenter)
+ self.Ypos.setObjectName("Ypos")
+ self.verticalLayout_7.addWidget(self.Ypos)
+ self.horizontalLayout.addLayout(self.verticalLayout_7)
+ self.verticalLayout_9 = QtGui.QVBoxLayout()
+ self.verticalLayout_9.setObjectName("verticalLayout_9")
+ self.HeightLabel = QtGui.QLabel(self.CurrentGroupBox)
+ self.HeightLabel.setMaximumSize(QtCore.QSize(100, 16777215))
+ self.HeightLabel.setAlignment(QtCore.Qt.AlignCenter)
+ self.HeightLabel.setObjectName("HeightLabel")
+ self.verticalLayout_9.addWidget(self.HeightLabel)
+ self.Height = QtGui.QLabel(self.CurrentGroupBox)
+ self.Height.setAlignment(QtCore.Qt.AlignCenter)
+ self.Height.setObjectName("Height")
+ self.verticalLayout_9.addWidget(self.Height)
+ self.horizontalLayout.addLayout(self.verticalLayout_9)
+ self.verticalLayout_8 = QtGui.QVBoxLayout()
+ self.verticalLayout_8.setObjectName("verticalLayout_8")
+ self.WidthLabel = QtGui.QLabel(self.CurrentGroupBox)
+ self.WidthLabel.setAlignment(QtCore.Qt.AlignCenter)
+ self.WidthLabel.setObjectName("WidthLabel")
+ self.verticalLayout_8.addWidget(self.WidthLabel)
+ self.Width = QtGui.QLabel(self.CurrentGroupBox)
+ self.Width.setAlignment(QtCore.Qt.AlignCenter)
+ self.Width.setObjectName("Width")
+ self.verticalLayout_8.addWidget(self.Width)
+ self.horizontalLayout.addLayout(self.verticalLayout_8)
+ self.verticalLayout.addWidget(self.CurrentGroupBox)
+ self.CurrentGroupBox_2 = QtGui.QGroupBox(DisplaysDialog)
+ self.CurrentGroupBox_2.setGeometry(QtCore.QRect(0, 130, 248, 87))
+ self.CurrentGroupBox_2.setMaximumSize(QtCore.QSize(500, 16777215))
+ self.CurrentGroupBox_2.setObjectName("CurrentGroupBox_2")
+ self.horizontalLayout_2 = QtGui.QHBoxLayout(self.CurrentGroupBox_2)
+ self.horizontalLayout_2.setObjectName("horizontalLayout_2")
+ self.verticalLayout_2 = QtGui.QVBoxLayout()
+ self.verticalLayout_2.setObjectName("verticalLayout_2")
+ self.XAmendLabel = QtGui.QLabel(self.CurrentGroupBox_2)
+ self.XAmendLabel.setAlignment(QtCore.Qt.AlignCenter)
+ self.XAmendLabel.setObjectName("XAmendLabel")
+ self.verticalLayout_2.addWidget(self.XAmendLabel)
+ self.XposEdit = QtGui.QLineEdit(self.CurrentGroupBox_2)
+ self.XposEdit.setMaximumSize(QtCore.QSize(50, 16777215))
+ self.XposEdit.setMaxLength(4)
+ self.XposEdit.setObjectName("XposEdit")
+ self.verticalLayout_2.addWidget(self.XposEdit)
+ self.horizontalLayout_2.addLayout(self.verticalLayout_2)
+ self.verticalLayout_3 = QtGui.QVBoxLayout()
+ self.verticalLayout_3.setObjectName("verticalLayout_3")
+ self.YAmendLabel = QtGui.QLabel(self.CurrentGroupBox_2)
+ self.YAmendLabel.setAlignment(QtCore.Qt.AlignCenter)
+ self.YAmendLabel.setObjectName("YAmendLabel")
+ self.verticalLayout_3.addWidget(self.YAmendLabel)
+ self.YposEdit = QtGui.QLineEdit(self.CurrentGroupBox_2)
+ self.YposEdit.setMaximumSize(QtCore.QSize(50, 16777215))
+ self.YposEdit.setMaxLength(4)
+ self.YposEdit.setObjectName("YposEdit")
+ self.verticalLayout_3.addWidget(self.YposEdit)
+ self.horizontalLayout_2.addLayout(self.verticalLayout_3)
+ self.verticalLayout_4 = QtGui.QVBoxLayout()
+ self.verticalLayout_4.setObjectName("verticalLayout_4")
+ self.HeightAmendLabel = QtGui.QLabel(self.CurrentGroupBox_2)
+ self.HeightAmendLabel.setAlignment(QtCore.Qt.AlignCenter)
+ self.HeightAmendLabel.setObjectName("HeightAmendLabel")
+ self.verticalLayout_4.addWidget(self.HeightAmendLabel)
+ self.HeightEdit = QtGui.QLineEdit(self.CurrentGroupBox_2)
+ self.HeightEdit.setMaximumSize(QtCore.QSize(50, 16777215))
+ self.HeightEdit.setMaxLength(4)
+ self.HeightEdit.setObjectName("HeightEdit")
+ self.verticalLayout_4.addWidget(self.HeightEdit)
+ self.horizontalLayout_2.addLayout(self.verticalLayout_4)
+ self.verticalLayout_5 = QtGui.QVBoxLayout()
+ self.verticalLayout_5.setSizeConstraint(QtGui.QLayout.SetMinimumSize)
+ self.verticalLayout_5.setObjectName("verticalLayout_5")
+ self.WidthAmendLabel = QtGui.QLabel(self.CurrentGroupBox_2)
+ self.WidthAmendLabel.setMaximumSize(QtCore.QSize(100, 16777215))
+ self.WidthAmendLabel.setAlignment(QtCore.Qt.AlignCenter)
+ self.WidthAmendLabel.setObjectName("WidthAmendLabel")
+ self.verticalLayout_5.addWidget(self.WidthAmendLabel)
+ self.WidthEdit = QtGui.QLineEdit(self.CurrentGroupBox_2)
+ self.WidthEdit.setMaximumSize(QtCore.QSize(60, 16777215))
+ self.WidthEdit.setObjectName("WidthEdit")
+ self.verticalLayout_5.addWidget(self.WidthEdit)
+ self.horizontalLayout_2.addLayout(self.verticalLayout_5)
+ self.OverrideCheckBox = QtGui.QCheckBox(DisplaysDialog)
+ self.OverrideCheckBox.setGeometry(QtCore.QRect(0, 10, 191, 23))
+ self.OverrideCheckBox.setObjectName("OverrideCheckBox")
+
+ self.retranslateUi(DisplaysDialog)
+ QtCore.QMetaObject.connectSlotsByName(DisplaysDialog)
+
+ def retranslateUi(self, DisplaysDialog):
+ DisplaysDialog.setWindowTitle(QtGui.QApplication.translate("DisplaysDialog", "Amend Display Settings", None, QtGui.QApplication.UnicodeUTF8))
+ self.CurrentGroupBox.setTitle(QtGui.QApplication.translate("DisplaysDialog", "Default Settings", None, QtGui.QApplication.UnicodeUTF8))
+ self.XLabel.setText(QtGui.QApplication.translate("DisplaysDialog", "X", None, QtGui.QApplication.UnicodeUTF8))
+ self.Xpos.setText(QtGui.QApplication.translate("DisplaysDialog", "0", None, QtGui.QApplication.UnicodeUTF8))
+ self.YLabel.setText(QtGui.QApplication.translate("DisplaysDialog", "Y", None, QtGui.QApplication.UnicodeUTF8))
+ self.Ypos.setText(QtGui.QApplication.translate("DisplaysDialog", "0", None, QtGui.QApplication.UnicodeUTF8))
+ self.HeightLabel.setText(QtGui.QApplication.translate("DisplaysDialog", "Height", None, QtGui.QApplication.UnicodeUTF8))
+ self.Height.setText(QtGui.QApplication.translate("DisplaysDialog", "0", None, QtGui.QApplication.UnicodeUTF8))
+ self.WidthLabel.setText(QtGui.QApplication.translate("DisplaysDialog", "Width", 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))
+ self.XAmendLabel.setText(QtGui.QApplication.translate("DisplaysDialog", "X", None, QtGui.QApplication.UnicodeUTF8))
+ self.YAmendLabel.setText(QtGui.QApplication.translate("DisplaysDialog", "Y", None, QtGui.QApplication.UnicodeUTF8))
+ self.HeightAmendLabel.setText(QtGui.QApplication.translate("DisplaysDialog", "Height", None, QtGui.QApplication.UnicodeUTF8))
+ self.WidthAmendLabel.setText(QtGui.QApplication.translate("DisplaysDialog", "Width", None, QtGui.QApplication.UnicodeUTF8))
+ self.OverrideCheckBox.setText(QtGui.QApplication.translate("DisplaysDialog", "Override Output Display", None, QtGui.QApplication.UnicodeUTF8))
+
=== added file 'resources/forms/displaytab.ui'
--- resources/forms/displaytab.ui 1970-01-01 00:00:00 +0000
+++ resources/forms/displaytab.ui 2010-04-30 14:37:20 +0000
@@ -0,0 +1,295 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DisplaysDialog</class>
+ <widget class="QWidget" name="DisplaysDialog">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>620</width>
+ <height>716</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Amend Display Settings</string>
+ </property>
+ <widget class="QWidget" name="layoutWidget">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>40</y>
+ <width>241</width>
+ <height>79</height>
+ </rect>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QGroupBox" name="CurrentGroupBox">
+ <property name="title">
+ <string>Default Settings</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_6">
+ <item>
+ <widget class="QLabel" name="XLabel">
+ <property name="text">
+ <string>X</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="Xpos">
+ <property name="text">
+ <string>0</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_7">
+ <item>
+ <widget class="QLabel" name="YLabel">
+ <property name="text">
+ <string>Y</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="Ypos">
+ <property name="text">
+ <string>0</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_9">
+ <item>
+ <widget class="QLabel" name="HeightLabel">
+ <property name="maximumSize">
+ <size>
+ <width>100</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="text">
+ <string>Height</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="Height">
+ <property name="text">
+ <string>0</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_8">
+ <item>
+ <widget class="QLabel" name="WidthLabel">
+ <property name="text">
+ <string>Width</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="Width">
+ <property name="text">
+ <string>0</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QGroupBox" name="CurrentGroupBox_2">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>130</y>
+ <width>248</width>
+ <height>87</height>
+ </rect>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>500</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="title">
+ <string>Amend Settings</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <widget class="QLabel" name="XAmendLabel">
+ <property name="text">
+ <string>X</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="XposEdit">
+ <property name="maximumSize">
+ <size>
+ <width>50</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="maxLength">
+ <number>4</number>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_3">
+ <item>
+ <widget class="QLabel" name="YAmendLabel">
+ <property name="text">
+ <string>Y</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="YposEdit">
+ <property name="maximumSize">
+ <size>
+ <width>50</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="maxLength">
+ <number>4</number>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_4">
+ <item>
+ <widget class="QLabel" name="HeightAmendLabel">
+ <property name="text">
+ <string>Height</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="HeightEdit">
+ <property name="maximumSize">
+ <size>
+ <width>50</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="maxLength">
+ <number>4</number>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_5">
+ <property name="sizeConstraint">
+ <enum>QLayout::SetMinimumSize</enum>
+ </property>
+ <item>
+ <widget class="QLabel" name="WidthAmendLabel">
+ <property name="maximumSize">
+ <size>
+ <width>100</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="text">
+ <string>Width</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="WidthEdit">
+ <property name="maximumSize">
+ <size>
+ <width>60</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ <zorder>layoutWidget</zorder>
+ <zorder>YAmendLabel</zorder>
+ <zorder>HeightAmendLabel</zorder>
+ <zorder>WidthAmendLabel</zorder>
+ <zorder>YAmendLabel</zorder>
+ </widget>
+ <widget class="QCheckBox" name="OverrideCheckBox">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>10</y>
+ <width>191</width>
+ <height>23</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>Override Output Display</string>
+ </property>
+ </widget>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
Follow ups