forked from openlp/openlp
First step to make displays work.
This commit is contained in:
parent
0794015765
commit
1d0770b4c9
@ -282,8 +282,9 @@ class ScreenList(object):
|
||||
"""
|
||||
self.screens = []
|
||||
for number in range(self.desktop.screenCount()):
|
||||
# TODO: Remove hardcoded last argument when the screen-settings tab works
|
||||
self.screens.append(
|
||||
Screen(number, self.desktop.screenGeometry(number), self.desktop.primaryScreen() == number))
|
||||
Screen(number, self.desktop.screenGeometry(number), self.desktop.primaryScreen() == number, True))
|
||||
|
||||
def on_screen_resolution_changed(self, number):
|
||||
"""
|
||||
|
@ -108,7 +108,7 @@ class DisplayWindow(QtWidgets.QWidget):
|
||||
from openlp.core.display.webengine import WebEngineView
|
||||
self._is_initialised = False
|
||||
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_DeleteOnClose)
|
||||
self.layout = QtWidgets.QVBoxLayout(self)
|
||||
self.layout.setContentsMargins(0, 0, 0, 0)
|
||||
@ -122,6 +122,7 @@ class DisplayWindow(QtWidgets.QWidget):
|
||||
self.webview.page().setWebChannel(self.channel)
|
||||
if screen and screen.is_display:
|
||||
self.update_from_screen(screen)
|
||||
self.show()
|
||||
|
||||
def update_from_screen(self, screen):
|
||||
"""
|
||||
|
@ -743,12 +743,6 @@ class SlideController(QtWidgets.QWidget, LogMixin, RegistryProperties):
|
||||
|
||||
:param item: The current service item
|
||||
"""
|
||||
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():
|
||||
self.preview_display.load_verses(item.rendered_slides)
|
||||
elif item.is_image():
|
||||
self.preview_display.load_images(item.slides)
|
||||
slide_no = 0
|
||||
# if self.song_edit:
|
||||
# slide_no = self.selected_row
|
||||
@ -813,6 +807,16 @@ class SlideController(QtWidgets.QWidget, LogMixin, RegistryProperties):
|
||||
Registry().execute(
|
||||
'{text}_start'.format(text=service_item.name.lower()),
|
||||
[self.service_item, self.is_live, self.hide_mode(), slide_no])
|
||||
else:
|
||||
# Get theme
|
||||
theme_name = service_item.theme if service_item.theme else Registry().get('theme_manager').global_theme
|
||||
theme_data = Registry().get('theme_manager').get_theme_data(theme_name)
|
||||
# Set theme for preview
|
||||
self.preview_display.set_theme(theme_data)
|
||||
# Set theme for displays
|
||||
for display in self.displays:
|
||||
display.set_theme(theme_data)
|
||||
|
||||
# Reset blanking if needed
|
||||
if old_item and self.is_live and (old_item.is_capable(ItemCapabilities.ProvidesOwnDisplay) or
|
||||
self.service_item.is_capable(ItemCapabilities.ProvidesOwnDisplay)):
|
||||
@ -846,6 +850,9 @@ class SlideController(QtWidgets.QWidget, LogMixin, RegistryProperties):
|
||||
row = 0
|
||||
width = self.main_window.control_splitter.sizes()[self.split]
|
||||
if self.service_item.is_text():
|
||||
self.preview_display.load_verses(service_item.rendered_slides)
|
||||
for display in self.displays:
|
||||
display.load_verses(service_item.rendered_slides)
|
||||
for slide_index, slide in enumerate(self.service_item.display_slides):
|
||||
if not slide['verse'].isdigit():
|
||||
# These tags are already translated.
|
||||
@ -861,6 +868,10 @@ class SlideController(QtWidgets.QWidget, LogMixin, RegistryProperties):
|
||||
row += 1
|
||||
self.slide_list[str(row)] = row - 1
|
||||
else:
|
||||
if service_item.is_image():
|
||||
self.preview_display.load_images(service_item.slides)
|
||||
for display in self.displays:
|
||||
display.load_images(service_item.slides)
|
||||
for slide_index, slide in enumerate(self.service_item.slides):
|
||||
row += 1
|
||||
self.slide_list[str(row)] = row - 1
|
||||
@ -925,7 +936,15 @@ class SlideController(QtWidgets.QWidget, LogMixin, RegistryProperties):
|
||||
"""
|
||||
Set the preview display's zoom factor based on the size relative to the display size
|
||||
"""
|
||||
ratio = float(size.width()) / 1920.0
|
||||
display_with = 0
|
||||
for screen in self.screens:
|
||||
if screen.is_display:
|
||||
display_with = screen.geometry.width()
|
||||
if display_with == 0:
|
||||
ratio = 0.25
|
||||
else:
|
||||
ratio = float(size.width()) / display_with
|
||||
# TODO: Find a different scale solution, setZoomFactor only supports 0.25-5.0. Maybe HTML scale?
|
||||
self.preview_display.webview.setZoomFactor(ratio)
|
||||
|
||||
def main_display_set_background(self):
|
||||
|
Loading…
Reference in New Issue
Block a user