forked from openlp/openlp
Core refactoring 0
This commit is contained in:
parent
7029235f45
commit
38615ca5c9
@ -40,6 +40,7 @@ class Renderer(object):
|
||||
Initialise the renderer.
|
||||
"""
|
||||
self._rect = None
|
||||
self._footer_rect = None
|
||||
self._debug = 0
|
||||
self._right_margin = 64 # the amount of right indent
|
||||
self._shadow_offset = 5
|
||||
@ -215,18 +216,29 @@ class Renderer(object):
|
||||
split_pages.append(page)
|
||||
return split_pages
|
||||
|
||||
def set_text_rectangle(self, rect_main, rect_footer):
|
||||
def build_text_rectangle(self, theme):
|
||||
"""
|
||||
Sets the rectangle within which text should be rendered.
|
||||
Builds a text block using the settings in ``theme``.
|
||||
One is needed per slide
|
||||
|
||||
``rect_main``
|
||||
The main text block.
|
||||
|
||||
``rect_footer``
|
||||
The footer text block.
|
||||
``theme``
|
||||
The theme to build a text block for.
|
||||
"""
|
||||
self._rect = rect_main
|
||||
self._rect_footer = rect_footer
|
||||
log.debug(u'build_text_rectangle')
|
||||
if theme.font_main_override == False:
|
||||
self._rect = QtCore.QRect(10, 0, self.width - 1,
|
||||
self.footer_start - 20)
|
||||
else:
|
||||
self._rect = QtCore.QRect(int(theme.font_main_x),
|
||||
int(theme.font_main_y), int(theme.font_main_width)-1,
|
||||
int(theme.font_main_height) - 1)
|
||||
if theme.font_footer_override == False:
|
||||
self._footer_rect = QtCore.QRect(10,self.footer_start, self.width - 1,
|
||||
self.height-self.footer_start)
|
||||
else:
|
||||
self._footer_rect = QtCore.QRect(int(theme.font_footer_x),
|
||||
int(theme.font_footer_y), int(theme.font_footer_width)-1,
|
||||
int(theme.font_footer_height) - 1)
|
||||
|
||||
def generate_frame_from_lines(self, lines, footer_lines=None):
|
||||
"""
|
||||
|
@ -137,49 +137,24 @@ class RenderManager(object):
|
||||
self.calculate_default(
|
||||
self.screen_list[self.current_display][u'size'])
|
||||
self.renderer.set_theme(self.themedata)
|
||||
self.build_text_rectangle(self.themedata)
|
||||
self.renderer.build_text_rectangle(self.themedata)
|
||||
#Replace the backgrount image from renderer with one from image
|
||||
if self.override_background is not None:
|
||||
if self.save_bg_frame is None:
|
||||
self.save_bg_frame = self.renderer.bg_frame
|
||||
if self.override_background_changed:
|
||||
self.renderer.bg_frame = self.resize_image(self.override_background)
|
||||
self.renderer.bg_frame = self.resize_image(
|
||||
self.override_background)
|
||||
self.override_background_changed = False
|
||||
else:
|
||||
if self.override_background_changed:
|
||||
self.renderer.bg_frame = self.resize_image(self.override_background)
|
||||
self.renderer.bg_frame = self.resize_image(
|
||||
self.override_background)
|
||||
self.override_background_changed = False
|
||||
if self.save_bg_frame is not None:
|
||||
self.renderer.bg_frame = self.save_bg_frame
|
||||
self.save_bg_frame = None
|
||||
|
||||
def build_text_rectangle(self, theme):
|
||||
"""
|
||||
Builds a text block using the settings in ``theme``.
|
||||
One is needed per slide
|
||||
|
||||
``theme``
|
||||
The theme to build a text block for.
|
||||
"""
|
||||
log.debug(u'build_text_rectangle')
|
||||
main_rect = None
|
||||
footer_rect = None
|
||||
if theme.font_main_override == False:
|
||||
main_rect = QtCore.QRect(10, 0, self.width - 1,
|
||||
self.footer_start - 20)
|
||||
else:
|
||||
main_rect = QtCore.QRect(int(theme.font_main_x),
|
||||
int(theme.font_main_y), int(theme.font_main_width)-1,
|
||||
int(theme.font_main_height) - 1)
|
||||
if theme.font_footer_override == False:
|
||||
footer_rect = QtCore.QRect(10,self.footer_start, self.width - 1,
|
||||
self.height-self.footer_start)
|
||||
else:
|
||||
footer_rect = QtCore.QRect(int(theme.font_footer_x),
|
||||
int(theme.font_footer_y), int(theme.font_footer_width)-1,
|
||||
int(theme.font_footer_height) - 1)
|
||||
self.renderer.set_text_rectangle(main_rect, footer_rect)
|
||||
|
||||
def generate_preview(self, themedata):
|
||||
"""
|
||||
Generate a preview of a theme.
|
||||
@ -190,7 +165,7 @@ class RenderManager(object):
|
||||
log.debug(u'generate preview')
|
||||
self.calculate_default(QtCore.QSize(1024, 768))
|
||||
self.renderer.set_theme(themedata)
|
||||
self.build_text_rectangle(themedata)
|
||||
self.renderer.build_text_rectangle(themedata)
|
||||
self.renderer.set_frame_dest(self.width, self.height, True)
|
||||
verse = []
|
||||
verse.append(u'Amazing Grace!')
|
||||
@ -212,7 +187,7 @@ class RenderManager(object):
|
||||
The words to go on the slides.
|
||||
"""
|
||||
log.debug(u'format slide')
|
||||
self.build_text_rectangle(self.themedata)
|
||||
self.renderer.build_text_rectangle(self.themedata)
|
||||
return self.renderer.format_slide(words, False)
|
||||
|
||||
def generate_slide(self, main_text, footer_text):
|
||||
@ -226,7 +201,7 @@ class RenderManager(object):
|
||||
The text for the slide footer.
|
||||
"""
|
||||
log.debug(u'generate slide')
|
||||
self.build_text_rectangle(self.themedata)
|
||||
self.renderer.build_text_rectangle(self.themedata)
|
||||
self.renderer.set_frame_dest(self.width, self.height)
|
||||
return self.renderer.generate_frame_from_lines(main_text, footer_text)
|
||||
|
||||
@ -246,7 +221,7 @@ class RenderManager(object):
|
||||
h = height
|
||||
preview = preview.scaled(w, h, QtCore.Qt.KeepAspectRatio,
|
||||
QtCore.Qt.SmoothTransformation)
|
||||
realw = preview.width();
|
||||
realw = preview.width()
|
||||
realh = preview.height()
|
||||
# and move it to the centre of the preview space
|
||||
newImage = QtGui.QImage(w, h, QtGui.QImage.Format_ARGB32_Premultiplied)
|
||||
|
@ -448,9 +448,11 @@ class SlideController(QtGui.QWidget):
|
||||
if self.commandItem is not None and \
|
||||
self.commandItem.service_item_type == ServiceItemType.Command:
|
||||
if blanked:
|
||||
Receiver().send_message(u'%s_blank'% self.commandItem.name.lower())
|
||||
Receiver().send_message(
|
||||
u'%s_blank' % self.commandItem.name.lower())
|
||||
else:
|
||||
Receiver().send_message(u'%s_unblank'% self.commandItem.name.lower())
|
||||
Receiver().send_message(
|
||||
u'%s_unblank' % self.commandItem.name.lower())
|
||||
else:
|
||||
self.parent.mainDisplay.blankDisplay()
|
||||
|
||||
@ -463,7 +465,8 @@ class SlideController(QtGui.QWidget):
|
||||
self.row = 0
|
||||
if row > -1 and row < self.PreviewListWidget.rowCount():
|
||||
if self.commandItem.service_item_type == ServiceItemType.Command:
|
||||
Receiver().send_message(u'%s_slide'% self.commandItem.name.lower(), [row])
|
||||
Receiver().send_message(
|
||||
u'%s_slide'% self.commandItem.name.lower(), [row])
|
||||
if self.isLive:
|
||||
QtCore.QTimer.singleShot(0.5, self.grabMainDisplay)
|
||||
else:
|
||||
@ -489,10 +492,12 @@ class SlideController(QtGui.QWidget):
|
||||
if not rm.screen_list[rm.current_display][u'primary']:
|
||||
winid = QtGui.QApplication.desktop().winId()
|
||||
rect = rm.screen_list[rm.current_display][u'size']
|
||||
winimg = QtGui.QPixmap.grabWindow(winid, rect.x(), rect.y(), rect.width(), rect.height())
|
||||
winimg = QtGui.QPixmap.grabWindow(
|
||||
winid, rect.x(), rect.y(), rect.width(), rect.height())
|
||||
self.SlidePreview.setPixmap(winimg)
|
||||
else:
|
||||
label = self.PreviewListWidget.cellWidget(self.PreviewListWidget.currentRow(), 0)
|
||||
label = self.PreviewListWidget.cellWidget(
|
||||
self.PreviewListWidget.currentRow(), 0)
|
||||
self.SlidePreview.setPixmap(label.pixmap())
|
||||
|
||||
def onSlideSelectedNext(self):
|
||||
|
@ -78,17 +78,25 @@ class ThemeManager(QtGui.QWidget):
|
||||
self.ThemeListWidget.addAction(
|
||||
contextMenuAction(self.ThemeListWidget, u':/themes/theme_edit.png',
|
||||
self.trUtf8(u'Edit a theme'), self.onEditTheme))
|
||||
self.ThemeListWidget.addAction(contextMenuSeparator(self.ThemeListWidget))
|
||||
self.ThemeListWidget.addAction(
|
||||
contextMenuAction(self.ThemeListWidget, u':/themes/theme_delete.png',
|
||||
self.trUtf8(u'Delete theme'), self.onDeleteTheme))
|
||||
contextMenuSeparator(self.ThemeListWidget))
|
||||
self.ThemeListWidget.addAction(
|
||||
contextMenuAction(self.ThemeListWidget, u':/themes/theme_export.png',
|
||||
self.trUtf8(u'Make Global'), self.changeGlobalFromScreen))
|
||||
contextMenuAction(self.ThemeListWidget,
|
||||
u':/themes/theme_delete.png',
|
||||
self.trUtf8(u'Delete theme'),
|
||||
self.onDeleteTheme))
|
||||
self.ThemeListWidget.addAction(
|
||||
contextMenuAction(self.ThemeListWidget, u':/themes/theme_export.png',
|
||||
self.trUtf8(u'Export theme'), self.onExportTheme))
|
||||
self.ThemeListWidget.addAction(contextMenuSeparator(self.ThemeListWidget))
|
||||
contextMenuAction(self.ThemeListWidget,
|
||||
u':/themes/theme_export.png',
|
||||
self.trUtf8(u'Make Global'),
|
||||
self.changeGlobalFromScreen))
|
||||
self.ThemeListWidget.addAction(
|
||||
contextMenuAction(self.ThemeListWidget,
|
||||
u':/themes/theme_export.png',
|
||||
self.trUtf8(u'Export theme'),
|
||||
self.onExportTheme))
|
||||
self.ThemeListWidget.addAction(
|
||||
contextMenuSeparator(self.ThemeListWidget))
|
||||
#Signals
|
||||
QtCore.QObject.connect(self.ThemeListWidget,
|
||||
QtCore.SIGNAL(u'doubleClicked(QModelIndex)'),
|
||||
@ -151,7 +159,8 @@ class ThemeManager(QtGui.QWidget):
|
||||
if item is not None:
|
||||
self.amendThemeForm.loadTheme(
|
||||
unicode(item.data(QtCore.Qt.UserRole).toString()))
|
||||
self.saveThemeName = unicode(item.data(QtCore.Qt.UserRole).toString())
|
||||
self.saveThemeName = unicode(
|
||||
item.data(QtCore.Qt.UserRole).toString())
|
||||
self.amendThemeForm.exec_()
|
||||
|
||||
def onDeleteTheme(self):
|
||||
|
Loading…
Reference in New Issue
Block a user