forked from openlp/openlp
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. bzr-revno: 803
This commit is contained in:
commit
7e9dd0613f
|
@ -244,7 +244,8 @@ class Renderer(object):
|
||||||
bbox1 = self._render_lines_unaligned(footer_lines, True)
|
bbox1 = self._render_lines_unaligned(footer_lines, True)
|
||||||
# reset the frame. first time do not worry about what you paint on.
|
# reset the frame. first time do not worry about what you paint on.
|
||||||
self._frame = QtGui.QImage(self.bg_frame)
|
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)
|
x, y = self._correctAlignment(self._rect, bbox)
|
||||||
bbox = self._render_lines_unaligned(lines, False, (x, y), True)
|
bbox = self._render_lines_unaligned(lines, False, (x, y), True)
|
||||||
if footer_lines:
|
if footer_lines:
|
||||||
|
@ -463,10 +464,11 @@ class Renderer(object):
|
||||||
# now draw the text, and any outlines/shadows
|
# now draw the text, and any outlines/shadows
|
||||||
if self._theme.display_shadow:
|
if self._theme.display_shadow:
|
||||||
self._get_extent_and_render(line, footer,
|
self._get_extent_and_render(line, footer,
|
||||||
tlcorner=(x + display_shadow_size, y + display_shadow_size),
|
tlcorner=(x + display_shadow_size,
|
||||||
draw=True, color = self._theme.display_shadow_color)
|
y + display_shadow_size),
|
||||||
self._get_extent_and_render(line, footer, tlcorner=(x, y), draw=True,
|
draw=True, color = self._theme.display_shadow_color)
|
||||||
outline_size=display_outline_size)
|
self._get_extent_and_render(line, footer, tlcorner=(x, y),
|
||||||
|
draw=True, outline_size=display_outline_size)
|
||||||
y += h
|
y += h
|
||||||
if linenum == 0:
|
if linenum == 0:
|
||||||
self._first_line_right_extent = rightextent
|
self._first_line_right_extent = rightextent
|
||||||
|
@ -532,7 +534,7 @@ class Renderer(object):
|
||||||
font = self.mainFont
|
font = self.mainFont
|
||||||
metrics = QtGui.QFontMetrics(font)
|
metrics = QtGui.QFontMetrics(font)
|
||||||
w = metrics.width(line)
|
w = metrics.width(line)
|
||||||
h = metrics.height()
|
h = metrics.height() + int(self._theme.font_main_line_adjustment)
|
||||||
if draw:
|
if draw:
|
||||||
self.painter.setFont(font)
|
self.painter.setFont(font)
|
||||||
if color is None:
|
if color is None:
|
||||||
|
@ -543,27 +545,29 @@ class Renderer(object):
|
||||||
else:
|
else:
|
||||||
pen = QtGui.QColor(color)
|
pen = QtGui.QColor(color)
|
||||||
x, y = tlcorner
|
x, y = tlcorner
|
||||||
|
rowpos = y + metrics.ascent()
|
||||||
if self._theme.display_outline and outline_size != 0 and not footer:
|
if self._theme.display_outline and outline_size != 0 and not footer:
|
||||||
path = QtGui.QPainterPath()
|
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.setBrush(self.painter.pen().brush())
|
||||||
self.painter.setPen(QtGui.QPen(
|
self.painter.setPen(QtGui.QPen(
|
||||||
QtGui.QColor(self._theme.display_outline_color), outline_size))
|
QtGui.QColor(self._theme.display_outline_color), outline_size))
|
||||||
self.painter.drawPath(path)
|
self.painter.drawPath(path)
|
||||||
self.painter.setPen(pen)
|
self.painter.setPen(pen)
|
||||||
self.painter.drawText(x, y + metrics.ascent(), line)
|
self.painter.drawText(x, rowpos, line)
|
||||||
if self._theme.display_slideTransition:
|
if self._theme.display_slideTransition:
|
||||||
# Print 2nd image with 70% weight
|
# Print 2nd image with 70% weight
|
||||||
if self._theme.display_outline and outline_size != 0 and not footer:
|
if self._theme.display_outline and outline_size != 0 and not footer:
|
||||||
path = QtGui.QPainterPath()
|
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.setBrush(self.painter2.pen().brush())
|
||||||
self.painter2.setPen(QtGui.QPen(
|
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.drawPath(path)
|
||||||
self.painter2.setFont(font)
|
self.painter2.setFont(font)
|
||||||
self.painter2.setPen(pen)
|
self.painter2.setPen(pen)
|
||||||
self.painter2.drawText(x, y + metrics.ascent(), line)
|
self.painter2.drawText(x, rowpos, line)
|
||||||
return (w, h)
|
return (w, h)
|
||||||
|
|
||||||
def snoop_Image(self, image, image2=None):
|
def snoop_Image(self, image, image2=None):
|
||||||
|
|
|
@ -49,7 +49,6 @@ class ItemCapabilities(object):
|
||||||
RequiresMedia = 4
|
RequiresMedia = 4
|
||||||
AllowsLoop = 5
|
AllowsLoop = 5
|
||||||
|
|
||||||
|
|
||||||
class ServiceItem(object):
|
class ServiceItem(object):
|
||||||
"""
|
"""
|
||||||
The service item is a base class for the plugins to use to interact with
|
The service item is a base class for the plugins to use to interact with
|
||||||
|
|
|
@ -53,6 +53,7 @@ blankthemexml=\
|
||||||
<weight>Normal</weight>
|
<weight>Normal</weight>
|
||||||
<italics>False</italics>
|
<italics>False</italics>
|
||||||
<indentation>0</indentation>
|
<indentation>0</indentation>
|
||||||
|
<line_adjustment>0</line_adjustment>
|
||||||
<location override="False" x="10" y="10" width="1004" height="730"/>
|
<location override="False" x="10" y="10" width="1004" height="730"/>
|
||||||
</font>
|
</font>
|
||||||
<font type="footer">
|
<font type="footer">
|
||||||
|
@ -62,6 +63,7 @@ blankthemexml=\
|
||||||
<weight>Normal</weight>
|
<weight>Normal</weight>
|
||||||
<italics>False</italics>
|
<italics>False</italics>
|
||||||
<indentation>0</indentation>
|
<indentation>0</indentation>
|
||||||
|
<line_adjustment>0</line_adjustment>
|
||||||
<location override="False" x="10" y="730" width="1004" height="38"/>
|
<location override="False" x="10" y="730" width="1004" height="38"/>
|
||||||
</font>
|
</font>
|
||||||
<display>
|
<display>
|
||||||
|
@ -171,8 +173,8 @@ class ThemeXML(object):
|
||||||
self.child_element(background, u'filename', filename)
|
self.child_element(background, u'filename', filename)
|
||||||
|
|
||||||
def add_font(self, name, color, proportion, override, fonttype=u'main',
|
def add_font(self, name, color, proportion, override, fonttype=u'main',
|
||||||
weight=u'Normal', italics=u'False', indentation=0, xpos=0, ypos=0,
|
weight=u'Normal', italics=u'False', indentation=0, line_adjustment=0,
|
||||||
width=0, height=0):
|
xpos=0, ypos=0, width=0, height=0):
|
||||||
"""
|
"""
|
||||||
Add a Font.
|
Add a Font.
|
||||||
|
|
||||||
|
@ -227,6 +229,8 @@ class ThemeXML(object):
|
||||||
self.child_element(background, u'italics', italics)
|
self.child_element(background, u'italics', italics)
|
||||||
#Create indentation name element
|
#Create indentation name element
|
||||||
self.child_element(background, u'indentation', unicode(indentation))
|
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
|
#Create Location element
|
||||||
element = self.theme_xml.createElement(u'location')
|
element = self.theme_xml.createElement(u'location')
|
||||||
|
|
|
@ -23,6 +23,16 @@
|
||||||
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
|
# 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 slidecontroller import HideMode
|
||||||
from servicenoteform import ServiceNoteForm
|
from servicenoteform import ServiceNoteForm
|
||||||
from serviceitemeditform import ServiceItemEditForm
|
from serviceitemeditform import ServiceItemEditForm
|
||||||
|
@ -33,6 +43,7 @@ from maindisplay import DisplayManager
|
||||||
from amendthemeform import AmendThemeForm
|
from amendthemeform import AmendThemeForm
|
||||||
from slidecontroller import SlideController
|
from slidecontroller import SlideController
|
||||||
from splashscreen import SplashScreen
|
from splashscreen import SplashScreen
|
||||||
|
from displaytab import DisplayTab
|
||||||
from generaltab import GeneralTab
|
from generaltab import GeneralTab
|
||||||
from themestab import ThemesTab
|
from themestab import ThemesTab
|
||||||
from aboutform import AboutForm
|
from aboutform import AboutForm
|
||||||
|
|
|
@ -178,16 +178,22 @@ class Ui_AmendThemeDialog(object):
|
||||||
self.FontMainWeightLabel.setObjectName("FontMainWeightLabel")
|
self.FontMainWeightLabel.setObjectName("FontMainWeightLabel")
|
||||||
self.MainFontLayout.setWidget(3, QtGui.QFormLayout.LabelRole, self.FontMainWeightLabel)
|
self.MainFontLayout.setWidget(3, QtGui.QFormLayout.LabelRole, self.FontMainWeightLabel)
|
||||||
self.MainLeftLayout.addWidget(self.FontMainGroupBox)
|
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 = QtGui.QLabel(self.FontMainGroupBox)
|
||||||
self.FontMainWrapIndentationLabel.setObjectName("FontMainWrapIndentationLabel")
|
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 = QtGui.QSpinBox(self.FontMainGroupBox)
|
||||||
self.FontMainLineSpacingSpinBox.setObjectName("FontMainLineSpacingSpinBox")
|
self.FontMainLineSpacingSpinBox.setObjectName("FontMainLineSpacingSpinBox")
|
||||||
self.FontMainLineSpacingSpinBox.setMaximum(10)
|
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 = QtGui.QLabel(self.FontMainGroupBox)
|
||||||
self.FontMainLinesPageLabel.setObjectName("FontMainLinesPageLabel")
|
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)
|
spacerItem1 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
|
||||||
self.MainLeftLayout.addItem(spacerItem1)
|
self.MainLeftLayout.addItem(spacerItem1)
|
||||||
self.FontMainLayout.addWidget(self.MainLeftWidget)
|
self.FontMainLayout.addWidget(self.MainLeftWidget)
|
||||||
|
@ -620,6 +626,7 @@ class Ui_AmendThemeDialog(object):
|
||||||
self.FontMainSize.setText(self.trUtf8('Size:'))
|
self.FontMainSize.setText(self.trUtf8('Size:'))
|
||||||
self.FontMainSizeSpinBox.setSuffix(self.trUtf8('pt'))
|
self.FontMainSizeSpinBox.setSuffix(self.trUtf8('pt'))
|
||||||
self.FontMainWrapIndentationLabel.setText(self.trUtf8('Wrap Indentation'))
|
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(0, self.trUtf8('Normal'))
|
||||||
self.FontMainWeightComboBox.setItemText(1, self.trUtf8('Bold'))
|
self.FontMainWeightComboBox.setItemText(1, self.trUtf8('Bold'))
|
||||||
self.FontMainWeightComboBox.setItemText(2, self.trUtf8('Italics'))
|
self.FontMainWeightComboBox.setItemText(2, self.trUtf8('Italics'))
|
||||||
|
|
|
@ -101,6 +101,9 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
||||||
QtCore.QObject.connect(self.FontMainHeightSpinBox,
|
QtCore.QObject.connect(self.FontMainHeightSpinBox,
|
||||||
QtCore.SIGNAL(u'editingFinished()'),
|
QtCore.SIGNAL(u'editingFinished()'),
|
||||||
self.onFontMainHeightSpinBoxChanged)
|
self.onFontMainHeightSpinBoxChanged)
|
||||||
|
QtCore.QObject.connect(self.FontMainLineAdjustmentSpinBox,
|
||||||
|
QtCore.SIGNAL(u'editingFinished()'),
|
||||||
|
self.onFontMainLineAdjustmentSpinBoxChanged)
|
||||||
QtCore.QObject.connect(self.FontMainLineSpacingSpinBox,
|
QtCore.QObject.connect(self.FontMainLineSpacingSpinBox,
|
||||||
QtCore.SIGNAL(u'editingFinished()'),
|
QtCore.SIGNAL(u'editingFinished()'),
|
||||||
self.onFontMainLineSpacingSpinBoxChanged)
|
self.onFontMainLineSpacingSpinBoxChanged)
|
||||||
|
@ -163,6 +166,7 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
||||||
unicode(self.theme.font_main_weight),
|
unicode(self.theme.font_main_weight),
|
||||||
unicode(self.theme.font_main_italics),
|
unicode(self.theme.font_main_italics),
|
||||||
unicode(self.theme.font_main_indentation),
|
unicode(self.theme.font_main_indentation),
|
||||||
|
unicode(self.theme.font_main_line_adjustment),
|
||||||
unicode(self.theme.font_main_x),
|
unicode(self.theme.font_main_x),
|
||||||
unicode(self.theme.font_main_y),
|
unicode(self.theme.font_main_y),
|
||||||
unicode(self.theme.font_main_width),
|
unicode(self.theme.font_main_width),
|
||||||
|
@ -173,7 +177,8 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
||||||
unicode(self.theme.font_footer_override), u'footer',
|
unicode(self.theme.font_footer_override), u'footer',
|
||||||
unicode(self.theme.font_footer_weight),
|
unicode(self.theme.font_footer_weight),
|
||||||
unicode(self.theme.font_footer_italics),
|
unicode(self.theme.font_footer_italics),
|
||||||
0,
|
0, # indentation
|
||||||
|
0, # line adjustment
|
||||||
unicode(self.theme.font_footer_x),
|
unicode(self.theme.font_footer_x),
|
||||||
unicode(self.theme.font_footer_y),
|
unicode(self.theme.font_footer_y),
|
||||||
unicode(self.theme.font_footer_width),
|
unicode(self.theme.font_footer_width),
|
||||||
|
@ -261,6 +266,8 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
||||||
self.FontMainYSpinBox.setValue(self.theme.font_main_y)
|
self.FontMainYSpinBox.setValue(self.theme.font_main_y)
|
||||||
self.FontMainWidthSpinBox.setValue(self.theme.font_main_width)
|
self.FontMainWidthSpinBox.setValue(self.theme.font_main_width)
|
||||||
self.FontMainHeightSpinBox.setValue(self.theme.font_main_height)
|
self.FontMainHeightSpinBox.setValue(self.theme.font_main_height)
|
||||||
|
self.FontMainLineAdjustmentSpinBox.setValue(
|
||||||
|
self.theme.font_main_line_adjustment)
|
||||||
self.FontMainLineSpacingSpinBox.setValue(
|
self.FontMainLineSpacingSpinBox.setValue(
|
||||||
self.theme.font_main_indentation)
|
self.theme.font_main_indentation)
|
||||||
self.stateChanging(self.theme)
|
self.stateChanging(self.theme)
|
||||||
|
@ -281,6 +288,13 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
||||||
self.theme.font_main_width = self.FontMainWidthSpinBox.value()
|
self.theme.font_main_width = self.FontMainWidthSpinBox.value()
|
||||||
self.previewTheme()
|
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):
|
def onFontMainLineSpacingSpinBoxChanged(self):
|
||||||
if self.theme.font_main_indentation != \
|
if self.theme.font_main_indentation != \
|
||||||
self.FontMainLineSpacingSpinBox.value():
|
self.FontMainLineSpacingSpinBox.value():
|
||||||
|
@ -687,7 +701,8 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
||||||
if self.allowPreview:
|
if self.allowPreview:
|
||||||
#calculate main number of rows
|
#calculate main number of rows
|
||||||
metrics = self._getThemeMetrics()
|
metrics = self._getThemeMetrics()
|
||||||
line_height = metrics.height()
|
line_height = metrics.height() \
|
||||||
|
+ int(self.theme.font_main_line_adjustment)
|
||||||
if self.theme.display_shadow:
|
if self.theme.display_shadow:
|
||||||
line_height += int(self.theme.display_shadow_size)
|
line_height += int(self.theme.display_shadow_size)
|
||||||
if self.theme.display_outline:
|
if self.theme.display_outline:
|
||||||
|
@ -700,7 +715,6 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
||||||
page_length))
|
page_length))
|
||||||
page_length_text = unicode(self.trUtf8('Slide Height is %s rows'))
|
page_length_text = unicode(self.trUtf8('Slide Height is %s rows'))
|
||||||
self.FontMainLinesPageLabel.setText(page_length_text % page_length)
|
self.FontMainLinesPageLabel.setText(page_length_text % page_length)
|
||||||
#a=c
|
|
||||||
frame = self.thememanager.generateImage(self.theme)
|
frame = self.thememanager.generateImage(self.theme)
|
||||||
self.ThemePreview.setPixmap(QtGui.QPixmap.fromImage(frame))
|
self.ThemePreview.setPixmap(QtGui.QPixmap.fromImage(frame))
|
||||||
|
|
||||||
|
|
|
@ -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')
|
|
@ -181,7 +181,7 @@ class GeneralTab(SettingsTab):
|
||||||
self.MonitorLabel.setText(
|
self.MonitorLabel.setText(
|
||||||
self.trUtf8('Select monitor for output display:'))
|
self.trUtf8('Select monitor for output display:'))
|
||||||
self.DisplayOnMonitorCheck.setText(
|
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.StartupGroupBox.setTitle(self.trUtf8('Application Startup'))
|
||||||
self.WarningCheckBox.setText(self.trUtf8('Show blank screen warning'))
|
self.WarningCheckBox.setText(self.trUtf8('Show blank screen warning'))
|
||||||
self.AutoOpenCheckBox.setText(
|
self.AutoOpenCheckBox.setText(
|
||||||
|
|
|
@ -40,6 +40,7 @@ class DisplayManager(QtGui.QWidget):
|
||||||
Wrapper class to hold the display widgets.
|
Wrapper class to hold the display widgets.
|
||||||
I will provide API's in future to access the screens allow for
|
I will provide API's in future to access the screens allow for
|
||||||
extra displays to be added.
|
extra displays to be added.
|
||||||
|
RenderManager is poked in by MainWindow
|
||||||
"""
|
"""
|
||||||
def __init__(self, screens):
|
def __init__(self, screens):
|
||||||
QtGui.QWidget.__init__(self)
|
QtGui.QWidget.__init__(self)
|
||||||
|
@ -130,15 +131,12 @@ class MainDisplay(DisplayWidget):
|
||||||
self.displayBlank = False
|
self.displayBlank = False
|
||||||
self.blankFrame = None
|
self.blankFrame = None
|
||||||
self.frame = None
|
self.frame = None
|
||||||
self.firstTime = True
|
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||||
self.hasTransition = False
|
QtCore.SIGNAL(u'videodisplay_start'), self.hideDisplayForVideo)
|
||||||
self.mediaBackground = False
|
|
||||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||||
QtCore.SIGNAL(u'maindisplay_hide'), self.hideDisplay)
|
QtCore.SIGNAL(u'maindisplay_hide'), self.hideDisplay)
|
||||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||||
QtCore.SIGNAL(u'maindisplay_show'), self.showDisplay)
|
QtCore.SIGNAL(u'maindisplay_show'), self.showDisplay)
|
||||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
|
||||||
QtCore.SIGNAL(u'videodisplay_start'), self.hideDisplay)
|
|
||||||
|
|
||||||
def setup(self):
|
def setup(self):
|
||||||
"""
|
"""
|
||||||
|
@ -149,12 +147,12 @@ class MainDisplay(DisplayWidget):
|
||||||
self.setVisible(False)
|
self.setVisible(False)
|
||||||
self.screen = self.screens.current
|
self.screen = self.screens.current
|
||||||
#Sort out screen locations and sizes
|
#Sort out screen locations and sizes
|
||||||
self.setGeometry(self.screen[u'size'])
|
|
||||||
self.display_alert.setGeometry(self.screen[u'size'])
|
self.display_alert.setGeometry(self.screen[u'size'])
|
||||||
self.display_image.resize(self.screen[u'size'].width(),
|
self.display_image.resize(self.screen[u'size'].width(),
|
||||||
self.screen[u'size'].height())
|
self.screen[u'size'].height())
|
||||||
self.display_text.resize(self.screen[u'size'].width(),
|
self.display_text.resize(self.screen[u'size'].width(),
|
||||||
self.screen[u'size'].height())
|
self.screen[u'size'].height())
|
||||||
|
self.setGeometry(self.screen[u'size'])
|
||||||
#Build a custom splash screen
|
#Build a custom splash screen
|
||||||
self.InitialFrame = QtGui.QImage(
|
self.InitialFrame = QtGui.QImage(
|
||||||
self.screen[u'size'].width(),
|
self.screen[u'size'].width(),
|
||||||
|
@ -201,11 +199,32 @@ class MainDisplay(DisplayWidget):
|
||||||
else:
|
else:
|
||||||
self.showFullScreen()
|
self.showFullScreen()
|
||||||
|
|
||||||
def hideDisplay(self):
|
def hideDisplayForVideo(self):
|
||||||
log.debug(u'hideDisplay')
|
"""
|
||||||
self.display_image.setPixmap(self.transparent)
|
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_alert.setPixmap(self.transparent)
|
||||||
self.display_text.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()
|
self.moveToTop()
|
||||||
|
|
||||||
def moveToTop(self):
|
def moveToTop(self):
|
||||||
|
@ -215,10 +234,20 @@ class MainDisplay(DisplayWidget):
|
||||||
self.show()
|
self.show()
|
||||||
|
|
||||||
def showDisplay(self):
|
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')
|
log.debug(u'showDisplay')
|
||||||
if not self.primary:
|
if self.storeImage:
|
||||||
self.setVisible(True)
|
self.display_image.setPixmap(self.storeImage)
|
||||||
self.showFullScreen()
|
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')
|
Receiver.send_message(u'maindisplay_active')
|
||||||
|
|
||||||
def addImageWithText(self, frame):
|
def addImageWithText(self, frame):
|
||||||
|
@ -280,27 +309,6 @@ class MainDisplay(DisplayWidget):
|
||||||
self.waitingFrame = frame
|
self.waitingFrame = frame
|
||||||
self.waitingFrameTrans = transition
|
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):
|
class VideoDisplay(Phonon.VideoWidget):
|
||||||
"""
|
"""
|
||||||
This is the form that is used to display videos on the projector.
|
This is the form that is used to display videos on the projector.
|
||||||
|
@ -323,11 +331,18 @@ class VideoDisplay(Phonon.VideoWidget):
|
||||||
self.setWindowTitle(u'OpenLP Video Display')
|
self.setWindowTitle(u'OpenLP Video Display')
|
||||||
self.parent = parent
|
self.parent = parent
|
||||||
self.screens = screens
|
self.screens = screens
|
||||||
|
self.hidden = False
|
||||||
self.mediaObject = Phonon.MediaObject()
|
self.mediaObject = Phonon.MediaObject()
|
||||||
self.setAspectRatio(aspect)
|
self.setAspectRatio(aspect)
|
||||||
self.audioObject = Phonon.AudioOutput(Phonon.VideoCategory)
|
self.audioObject = Phonon.AudioOutput(Phonon.VideoCategory)
|
||||||
Phonon.createPath(self.mediaObject, self)
|
Phonon.createPath(self.mediaObject, self)
|
||||||
Phonon.createPath(self.mediaObject, self.audioObject)
|
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.QObject.connect(Receiver.get_receiver(),
|
||||||
QtCore.SIGNAL(u'videodisplay_start'), self.onMediaQueue)
|
QtCore.SIGNAL(u'videodisplay_start'), self.onMediaQueue)
|
||||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||||
|
@ -338,6 +353,7 @@ class VideoDisplay(Phonon.VideoWidget):
|
||||||
QtCore.SIGNAL(u'videodisplay_stop'), self.onMediaStop)
|
QtCore.SIGNAL(u'videodisplay_stop'), self.onMediaStop)
|
||||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||||
QtCore.SIGNAL(u'config_updated'), self.setup)
|
QtCore.SIGNAL(u'config_updated'), self.setup)
|
||||||
|
self.setVisible(False)
|
||||||
|
|
||||||
def keyPressEvent(self, event):
|
def keyPressEvent(self, event):
|
||||||
if type(event) == QtGui.QKeyEvent:
|
if type(event) == QtGui.QKeyEvent:
|
||||||
|
@ -355,12 +371,11 @@ class VideoDisplay(Phonon.VideoWidget):
|
||||||
"""
|
"""
|
||||||
log.debug(u'VideoDisplay Setup %s for %s ' %(self.screens,
|
log.debug(u'VideoDisplay Setup %s for %s ' %(self.screens,
|
||||||
self.screens.monitor_number))
|
self.screens.monitor_number))
|
||||||
self.setVisible(False)
|
|
||||||
self.screen = self.screens.current
|
self.screen = self.screens.current
|
||||||
#Sort out screen locations and sizes
|
#Sort out screen locations and sizes
|
||||||
self.setGeometry(self.screen[u'size'])
|
self.setGeometry(self.screen[u'size'])
|
||||||
# To display or not to display?
|
# To display or not to display?
|
||||||
if not self.screen[u'primary']:
|
if not self.screen[u'primary'] and self.isVisible():
|
||||||
self.showFullScreen()
|
self.showFullScreen()
|
||||||
self.primary = False
|
self.primary = False
|
||||||
else:
|
else:
|
||||||
|
@ -369,13 +384,18 @@ class VideoDisplay(Phonon.VideoWidget):
|
||||||
|
|
||||||
def onMediaQueue(self, message):
|
def onMediaQueue(self, message):
|
||||||
log.debug(u'VideoDisplay Queue new media message %s' % 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())
|
message[0].get_frame_title())
|
||||||
source = self.mediaObject.setCurrentSource(Phonon.MediaSource(file))
|
source = self.mediaObject.setCurrentSource(Phonon.MediaSource(file))
|
||||||
self.onMediaPlay()
|
self._play()
|
||||||
|
|
||||||
def onMediaPlay(self):
|
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.mediaObject.play()
|
||||||
self.setVisible(True)
|
self.setVisible(True)
|
||||||
self.showFullScreen()
|
self.showFullScreen()
|
||||||
|
@ -394,3 +414,14 @@ class VideoDisplay(Phonon.VideoWidget):
|
||||||
log.debug(u'VideoDisplay Reached end of media playlist')
|
log.debug(u'VideoDisplay Reached end of media playlist')
|
||||||
self.mediaObject.clearQueue()
|
self.mediaObject.clearQueue()
|
||||||
self.setVisible(False)
|
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()
|
||||||
|
|
||||||
|
|
|
@ -513,6 +513,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
|
||||||
#ThemeManager needs to call RenderManager
|
#ThemeManager needs to call RenderManager
|
||||||
self.RenderManager = RenderManager(
|
self.RenderManager = RenderManager(
|
||||||
self.ThemeManagerContents, self.screens)
|
self.ThemeManagerContents, self.screens)
|
||||||
|
self.displayManager.renderManager = self.RenderManager
|
||||||
#Define the media Dock Manager
|
#Define the media Dock Manager
|
||||||
self.mediaDockManager = MediaDockManager(self.MediaToolBox)
|
self.mediaDockManager = MediaDockManager(self.MediaToolBox)
|
||||||
log.info(u'Load Plugins')
|
log.info(u'Load Plugins')
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
import copy
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
@ -36,6 +37,7 @@ class ScreenList(object):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.preview = None
|
self.preview = None
|
||||||
self.current = None
|
self.current = None
|
||||||
|
self.override = None
|
||||||
self.screen_list = []
|
self.screen_list = []
|
||||||
self.display_count = 0
|
self.display_count = 0
|
||||||
#actual display number
|
#actual display number
|
||||||
|
@ -59,12 +61,31 @@ class ScreenList(object):
|
||||||
"""
|
"""
|
||||||
Set up the current screen dimensions
|
Set up the current screen dimensions
|
||||||
"""
|
"""
|
||||||
|
log.debug(u'set_override_display %s', number, )
|
||||||
if number + 1 > self.display_count:
|
if number + 1 > self.display_count:
|
||||||
self.current = self.screen_list[0]
|
self.current = self.screen_list[0]
|
||||||
self.current_display = 0
|
self.current_display = 0
|
||||||
else:
|
else:
|
||||||
self.current = self.screen_list[number]
|
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
|
self.current_display = number
|
||||||
if self.display_count == 1:
|
if self.display_count == 1:
|
||||||
self.preview = self.screen_list[0]
|
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)
|
||||||
|
|
|
@ -27,7 +27,7 @@ import logging
|
||||||
|
|
||||||
from PyQt4 import QtGui
|
from PyQt4 import QtGui
|
||||||
|
|
||||||
from openlp.core.ui import GeneralTab, ThemesTab
|
from openlp.core.ui import GeneralTab, ThemesTab, DisplayTab
|
||||||
from settingsdialog import Ui_SettingsDialog
|
from settingsdialog import Ui_SettingsDialog
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
@ -43,6 +43,9 @@ class SettingsForm(QtGui.QDialog, Ui_SettingsDialog):
|
||||||
# Themes tab
|
# Themes tab
|
||||||
self.ThemesTab = ThemesTab(mainWindow)
|
self.ThemesTab = ThemesTab(mainWindow)
|
||||||
self.addTab(u'Themes', self.ThemesTab)
|
self.addTab(u'Themes', self.ThemesTab)
|
||||||
|
# Display tab
|
||||||
|
self.DisplayTab = DisplayTab(screens)
|
||||||
|
self.addTab(u'Display', self.DisplayTab)
|
||||||
|
|
||||||
def addTab(self, name, tab):
|
def addTab(self, name, tab):
|
||||||
log.info(u'Adding %s tab' % tab.tabTitle)
|
log.info(u'Adding %s tab' % tab.tabTitle)
|
||||||
|
|
|
@ -30,18 +30,9 @@ import os
|
||||||
from PyQt4 import QtCore, QtGui
|
from PyQt4 import QtCore, QtGui
|
||||||
from PyQt4.phonon import Phonon
|
from PyQt4.phonon import Phonon
|
||||||
|
|
||||||
from openlp.core.lib import ItemCapabilities
|
from openlp.core.ui import HideMode
|
||||||
|
from openlp.core.lib import OpenLPToolbar, Receiver, resize_image, \
|
||||||
class HideMode(object):
|
ItemCapabilities
|
||||||
"""
|
|
||||||
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
|
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
@ -197,8 +188,6 @@ class SlideController(QtGui.QWidget):
|
||||||
self.hideButton = self.Toolbar.addToolbarButton(
|
self.hideButton = self.Toolbar.addToolbarButton(
|
||||||
u'Hide screen', u':/slides/slide_desktop.png',
|
u'Hide screen', u':/slides/slide_desktop.png',
|
||||||
self.trUtf8('Hide Screen'), self.onHideDisplay, True)
|
self.trUtf8('Hide Screen'), self.onHideDisplay, True)
|
||||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
|
||||||
QtCore.SIGNAL(u'maindisplay_blank'), self.blankScreen)
|
|
||||||
if not self.isLive:
|
if not self.isLive:
|
||||||
self.Toolbar.addToolbarSeparator(u'Close Separator')
|
self.Toolbar.addToolbarSeparator(u'Close Separator')
|
||||||
self.Toolbar.addToolbarButton(
|
self.Toolbar.addToolbarButton(
|
||||||
|
@ -236,6 +225,16 @@ class SlideController(QtGui.QWidget):
|
||||||
self.Mediabar.addToolbarButton(
|
self.Mediabar.addToolbarButton(
|
||||||
u'Media Stop', u':/slides/media_playback_stop.png',
|
u'Media Stop', u':/slides/media_playback_stop.png',
|
||||||
self.trUtf8('Start playing media'), self.onMediaStop)
|
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:
|
if not self.isLive:
|
||||||
self.seekSlider = Phonon.SeekSlider()
|
self.seekSlider = Phonon.SeekSlider()
|
||||||
self.seekSlider.setGeometry(QtCore.QRect(90, 260, 221, 24))
|
self.seekSlider.setGeometry(QtCore.QRect(90, 260, 221, 24))
|
||||||
|
@ -261,7 +260,7 @@ class SlideController(QtGui.QWidget):
|
||||||
self.PreviewFrame = QtGui.QFrame(self.Splitter)
|
self.PreviewFrame = QtGui.QFrame(self.Splitter)
|
||||||
self.PreviewFrame.setGeometry(QtCore.QRect(0, 0, 300, 225))
|
self.PreviewFrame.setGeometry(QtCore.QRect(0, 0, 300, 225))
|
||||||
self.PreviewFrame.setSizePolicy(QtGui.QSizePolicy(
|
self.PreviewFrame.setSizePolicy(QtGui.QSizePolicy(
|
||||||
QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Minimum,
|
QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Minimum,
|
||||||
QtGui.QSizePolicy.Label))
|
QtGui.QSizePolicy.Label))
|
||||||
self.PreviewFrame.setFrameShape(QtGui.QFrame.StyledPanel)
|
self.PreviewFrame.setFrameShape(QtGui.QFrame.StyledPanel)
|
||||||
self.PreviewFrame.setFrameShadow(QtGui.QFrame.Sunken)
|
self.PreviewFrame.setFrameShadow(QtGui.QFrame.Sunken)
|
||||||
|
@ -318,26 +317,26 @@ class SlideController(QtGui.QWidget):
|
||||||
QtCore.SIGNAL(u'slidecontroller_%s_stop_loop' % self.type_prefix),
|
QtCore.SIGNAL(u'slidecontroller_%s_stop_loop' % self.type_prefix),
|
||||||
self.onStopLoop)
|
self.onStopLoop)
|
||||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
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)
|
self.onSlideSelectedFirst)
|
||||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
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)
|
self.onSlideSelectedNext)
|
||||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
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)
|
self.onSlideSelectedPrevious)
|
||||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
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)
|
self.onSlideSelectedNextNoloop)
|
||||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||||
QtCore.SIGNAL(u'slidecontroller_%s_previous_noloop' %
|
QtCore.SIGNAL(u'slidecontroller_%s_previous_noloop' %
|
||||||
self.type_prefix),
|
self.type_prefix),
|
||||||
self.onSlideSelectedPreviousNoloop)
|
self.onSlideSelectedPreviousNoloop)
|
||||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
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)
|
self.onSlideSelectedLast)
|
||||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
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)
|
self.onSlideChange)
|
||||||
QtCore.QObject.connect(self.Splitter,
|
QtCore.QObject.connect(self.Splitter,
|
||||||
QtCore.SIGNAL(u'splitterMoved(int, int)'), self.trackSplitter)
|
QtCore.SIGNAL(u'splitterMoved(int, int)'), self.trackSplitter)
|
||||||
|
@ -484,7 +483,7 @@ class SlideController(QtGui.QWidget):
|
||||||
blanked = self.blankButton.isChecked()
|
blanked = self.blankButton.isChecked()
|
||||||
else:
|
else:
|
||||||
blanked = False
|
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])
|
[serviceItem, self.isLive, blanked, slideno])
|
||||||
self.slideList = {}
|
self.slideList = {}
|
||||||
width = self.parent.ControlSplitter.sizes()[self.split]
|
width = self.parent.ControlSplitter.sizes()[self.split]
|
||||||
|
@ -557,9 +556,9 @@ class SlideController(QtGui.QWidget):
|
||||||
self.enableToolBar(serviceItem)
|
self.enableToolBar(serviceItem)
|
||||||
self.onSlideSelected()
|
self.onSlideSelected()
|
||||||
self.PreviewListWidget.setFocus()
|
self.PreviewListWidget.setFocus()
|
||||||
Receiver.send_message(u'%s_%s_started' %
|
Receiver.send_message(u'%s_%s_started' %
|
||||||
(self.serviceItem.name.lower(),
|
(self.serviceItem.name.lower(),
|
||||||
'live' if self.isLive else 'preview'),
|
'live' if self.isLive else 'preview'),
|
||||||
[serviceItem])
|
[serviceItem])
|
||||||
log.log(15, u'Display Rendering took %4s' % (time.time() - before))
|
log.log(15, u'Display Rendering took %4s' % (time.time() - before))
|
||||||
|
|
||||||
|
@ -570,7 +569,7 @@ class SlideController(QtGui.QWidget):
|
||||||
"""
|
"""
|
||||||
if not self.serviceItem:
|
if not self.serviceItem:
|
||||||
return
|
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])
|
[self.serviceItem, self.isLive])
|
||||||
if self.serviceItem.is_command():
|
if self.serviceItem.is_command():
|
||||||
self.updatePreview()
|
self.updatePreview()
|
||||||
|
@ -578,55 +577,46 @@ class SlideController(QtGui.QWidget):
|
||||||
self.PreviewListWidget.selectRow(0)
|
self.PreviewListWidget.selectRow(0)
|
||||||
self.onSlideSelected()
|
self.onSlideSelected()
|
||||||
|
|
||||||
def onBlankDisplay(self, force=False):
|
def onBlankDisplay(self, checked):
|
||||||
"""
|
"""
|
||||||
Handle the blank screen button
|
Handle the blank screen button
|
||||||
"""
|
"""
|
||||||
log.debug(u'onBlankDisplay %d' % force)
|
log.debug(u'onBlankDisplay %d' % checked)
|
||||||
if force:
|
self.hideButton.setChecked(False)
|
||||||
self.blankButton.setChecked(True)
|
self.themeButton.setChecked(False)
|
||||||
self.blankScreen(HideMode.Blank, self.blankButton.isChecked())
|
|
||||||
QtCore.QSettings().setValue(
|
QtCore.QSettings().setValue(
|
||||||
self.parent.general_settings_section + u'/screen blank',
|
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
|
Handle the Theme screen button
|
||||||
"""
|
"""
|
||||||
log.debug(u'onThemeDisplay %d' % force)
|
log.debug(u'onThemeDisplay %d' % checked)
|
||||||
if force:
|
self.blankButton.setChecked(False)
|
||||||
self.themeButton.setChecked(True)
|
self.hideButton.setChecked(False)
|
||||||
self.blankScreen(HideMode.Theme, self.themeButton.isChecked())
|
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
|
Handle the Hide screen button
|
||||||
"""
|
"""
|
||||||
log.debug(u'onHideDisplay %d' % force)
|
log.debug(u'onHideDisplay %d' % checked)
|
||||||
if force:
|
self.blankButton.setChecked(False)
|
||||||
self.hideButton.setChecked(True)
|
self.themeButton.setChecked(False)
|
||||||
if self.hideButton.isChecked():
|
if checked:
|
||||||
self.mainDisplay.hideDisplay()
|
Receiver.send_message(u'maindisplay_hide', HideMode.Screen)
|
||||||
else:
|
else:
|
||||||
self.mainDisplay.showDisplay()
|
Receiver.send_message(u'maindisplay_show')
|
||||||
|
|
||||||
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)
|
|
||||||
|
|
||||||
def onSlideSelected(self):
|
def onSlideSelected(self):
|
||||||
"""
|
"""
|
||||||
|
@ -693,7 +683,7 @@ class SlideController(QtGui.QWidget):
|
||||||
"""
|
"""
|
||||||
if not self.serviceItem:
|
if not self.serviceItem:
|
||||||
return
|
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])
|
[self.serviceItem, self.isLive])
|
||||||
if self.serviceItem.is_command():
|
if self.serviceItem.is_command():
|
||||||
self.updatePreview()
|
self.updatePreview()
|
||||||
|
@ -717,7 +707,7 @@ class SlideController(QtGui.QWidget):
|
||||||
"""
|
"""
|
||||||
if not self.serviceItem:
|
if not self.serviceItem:
|
||||||
return
|
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])
|
[self.serviceItem, self.isLive])
|
||||||
if self.serviceItem.is_command():
|
if self.serviceItem.is_command():
|
||||||
self.updatePreview()
|
self.updatePreview()
|
||||||
|
@ -737,7 +727,7 @@ class SlideController(QtGui.QWidget):
|
||||||
"""
|
"""
|
||||||
if not self.serviceItem:
|
if not self.serviceItem:
|
||||||
return
|
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])
|
[self.serviceItem, self.isLive])
|
||||||
if self.serviceItem.is_command():
|
if self.serviceItem.is_command():
|
||||||
self.updatePreview()
|
self.updatePreview()
|
||||||
|
@ -768,6 +758,9 @@ class SlideController(QtGui.QWidget):
|
||||||
self.onSlideSelectedNext()
|
self.onSlideSelectedNext()
|
||||||
|
|
||||||
def onEditSong(self):
|
def onEditSong(self):
|
||||||
|
"""
|
||||||
|
From the preview display requires the service Item to be editied
|
||||||
|
"""
|
||||||
self.songEdit = True
|
self.songEdit = True
|
||||||
Receiver.send_message(u'%s_edit' % self.serviceItem.name.lower(),
|
Receiver.send_message(u'%s_edit' % self.serviceItem.name.lower(),
|
||||||
u'P:%s' % self.serviceItem.editId)
|
u'P:%s' % self.serviceItem.editId)
|
||||||
|
@ -782,8 +775,12 @@ class SlideController(QtGui.QWidget):
|
||||||
self.serviceItem, row)
|
self.serviceItem, row)
|
||||||
|
|
||||||
def onMediaStart(self, item):
|
def onMediaStart(self, item):
|
||||||
|
"""
|
||||||
|
Respond to the arrival of a media service item
|
||||||
|
"""
|
||||||
|
log.debug(u'SlideController onMediaStart')
|
||||||
if self.isLive:
|
if self.isLive:
|
||||||
Receiver.send_message(u'videodisplay_start',
|
Receiver.send_message(u'videodisplay_start',
|
||||||
[item, self.blankButton.isChecked()])
|
[item, self.blankButton.isChecked()])
|
||||||
else:
|
else:
|
||||||
self.mediaObject.stop()
|
self.mediaObject.stop()
|
||||||
|
@ -795,12 +792,20 @@ class SlideController(QtGui.QWidget):
|
||||||
self.onMediaPlay()
|
self.onMediaPlay()
|
||||||
|
|
||||||
def onMediaPause(self):
|
def onMediaPause(self):
|
||||||
|
"""
|
||||||
|
Respond to the Pause from the media Toolbar
|
||||||
|
"""
|
||||||
|
log.debug(u'SlideController onMediaPause')
|
||||||
if self.isLive:
|
if self.isLive:
|
||||||
Receiver.send_message(u'videodisplay_pause')
|
Receiver.send_message(u'videodisplay_pause')
|
||||||
else:
|
else:
|
||||||
self.mediaObject.pause()
|
self.mediaObject.pause()
|
||||||
|
|
||||||
def onMediaPlay(self):
|
def onMediaPlay(self):
|
||||||
|
"""
|
||||||
|
Respond to the Play from the media Toolbar
|
||||||
|
"""
|
||||||
|
log.debug(u'SlideController onMediaPlay')
|
||||||
if self.isLive:
|
if self.isLive:
|
||||||
Receiver.send_message(u'videodisplay_play')
|
Receiver.send_message(u'videodisplay_play')
|
||||||
else:
|
else:
|
||||||
|
@ -809,6 +814,10 @@ class SlideController(QtGui.QWidget):
|
||||||
self.mediaObject.play()
|
self.mediaObject.play()
|
||||||
|
|
||||||
def onMediaStop(self):
|
def onMediaStop(self):
|
||||||
|
"""
|
||||||
|
Respond to the Stop from the media Toolbar
|
||||||
|
"""
|
||||||
|
log.debug(u'SlideController onMediaStop')
|
||||||
if self.isLive:
|
if self.isLive:
|
||||||
Receiver.send_message(u'videodisplay_stop')
|
Receiver.send_message(u'videodisplay_stop')
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -108,7 +108,7 @@ class ThemeManager(QtGui.QWidget):
|
||||||
self.themelist = []
|
self.themelist = []
|
||||||
self.path = AppLocation.get_section_data_path(self.settings_section)
|
self.path = AppLocation.get_section_data_path(self.settings_section)
|
||||||
self.checkThemesExists(self.path)
|
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.checkThemesExists(self.thumbPath)
|
||||||
self.amendThemeForm.path = self.path
|
self.amendThemeForm.path = self.path
|
||||||
# Last little bits of setting up
|
# Last little bits of setting up
|
||||||
|
|
|
@ -78,7 +78,7 @@ class ImageMediaItem(MediaManagerItem):
|
||||||
self.ListView.setIconSize(QtCore.QSize(88,50))
|
self.ListView.setIconSize(QtCore.QSize(88,50))
|
||||||
self.servicePath = os.path.join(
|
self.servicePath = os.path.join(
|
||||||
AppLocation.get_section_data_path(self.settings_section),
|
AppLocation.get_section_data_path(self.settings_section),
|
||||||
u'.thumbnails')
|
u'thumbnails')
|
||||||
if not os.path.exists(self.servicePath):
|
if not os.path.exists(self.servicePath):
|
||||||
os.mkdir(self.servicePath)
|
os.mkdir(self.servicePath)
|
||||||
self.loadList(SettingsManager.load_list(
|
self.loadList(SettingsManager.load_list(
|
||||||
|
|
|
@ -217,7 +217,7 @@ class MessageListener(object):
|
||||||
isLive, item = self.decode_message(message)
|
isLive, item = self.decode_message(message)
|
||||||
log.debug(u'Startup called with message %s' % message)
|
log.debug(u'Startup called with message %s' % message)
|
||||||
isBlank = message[2]
|
isBlank = message[2]
|
||||||
file = os.path.join(item.get_frame_path(),
|
file = os.path.join(item.get_frame_path(),
|
||||||
item.get_frame_title())
|
item.get_frame_title())
|
||||||
self.handler = item.title
|
self.handler = item.title
|
||||||
if self.handler == self.mediaitem.Automatic:
|
if self.handler == self.mediaitem.Automatic:
|
||||||
|
@ -231,14 +231,17 @@ class MessageListener(object):
|
||||||
controller.addHandler(self.controllers[self.handler], file, isBlank)
|
controller.addHandler(self.controllers[self.handler], file, isBlank)
|
||||||
|
|
||||||
def decode_message(self, message):
|
def decode_message(self, message):
|
||||||
return message[1], message[0]
|
if len(message) == 3:
|
||||||
|
return message[1], message[0], message[2]
|
||||||
def slide(self, message):
|
|
||||||
isLive, item = self.decode_message(message)
|
|
||||||
if isLive:
|
|
||||||
self.liveHandler.slide(slide, live)
|
|
||||||
else:
|
else:
|
||||||
self.previewHandler.slide(slide, live)
|
return message[1], message[0]
|
||||||
|
|
||||||
|
def slide(self, message):
|
||||||
|
isLive, item, slide = self.decode_message(message)
|
||||||
|
if isLive:
|
||||||
|
self.liveHandler.slide(slide, isLive)
|
||||||
|
else:
|
||||||
|
self.previewHandler.slide(slide, isLive)
|
||||||
|
|
||||||
def first(self, message):
|
def first(self, message):
|
||||||
isLive, item = self.decode_message(message)
|
isLive, item = self.decode_message(message)
|
||||||
|
@ -285,6 +288,6 @@ class MessageListener(object):
|
||||||
isLive, item = self.decode_message(message)
|
isLive, item = self.decode_message(message)
|
||||||
if isLive:
|
if isLive:
|
||||||
self.liveHandler.unblank()
|
self.liveHandler.unblank()
|
||||||
|
|
||||||
def timeout(self):
|
def timeout(self):
|
||||||
self.liveHandler.poll()
|
self.liveHandler.poll()
|
||||||
|
|
|
@ -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))
|
||||||
|
|
|
@ -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>
|
Loading…
Reference in New Issue