Merged from HEAD.

Cleaned up conflict.
Fixed a few other potential breaks.
Paid bail to the Line Length Police.
This commit is contained in:
Raoul Snyman 2009-12-24 19:54:39 +02:00
commit c900ed9b5c
20 changed files with 489 additions and 196 deletions

View File

@ -357,7 +357,7 @@ class MediaManagerItem(QtGui.QWidget):
self.trUtf8('No items selected...'), self.trUtf8('No items selected...'),
self.trUtf8('You must select one or more items')) self.trUtf8('You must select one or more items'))
else: else:
log.debug(self.PluginNameShort + u' Preview Requested') log.debug(self.PluginNameShort + u' Preview requested')
service_item = self.buildServiceItem() service_item = self.buildServiceItem()
if service_item: if service_item:
service_item.fromPlugin = True service_item.fromPlugin = True
@ -369,7 +369,7 @@ class MediaManagerItem(QtGui.QWidget):
self.trUtf8('No items selected...'), self.trUtf8('No items selected...'),
self.trUtf8('You must select one or more items')) self.trUtf8('You must select one or more items'))
else: else:
log.debug(self.PluginNameShort + u' Live Requested') log.debug(self.PluginNameShort + u' Live requested')
service_item = self.buildServiceItem() service_item = self.buildServiceItem()
if service_item: if service_item:
service_item.fromPlugin = True service_item.fromPlugin = True
@ -381,7 +381,7 @@ class MediaManagerItem(QtGui.QWidget):
self.trUtf8('No items selected...'), self.trUtf8('No items selected...'),
self.trUtf8('You must select one or more items')) self.trUtf8('You must select one or more items'))
else: else:
log.debug(self.PluginNameShort + u' Add Requested') log.debug(self.PluginNameShort + u' Add requested')
service_item = self.buildServiceItem() service_item = self.buildServiceItem()
if service_item: if service_item:
service_item.fromPlugin = False service_item.fromPlugin = False

View File

@ -43,9 +43,8 @@ class Renderer(object):
self._rect = None self._rect = None
self._debug = 0 self._debug = 0
self._right_margin = 64 # the amount of right indent self._right_margin = 64 # the amount of right indent
self._shadow_offset = 5 self._display_shadow_size_footer = 0
self._shadow_offset_footer = 3 self._display_outline_size_footer = 0
self._outline_offset = 2
self.theme_name = None self.theme_name = None
self._theme = None self._theme = None
self._bg_image_filename = None self._bg_image_filename = None
@ -426,23 +425,25 @@ class Renderer(object):
# dont allow alignment messing with footers # dont allow alignment messing with footers
if footer: if footer:
align = 0 align = 0
shadow_offset = self._shadow_offset_footer display_shadow_size = self._display_shadow_size_footer
display_outline_size = self._display_outline_size_footer
else: else:
align = self._theme.display_horizontalAlign align = self._theme.display_horizontalAlign
shadow_offset = self._shadow_offset display_shadow_size = int(self._theme.display_shadow_size)
display_outline_size = int(self._theme.display_outline_size)
for linenum in range(len(lines)): for linenum in range(len(lines)):
line = lines[linenum] line = lines[linenum]
#find out how wide line is #find out how wide line is
w, h = self._get_extent_and_render(line, footer, tlcorner=(x, y), w, h = self._get_extent_and_render(line, footer, tlcorner=(x, y),
draw=False) draw=False)
if self._theme.display_shadow: if self._theme.display_shadow:
w += shadow_offset w += display_shadow_size
h += shadow_offset h += display_shadow_size
if self._theme.display_outline: if self._theme.display_outline:
# pixels either side # pixels either side
w += 2 * self._outline_offset w += 2 * display_outline_size
# pixels top/bottom # pixels top/bottom
h += 2 * self._outline_offset h += 2 * display_outline_size
if align == 0: # left align if align == 0: # left align
rightextent = x + w rightextent = x + w
# shift right from last line's rh edge # shift right from last line's rh edge
@ -464,36 +465,36 @@ 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 + shadow_offset, y + shadow_offset), tlcorner=(x + display_shadow_size, y + display_shadow_size),
draw=True, color = self._theme.display_shadow_color) draw=True, color = self._theme.display_shadow_color)
if self._theme.display_outline: if self._theme.display_outline:
self._get_extent_and_render(line, footer, self._get_extent_and_render(line, footer,
(x + self._outline_offset, y), draw=True, (x + display_outline_size, y), draw=True,
color = self._theme.display_outline_color) color = self._theme.display_outline_color)
self._get_extent_and_render(line, footer, self._get_extent_and_render(line, footer,
(x, y + self._outline_offset), draw=True, (x, y + display_outline_size), draw=True,
color = self._theme.display_outline_color) color = self._theme.display_outline_color)
self._get_extent_and_render(line, footer, self._get_extent_and_render(line, footer,
(x, y - self._outline_offset), draw=True, (x, y - display_outline_size), draw=True,
color = self._theme.display_outline_color) color = self._theme.display_outline_color)
self._get_extent_and_render(line, footer, self._get_extent_and_render(line, footer,
(x - self._outline_offset, y), draw=True, (x - display_outline_size, y), draw=True,
color = self._theme.display_outline_color) color = self._theme.display_outline_color)
if self._outline_offset > 1: if display_outline_size > 1:
self._get_extent_and_render(line, footer, self._get_extent_and_render(line, footer,
(x + self._outline_offset, y + self._outline_offset), (x + display_outline_size, y + display_outline_size),
draw=True, draw=True,
color = self._theme.display_outline_color) color = self._theme.display_outline_color)
self._get_extent_and_render(line, footer, self._get_extent_and_render(line, footer,
(x - self._outline_offset, y + self._outline_offset), (x - display_outline_size, y + display_outline_size),
draw=True, draw=True,
color = self._theme.display_outline_color) color = self._theme.display_outline_color)
self._get_extent_and_render(line, footer, self._get_extent_and_render(line, footer,
(x + self._outline_offset, y - self._outline_offset), (x + display_outline_size, y - display_outline_size),
draw=True, draw=True,
color = self._theme.display_outline_color) color = self._theme.display_outline_color)
self._get_extent_and_render(line, footer, self._get_extent_and_render(line, footer,
(x - self._outline_offset, y - self._outline_offset), (x - display_outline_size, y - display_outline_size),
draw=True, draw=True,
color = self._theme.display_outline_color) color = self._theme.display_outline_color)
self._get_extent_and_render(line, footer,tlcorner=(x, y), self._get_extent_and_render(line, footer,tlcorner=(x, y),
@ -578,7 +579,7 @@ class Renderer(object):
painter.drawText(x, y + metrics.ascent(), line) painter.drawText(x, y + metrics.ascent(), line)
painter.end() painter.end()
if self._theme.display_slideTransition: if self._theme.display_slideTransition:
# Print 2nd image with 50% weight # Print 2nd image with 70% weight
painter = QtGui.QPainter() painter = QtGui.QPainter()
painter.begin(self._frameOp) painter.begin(self._frameOp)
painter.setRenderHint(QtGui.QPainter.Antialiasing); painter.setRenderHint(QtGui.QPainter.Antialiasing);

View File

@ -112,6 +112,8 @@ class ServiceItem(object):
for slide in self._raw_frames: for slide in self._raw_frames:
slide[u'image'] = \ slide[u'image'] = \
self.RenderManager.resize_image(slide[u'image']) self.RenderManager.resize_image(slide[u'image'])
elif self.service_item_type == ServiceItemType.Command:
pass
else: else:
log.error(u'Invalid value renderer :%s' % self.service_item_type) log.error(u'Invalid value renderer :%s' % self.service_item_type)

View File

@ -134,6 +134,7 @@ class SongXMLParser(object):
``xml`` ``xml``
The XML of the song to be parsed. The XML of the song to be parsed.
""" """
self.song_xml = None
try: try:
self.song_xml = ElementTree( self.song_xml = ElementTree(
element=XML(unicode(xml).encode('unicode-escape'))) element=XML(unicode(xml).encode('unicode-escape')))

View File

@ -65,8 +65,8 @@ blankthemexml=\
<location override="False" x="10" y="730" width="1024" height="38"/> <location override="False" x="10" y="730" width="1024" height="38"/>
</font> </font>
<display> <display>
<shadow color="#000000">True</shadow> <shadow color="#000000" size="5">True</shadow>
<outline color="#000000">False</outline> <outline color="#000000" size="2">False</outline>
<horizontalAlign>0</horizontalAlign> <horizontalAlign>0</horizontalAlign>
<verticalAlign>0</verticalAlign> <verticalAlign>0</verticalAlign>
<wrapStyle>0</wrapStyle> <wrapStyle>0</wrapStyle>
@ -238,7 +238,7 @@ class ThemeXML(object):
background.appendChild(element) background.appendChild(element)
def add_display(self, shadow, shadow_color, outline, outline_color, def add_display(self, shadow, shadow_color, outline, outline_color,
horizontal, vertical, wrap, transition): horizontal, vertical, wrap, transition, shadow_pixel=5, outline_pixel=2):
""" """
Add a Display options. Add a Display options.
@ -272,12 +272,14 @@ class ThemeXML(object):
# Shadow # Shadow
element = self.theme_xml.createElement(u'shadow') element = self.theme_xml.createElement(u'shadow')
element.setAttribute(u'color', shadow_color) element.setAttribute(u'color', shadow_color)
element.setAttribute(u'size', unicode(shadow_pixel))
value = self.theme_xml.createTextNode(shadow) value = self.theme_xml.createTextNode(shadow)
element.appendChild(value) element.appendChild(value)
background.appendChild(element) background.appendChild(element)
# Outline # Outline
element = self.theme_xml.createElement(u'outline') element = self.theme_xml.createElement(u'outline')
element.setAttribute(u'color', outline_color) element.setAttribute(u'color', outline_color)
element.setAttribute(u'size', unicode(outline_pixel))
value = self.theme_xml.createTextNode(outline) value = self.theme_xml.createTextNode(outline)
element.appendChild(value) element.appendChild(value)
background.appendChild(element) background.appendChild(element)

View File

@ -99,4 +99,4 @@ class AlertForm(QtGui.QDialog):
self.CancelButton.setText(self.trUtf8('Cancel')) self.CancelButton.setText(self.trUtf8('Cancel'))
def onDisplayClicked(self): def onDisplayClicked(self):
self.parent.mainDisplay.displayAlert(self.AlertEntryEditItem.text()) self.parent.mainDisplay.displayAlert(unicode(self.AlertEntryEditItem.text()))

View File

@ -410,13 +410,13 @@ class Ui_AmendThemeDialog(object):
self.OptionsLeftLayout.setSpacing(8) self.OptionsLeftLayout.setSpacing(8)
self.OptionsLeftLayout.setMargin(0) self.OptionsLeftLayout.setMargin(0)
self.OptionsLeftLayout.setObjectName(u'OptionsLeftLayout') self.OptionsLeftLayout.setObjectName(u'OptionsLeftLayout')
self.ShadowGroupBox = QtGui.QGroupBox(self.OptionsLeftWidget) self.OutlineGroupBox = QtGui.QGroupBox(self.OptionsLeftWidget)
self.ShadowGroupBox.setObjectName(u'ShadowGroupBox') self.OutlineGroupBox.setObjectName(u'OutlineGroupBox')
self.verticalLayout = QtGui.QVBoxLayout(self.ShadowGroupBox) self.verticalLayout = QtGui.QVBoxLayout(self.OutlineGroupBox)
self.verticalLayout.setSpacing(8) self.verticalLayout.setSpacing(8)
self.verticalLayout.setMargin(8) self.verticalLayout.setMargin(8)
self.verticalLayout.setObjectName(u'verticalLayout') self.verticalLayout.setObjectName(u'verticalLayout')
self.OutlineWidget = QtGui.QWidget(self.ShadowGroupBox) self.OutlineWidget = QtGui.QWidget(self.OutlineGroupBox)
self.OutlineWidget.setObjectName(u'OutlineWidget') self.OutlineWidget.setObjectName(u'OutlineWidget')
self.OutlineLayout = QtGui.QFormLayout(self.OutlineWidget) self.OutlineLayout = QtGui.QFormLayout(self.OutlineWidget)
self.OutlineLayout.setMargin(0) self.OutlineLayout.setMargin(0)
@ -425,16 +425,30 @@ class Ui_AmendThemeDialog(object):
self.OutlineCheckBox = QtGui.QCheckBox(self.OutlineWidget) self.OutlineCheckBox = QtGui.QCheckBox(self.OutlineWidget)
self.OutlineCheckBox.setObjectName(u'OutlineCheckBox') self.OutlineCheckBox.setObjectName(u'OutlineCheckBox')
self.OutlineLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.OutlineCheckBox) self.OutlineLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.OutlineCheckBox)
self.OutlineSpinBox = QtGui.QSpinBox(self.OutlineWidget)
self.OutlineSpinBox.setObjectName("OutlineSpinBox")
self.OutlineSpinBox.setMaximum(10)
self.OutlineLayout.setWidget(1, QtGui.QFormLayout.FieldRole, self.OutlineSpinBox)
self.OutlineSpinBoxLabel = QtGui.QLabel(self.OutlineWidget)
self.OutlineSpinBoxLabel.setObjectName(u'OutlineSpinBoxLabel')
self.OutlineLayout.setWidget(1, QtGui.QFormLayout.LabelRole, self.OutlineSpinBoxLabel)
self.OutlineColorLabel = QtGui.QLabel(self.OutlineWidget) self.OutlineColorLabel = QtGui.QLabel(self.OutlineWidget)
self.OutlineColorLabel.setObjectName(u'OutlineColorLabel') self.OutlineColorLabel.setObjectName(u'OutlineColorLabel')
self.OutlineLayout.setWidget(1, QtGui.QFormLayout.LabelRole, self.OutlineColorLabel) self.OutlineLayout.setWidget(2, QtGui.QFormLayout.LabelRole, self.OutlineColorLabel)
self.OutlineColorPushButton = QtGui.QPushButton(self.OutlineWidget) self.OutlineColorPushButton = QtGui.QPushButton(self.OutlineWidget)
self.OutlineColorPushButton.setObjectName(u'OutlineColorPushButton') self.OutlineColorPushButton.setObjectName(u'OutlineColorPushButton')
self.OutlineLayout.setWidget(1, QtGui.QFormLayout.FieldRole, self.OutlineColorPushButton) self.OutlineLayout.setWidget(2, QtGui.QFormLayout.FieldRole, self.OutlineColorPushButton)
self.OutlineEnabledLabel = QtGui.QLabel(self.OutlineWidget) self.OutlineEnabledLabel = QtGui.QLabel(self.OutlineWidget)
self.OutlineEnabledLabel.setObjectName(u'OutlineEnabledLabel') self.OutlineEnabledLabel.setObjectName(u'OutlineEnabledLabel')
self.OutlineLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.OutlineEnabledLabel) self.OutlineLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.OutlineEnabledLabel)
self.verticalLayout.addWidget(self.OutlineWidget) self.verticalLayout.addWidget(self.OutlineWidget)
self.OptionsLeftLayout.addWidget(self.OutlineGroupBox)
self.ShadowGroupBox = QtGui.QGroupBox(self.OptionsLeftWidget)
self.ShadowGroupBox.setObjectName(u'ShadowGroupBox')
self.verticalLayout = QtGui.QVBoxLayout(self.ShadowGroupBox)
self.verticalLayout.setSpacing(8)
self.verticalLayout.setMargin(8)
self.verticalLayout.setObjectName(u'verticalLayout')
self.ShadowWidget = QtGui.QWidget(self.ShadowGroupBox) self.ShadowWidget = QtGui.QWidget(self.ShadowGroupBox)
self.ShadowWidget.setObjectName(u'ShadowWidget') self.ShadowWidget.setObjectName(u'ShadowWidget')
self.ShadowLayout = QtGui.QFormLayout(self.ShadowWidget) self.ShadowLayout = QtGui.QFormLayout(self.ShadowWidget)
@ -444,12 +458,19 @@ class Ui_AmendThemeDialog(object):
self.ShadowCheckBox = QtGui.QCheckBox(self.ShadowWidget) self.ShadowCheckBox = QtGui.QCheckBox(self.ShadowWidget)
self.ShadowCheckBox.setObjectName(u'ShadowCheckBox') self.ShadowCheckBox.setObjectName(u'ShadowCheckBox')
self.ShadowLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.ShadowCheckBox) self.ShadowLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.ShadowCheckBox)
self.ShadowSpinBox = QtGui.QSpinBox(self.OutlineWidget)
self.ShadowSpinBox.setObjectName("ShadowSpinBox")
self.ShadowSpinBox.setMaximum(10)
self.ShadowLayout.setWidget(1, QtGui.QFormLayout.FieldRole, self.ShadowSpinBox)
self.ShadowSpinBoxLabel = QtGui.QLabel(self.OutlineWidget)
self.ShadowSpinBoxLabel.setObjectName(u'ShadowSpinBoxLabel')
self.ShadowLayout.setWidget(1, QtGui.QFormLayout.LabelRole, self.ShadowSpinBoxLabel)
self.ShadowColorLabel = QtGui.QLabel(self.ShadowWidget) self.ShadowColorLabel = QtGui.QLabel(self.ShadowWidget)
self.ShadowColorLabel.setObjectName(u'ShadowColorLabel') self.ShadowColorLabel.setObjectName(u'ShadowColorLabel')
self.ShadowLayout.setWidget(1, QtGui.QFormLayout.LabelRole, self.ShadowColorLabel) self.ShadowLayout.setWidget(2, QtGui.QFormLayout.LabelRole, self.ShadowColorLabel)
self.ShadowColorPushButton = QtGui.QPushButton(self.ShadowWidget) self.ShadowColorPushButton = QtGui.QPushButton(self.ShadowWidget)
self.ShadowColorPushButton.setObjectName(u'ShadowColorPushButton') self.ShadowColorPushButton.setObjectName(u'ShadowColorPushButton')
self.ShadowLayout.setWidget(1, QtGui.QFormLayout.FieldRole, self.ShadowColorPushButton) self.ShadowLayout.setWidget(2, QtGui.QFormLayout.FieldRole, self.ShadowColorPushButton)
self.ShadowEnabledLabel = QtGui.QLabel(self.ShadowWidget) self.ShadowEnabledLabel = QtGui.QLabel(self.ShadowWidget)
self.ShadowEnabledLabel.setObjectName(u'ShadowEnabledLabel') self.ShadowEnabledLabel.setObjectName(u'ShadowEnabledLabel')
self.ShadowLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.ShadowEnabledLabel) self.ShadowLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.ShadowEnabledLabel)
@ -640,9 +661,14 @@ class Ui_AmendThemeDialog(object):
self.ThemeTabWidget.setTabText( self.ThemeTabWidget.setTabText(
self.ThemeTabWidget.indexOf(self.FontFooterTab), self.ThemeTabWidget.indexOf(self.FontFooterTab),
self.trUtf8('Font Footer')) self.trUtf8('Font Footer'))
self.ShadowGroupBox.setTitle(self.trUtf8('Shadow && Outline')) self.OutlineGroupBox.setTitle(self.trUtf8('Outline'))
self.OutlineSpinBoxLabel.setText(self.trUtf8('Outline Size:'))
self.OutlineSpinBox.setSuffix(self.trUtf8('px'))
self.OutlineColorLabel.setText(self.trUtf8('Outline Color:')) self.OutlineColorLabel.setText(self.trUtf8('Outline Color:'))
self.OutlineEnabledLabel.setText(self.trUtf8('Show Outline:')) self.OutlineEnabledLabel.setText(self.trUtf8('Show Outline:'))
self.ShadowGroupBox.setTitle(self.trUtf8('Shadow'))
self.ShadowSpinBoxLabel.setText(self.trUtf8('Shadow Size:'))
self.ShadowSpinBox.setSuffix(self.trUtf8('px'))
self.ShadowColorLabel.setText(self.trUtf8('Shadow Color:')) self.ShadowColorLabel.setText(self.trUtf8('Shadow Color:'))
self.ShadowEnabledLabel.setText(self.trUtf8('Show Shadow:')) self.ShadowEnabledLabel.setText(self.trUtf8('Show Shadow:'))
self.AlignmentGroupBox.setTitle(self.trUtf8('Alignment')) self.AlignmentGroupBox.setTitle(self.trUtf8('Alignment'))

View File

@ -121,8 +121,14 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
self.onFontFooterHeightSpinBoxChanged) self.onFontFooterHeightSpinBoxChanged)
QtCore.QObject.connect(self.OutlineCheckBox, QtCore.QObject.connect(self.OutlineCheckBox,
QtCore.SIGNAL(u'stateChanged(int)'), self.onOutlineCheckBoxChanged) QtCore.SIGNAL(u'stateChanged(int)'), self.onOutlineCheckBoxChanged)
QtCore.QObject.connect(self.ShadowSpinBox,
QtCore.SIGNAL(u'editingFinished()'),
self.onShadowSpinBoxChanged)
QtCore.QObject.connect(self.ShadowCheckBox, QtCore.QObject.connect(self.ShadowCheckBox,
QtCore.SIGNAL(u'stateChanged(int)'), self.onShadowCheckBoxChanged) QtCore.SIGNAL(u'stateChanged(int)'), self.onShadowCheckBoxChanged)
QtCore.QObject.connect(self.OutlineSpinBox,
QtCore.SIGNAL(u'editingFinished()'),
self.onOutlineSpinBoxChanged)
QtCore.QObject.connect(self.SlideTransitionCheckedBox, QtCore.QObject.connect(self.SlideTransitionCheckedBox,
QtCore.SIGNAL(u'stateChanged(int)'), self.onSlideTransitionCheckedBoxChanged) QtCore.SIGNAL(u'stateChanged(int)'), self.onSlideTransitionCheckedBoxChanged)
@ -179,7 +185,9 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
unicode(self.theme.display_horizontalAlign), unicode(self.theme.display_horizontalAlign),
unicode(self.theme.display_verticalAlign), unicode(self.theme.display_verticalAlign),
unicode(self.theme.display_wrapStyle), unicode(self.theme.display_wrapStyle),
unicode(self.theme.display_slideTransition)) unicode(self.theme.display_slideTransition),
unicode(self.theme.display_shadow_size),
unicode(self.theme.display_outline_size))
theme = new_theme.extract_xml() theme = new_theme.extract_xml()
pretty_theme = new_theme.extract_formatted_xml() pretty_theme = new_theme.extract_formatted_xml()
if self.thememanager.saveTheme(theme_name, theme, pretty_theme, if self.thememanager.saveTheme(theme_name, theme, pretty_theme,
@ -434,6 +442,16 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
self.stateChanging(self.theme) self.stateChanging(self.theme)
self.previewTheme() self.previewTheme()
def onOutlineSpinBoxChanged(self):
if self.theme.display_outline_size != self.OutlineSpinBox.value():
self.theme.display_outline_size = self.OutlineSpinBox.value()
self.previewTheme()
def onShadowSpinBoxChanged(self):
if self.theme.display_shadow_size != self.ShadowSpinBox.value():
self.theme.display_shadow_size = self.ShadowSpinBox.value()
self.previewTheme()
def onOutlineColorPushButtonClicked(self): def onOutlineColorPushButtonClicked(self):
self.theme.display_outline_color = QtGui.QColorDialog.getColor( self.theme.display_outline_color = QtGui.QColorDialog.getColor(
QtGui.QColor(self.theme.display_outline_color), self).name() QtGui.QColor(self.theme.display_outline_color), self).name()
@ -565,6 +583,7 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
else: else:
self.OutlineCheckBox.setChecked(False) self.OutlineCheckBox.setChecked(False)
self.OutlineColorPushButton.setEnabled(False) self.OutlineColorPushButton.setEnabled(False)
self.OutlineSpinBox.setValue(int(self.theme.display_outline_size))
if self.theme.display_shadow: if self.theme.display_shadow:
self.ShadowCheckBox.setChecked(True) self.ShadowCheckBox.setChecked(True)
@ -572,6 +591,7 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
else: else:
self.ShadowCheckBox.setChecked(False) self.ShadowCheckBox.setChecked(False)
self.ShadowColorPushButton.setEnabled(False) self.ShadowColorPushButton.setEnabled(False)
self.ShadowSpinBox.setValue(int(self.theme.display_shadow_size))
if self.theme.display_slideTransition: if self.theme.display_slideTransition:
self.SlideTransitionCheckedBox.setCheckState(QtCore.Qt.Checked) self.SlideTransitionCheckedBox.setCheckState(QtCore.Qt.Checked)

View File

@ -234,8 +234,12 @@ class MainDisplay(DisplayWidget):
``text`` ``text``
display text display text
""" """
log.debug(u'display alert called %s' % text)
alertTab = self.parent.settingsForm.AlertsTab alertTab = self.parent.settingsForm.AlertsTab
if isinstance(self.frame, QtGui.QImage):
alertframe = QtGui.QPixmap.fromImage(self.frame) alertframe = QtGui.QPixmap.fromImage(self.frame)
else:
alertframe = QtGui.QPixmap.fromImage(self.frame[u'main'])
painter = QtGui.QPainter(alertframe) painter = QtGui.QPainter(alertframe)
top = alertframe.rect().height() * 0.9 top = alertframe.rect().height() * 0.9
painter.fillRect( painter.fillRect(
@ -261,7 +265,10 @@ class MainDisplay(DisplayWidget):
def timerEvent(self, event): def timerEvent(self, event):
if event.timerId() == self.timer_id: if event.timerId() == self.timer_id:
if isinstance(self.frame, QtGui.QImage):
self.display.setPixmap(QtGui.QPixmap.fromImage(self.frame)) self.display.setPixmap(QtGui.QPixmap.fromImage(self.frame))
else:
self.display.setPixmap(QtGui.QPixmap.fromImage(self.frame[u'main']))
self.killTimer(self.timer_id) self.killTimer(self.timer_id)
self.timer_id = 0 self.timer_id = 0

View File

@ -246,7 +246,7 @@ class SlideController(QtGui.QWidget):
self.SlidePreview.sizePolicy().hasHeightForWidth()) self.SlidePreview.sizePolicy().hasHeightForWidth())
self.SlidePreview.setSizePolicy(sizePolicy) self.SlidePreview.setSizePolicy(sizePolicy)
self.SlidePreview.setFixedSize( self.SlidePreview.setFixedSize(
QtCore.QSize(self.settingsmanager.slidecontroller_image, 225)) QtCore.QSize(self.settingsmanager.slidecontroller_image,self.settingsmanager.slidecontroller_image / 1.3 ))
self.SlidePreview.setFrameShape(QtGui.QFrame.Box) self.SlidePreview.setFrameShape(QtGui.QFrame.Box)
self.SlidePreview.setFrameShadow(QtGui.QFrame.Plain) self.SlidePreview.setFrameShadow(QtGui.QFrame.Plain)
self.SlidePreview.setLineWidth(1) self.SlidePreview.setLineWidth(1)
@ -390,14 +390,12 @@ class SlideController(QtGui.QWidget):
#If old item was a command tell it to stop #If old item was a command tell it to stop
if self.serviceItem and self.serviceItem.is_command(): if self.serviceItem and self.serviceItem.is_command():
self.onMediaStop() self.onMediaStop()
if item.is_command(): if item.is_media():
if self.isLive: self.onMediaStart(item)
elif item.is_command():
Receiver.send_message(u'%s_start' % item.name.lower(), \ Receiver.send_message(u'%s_start' % item.name.lower(), \
[item.title, item.service_item_path, [item.title, item.service_item_path,
item.get_frame_title(), slideno, self.isLive]) item.get_frame_title(), slideno, self.isLive])
else:
if item.is_media():
self.onMediaStart(item)
self.displayServiceManagerItems(item, slideno) self.displayServiceManagerItems(item, slideno)
def displayServiceManagerItems(self, serviceItem, slideno): def displayServiceManagerItems(self, serviceItem, slideno):
@ -475,7 +473,8 @@ class SlideController(QtGui.QWidget):
if not self.serviceItem: if not self.serviceItem:
return return
if self.serviceItem.is_command(): if self.serviceItem.is_command():
Receiver.send_message(u'%s_first'% self.serviceItem.name.lower()) Receiver.send_message(u'%s_first'% \
self.serviceItem.name.lower(), self.isLive)
self.updatePreview() self.updatePreview()
else: else:
self.PreviewListWidget.selectRow(0) self.PreviewListWidget.selectRow(0)
@ -504,15 +503,18 @@ class SlideController(QtGui.QWidget):
row = self.PreviewListWidget.currentRow() row = self.PreviewListWidget.currentRow()
self.selectedRow = 0 self.selectedRow = 0
if row > -1 and row < self.PreviewListWidget.rowCount(): if row > -1 and row < self.PreviewListWidget.rowCount():
if self.serviceItem.is_command(): if self.serviceItem.is_command() and self.isLive:
Receiver.send_message(u'%s_slide'% self.serviceItem.name.lower(), [row]) Receiver.send_message(u'%s_slide'% \
if self.isLive: self.serviceItem.name.lower(), u'%s:%s' % (row, self.isLive))
self.updatePreview() self.updatePreview()
else: else:
before = time.time() before = time.time()
frame = self.serviceItem.get_rendered_frame(row) frame = self.serviceItem.get_rendered_frame(row)
if isinstance(frame, QtGui.QImage): if isinstance(frame, QtGui.QImage):
self.SlidePreview.setPixmap(QtGui.QPixmap.fromImage(frame)) self.SlidePreview.setPixmap(QtGui.QPixmap.fromImage(frame))
else:
if isinstance(frame[u'main'], basestring):
self.SlidePreview.setPixmap(QtGui.QPixmap(frame[u'main']))
else: else:
self.SlidePreview.setPixmap(QtGui.QPixmap.fromImage(frame[u'main'])) self.SlidePreview.setPixmap(QtGui.QPixmap.fromImage(frame[u'main']))
log.log(15, u'Slide Rendering took %4s' % (time.time() - before)) log.log(15, u'Slide Rendering took %4s' % (time.time() - before))
@ -553,7 +555,8 @@ class SlideController(QtGui.QWidget):
if not self.serviceItem: if not self.serviceItem:
return return
if self.serviceItem.is_command(): if self.serviceItem.is_command():
Receiver.send_message(u'%s_next'% self.serviceItem.name.lower()) Receiver.send_message(u'%s_next' % \
self.serviceItem.name.lower(), self.isLive)
self.updatePreview() self.updatePreview()
else: else:
row = self.PreviewListWidget.currentRow() + 1 row = self.PreviewListWidget.currentRow() + 1
@ -570,7 +573,7 @@ class SlideController(QtGui.QWidget):
return return
if self.serviceItem.is_command(): if self.serviceItem.is_command():
Receiver.send_message( Receiver.send_message(
u'%s_previous'% self.serviceItem.name.lower()) u'%s_previous'% self.serviceItem.name.lower(), self.isLive)
self.updatePreview() self.updatePreview()
else: else:
row = self.PreviewListWidget.currentRow() - 1 row = self.PreviewListWidget.currentRow() - 1
@ -586,7 +589,8 @@ class SlideController(QtGui.QWidget):
if not self.serviceItem: if not self.serviceItem:
return return
if self.serviceItem.is_command(): if self.serviceItem.is_command():
Receiver.send_message(u'%s_last'% self.serviceItem.name.lower()) Receiver.send_message(u'%s_last' % \
self.serviceItem.name.lower(), self.isLive)
self.updatePreview() self.updatePreview()
else: else:
self.PreviewListWidget.selectRow(self.PreviewListWidget.rowCount() - 1) self.PreviewListWidget.selectRow(self.PreviewListWidget.rowCount() - 1)
@ -628,6 +632,11 @@ class SlideController(QtGui.QWidget):
self.serviceItem, row) self.serviceItem, row)
def onMediaStart(self, item): def onMediaStart(self, item):
if self.isLive:
Receiver.send_message(u'%s_start' % item.name.lower(), \
[item.title, item.service_item_path,
item.get_frame_title(), slideno, self.isLive])
else:
self.mediaObject.stop() self.mediaObject.stop()
self.mediaObject.clearQueue() self.mediaObject.clearQueue()
file = os.path.join(item.service_item_path, item.get_frame_title()) file = os.path.join(item.service_item_path, item.get_frame_title())

View File

@ -23,7 +23,6 @@
# Temple Place, Suite 330, Boston, MA 02111-1307 USA # # Temple Place, Suite 330, Boston, MA 02111-1307 USA #
############################################################################### ###############################################################################
from bibleimportform import BibleImportForm
from importwizardform import ImportWizardForm from importwizardform import ImportWizardForm
__all__ = ['BibleImportForm', 'ImportWizardForm'] __all__ = ['ImportWizardForm']

View File

@ -46,14 +46,16 @@ class Ui_BibleImportWizard(object):
self.TitleLabel = QtGui.QLabel(self.WelcomePage) self.TitleLabel = QtGui.QLabel(self.WelcomePage)
self.TitleLabel.setObjectName(u'TitleLabel') self.TitleLabel.setObjectName(u'TitleLabel')
self.WelcomeLayout.addWidget(self.TitleLabel) self.WelcomeLayout.addWidget(self.TitleLabel)
spacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) spacerItem = QtGui.QSpacerItem(20, 40,
QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
self.WelcomeLayout.addItem(spacerItem) self.WelcomeLayout.addItem(spacerItem)
self.InformationLabel = QtGui.QLabel(self.WelcomePage) self.InformationLabel = QtGui.QLabel(self.WelcomePage)
self.InformationLabel.setWordWrap(True) self.InformationLabel.setWordWrap(True)
self.InformationLabel.setMargin(10) self.InformationLabel.setMargin(10)
self.InformationLabel.setObjectName(u'InformationLabel') self.InformationLabel.setObjectName(u'InformationLabel')
self.WelcomeLayout.addWidget(self.InformationLabel) self.WelcomeLayout.addWidget(self.InformationLabel)
spacerItem1 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) spacerItem1 = QtGui.QSpacerItem(20, 40,
QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
self.WelcomeLayout.addItem(spacerItem1) self.WelcomeLayout.addItem(spacerItem1)
BibleImportWizard.addPage(self.WelcomePage) BibleImportWizard.addPage(self.WelcomePage)
self.SelectPage = QtGui.QWizardPage() self.SelectPage = QtGui.QWizardPage()
@ -75,7 +77,8 @@ class Ui_BibleImportWizard(object):
self.FormatComboBox.addItem(u'') self.FormatComboBox.addItem(u'')
self.FormatComboBox.addItem(u'') self.FormatComboBox.addItem(u'')
self.FormatSelectLayout.addWidget(self.FormatComboBox) self.FormatSelectLayout.addWidget(self.FormatComboBox)
spacerItem2 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) spacerItem2 = QtGui.QSpacerItem(40, 20,
QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
self.FormatSelectLayout.addItem(spacerItem2) self.FormatSelectLayout.addItem(spacerItem2)
self.SelectPageLayout.addLayout(self.FormatSelectLayout) self.SelectPageLayout.addLayout(self.FormatSelectLayout)
self.FormatWidget = QtGui.QStackedWidget(self.SelectPage) self.FormatWidget = QtGui.QStackedWidget(self.SelectPage)
@ -83,20 +86,24 @@ class Ui_BibleImportWizard(object):
self.OsisPage = QtGui.QWidget() self.OsisPage = QtGui.QWidget()
self.OsisPage.setObjectName(u'OsisPage') self.OsisPage.setObjectName(u'OsisPage')
self.OsisLayout = QtGui.QFormLayout(self.OsisPage) self.OsisLayout = QtGui.QFormLayout(self.OsisPage)
self.OsisLayout.setFieldGrowthPolicy(QtGui.QFormLayout.ExpandingFieldsGrow) self.OsisLayout.setFieldGrowthPolicy(
QtGui.QFormLayout.ExpandingFieldsGrow)
self.OsisLayout.setMargin(0) self.OsisLayout.setMargin(0)
self.OsisLayout.setSpacing(8) self.OsisLayout.setSpacing(8)
self.OsisLayout.setObjectName(u'OsisLayout') self.OsisLayout.setObjectName(u'OsisLayout')
self.OsisBibleNameLabel = QtGui.QLabel(self.OsisPage) self.OsisBibleNameLabel = QtGui.QLabel(self.OsisPage)
self.OsisBibleNameLabel.setIndent(0) self.OsisBibleNameLabel.setIndent(0)
self.OsisBibleNameLabel.setObjectName(u'OsisBibleNameLabel') self.OsisBibleNameLabel.setObjectName(u'OsisBibleNameLabel')
self.OsisLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.OsisBibleNameLabel) self.OsisLayout.setWidget(0, QtGui.QFormLayout.LabelRole,
self.OsisBibleNameLabel)
self.OsisBibleNameEdit = QtGui.QLineEdit(self.OsisPage) self.OsisBibleNameEdit = QtGui.QLineEdit(self.OsisPage)
self.OsisBibleNameEdit.setObjectName(u'OsisBibleNameEdit') self.OsisBibleNameEdit.setObjectName(u'OsisBibleNameEdit')
self.OsisLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.OsisBibleNameEdit) self.OsisLayout.setWidget(0, QtGui.QFormLayout.FieldRole,
self.OsisBibleNameEdit)
self.OsisLocationLabel = QtGui.QLabel(self.OsisPage) self.OsisLocationLabel = QtGui.QLabel(self.OsisPage)
self.OsisLocationLabel.setObjectName(u'OsisLocationLabel') self.OsisLocationLabel.setObjectName(u'OsisLocationLabel')
self.OsisLayout.setWidget(1, QtGui.QFormLayout.LabelRole, self.OsisLocationLabel) self.OsisLayout.setWidget(1, QtGui.QFormLayout.LabelRole,
self.OsisLocationLabel)
self.OsisLocationLayout = QtGui.QHBoxLayout() self.OsisLocationLayout = QtGui.QHBoxLayout()
self.OsisLocationLayout.setSpacing(8) self.OsisLocationLayout.setSpacing(8)
self.OsisLocationLayout.setObjectName(u'OsisLocationLayout') self.OsisLocationLayout.setObjectName(u'OsisLocationLayout')
@ -106,24 +113,30 @@ class Ui_BibleImportWizard(object):
self.OsisFileButton = QtGui.QToolButton(self.OsisPage) self.OsisFileButton = QtGui.QToolButton(self.OsisPage)
self.OsisFileButton.setMaximumSize(QtCore.QSize(32, 16777215)) self.OsisFileButton.setMaximumSize(QtCore.QSize(32, 16777215))
icon = QtGui.QIcon() icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap(u':/imports/import_load.png'), QtGui.QIcon.Normal, QtGui.QIcon.Off) icon.addPixmap(QtGui.QPixmap(u':/imports/import_load.png'),
QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.OsisFileButton.setIcon(icon) self.OsisFileButton.setIcon(icon)
self.OsisFileButton.setObjectName(u'OsisFileButton') self.OsisFileButton.setObjectName(u'OsisFileButton')
self.OsisLocationLayout.addWidget(self.OsisFileButton) self.OsisLocationLayout.addWidget(self.OsisFileButton)
self.OsisLayout.setLayout(1, QtGui.QFormLayout.FieldRole, self.OsisLocationLayout) self.OsisLayout.setLayout(1, QtGui.QFormLayout.FieldRole,
self.OsisLocationLayout)
self.FormatWidget.addWidget(self.OsisPage) self.FormatWidget.addWidget(self.OsisPage)
self.CsvPage = QtGui.QWidget() self.CsvPage = QtGui.QWidget()
self.CsvPage.setObjectName(u'CsvPage') self.CsvPage.setObjectName(u'CsvPage')
self.CsvSourceLayout = QtGui.QFormLayout(self.CsvPage) self.CsvSourceLayout = QtGui.QFormLayout(self.CsvPage)
self.CsvSourceLayout.setFieldGrowthPolicy(QtGui.QFormLayout.ExpandingFieldsGrow) self.CsvSourceLayout.setFieldGrowthPolicy(
self.CsvSourceLayout.setLabelAlignment(QtCore.Qt.AlignBottom|QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing) QtGui.QFormLayout.ExpandingFieldsGrow)
self.CsvSourceLayout.setFormAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop) self.CsvSourceLayout.setLabelAlignment(QtCore.Qt.AlignBottom |
QtCore.Qt.AlignRight | QtCore.Qt.AlignTrailing)
self.CsvSourceLayout.setFormAlignment(QtCore.Qt.AlignLeading |
QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop)
self.CsvSourceLayout.setMargin(0) self.CsvSourceLayout.setMargin(0)
self.CsvSourceLayout.setSpacing(8) self.CsvSourceLayout.setSpacing(8)
self.CsvSourceLayout.setObjectName(u'CsvSourceLayout') self.CsvSourceLayout.setObjectName(u'CsvSourceLayout')
self.BooksLocationLabel = QtGui.QLabel(self.CsvPage) self.BooksLocationLabel = QtGui.QLabel(self.CsvPage)
self.BooksLocationLabel.setObjectName(u'BooksLocationLabel') self.BooksLocationLabel.setObjectName(u'BooksLocationLabel')
self.CsvSourceLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.BooksLocationLabel) self.CsvSourceLayout.setWidget(0, QtGui.QFormLayout.LabelRole,
self.BooksLocationLabel)
self.CsvBooksLayout = QtGui.QHBoxLayout() self.CsvBooksLayout = QtGui.QHBoxLayout()
self.CsvBooksLayout.setSpacing(8) self.CsvBooksLayout.setSpacing(8)
self.CsvBooksLayout.setObjectName(u'CsvBooksLayout') self.CsvBooksLayout.setObjectName(u'CsvBooksLayout')
@ -135,10 +148,12 @@ class Ui_BibleImportWizard(object):
self.BooksFileButton.setIcon(icon) self.BooksFileButton.setIcon(icon)
self.BooksFileButton.setObjectName(u'BooksFileButton') self.BooksFileButton.setObjectName(u'BooksFileButton')
self.CsvBooksLayout.addWidget(self.BooksFileButton) self.CsvBooksLayout.addWidget(self.BooksFileButton)
self.CsvSourceLayout.setLayout(0, QtGui.QFormLayout.FieldRole, self.CsvBooksLayout) self.CsvSourceLayout.setLayout(0, QtGui.QFormLayout.FieldRole,
self.CsvBooksLayout)
self.VerseLocationLabel = QtGui.QLabel(self.CsvPage) self.VerseLocationLabel = QtGui.QLabel(self.CsvPage)
self.VerseLocationLabel.setObjectName(u'VerseLocationLabel') self.VerseLocationLabel.setObjectName(u'VerseLocationLabel')
self.CsvSourceLayout.setWidget(1, QtGui.QFormLayout.LabelRole, self.VerseLocationLabel) self.CsvSourceLayout.setWidget(1, QtGui.QFormLayout.LabelRole,
self.VerseLocationLabel)
self.CsvVerseLayout = QtGui.QHBoxLayout() self.CsvVerseLayout = QtGui.QHBoxLayout()
self.CsvVerseLayout.setSpacing(8) self.CsvVerseLayout.setSpacing(8)
self.CsvVerseLayout.setObjectName(u'CsvVerseLayout') self.CsvVerseLayout.setObjectName(u'CsvVerseLayout')
@ -150,7 +165,8 @@ class Ui_BibleImportWizard(object):
self.CsvVersesFileButton.setIcon(icon) self.CsvVersesFileButton.setIcon(icon)
self.CsvVersesFileButton.setObjectName(u'CsvVersesFileButton') self.CsvVersesFileButton.setObjectName(u'CsvVersesFileButton')
self.CsvVerseLayout.addWidget(self.CsvVersesFileButton) self.CsvVerseLayout.addWidget(self.CsvVersesFileButton)
self.CsvSourceLayout.setLayout(1, QtGui.QFormLayout.FieldRole, self.CsvVerseLayout) self.CsvSourceLayout.setLayout(1, QtGui.QFormLayout.FieldRole,
self.CsvVerseLayout)
self.FormatWidget.addWidget(self.CsvPage) self.FormatWidget.addWidget(self.CsvPage)
self.OpenSongPage = QtGui.QWidget() self.OpenSongPage = QtGui.QWidget()
self.OpenSongPage.setObjectName(u'OpenSongPage') self.OpenSongPage.setObjectName(u'OpenSongPage')
@ -160,7 +176,8 @@ class Ui_BibleImportWizard(object):
self.OpenSongLayout.setObjectName(u'OpenSongLayout') self.OpenSongLayout.setObjectName(u'OpenSongLayout')
self.OpenSongFileLabel = QtGui.QLabel(self.OpenSongPage) self.OpenSongFileLabel = QtGui.QLabel(self.OpenSongPage)
self.OpenSongFileLabel.setObjectName(u'OpenSongFileLabel') self.OpenSongFileLabel.setObjectName(u'OpenSongFileLabel')
self.OpenSongLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.OpenSongFileLabel) self.OpenSongLayout.setWidget(0, QtGui.QFormLayout.LabelRole,
self.OpenSongFileLabel)
self.OpenSongFileLayout = QtGui.QHBoxLayout() self.OpenSongFileLayout = QtGui.QHBoxLayout()
self.OpenSongFileLayout.setSpacing(8) self.OpenSongFileLayout.setSpacing(8)
self.OpenSongFileLayout.setObjectName(u'OpenSongFileLayout') self.OpenSongFileLayout.setObjectName(u'OpenSongFileLayout')
@ -171,7 +188,8 @@ class Ui_BibleImportWizard(object):
self.OpenSongBrowseButton.setIcon(icon) self.OpenSongBrowseButton.setIcon(icon)
self.OpenSongBrowseButton.setObjectName(u'OpenSongBrowseButton') self.OpenSongBrowseButton.setObjectName(u'OpenSongBrowseButton')
self.OpenSongFileLayout.addWidget(self.OpenSongBrowseButton) self.OpenSongFileLayout.addWidget(self.OpenSongBrowseButton)
self.OpenSongLayout.setLayout(0, QtGui.QFormLayout.FieldRole, self.OpenSongFileLayout) self.OpenSongLayout.setLayout(0, QtGui.QFormLayout.FieldRole,
self.OpenSongFileLayout)
self.FormatWidget.addWidget(self.OpenSongPage) self.FormatWidget.addWidget(self.OpenSongPage)
self.WebDownloadPage = QtGui.QWidget() self.WebDownloadPage = QtGui.QWidget()
self.WebDownloadPage.setObjectName(u'WebDownloadPage') self.WebDownloadPage.setObjectName(u'WebDownloadPage')
@ -189,22 +207,26 @@ class Ui_BibleImportWizard(object):
self.DownloadOptionsLayout.setObjectName(u'DownloadOptionsLayout') self.DownloadOptionsLayout.setObjectName(u'DownloadOptionsLayout')
self.LocationLabel = QtGui.QLabel(self.DownloadOptionsTab) self.LocationLabel = QtGui.QLabel(self.DownloadOptionsTab)
self.LocationLabel.setObjectName(u'LocationLabel') self.LocationLabel.setObjectName(u'LocationLabel')
self.DownloadOptionsLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.LocationLabel) self.DownloadOptionsLayout.setWidget(0, QtGui.QFormLayout.LabelRole,
self.LocationLabel)
self.LocationComboBox = QtGui.QComboBox(self.DownloadOptionsTab) self.LocationComboBox = QtGui.QComboBox(self.DownloadOptionsTab)
self.LocationComboBox.setObjectName(u'LocationComboBox') self.LocationComboBox.setObjectName(u'LocationComboBox')
self.LocationComboBox.addItem(u'') self.LocationComboBox.addItem(u'')
self.LocationComboBox.addItem(u'') self.LocationComboBox.addItem(u'')
self.DownloadOptionsLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.LocationComboBox) self.DownloadOptionsLayout.setWidget(0, QtGui.QFormLayout.FieldRole,
self.LocationComboBox)
self.BibleLabel = QtGui.QLabel(self.DownloadOptionsTab) self.BibleLabel = QtGui.QLabel(self.DownloadOptionsTab)
self.BibleLabel.setObjectName(u'BibleLabel') self.BibleLabel.setObjectName(u'BibleLabel')
self.DownloadOptionsLayout.setWidget(1, QtGui.QFormLayout.LabelRole, self.BibleLabel) self.DownloadOptionsLayout.setWidget(1, QtGui.QFormLayout.LabelRole,
self.BibleLabel)
self.BibleComboBox = QtGui.QComboBox(self.DownloadOptionsTab) self.BibleComboBox = QtGui.QComboBox(self.DownloadOptionsTab)
self.BibleComboBox.setSizeAdjustPolicy(QtGui.QComboBox.AdjustToContents) self.BibleComboBox.setSizeAdjustPolicy(QtGui.QComboBox.AdjustToContents)
self.BibleComboBox.setObjectName(u'BibleComboBox') self.BibleComboBox.setObjectName(u'BibleComboBox')
self.BibleComboBox.addItem(u'') self.BibleComboBox.addItem(u'')
self.BibleComboBox.addItem(u'') self.BibleComboBox.addItem(u'')
self.BibleComboBox.addItem(u'') self.BibleComboBox.addItem(u'')
self.DownloadOptionsLayout.setWidget(1, QtGui.QFormLayout.FieldRole, self.BibleComboBox) self.DownloadOptionsLayout.setWidget(1, QtGui.QFormLayout.FieldRole,
self.BibleComboBox)
self.WebDownloadTabWidget.addTab(self.DownloadOptionsTab, u'') self.WebDownloadTabWidget.addTab(self.DownloadOptionsTab, u'')
self.ProxyServerTab = QtGui.QWidget() self.ProxyServerTab = QtGui.QWidget()
self.ProxyServerTab.setObjectName(u'ProxyServerTab') self.ProxyServerTab.setObjectName(u'ProxyServerTab')
@ -212,22 +234,28 @@ class Ui_BibleImportWizard(object):
self.ProxyServerLayout.setObjectName(u'ProxyServerLayout') self.ProxyServerLayout.setObjectName(u'ProxyServerLayout')
self.AddressLabel = QtGui.QLabel(self.ProxyServerTab) self.AddressLabel = QtGui.QLabel(self.ProxyServerTab)
self.AddressLabel.setObjectName(u'AddressLabel') self.AddressLabel.setObjectName(u'AddressLabel')
self.ProxyServerLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.AddressLabel) self.ProxyServerLayout.setWidget(0, QtGui.QFormLayout.LabelRole,
self.AddressLabel)
self.AddressEdit = QtGui.QLineEdit(self.ProxyServerTab) self.AddressEdit = QtGui.QLineEdit(self.ProxyServerTab)
self.AddressEdit.setObjectName(u'AddressEdit') self.AddressEdit.setObjectName(u'AddressEdit')
self.ProxyServerLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.AddressEdit) self.ProxyServerLayout.setWidget(0, QtGui.QFormLayout.FieldRole,
self.AddressEdit)
self.UsernameLabel = QtGui.QLabel(self.ProxyServerTab) self.UsernameLabel = QtGui.QLabel(self.ProxyServerTab)
self.UsernameLabel.setObjectName(u'UsernameLabel') self.UsernameLabel.setObjectName(u'UsernameLabel')
self.ProxyServerLayout.setWidget(1, QtGui.QFormLayout.LabelRole, self.UsernameLabel) self.ProxyServerLayout.setWidget(1, QtGui.QFormLayout.LabelRole,
self.UsernameLabel)
self.UsernameEdit = QtGui.QLineEdit(self.ProxyServerTab) self.UsernameEdit = QtGui.QLineEdit(self.ProxyServerTab)
self.UsernameEdit.setObjectName(u'UsernameEdit') self.UsernameEdit.setObjectName(u'UsernameEdit')
self.ProxyServerLayout.setWidget(1, QtGui.QFormLayout.FieldRole, self.UsernameEdit) self.ProxyServerLayout.setWidget(1, QtGui.QFormLayout.FieldRole,
self.UsernameEdit)
self.PasswordLabel = QtGui.QLabel(self.ProxyServerTab) self.PasswordLabel = QtGui.QLabel(self.ProxyServerTab)
self.PasswordLabel.setObjectName(u'PasswordLabel') self.PasswordLabel.setObjectName(u'PasswordLabel')
self.ProxyServerLayout.setWidget(2, QtGui.QFormLayout.LabelRole, self.PasswordLabel) self.ProxyServerLayout.setWidget(2, QtGui.QFormLayout.LabelRole,
self.PasswordLabel)
self.PasswordEdit = QtGui.QLineEdit(self.ProxyServerTab) self.PasswordEdit = QtGui.QLineEdit(self.ProxyServerTab)
self.PasswordEdit.setObjectName(u'PasswordEdit') self.PasswordEdit.setObjectName(u'PasswordEdit')
self.ProxyServerLayout.setWidget(2, QtGui.QFormLayout.FieldRole, self.PasswordEdit) self.ProxyServerLayout.setWidget(2, QtGui.QFormLayout.FieldRole,
self.PasswordEdit)
self.WebDownloadTabWidget.addTab(self.ProxyServerTab, u'') self.WebDownloadTabWidget.addTab(self.ProxyServerTab, u'')
self.WebDownloadLayout.addWidget(self.WebDownloadTabWidget) self.WebDownloadLayout.addWidget(self.WebDownloadTabWidget)
self.FormatWidget.addWidget(self.WebDownloadPage) self.FormatWidget.addWidget(self.WebDownloadPage)
@ -241,22 +269,28 @@ class Ui_BibleImportWizard(object):
self.LicenseDetailsLayout.setObjectName(u'LicenseDetailsLayout') self.LicenseDetailsLayout.setObjectName(u'LicenseDetailsLayout')
self.VersionNameLabel = QtGui.QLabel(self.LicenseDetailsPage) self.VersionNameLabel = QtGui.QLabel(self.LicenseDetailsPage)
self.VersionNameLabel.setObjectName(u'VersionNameLabel') self.VersionNameLabel.setObjectName(u'VersionNameLabel')
self.LicenseDetailsLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.VersionNameLabel) self.LicenseDetailsLayout.setWidget(0, QtGui.QFormLayout.LabelRole,
self.VersionNameLabel)
self.VersionNameEdit = QtGui.QLineEdit(self.LicenseDetailsPage) self.VersionNameEdit = QtGui.QLineEdit(self.LicenseDetailsPage)
self.VersionNameEdit.setObjectName(u'VersionNameEdit') self.VersionNameEdit.setObjectName(u'VersionNameEdit')
self.LicenseDetailsLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.VersionNameEdit) self.LicenseDetailsLayout.setWidget(0, QtGui.QFormLayout.FieldRole,
self.VersionNameEdit)
self.CopyrightLabel = QtGui.QLabel(self.LicenseDetailsPage) self.CopyrightLabel = QtGui.QLabel(self.LicenseDetailsPage)
self.CopyrightLabel.setObjectName(u'CopyrightLabel') self.CopyrightLabel.setObjectName(u'CopyrightLabel')
self.LicenseDetailsLayout.setWidget(1, QtGui.QFormLayout.LabelRole, self.CopyrightLabel) self.LicenseDetailsLayout.setWidget(1, QtGui.QFormLayout.LabelRole,
self.CopyrightLabel)
self.CopyrightEdit = QtGui.QLineEdit(self.LicenseDetailsPage) self.CopyrightEdit = QtGui.QLineEdit(self.LicenseDetailsPage)
self.CopyrightEdit.setObjectName(u'CopyrightEdit') self.CopyrightEdit.setObjectName(u'CopyrightEdit')
self.LicenseDetailsLayout.setWidget(1, QtGui.QFormLayout.FieldRole, self.CopyrightEdit) self.LicenseDetailsLayout.setWidget(1, QtGui.QFormLayout.FieldRole,
self.CopyrightEdit)
self.PermissionLabel = QtGui.QLabel(self.LicenseDetailsPage) self.PermissionLabel = QtGui.QLabel(self.LicenseDetailsPage)
self.PermissionLabel.setObjectName(u'PermissionLabel') self.PermissionLabel.setObjectName(u'PermissionLabel')
self.LicenseDetailsLayout.setWidget(2, QtGui.QFormLayout.LabelRole, self.PermissionLabel) self.LicenseDetailsLayout.setWidget(2, QtGui.QFormLayout.LabelRole,\
self.PermissionLabel)
self.PermissionEdit = QtGui.QLineEdit(self.LicenseDetailsPage) self.PermissionEdit = QtGui.QLineEdit(self.LicenseDetailsPage)
self.PermissionEdit.setObjectName(u'PermissionEdit') self.PermissionEdit.setObjectName(u'PermissionEdit')
self.LicenseDetailsLayout.setWidget(2, QtGui.QFormLayout.FieldRole, self.PermissionEdit) self.LicenseDetailsLayout.setWidget(2, QtGui.QFormLayout.FieldRole,
self.PermissionEdit)
BibleImportWizard.addPage(self.LicenseDetailsPage) BibleImportWizard.addPage(self.LicenseDetailsPage)
self.ImportPage = QtGui.QWizardPage() self.ImportPage = QtGui.QWizardPage()
self.ImportPage.setObjectName(u'ImportPage') self.ImportPage.setObjectName(u'ImportPage')
@ -278,15 +312,23 @@ class Ui_BibleImportWizard(object):
self.retranslateUi(BibleImportWizard) self.retranslateUi(BibleImportWizard)
self.FormatWidget.setCurrentIndex(0) self.FormatWidget.setCurrentIndex(0)
self.WebDownloadTabWidget.setCurrentIndex(0) self.WebDownloadTabWidget.setCurrentIndex(0)
QtCore.QObject.connect(self.FormatComboBox, QtCore.SIGNAL(u'currentIndexChanged(int)'), self.FormatWidget.setCurrentIndex) QtCore.QObject.connect(self.FormatComboBox,
QtCore.SIGNAL(u'currentIndexChanged(int)'),
self.FormatWidget.setCurrentIndex)
QtCore.QMetaObject.connectSlotsByName(BibleImportWizard) QtCore.QMetaObject.connectSlotsByName(BibleImportWizard)
def retranslateUi(self, BibleImportWizard): def retranslateUi(self, BibleImportWizard):
BibleImportWizard.setWindowTitle(self.trUtf8('Bible Import Wizard')) BibleImportWizard.setWindowTitle(self.trUtf8('Bible Import Wizard'))
self.TitleLabel.setText(u'<span style=\" font-size:14pt; font-weight:600;\">' + self.trUtf8('Welcome to the Bible Import Wizard') + u'</span>') self.TitleLabel.setText(
self.InformationLabel.setText(self.trUtf8('This wizard will help you to import Bibles from a variety of formats. Click the next button below to start the process by selecting a format to import from.')) u'<span style=\" font-size:14pt; font-weight:600;\">' + \
self.trUtf8('Welcome to the Bible Import Wizard') + u'</span>')
self.InformationLabel.setText(
self.trUtf8('This wizard will help you to import Bibles from a '
'variety of formats. Click the next button below to start the '
'process by selecting a format to import from.'))
self.SelectPage.setTitle(self.trUtf8('Select Import Source')) self.SelectPage.setTitle(self.trUtf8('Select Import Source'))
self.SelectPage.setSubTitle(self.trUtf8('Select the import format, and where to import from.')) self.SelectPage.setSubTitle(
self.trUtf8('Select the import format, and where to import from.'))
self.FormatLabel.setText(self.trUtf8('Format:')) self.FormatLabel.setText(self.trUtf8('Format:'))
self.FormatComboBox.setItemText(0, self.trUtf8('OSIS')) self.FormatComboBox.setItemText(0, self.trUtf8('OSIS'))
self.FormatComboBox.setItemText(1, self.trUtf8('CSV')) self.FormatComboBox.setItemText(1, self.trUtf8('CSV'))
@ -301,21 +343,24 @@ class Ui_BibleImportWizard(object):
self.LocationComboBox.setItemText(0, self.trUtf8('Crosswalk')) self.LocationComboBox.setItemText(0, self.trUtf8('Crosswalk'))
self.LocationComboBox.setItemText(1, self.trUtf8('BibleGateway')) self.LocationComboBox.setItemText(1, self.trUtf8('BibleGateway'))
self.BibleLabel.setText(self.trUtf8('Bible:')) self.BibleLabel.setText(self.trUtf8('Bible:'))
self.BibleComboBox.setItemText(0, self.trUtf8('English Standard Version')) self.WebDownloadTabWidget.setTabText(
self.BibleComboBox.setItemText(1, self.trUtf8('King James Version')) self.WebDownloadTabWidget.indexOf(self.DownloadOptionsTab),
self.BibleComboBox.setItemText(2, self.trUtf8('New International Version')) self.trUtf8('Download Options'))
self.WebDownloadTabWidget.setTabText(self.WebDownloadTabWidget.indexOf(self.DownloadOptionsTab), self.trUtf8('Download Options'))
self.AddressLabel.setText(self.trUtf8('Server:')) self.AddressLabel.setText(self.trUtf8('Server:'))
self.UsernameLabel.setText(self.trUtf8('Username:')) self.UsernameLabel.setText(self.trUtf8('Username:'))
self.PasswordLabel.setText(self.trUtf8('Password:')) self.PasswordLabel.setText(self.trUtf8('Password:'))
self.WebDownloadTabWidget.setTabText(self.WebDownloadTabWidget.indexOf(self.ProxyServerTab), self.trUtf8('Proxy Server (Optional)')) self.WebDownloadTabWidget.setTabText(
self.WebDownloadTabWidget.indexOf(self.ProxyServerTab),
self.trUtf8('Proxy Server (Optional)'))
self.LicenseDetailsPage.setTitle(self.trUtf8('License Details')) self.LicenseDetailsPage.setTitle(self.trUtf8('License Details'))
self.LicenseDetailsPage.setSubTitle(self.trUtf8('Set up the Bible\'s license details.')) self.LicenseDetailsPage.setSubTitle(
self.trUtf8('Set up the Bible\'s license details.'))
self.VersionNameLabel.setText(self.trUtf8('Version Name:')) self.VersionNameLabel.setText(self.trUtf8('Version Name:'))
self.CopyrightLabel.setText(self.trUtf8('Copyright:')) self.CopyrightLabel.setText(self.trUtf8('Copyright:'))
self.PermissionLabel.setText(self.trUtf8('Permission:')) self.PermissionLabel.setText(self.trUtf8('Permission:'))
self.ImportPage.setTitle(self.trUtf8('Importing')) self.ImportPage.setTitle(self.trUtf8('Importing'))
self.ImportPage.setSubTitle(self.trUtf8('Please wait while your Bible is imported.')) self.ImportPage.setSubTitle(
self.trUtf8('Please wait while your Bible is imported.'))
self.ImportProgressLabel.setText(self.trUtf8('Ready.')) self.ImportProgressLabel.setText(self.trUtf8('Ready.'))
self.ImportProgressBar.setFormat(u'%p') #self.ImportProgressBar.setFormat(u'%p')

View File

@ -30,7 +30,7 @@ from PyQt4 import QtCore, QtGui
from openlp.core.lib import MediaManagerItem, Receiver, str_to_bool, \ from openlp.core.lib import MediaManagerItem, Receiver, str_to_bool, \
BaseListWithDnD BaseListWithDnD
from openlp.plugins.bibles.forms import BibleImportForm, ImportWizardForm from openlp.plugins.bibles.forms import ImportWizardForm
from openlp.plugins.bibles.lib.manager import BibleMode from openlp.plugins.bibles.lib.manager import BibleMode
class BibleListView(BaseListWithDnD): class BibleListView(BaseListWithDnD):

View File

@ -27,7 +27,7 @@ import logging
from forms import EditCustomForm from forms import EditCustomForm
from openlp.core.lib import Plugin, build_icon from openlp.core.lib import Plugin, build_icon
from openlp.plugins.custom.lib import CustomManager, CustomMediaItem from openlp.plugins.custom.lib import CustomManager, CustomMediaItem, CustomTab
class CustomPlugin(Plugin): class CustomPlugin(Plugin):
@ -51,6 +51,9 @@ class CustomPlugin(Plugin):
self.edit_custom_form = EditCustomForm(self.custommanager) self.edit_custom_form = EditCustomForm(self.custommanager)
self.icon = build_icon(u':/media/media_custom.png') self.icon = build_icon(u':/media/media_custom.png')
def get_settings_tab(self):
return CustomTab(self.name)
def get_media_manager_item(self): def get_media_manager_item(self):
# Create the CustomManagerItem object # Create the CustomManagerItem object
return CustomMediaItem(self, self.icon, self.name) return CustomMediaItem(self, self.icon, self.name)

View File

@ -25,3 +25,4 @@
from manager import CustomManager from manager import CustomManager
from mediaitem import CustomMediaItem from mediaitem import CustomMediaItem
from customtab import CustomTab

View File

@ -0,0 +1,74 @@
# -*- coding: utf-8 -*-
# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2009 Raoul Snyman #
# Portions copyright (c) 2008-2009 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, 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 QtCore, QtGui
from openlp.core.lib import SettingsTab, str_to_bool
class CustomTab(SettingsTab):
"""
CustomTab is the Custom settings tab in the settings dialog.
"""
def __init__(self, title, section=None):
SettingsTab.__init__(self, title, section)
def setupUi(self):
self.setObjectName(u'CustomTab')
self.tabTitleVisible = self.trUtf8('Custom')
self.CustomLayout = QtGui.QFormLayout(self)
self.CustomLayout.setObjectName(u'CustomLayout')
self.CustomModeGroupBox = QtGui.QGroupBox(self)
self.CustomModeGroupBox.setObjectName(u'CustomModeGroupBox')
self.CustomModeLayout = QtGui.QVBoxLayout(self.CustomModeGroupBox)
self.CustomModeLayout.setSpacing(8)
self.CustomModeLayout.setMargin(8)
self.CustomModeLayout.setObjectName(u'CustomModeLayout')
self.DisplayFooterCheckBox = QtGui.QCheckBox(self.CustomModeGroupBox)
self.DisplayFooterCheckBox.setObjectName(u'DisplayFooterCheckBox')
self.CustomModeLayout.addWidget(self.DisplayFooterCheckBox)
self.CustomLayout.setWidget(
0, QtGui.QFormLayout.LabelRole, self.CustomModeGroupBox)
QtCore.QObject.connect(self.DisplayFooterCheckBox,
QtCore.SIGNAL(u'stateChanged(int)'),
self.onDisplayFooterCheckBoxChanged)
def retranslateUi(self):
self.CustomModeGroupBox.setTitle(self.trUtf8('Custom Display'))
self.DisplayFooterCheckBox.setText(
self.trUtf8('Display Footer:'))
def onDisplayFooterCheckBoxChanged(self, check_state):
self.displayFooter = False
# we have a set value convert to True/False
if check_state == QtCore.Qt.Checked:
self.displayFooter = True
def load(self):
self.displayFooter = str_to_bool(
self.config.get_config(u'display footer', True))
self.DisplayFooterCheckBox.setChecked(self.displayFooter)
def save(self):
self.config.set_config(u'display footer', unicode(self.displayFooter))

View File

@ -27,7 +27,8 @@ import logging
from PyQt4 import QtCore, QtGui from PyQt4 import QtCore, QtGui
from openlp.core.lib import MediaManagerItem, SongXMLParser, BaseListWithDnD, Receiver from openlp.core.lib import MediaManagerItem, SongXMLParser, BaseListWithDnD,\
Receiver, str_to_bool
class CustomListView(BaseListWithDnD): class CustomListView(BaseListWithDnD):
def __init__(self, parent=None): def __init__(self, parent=None):
@ -155,9 +156,13 @@ class CustomMediaItem(MediaManagerItem):
verseList = songXML.get_verses() verseList = songXML.get_verses()
for verse in verseList: for verse in verseList:
raw_slides.append(verse[1]) raw_slides.append(verse[1])
raw_footer.append(title + u' '+ credit)
service_item.title = title service_item.title = title
for slide in raw_slides: for slide in raw_slides:
service_item.add_from_text(slide[:30], slide) service_item.add_from_text(slide[:30], slide)
if str_to_bool(self.parent.config.get_config(u'display footer', True)) or \
len(credit) > 0:
raw_footer.append(title + u' '+ credit)
else:
raw_footer.append(u'')
service_item.raw_footer = raw_footer service_item.raw_footer = raw_footer
return True return True

View File

@ -30,6 +30,122 @@ from PyQt4 import QtCore
from openlp.core.lib import Receiver from openlp.core.lib import Receiver
class Controller(object):
"""
This is the Presentation listener who acts on events from the slide
controller and passes the messages on the the correct presentation handlers
"""
global log
log = logging.getLogger(u'Controller')
log.info(u'Controller loaded')
def __init__(self, live):
self.isLive = live
log.info(u'%s controller loaded' % live)
def addHandler(self, controller, file):
log.debug(u'Live = %s, addHandler %s' % (self.isLive, file))
self.controller = controller
if self.controller.is_loaded():
self.shutdown(None)
self.controller.load_presentation(file)
if self.isLive:
self.controller.start_presentation()
Receiver.send_message(u'live_slide_hide')
self.controller.slidenumber = 0
def activate(self):
log.debug(u'Live = %s, activate' % self.isLive)
if self.controller.is_active():
return
if not self.controller.is_loaded():
self.controller.load_presentation(self.controller.filepath)
if self.isLive:
self.controller.start_presentation()
if self.controller.slidenumber > 1:
self.controller.goto_slide(self.controller.slidenumber)
def slide(self, slide, live):
log.debug(u'Live = %s, slide' % live)
# if not isLive:
# return
self.activate()
self.controller.goto_slide(int(slide) + 1)
self.controller.poll_slidenumber(live)
def first(self, message):
"""
Based on the handler passed at startup triggers the first slide
"""
log.debug(u'Live = %s, first' % self.isLive)
print "first ", message
if not self.isLive:
return
self.activate()
self.controller.start_presentation()
self.controller.poll_slidenumber(self.isLive)
def last(self, message):
"""
Based on the handler passed at startup triggers the first slide
"""
log.debug(u'Live = %s, last' % self.isLive)
print "last ", message
if not self.isLive:
return
self.activate()
self.controller.goto_slide(self.controller.get_slide_count())
self.controller.poll_slidenumber(self.isLive)
def next(self, message):
"""
Based on the handler passed at startup triggers the next slide event
"""
log.debug(u'Live = %s, next' % self.isLive)
print "next ", message
if not self.isLive:
return
self.activate()
self.controller.next_step()
self.controller.poll_slidenumber(self.isLive)
def previous(self, message):
"""
Based on the handler passed at startup triggers the previous slide event
"""
log.debug(u'Live = %s, previous' % self.isLive)
if not self.isLive:
return
print "previous ", message
self.activate()
self.controller.previous_step()
self.controller.poll_slidenumber(self.isLive)
def shutdown(self, message):
"""
Based on the handler passed at startup triggers slide show to shut down
"""
log.debug(u'Live = %s, shutdown' % self.isLive)
self.controller.close_presentation()
self.controller.slidenumber = 0
#self.timer.stop()
def blank(self):
if not self.isLive:
return
if not self.controller.is_loaded():
return
if not self.controller.is_active():
return
self.controller.blank_screen()
def unblank(self):
if not self.is_live:
return
self.activate()
self.controller.unblank_screen()
class MessageListener(object): class MessageListener(object):
""" """
This is the Presentation listener who acts on events from the slide This is the Presentation listener who acts on events from the slide
@ -41,8 +157,9 @@ class MessageListener(object):
def __init__(self, controllers): def __init__(self, controllers):
self.controllers = controllers self.controllers = controllers
self.handler = None self.previewHandler = Controller(False)
self.is_live = None self.liveHandler = Controller(True)
self.isLive = None
# messages are sent from core.ui.slidecontroller # messages are sent from core.ui.slidecontroller
QtCore.QObject.connect(Receiver.get_receiver(), QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'presentations_start'), self.startup) QtCore.SIGNAL(u'presentations_start'), self.startup)
@ -71,108 +188,84 @@ class MessageListener(object):
Start of new presentation Start of new presentation
Save the handler as any new presentations start here Save the handler as any new presentations start here
""" """
self.handler, file, self.is_live = self.decodeMessage(message) log.debug(u'Startup called with message %s' % message)
self.controller = self.controllers[self.handler] self.handler, file, isLive = self.decodeMessage(message)
if self.controller.is_loaded(): if isLive:
self.shutdown(None) self.liveHandler.addHandler(self.controllers[self.handler], file)
self.controller.load_presentation(file) else:
if self.is_live: self.previewHandler.addHandler(self.controllers[self.handler], file)
self.controller.start_presentation()
Receiver.send_message(u'live_slide_hide')
self.controller.slidenumber = 0
self.timer.start()
def activate(self):
if self.controller.is_active():
return
if not self.controller.is_loaded():
self.controller.load_presentation(self.controller.filepath)
self.controller.start_presentation()
if self.controller.slidenumber > 1:
self.controller.goto_slide(self.controller.slidenumber)
def slide(self, message): def slide(self, message):
if not self.is_live: slide, live = self.splitMessage(message)
return if live:
self.activate() self.liveHandler.slide(slide, live)
if message: else:
self.controller.goto_slide(message[0]+1) self.previewHandler.slide(slide, live)
self.controller.poll_slidenumber(self.is_live)
def first(self, message): def first(self, message):
""" if self.isLive:
Based on the handler passed at startup triggers the first slide self.liveHandler.first(message)
""" else:
if not self.is_live: self.previewHandler.first(message)
return
self.activate()
self.controller.start_presentation()
self.controller.poll_slidenumber(self.is_live)
def last(self, message): def last(self, message):
""" if self.isLive:
Based on the handler passed at startup triggers the first slide self.liveHandler.last(message)
""" else:
if not self.is_live: self.previewHandler.last(message)
return
self.activate()
self.controller.goto_slide(self.controller.get_slide_count())
self.controller.poll_slidenumber(self.is_live)
def next(self, message): def next(self, message):
""" if self.isLive:
Based on the handler passed at startup triggers the next slide event self.liveHandler.next(message)
""" else:
if not self.is_live: self.previewHandler.next(message)
return
self.activate()
self.controller.next_step()
self.controller.poll_slidenumber(self.is_live)
def previous(self, message): def previous(self, message):
""" if self.isLive:
Based on the handler passed at startup triggers the previous slide event self.liveHandler.previous(message)
""" else:
if not self.is_live: self.previewHandler.previous(message)
return
self.activate()
self.controller.previous_step()
self.controller.poll_slidenumber(self.is_live)
def shutdown(self, message): def shutdown(self, message):
""" if self.isLive:
Based on the handler passed at startup triggers slide show to shut down self.liveHandler.shutdown(message)
"""
if self.is_live:
Receiver.send_message(u'live_slide_show') Receiver.send_message(u'live_slide_show')
self.controller.close_presentation() else:
self.controller.slidenumber = 0 self.previewHandler.shutdown(message)
self.timer.stop()
def blank(self): def blank(self):
if not self.is_live: if self.isLive:
return self.liveHandler.blank()
if not self.controller.is_loaded(): else:
return self.previewHandler.blank()
if not self.controller.is_active():
return
self.controller.blank_screen()
def unblank(self): def unblank(self):
if not self.is_live: if self.isLive:
return self.liveHandler.unblank()
self.activate() else:
self.controller.unblank_screen() self.previewHandler.unblank()
def splitMessage(self, message):
"""
Splits the selection messages
into it's component parts
``message``
Message containing Presentaion handler name and file to be presented.
"""
bits = message.split(u':')
return bits[0], bits[1]
def decodeMessage(self, message): def decodeMessage(self, message):
""" """
Splits the message from the SlideController into it's component parts Splits the initial message from the SlideController
into it's component parts
``message`` ``message``
Message containing Presentaion handler name and file to be presented. Message containing Presentaion handler name and file to be presented.
""" """
file = os.path.join(message[1], message[2]) file = os.path.join(message[1], message[2])
return message[0], file, message[3] return message[0], file, message[4]
def timeout(self): def timeout(self):
self.controller.poll_slidenumber(self.is_live) self.controller.poll_slidenumber(self.is_live)

View File

@ -336,14 +336,19 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
data = u'%s:%s' %(verse, subVerse) data = u'%s:%s' %(verse, subVerse)
item.setData(QtCore.Qt.UserRole, QtCore.QVariant(data)) item.setData(QtCore.Qt.UserRole, QtCore.QVariant(data))
item.setText(afterText) item.setText(afterText)
#number of lines has change #number of lines has change so repaint the list moving the data
if len(tempText.split(u'\n')) != len(afterText.split(u'\n')): if len(tempText.split(u'\n')) != len(afterText.split(u'\n')):
tempList = {} tempList = {}
tempId = {}
for row in range(0, self.VerseListWidget.count()): for row in range(0, self.VerseListWidget.count()):
tempList[row] = self.VerseListWidget.item(row).text() tempList[row] = self.VerseListWidget.item(row).text()
tempId[row] = self.VerseListWidget.item(row).\
data(QtCore.Qt.UserRole)
self.VerseListWidget.clear() self.VerseListWidget.clear()
for row in range (0, len(tempList)): for row in range (0, len(tempList)):
self.VerseListWidget.addItem(tempList[row]) item = QtGui.QListWidgetItem(tempList[row])
item.setData(QtCore.Qt.UserRole, tempId[row])
self.VerseListWidget.addItem(item)
self.VerseListWidget.repaint() self.VerseListWidget.repaint()
self.VerseEditButton.setEnabled(False) self.VerseEditButton.setEnabled(False)
self.VerseDeleteButton.setEnabled(False) self.VerseDeleteButton.setEnabled(False)

View File

@ -1 +1 @@
1.9.0-688 1.9.0-691