From 3ff3f501fa5a1adb4262cee45af9a56e9355928a Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Wed, 11 Apr 2018 23:20:55 -0700 Subject: [PATCH] Fixed displaying slides in slide controller vs actual rendered slides; Fixed tag not showing up correctly --- openlp/core/display/canvas.py | 1 - openlp/core/display/html/display.html | 4 ++++ openlp/core/display/window.py | 2 -- openlp/core/lib/serviceitem.py | 33 ++++++++++++++++++++++++--- openlp/core/ui/slidecontroller.py | 15 +++++------- openlp/core/widgets/views.py | 3 ++- 6 files changed, 42 insertions(+), 16 deletions(-) diff --git a/openlp/core/display/canvas.py b/openlp/core/display/canvas.py index 1264f2f37..3ad63daec 100644 --- a/openlp/core/display/canvas.py +++ b/openlp/core/display/canvas.py @@ -376,7 +376,6 @@ class MainCanvas(OpenLPMixin, Canvas, RegistryProperties): self.application.process_events() self.setGeometry(self.screen['size']) json_verses = json.dumps(slide) - print(json_verses) self.run_javascript('Display.setTextSlides({verses});'.format(verses=json_verses)) #if animate: # # NOTE: Verify this works with ''.format() diff --git a/openlp/core/display/html/display.html b/openlp/core/display/html/display.html index f62305a38..b4cc918cd 100644 --- a/openlp/core/display/html/display.html +++ b/openlp/core/display/html/display.html @@ -8,6 +8,10 @@ background: #000 !important; color: #fff !important; } + sup { + vertical-align: super !important; + font-size: smaller !important; + } .reveal .slides > section, .reveal .slides > section > section { padding: 0; diff --git a/openlp/core/display/window.py b/openlp/core/display/window.py index 315e00850..9c40f7b1e 100644 --- a/openlp/core/display/window.py +++ b/openlp/core/display/window.py @@ -25,7 +25,6 @@ The :mod:`~openlp.core.display.window` module contains the display window import logging import os import json -from inspect import currentframe, getouterframes from PyQt5 import QtCore, QtWidgets, QtWebChannel @@ -123,7 +122,6 @@ class DisplayWindow(QtWidgets.QWidget): self.webview.page().setWebChannel(self.channel) if screen and screen.is_display: self.update_from_screen(screen) - print(getouterframes(currentframe(), 2)[1][3]) def update_from_screen(self, screen): """ diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py index a621cbfa0..d10d4ccd2 100644 --- a/openlp/core/lib/serviceitem.py +++ b/openlp/core/lib/serviceitem.py @@ -28,6 +28,7 @@ import logging import ntpath import os import uuid +from copy import deepcopy from PyQt5 import QtGui @@ -37,7 +38,7 @@ from openlp.core.common.i18n import translate from openlp.core.common.mixins import RegistryProperties from openlp.core.common.path import Path from openlp.core.common.settings import Settings -# from openlp.core.display.render import remove_tags, render_tags, render_chords +from openlp.core.display.render import remove_tags, render_tags from openlp.core.lib import ImageSource, build_icon log = logging.getLogger(__name__) @@ -165,6 +166,8 @@ class ServiceItem(RegistryProperties): """ if plugin: self.name = plugin.name + self._rendered_slides = None + self._display_slides = None self.title = '' self.slides = [] self.processor = None @@ -175,8 +178,6 @@ class ServiceItem(RegistryProperties): self.foot_text = '' self.theme = None self.service_item_type = None - # self._raw_frames = [] - # self._display_frames = [] self.unique_identifier = 0 self.notes = '' self.from_plugin = False @@ -239,6 +240,32 @@ class ServiceItem(RegistryProperties): self.icon = icon self.iconic_representation = build_icon(icon) + @property + def rendered_slides(self): + """ + Render the frames and return them + """ + if not self._rendered_slides: + self._rendered_slides = [] + for raw_slide in self.slides: + rendered_slide = deepcopy(raw_slide) + rendered_slide['text'] = render_tags(rendered_slide['text']) + self._rendered_slides.append(rendered_slide) + return self._rendered_slides + + @property + def display_slides(self): + """ + Render the frames and return them + """ + if not self._display_slides: + self._display_slides = [] + for raw_slide in self.slides: + display_slide = deepcopy(raw_slide) + display_slide['text'] = remove_tags(display_slide['text']) + self._display_slides.append(display_slide) + return self._display_slides + # def render(self, provides_own_theme_data=False): # """ # The render method is what generates the frames for the screen and obtains the display information from the diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 3204af25d..5df57eadd 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -39,7 +39,6 @@ from openlp.core.lib import ItemCapabilities, ImageSource, ServiceItemAction, bu from openlp.core.lib.ui import create_action from openlp.core.ui import HideMode, DisplayControllerType from openlp.core.display.window import DisplayWindow -from openlp.core.display.render import render_tags from openlp.core.widgets.layouts import AspectRatioLayout from openlp.core.widgets.toolbar import OpenLPToolbar from openlp.core.widgets.views import ListPreviewWidget @@ -745,10 +744,7 @@ class SlideController(QtWidgets.QWidget, LogMixin, RegistryProperties): theme_name = item.theme if item.theme else Registry().get('theme_manager').global_theme self.preview_display.set_theme(Registry().get('theme_manager').get_theme_data(theme_name)) if item.is_text(): - slides = item.slides.copy() - for slide in slides: - slide['text'] = render_tags(slide['text']) - self.preview_display.load_verses(slides) + self.preview_display.load_verses(item.rendered_slides) elif item.is_image(): self.preview_display.load_images(item.slides) slide_no = 0 @@ -847,9 +843,9 @@ class SlideController(QtWidgets.QWidget, LogMixin, RegistryProperties): # self.set_audio_items_visibility(True) row = 0 width = self.main_window.control_splitter.sizes()[self.split] - for slide_index, slide in enumerate(self.service_item.slides): - if self.service_item.is_text(): - if slide['verse']: + if self.service_item.is_text(): + for slide_index, slide in enumerate(self.service_item.display_slides): + if not slide['verse'].isdigit(): # These tags are already translated. verse_def = slide['verse'] verse_def = '{def1}{def2}'.format(def1=verse_def[0], def2=verse_def[1:]) @@ -862,7 +858,8 @@ class SlideController(QtWidgets.QWidget, LogMixin, RegistryProperties): else: row += 1 self.slide_list[str(row)] = row - 1 - else: + else: + for slide_index, slide in enumerate(self.service_item.slides): row += 1 self.slide_list[str(row)] = row - 1 # If current slide set background to image diff --git a/openlp/core/widgets/views.py b/openlp/core/widgets/views.py index b6ba86e6b..01b8b1d65 100644 --- a/openlp/core/widgets/views.py +++ b/openlp/core/widgets/views.py @@ -168,7 +168,8 @@ class ListPreviewWidget(QtWidgets.QTableWidget, RegistryProperties): self.clear_list() row = 0 text = [] - for slide_index, slide in enumerate(self.service_item.slides): + slides = self.service_item.display_slides if self.service_item.is_text() else self.service_item.slides + for slide_index, slide in enumerate(slides): self.setRowCount(self.slide_count() + 1) item = QtWidgets.QTableWidgetItem() slide_height = 0