Fix the problem where the slides were being incorrectly indexed

This commit is contained in:
Raoul Snyman 2018-11-02 22:48:43 -07:00
parent 4506e78a1c
commit 4c103e4305
4 changed files with 39 additions and 35 deletions

View File

@ -115,14 +115,14 @@ class DisplayWindow(QtWidgets.QWidget):
self._is_initialised = False self._is_initialised = False
self._fbo = None self._fbo = None
self.setWindowFlags(QtCore.Qt.FramelessWindowHint | QtCore.Qt.Tool) # | QtCore.Qt.WindowStaysOnTopHint self.setWindowFlags(QtCore.Qt.FramelessWindowHint | QtCore.Qt.Tool) # | QtCore.Qt.WindowStaysOnTopHint
self.setAttribute(QtCore.Qt.WA_TranslucentBackground); self.setAttribute(QtCore.Qt.WA_TranslucentBackground)
self.setAutoFillBackground(True); self.setAutoFillBackground(True)
self.setAttribute(QtCore.Qt.WA_DeleteOnClose) self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
self.layout = QtWidgets.QVBoxLayout(self) self.layout = QtWidgets.QVBoxLayout(self)
self.layout.setContentsMargins(0, 0, 0, 0) self.layout.setContentsMargins(0, 0, 0, 0)
self.webview = WebEngineView(self) self.webview = WebEngineView(self)
self.webview.setAttribute(QtCore.Qt.WA_TranslucentBackground); self.webview.setAttribute(QtCore.Qt.WA_TranslucentBackground)
self.webview.page().setBackgroundColor(QtCore.Qt.transparent); self.webview.page().setBackgroundColor(QtCore.Qt.transparent)
self.layout.addWidget(self.webview) self.layout.addWidget(self.webview)
self.webview.loadFinished.connect(self.after_loaded) self.webview.loadFinished.connect(self.after_loaded)
self.set_url(QtCore.QUrl.fromLocalFile(path_to_str(DISPLAY_PATH))) self.set_url(QtCore.QUrl.fromLocalFile(path_to_str(DISPLAY_PATH)))
@ -152,17 +152,20 @@ class DisplayWindow(QtWidgets.QWidget):
self.screen_number = screen.number self.screen_number = screen.number
def set_single_image(self, bg_color, image): def set_single_image(self, bg_color, image):
self.run_javascript('Display.setFullscreenImage("{bg_color}", "{image}");'.format(bg_color=bg_color, image=image)) self.run_javascript('Display.setFullscreenImage("{bg_color}", "{image}");'.format(bg_color=bg_color,
image=image))
def set_single_image_data(self, bg_color, image_data): def set_single_image_data(self, bg_color, image_data):
self.run_javascript('Display.setFullscreenImageFromData("{bg_color}", "{image_data}");'.format(bg_color=bg_color, image_data=image_data)) self.run_javascript('Display.setFullscreenImageFromData("{bg_color}", '
'"{image_data}");'.format(bg_color=bg_color, image_data=image_data))
def set_startup_screen(self): def set_startup_screen(self):
bg_color = Settings().value('core/logo background color') bg_color = Settings().value('core/logo background color')
image = Settings().value('core/logo file') image = Settings().value('core/logo file')
if path_to_str(image).startswith(':'): if path_to_str(image).startswith(':'):
image = OPENLP_SPLASH_SCREEN_PATH image = OPENLP_SPLASH_SCREEN_PATH
self.run_javascript('Display.setStartupSplashScreen("{bg_color}", "{image}");'.format(bg_color=bg_color, image=image)) self.run_javascript('Display.setStartupSplashScreen("{bg_color}", "{image}");'.format(bg_color=bg_color,
image=image))
def set_url(self, url): def set_url(self, url):
""" """

View File

@ -39,7 +39,7 @@ from openlp.core.common.mixins import RegistryProperties
from openlp.core.common.path import Path from openlp.core.common.path import Path
from openlp.core.common.settings import Settings from openlp.core.common.settings import Settings
from openlp.core.display.render import remove_tags, render_tags from openlp.core.display.render import remove_tags, render_tags
from openlp.core.lib import ImageSource, ItemCapabilities, build_icon from openlp.core.lib import ItemCapabilities
from openlp.core.ui.icons import UiIcons from openlp.core.ui.icons import UiIcons
@ -163,7 +163,7 @@ class ServiceItem(RegistryProperties):
# Save rendered pages to this dict. In the case that a slide is used twice we can use the pages saved to # Save rendered pages to this dict. In the case that a slide is used twice we can use the pages saved to
# the dict instead of rendering them again. # the dict instead of rendering them again.
previous_pages = {} previous_pages = {}
for raw_slide in self.slides: for index, raw_slide in enumerate(self.slides):
verse_tag = raw_slide['verse'] verse_tag = raw_slide['verse']
if verse_tag in previous_pages and previous_pages[verse_tag][0] == raw_slide: if verse_tag in previous_pages and previous_pages[verse_tag][0] == raw_slide:
pages = previous_pages[verse_tag][1] pages = previous_pages[verse_tag][1]
@ -174,7 +174,7 @@ class ServiceItem(RegistryProperties):
rendered_slide = { rendered_slide = {
'title': raw_slide['title'], 'title': raw_slide['title'],
'text': render_tags(page), 'text': render_tags(page),
'verse': verse_tag, 'verse': index,
} }
self._rendered_slides.append(rendered_slide) self._rendered_slides.append(rendered_slide)
display_slide = { display_slide = {
@ -259,9 +259,8 @@ class ServiceItem(RegistryProperties):
file_location_hash = md5_hash(file_location.encode('utf-8')) file_location_hash = md5_hash(file_location.encode('utf-8'))
image = os.path.join(str(AppLocation.get_section_data_path(self.name)), 'thumbnails', image = os.path.join(str(AppLocation.get_section_data_path(self.name)), 'thumbnails',
file_location_hash, ntpath.basename(image)) file_location_hash, ntpath.basename(image))
self.slides.append({'title': file_name, 'image': image, 'path': path, self.slides.append({'title': file_name, 'image': image, 'path': path, 'display_title': display_title,
'display_title': display_title, 'notes': notes, 'notes': notes, 'thumbnail': image})
'thumbnail' : image})
# if self.is_capable(ItemCapabilities.HasThumbnails): # if self.is_capable(ItemCapabilities.HasThumbnails):
# self.image_manager.add_image(image, ImageSource.CommandPlugins, '#000000') # self.image_manager.add_image(image, ImageSource.CommandPlugins, '#000000')
self._new_item() self._new_item()

View File

@ -36,7 +36,7 @@ from openlp.core.common.registry import Registry, RegistryBase
from openlp.core.common.settings import Settings from openlp.core.common.settings import Settings
from openlp.core.display.screens import ScreenList from openlp.core.display.screens import ScreenList
from openlp.core.display.window import DisplayWindow from openlp.core.display.window import DisplayWindow
from openlp.core.lib import ImageSource, ServiceItemAction, image_to_byte from openlp.core.lib import ServiceItemAction, image_to_byte
from openlp.core.lib.serviceitem import ItemCapabilities from openlp.core.lib.serviceitem import ItemCapabilities
from openlp.core.lib.ui import create_action from openlp.core.lib.ui import create_action
from openlp.core.ui import DisplayControllerType, HideMode from openlp.core.ui import DisplayControllerType, HideMode
@ -1138,6 +1138,7 @@ class SlideController(QtWidgets.QWidget, LogMixin, RegistryProperties):
else: else:
# to_display = self.service_item.get_rendered_frame(row) # to_display = self.service_item.get_rendered_frame(row)
if self.service_item.is_text(): if self.service_item.is_text():
print('Row: {}'.format(row))
for display in self.displays: for display in self.displays:
display.go_to_slide(row) display.go_to_slide(row)
# self.display.text(to_display, row != old_selected_row) # self.display.text(to_display, row != old_selected_row)

View File

@ -32,6 +32,7 @@ from openlp.core.common import CONTROL_CHARS
from openlp.core.common.applocation import AppLocation from openlp.core.common.applocation import AppLocation
from openlp.core.common.i18n import translate from openlp.core.common.i18n import translate
from openlp.core.common.settings import Settings from openlp.core.common.settings import Settings
from openlp.core.display.render import remove_tags
from openlp.plugins.songs.lib.db import Author, MediaFile, Song from openlp.plugins.songs.lib.db import Author, MediaFile, Song
from openlp.plugins.songs.lib.ui import SongStrings from openlp.plugins.songs.lib.ui import SongStrings